[Refactoring account-ipc-marshal] 97/184897/2
authorAbhishek Vijay <abhishek.v@samsung.com>
Tue, 24 Jul 2018 06:32:14 +0000 (12:02 +0530)
committerAbhishek Vijay <abhishek.v@samsung.com>
Tue, 24 Jul 2018 09:02:10 +0000 (14:32 +0530)
Change-Id: I61658ed02395979f028b6265ae326f59e593940a
Signed-off-by: Abhishek Vijay <abhishek.v@samsung.com>
common/include/account_ipc_marshal.h
common/src/account_ipc_marshal.c

index cef8dd3..7045cb4 100644 (file)
@@ -21,6 +21,8 @@
 
 #include "account-private.h"
 
+account_s *get_unmarshal_data(GVariantIter *iterator);
+
 GVariant *marshal_account(const account_s *account);
 account_s *umarshal_account(GVariant *in_data);
 
index b797b32..668554b 100644 (file)
@@ -63,6 +63,9 @@
 #define ACCOUNT_CUSTOM_DATA_KEY_KEY "key"
 #define ACCOUNT_CUSTOM_DATA_KEY_VALUE "value"
 
+#define VARIANT_LABEL_LIST "label_list"
+#define VARIANT_PROVIDER_FEATURE_LIST "provider_feature"
+
 static label_s *_variant_to_label(GVariant *variant)
 {
        gchar *app_id = NULL;
@@ -95,23 +98,30 @@ static label_s *_variant_to_label(GVariant *variant)
        return label_data;
 }
 
-GSList *variant_to_label_list(GVariant *variant)
+static provider_feature_s *_variant_to_provider_feature(GVariant *variant)
 {
-       GSList *list = NULL;
-       GVariantIter iter;
-       GVariant *value;
+       gchar *key = NULL;
+       gchar *app_id = NULL;
 
        g_return_val_if_fail(variant != NULL, NULL);
 
-       g_variant_iter_init(&iter, variant);
-       while ((value = g_variant_iter_next_value(&iter))) {
-               list = g_slist_append(list, _variant_to_label(value));
-               g_variant_unref(value);
+       g_variant_get(variant, "(ss)", &key, &app_id);
+
+       provider_feature_s *provider_feature_data = (provider_feature_s *)calloc(1, sizeof(provider_feature_s));
+       if (provider_feature_data == NULL) {
+               _ERR("provider_feature_s calloc failed - out of memory.");
+               return NULL;
        }
 
-       return list;
-}
+       provider_feature_data->key = g_strdup(key);
+
+       provider_feature_data->app_id = g_strdup(app_id);
 
+       g_free(key);
+       g_free(app_id);
+
+       return provider_feature_data;
+}
 
 static GVariant *_label_to_variant(label_s *label_data)
 {
@@ -127,6 +137,40 @@ static GVariant *_label_to_variant(label_s *label_data)
        return variant;
 }
 
+static GSList *get_variant_to_list(GVariant *variant, const char* variant_type)
+{
+       _INFO("get_variant_to_list start");
+       GSList *list = NULL;
+       GVariantIter iter;
+       GVariant *value;
+
+       g_return_val_if_fail(variant_type != NULL, NULL);
+       g_return_val_if_fail(variant != NULL, NULL);
+       g_variant_iter_init(&iter, variant);
+
+       if (g_strcmp0(variant_type, VARIANT_LABEL_LIST) == 0) {
+               while ((value = g_variant_iter_next_value(&iter))) {
+                       list = g_slist_append(list, _variant_to_label(value));
+                       g_variant_unref(value);
+               }
+       } else if (g_strcmp0(variant_type, VARIANT_PROVIDER_FEATURE_LIST) == 0) {
+               while ((value = g_variant_iter_next_value(&iter))) {
+                       list = g_slist_append(list, _variant_to_provider_feature(value));
+                       g_variant_unref(value);
+               }
+       }
+       _INFO("get_variant_to_list end");
+       return list;
+}
+
+GSList *variant_to_label_list(GVariant *variant)
+{
+       GSList *list = NULL;
+       list = get_variant_to_list(variant, VARIANT_LABEL_LIST);
+       g_return_val_if_fail(list != NULL, NULL);
+       return list;
+}
+
 GVariant *label_list_to_variant(GSList *list)
 {
        GVariantBuilder builder;
@@ -144,46 +188,11 @@ GVariant *label_list_to_variant(GSList *list)
        return variant;
 }
 
