release tizen_2.0 beta
[framework/telephony/tel-plugin-socket_communicator.git] / common / src / sipc_marshal.c
index d8397ce..124e7e1 100644 (file)
@@ -37,8 +37,8 @@ static void _sipc_util_remove_hashtable_value(gpointer value)
        struct _sipc_marshal_object *tmp_obj = value;
 
        gtype = ((GValue *) value)->g_type;
-       if (gtype == G_TYPE_HASH_TABLE) {
-               tmp_obj = g_value_get_boxed(value);
+       if (gtype == G_TYPE_POINTER) {
+               tmp_obj = g_value_get_pointer(value);
                g_hash_table_destroy(tmp_obj->ht);
        }
 
@@ -76,8 +76,8 @@ static gboolean _sipc_util_create_gvalue(GValue *value, const void *data, sipc_m
                        break;
 
                case SIPC_MARSHAL_DATA_OBJECT_TYPE:
-                       g_value_init(value, G_TYPE_HASH_TABLE);
-                       g_value_set_boxed(value, (gpointer) data);
+                       g_value_init(value, type);
+                       g_value_set_pointer(value, (gpointer) data);
                        break;
 
                default:
@@ -120,9 +120,8 @@ static gboolean _sipc_util_return_value(GValue *src, void **dest, sipc_marshal_d
 
                case SIPC_MARSHAL_DATA_OBJECT_TYPE:
                        tmp = g_new0(struct _sipc_marshal_object, 1);
-                       tmp->ht = g_value_dup_boxed(src);
+                       tmp->ht = g_value_get_pointer(src);
                        *dest = tmp;
-                       //*dest = g_value_dup_boxed(src);
                        break;
 
                default:
@@ -138,7 +137,7 @@ static gboolean _sipc_util_str_to_type(GValue *src, GValue *dest, unsigned int d
        gboolean rv = FALSE;
 
        if(dest_type == G_TYPE_HASH_TABLE)
-               dest_type = G_TYPE_BOXED;
+               dest_type = G_TYPE_POINTER;
 
        switch (dest_type) {
                case G_TYPE_INT: {
@@ -165,10 +164,10 @@ static gboolean _sipc_util_str_to_type(GValue *src, GValue *dest, unsigned int d
                        g_value_set_double(dest, tmp);
                }
                        break;
-               case G_TYPE_BOXED:{
+               case G_TYPE_POINTER:{
                        GHashTable* tmp;
                        tmp = _sipc_util_marshal_object_deserializer(g_value_get_string(src));
-                       g_value_set_boxed(dest, tmp);
+                       g_value_set_pointer(dest, tmp);
                }
                        break;
                default: {
@@ -186,7 +185,9 @@ static GHashTable* _sipc_util_marshal_object_deserializer(const gchar *inparam)
        gchar **tuple = NULL;
        GHashTable *ht = NULL;
 
-       ht = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, _sipc_util_remove_hashtable_value);
+       ht = g_hash_table_new_full(g_str_hash, g_str_equal, g_free,
+                       _sipc_util_remove_hashtable_value);
+
        if (strlen(inparam) == 0) {
                return ht;
        }
@@ -239,16 +240,17 @@ gboolean sipc_util_marshal_object_add_data(struct _sipc_marshal_object *mo, cons
 
        SIPC_CHECK_DATA_NULL( (mo&&key&&data), FALSE);
 
-       dbg("key=%s, data type (%d)", key, type);
        if (type >= SIPC_MARSHAL_DATA_STRING_MAX)
                return FALSE;
 
        value = g_new0(GValue, 1);
 
-       if(type != SIPC_MARSHAL_DATA_OBJECT_TYPE)
+       if (type != SIPC_MARSHAL_DATA_OBJECT_TYPE) {
                rv = _sipc_util_create_gvalue(value, data, type);
-       else
-               rv = _sipc_util_create_gvalue(value, ((struct _sipc_marshal_object*)data)->ht, type);
+       }
+       else {
+               rv = _sipc_util_create_gvalue(value, (struct _sipc_marshal_object*) data, type);
+       }
 
        if (!rv)
                return FALSE;
@@ -396,18 +398,17 @@ gchar* sipc_util_marshal_object_serializer(struct _sipc_marshal_object *mo)
                unsigned int gtype = 0;
                gchar *tmp = NULL, *encoded_d = NULL;
                GValue gval = { 0, { { 0 } } };
+
                g_value_init(&gval, G_TYPE_STRING);
 
                gtype = ((GValue *) value)->g_type;
-               if (gtype != G_TYPE_HASH_TABLE) {
+               if (gtype != G_TYPE_POINTER) {
                        g_value_transform((GValue *) value, &gval);
                        tmp = g_value_dup_string(&gval);
-                       dbg("gtype = %d, tmp = [%s]", gtype, tmp);
                }
                else {
                        struct _sipc_marshal_object *tmp_obj;
-                       tmp_obj = g_value_get_boxed((GValue *) value);
-                       dbg("tmp_obj.ht = %p", tmp_obj->ht);
+                       tmp_obj = g_value_get_pointer((GValue *) value);
                        tmp = sipc_util_marshal_object_serializer(tmp_obj);
                }
 
@@ -422,6 +423,7 @@ gchar* sipc_util_marshal_object_serializer(struct _sipc_marshal_object *mo)
        rv_str = g_strdup(gstring_tmp->str);
        g_string_free(gstring_tmp, TRUE);
 
+       dbg("serialized string [%s]", rv_str);
        return rv_str;
 }