- type = NUM2INT (rb_iv_get (msg, "@type"));
- id = NUM2INT (rb_iv_get (msg, "@id"));
- m = rb_funcall (msg, rb_intern ("serialize"), 0, NULL);
+ v = rb_iv_get (msg, "@value");
+
+ if (NIL_P (v)) {
+ rb_raise (eEdjeError, "value must not be nil");
+ return Qnil;
+ }
+
+ if (!NIL_P (tmp = rb_check_string_type (v))) {
+ type = EDJE_MESSAGE_STRING;
+ s.str = StringValuePtr (tmp);
+ data = &s;
+ } else if (rb_obj_is_kind_of (v, rb_cFixnum)) {
+ type = EDJE_MESSAGE_INT;
+ i.val = FIX2INT (v);
+ data = &i;
+ } else if (rb_obj_is_kind_of (v, rb_cFloat)) {
+ type = EDJE_MESSAGE_FLOAT;
+ f.val = NUM2DBL (v);
+ data = &v;
+ /* } else if (!NIL_P (tmp = rb_check_array_type (v))) { */
+ } else {
+ rb_raise (eEdjeError, "unsupported value");
+ }