-
-static provider_feature_s *_variant_to_provider_feature(GVariant *variant)
-{
-       gchar *key = NULL;
-       gchar *app_id = NULL;
-
-       g_return_val_if_fail(variant != NULL, NULL);
-
-       g_variant_get(variant, "(ss)", &key, &app_id);
-
-       provider_feature_s *provider_feature_data = (provider_feature_s *)calloc(1, sizeof(provider_feature_s));
-       if (provider_feature_data == NULL) {
-               _ERR("provider_feature_s calloc failed - out of memory.");
-               return NULL;
-       }
-
-       provider_feature_data->key = g_strdup(key);
-
-       provider_feature_data->app_id = g_strdup(app_id);
-
-       g_free(key);
-       g_free(app_id);
-
-       return provider_feature_data;
-}
-
 GSList *variant_to_provider_feature_list(GVariant *variant)
 {
        GSList *list = NULL;
-       GVariantIter iter;
-       GVariant *value;
-
-       g_return_val_if_fail(variant != NULL, NULL);
-
-       g_variant_iter_init(&iter, variant);
-       while ((value = g_variant_iter_next_value(&iter))) {
-               list = g_slist_append(list, _variant_to_provider_feature(value));
-               g_variant_unref(value);
-       }
-
+       list = get_variant_to_list(variant, VARIANT_PROVIDER_FEATURE_LIST);
+       g_return_val_if_fail(list != NULL, NULL);
        return list;
 }
 
@@ -210,8 +219,7 @@ GVariant *provider_feature_list_to_variant(GSList *list)
        g_variant_builder_init(&builder, G_VARIANT_TYPE_ARRAY);
        for (iter = list; iter != NULL; iter = g_slist_next(iter)) {
                provider_feature_data = (provider_feature_s *)(iter->data);
-               g_variant_builder_add_value(
-                               &builder,
+               g_variant_builder_add_value(&builder,
                                _provider_feature_to_variant(provider_feature_data));
        }
        variant = g_variant_builder_end(&builder);
@@ -312,12 +320,14 @@ GVariant *marshal_account(const account_s* account)
        return g_variant_builder_end(&builder);
 }
 
-account_s *umarshal_account(GVariant *in_data)
+account_s* get_unmarshal_data(GVariantIter *iterator)
 {
-       _INFO("umarshal_account start");
+       _INFO("get_unmarshal_data start");
+       gchar *key = NULL;
+       GVariant *value = NULL;
 
-       if (in_data == NULL) {
-               _ERR("Null input");
+       if (iterator == NULL) {
+               _ERR("received NULL iterator");
                return NULL;
        }
 
@@ -327,13 +337,7 @@ account_s *umarshal_account(GVariant *in_data)
                return NULL;
        }
 
-       GVariantIter iter;
-       gchar *key = NULL;
-       GVariant *value = NULL;
-
-       g_variant_iter_init(&iter, in_data);
-
-       while (g_variant_iter_loop(&iter, "{sv}", &key, &value)) {
+       while (g_variant_iter_loop(iterator, "{sv}", &key, &value)) {
                if (!strcmp(key, ACCOUNT_DATA_KEY_ID))
                        account->id = g_variant_get_int32(value);
 
@@ -382,6 +386,27 @@ account_s *umarshal_account(GVariant *in_data)
                else if (!strcmp(key, ACCOUNT_DATA_KEY_CUSTOM_LIST))
                        account->custom_list = unmarshal_custom_list(value);
        }
+       _INFO("get_unmarshal_data end");
+       return account;
+}
+
+account_s *umarshal_account(GVariant *in_data)
+{
+       _INFO("umarshal_account start");
+       GVariantIter iter;
+
+       if (in_data == NULL) {
+               _ERR("Null input");
+               return NULL;
+       }
+
+       g_variant_iter_init(&iter, in_data);
+
+       account_s *account = get_unmarshal_data(&iter);
+       if (account == NULL) {
+               _ERR("failed to get un-marshal data");
+               return NULL;
+       }
 
        _INFO("unmarshal_account end");
        return account;
@@ -439,8 +464,6 @@ GSList *unmarshal_account_list(GVariant *variant)
        GSList *list = NULL;
        GVariantIter iter;
        GVariantIter *iter_row = NULL;
-       const gchar *key = NULL;
-       GVariant *value = NULL;
 
        if (variant == NULL) {
                _ERR("input NULL");
@@ -450,60 +473,10 @@ GSList *unmarshal_account_list(GVariant *variant)
        g_variant_iter_init(&iter, variant);
 
        while (g_variant_iter_loop(&iter, "a{sv}", &iter_row)) {
-               account_s *account = (account_s *)calloc(1, sizeof(account_s));
+               account_s *account = get_unmarshal_data(iter_row);
                if (account == NULL) {
-                       ACCOUNT_FATAL("account_s calloc failed - out of memory.");
-                       break;
-               }
-
-               while (g_variant_iter_loop(iter_row, "{sv}", &key, &value)) {
-                       if (!g_strcmp0(key, ACCOUNT_DATA_KEY_ID))
-                               account->id = g_variant_get_int32(value);
-
-                       if (!g_strcmp0(key, ACCOUNT_DATA_KEY_USER_NAME))
-                               account->user_name = g_strdup(g_variant_get_string(value, NULL));
-                       else if (!g_strcmp0(key, ACCOUNT_DATA_KEY_EMAIL))
-                               account->email_address = g_strdup(g_variant_get_string(value, NULL));
-                       else if (!g_strcmp0(key, ACCOUNT_DATA_KEY_DISPLAY_NAME))
-                               account->display_name = g_strdup(g_variant_get_string(value, NULL));
-                       else if (!g_strcmp0(key, ACCOUNT_DATA_KEY_ICON_PATH))
-                               account->icon_path = g_strdup(g_variant_get_string(value, NULL));
-                       else if (!g_strcmp0(key, ACCOUNT_DATA_KEY_SOURCE))
-                               account->source = g_strdup(g_variant_get_string(value, NULL));
-                       else if (!g_strcmp0(key, ACCOUNT_DATA_KEY_PACKAGE_NAME))
-                               account->package_name = g_strdup(g_variant_get_string(value, NULL));
-                       else if (!g_strcmp0(key, ACCOUNT_DATA_KEY_ACCESS_TOKEN))
-                               account->access_token = g_strdup(g_variant_get_string(value, NULL));
-                       else if (!g_strcmp0(key, ACCOUNT_DATA_KEY_DOMAIN_NAME))
-                               account->domain_name = g_strdup(g_variant_get_string(value, NULL));
-                       else if (!g_strcmp0(key, ACCOUNT_DATA_KEY_AUTH_TYPE))
-                               account->auth_type = g_variant_get_int32(value);
-                       else if (!g_strcmp0(key, ACCOUNT_DATA_KEY_SECRET))
-                               account->secret = g_variant_get_int32(value);
-                       else if (!g_strcmp0(key, ACCOUNT_DATA_KEY_SYNC_SUPPORT))
-                               account->sync_support = g_variant_get_int32(value);
-                       else if (!strcmp(key, ACCOUNT_DATA_KEY_USER_DATA_INT)) {
-                               int i;
-                               int *tmp_user_ints = unmarshal_user_int_array(value);
-                               if (tmp_user_ints != NULL) {
-                                       for (i = 0; i < USER_INT_CNT; i++)
-                                               account->user_data_int[i] = tmp_user_ints[i];
-                               }
-                               _ACCOUNT_FREE(tmp_user_ints);
-                       } else if (!strcmp(key, ACCOUNT_DATA_KEY_USER_DATA_TXT)) {
-                               int i;
-                               char **tmp_user_txts = unmarshal_user_txt_array(value);
-                               if (*tmp_user_txts != NULL) {
-                                       for (i = 0; i < USER_TXT_CNT; i++) {
-                                               account->user_data_txt[i] = strdup(tmp_user_txts[i]);
-                                               _ACCOUNT_FREE(tmp_user_txts[i]);
-                                       }
-                               }
-                               _ACCOUNT_FREE(tmp_user_txts);
-                       } else if (!strcmp(key, ACCOUNT_DATA_KEY_CAPABILITY_LIST))
-                               account->capablity_list = unmarshal_capability_list(value);
-                       else if (!strcmp(key, ACCOUNT_DATA_KEY_CUSTOM_LIST))
-                               account->custom_list = unmarshal_custom_list(value);
+                       _ERR("failed to get un-marshal data");
+                       return NULL;
                }
                list = g_slist_append(list, account);
        }