summaryrefslogtreecommitdiff
path: root/src/agent/framework/task/oma_ds_engine_controller_task.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/agent/framework/task/oma_ds_engine_controller_task.c')
-rwxr-xr-xsrc/agent/framework/task/oma_ds_engine_controller_task.c1137
1 files changed, 1137 insertions, 0 deletions
diff --git a/src/agent/framework/task/oma_ds_engine_controller_task.c b/src/agent/framework/task/oma_ds_engine_controller_task.c
new file mode 100755
index 0000000..ba7012d
--- /dev/null
+++ b/src/agent/framework/task/oma_ds_engine_controller_task.c
@@ -0,0 +1,1137 @@
+/*
+ * oma-ds-agent
+ * Copyright (c) 2012 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * @OMA_DS_Engine_Controller_Task.c
+ * @version 0.1
+ * @brief This file is the source file of implementation of make and register task to Engine Controller
+ */
+
+#include <string.h>
+
+#include <sync_agent.h>
+
+#include "framework/task/oma_ds_engine_controller_task.h"
+#include "service-engine/se_account.h"
+#include "service-engine/se_sync.h"
+#include "service-engine/se_storage.h"
+
+#ifndef OMADS_AGENT_LOG
+#undef LOG_TAG
+#define LOG_TAG "OMA_DS_COMMON"
+#endif
+
+static GList *sync_request_id_list = NULL;
+
+static void _free_sync_categorie_list(void *list);
+static void _free_delete_profile_list(void *list);
+static void _free_resource_cp_list(void *list);
+
+static void _request_msg_info_free(request_msg_info_t * info);
+static void *_string_copy_struct(void *string);
+static request_msg_info_t *_create_request_msg_info(int sync_type, unsigned int request_id);
+
+static void __free_resource_cp(resource_cp_s * resource);
+
+static void _free_sync_categorie_list(void *list)
+{
+ _INNER_FUNC_ENTER;
+ retm_if(list == NULL, "list is NULL");
+
+ GList *categories = (GList *) list;
+ GList *iter = NULL;
+ for (iter = categories; iter != NULL; iter = g_list_next(iter))
+ free_sync_service(iter->data);
+
+ g_list_free(categories);
+ _INNER_FUNC_EXIT;
+}
+
+static void _free_delete_profile_list(void *list)
+{
+ _INNER_FUNC_ENTER;
+ retm_if(list == NULL, "list is NULL");
+
+ GList *profiles = (GList *) list;
+ GList *iter = NULL;
+ for (iter = profiles; iter != NULL; iter = g_list_next(iter))
+ free(iter->data);
+
+ g_list_free(profiles);
+ _INNER_FUNC_EXIT;
+}
+
+static void _free_resource_cp_list(void *list)
+{
+ _INNER_FUNC_ENTER;
+ retm_if(list == NULL, "list is NULL");
+
+ GList *profiles = (GList *) list;
+ GList *iter = NULL;
+ for (iter = profiles; iter != NULL; iter = g_list_next(iter))
+ __free_resource_cp(iter->data);
+
+ g_list_free(profiles);
+ _INNER_FUNC_EXIT;
+}
+
+static void __free_resource_cp(resource_cp_s * resource)
+{
+ _INNER_FUNC_ENTER;
+ retm_if(resource == NULL, "resource is NULL");
+
+ if (resource->name != NULL)
+ free(resource->name);
+
+ if (resource->accept != NULL)
+ free(resource->accept);
+
+ if (resource->id != NULL)
+ free(resource->id);
+
+ if (resource->password != NULL)
+ free(resource->password);
+
+ if (resource->auth_type != NULL)
+ free(resource->auth_type);
+
+ if (resource->auth_data != NULL)
+ free(resource->auth_data);
+
+ free(resource);
+ _INNER_FUNC_EXIT;
+}
+
+static request_msg_info_t *_create_request_msg_info(int sync_type, unsigned int request_id)
+{
+ _INNER_FUNC_ENTER;
+ request_msg_info_t *pInfo = (request_msg_info_t *) calloc(1, sizeof(request_msg_info_t));
+ retvm_if(pInfo == NULL, NULL, "pInfo is NULL");
+
+ pInfo->sync_type = sync_type;
+ pInfo->request_id = request_id;
+
+ _INNER_FUNC_EXIT;
+ return pInfo;
+}
+
+static void _request_msg_info_free(request_msg_info_t * info)
+{
+ _INNER_FUNC_ENTER;
+
+ if (info != NULL)
+ free(info);
+
+ _INNER_FUNC_EXIT;
+}
+
+static void *_string_copy_struct(void *string)
+{
+ _INNER_FUNC_ENTER;
+
+ void *data = NULL;
+ data = strdup((const char *)string);
+
+ _INNER_FUNC_EXIT;
+ return data;
+}
+
+sync_agent_ec_task_spec_s *make_synchronize_task()
+{
+ _EXTERN_FUNC_ENTER;
+
+ sync_agent_ec_param_spec_s *pParam_spec1 = sync_agent_alloc_param_spec_int("accountId", true, false, false, 0, 0, false, 0, false, 0, 0);
+ sync_agent_ec_param_spec_s *pParam_spec2 = sync_agent_alloc_param_spec_structure("syncMode", _string_copy_struct, free,
+ true, false, false, NULL, false, NULL, false, NULL);
+ sync_agent_ec_param_spec_s *pParam_spec3 = sync_agent_alloc_param_spec_structure("sanPackage", NULL, sanPackageParserFree,
+ true, false, false, NULL, false, NULL, false, NULL);
+ sync_agent_ec_param_spec_s *param_spec_array[3] = { pParam_spec1, pParam_spec2, pParam_spec3 };
+
+ sync_agent_ec_task_spec_s *pTask_spec = sync_agent_alloc_simple_task_spec("synchronize",
+ synchronize_task_process, NULL, NULL,
+ 3, param_spec_array);
+
+ sync_agent_unref_param_spec(pParam_spec1);
+ sync_agent_unref_param_spec(pParam_spec2);
+ sync_agent_unref_param_spec(pParam_spec3);
+
+ _EXTERN_FUNC_EXIT;
+ return pTask_spec;
+}
+
+sync_agent_ec_task_spec_s *make_add_profile_task()
+{
+ _EXTERN_FUNC_ENTER;
+
+ sync_agent_ec_param_spec_s *pParam_spec1 = sync_agent_alloc_param_spec_structure("profileDirName", _string_copy_struct, free,
+ true, false, false, NULL, false, NULL, false, NULL);
+ sync_agent_ec_param_spec_s *pParam_spec2 = sync_agent_alloc_param_spec_structure("profileName", _string_copy_struct, free,
+ true, false, false, NULL, false, NULL, false, NULL);
+ sync_agent_ec_param_spec_s *pParam_spec3 = sync_agent_alloc_param_spec_structure("addr", _string_copy_struct, free,
+ true, false, false, NULL, false, NULL, false, NULL);
+ sync_agent_ec_param_spec_s *pParam_spec4 = sync_agent_alloc_param_spec_structure("id", _string_copy_struct, free,
+ true, false, false, NULL, false, NULL, false, NULL);
+ sync_agent_ec_param_spec_s *pParam_spec5 = sync_agent_alloc_param_spec_structure("password", _string_copy_struct, free,
+ true, false, false, NULL, false, NULL, false, NULL);
+ sync_agent_ec_param_spec_s *pParam_spec6 = sync_agent_alloc_param_spec_structure("syncMode", _string_copy_struct, free,
+ true, false, false, NULL, false, NULL, false, NULL);
+ sync_agent_ec_param_spec_s *pParam_spec7 = sync_agent_alloc_param_spec_structure("syncType", _string_copy_struct, free,
+ true, false, false, NULL, false, NULL, false, NULL);
+ sync_agent_ec_param_spec_s *pParam_spec8 = sync_agent_alloc_param_spec_structure("interval", _string_copy_struct, free,
+ true, false, false, NULL, false, NULL, false, NULL);
+ sync_agent_ec_param_spec_s *pParam_spec9 = sync_agent_alloc_param_spec_structure("categories", NULL, _free_sync_categorie_list,
+ true, false, false, NULL, false, NULL, false, NULL);
+
+ sync_agent_ec_param_spec_s *pParam_spec10 = sync_agent_alloc_param_spec_int("result", false, true, false, 0, 0, false, 0, false, 0, 0);
+ sync_agent_ec_param_spec_s *pParam_spec11 = sync_agent_alloc_param_spec_int("accountId", false, true, false, 0, 0, false, 0, false, 0, 0);
+
+ sync_agent_ec_param_spec_s *param_spec_array[11] = { pParam_spec1, pParam_spec2, pParam_spec3, pParam_spec4, pParam_spec5,
+ pParam_spec6, pParam_spec7, pParam_spec8, pParam_spec9, pParam_spec10, pParam_spec11
+ };
+
+ sync_agent_ec_task_spec_s *pTask_spec = sync_agent_alloc_simple_task_spec("add_profile",
+ add_profile_task_process, NULL, NULL,
+ 11, param_spec_array);
+
+ sync_agent_unref_param_spec(pParam_spec1);
+ sync_agent_unref_param_spec(pParam_spec2);
+ sync_agent_unref_param_spec(pParam_spec3);
+ sync_agent_unref_param_spec(pParam_spec4);
+ sync_agent_unref_param_spec(pParam_spec5);
+ sync_agent_unref_param_spec(pParam_spec6);
+ sync_agent_unref_param_spec(pParam_spec7);
+ sync_agent_unref_param_spec(pParam_spec8);
+ sync_agent_unref_param_spec(pParam_spec9);
+ sync_agent_unref_param_spec(pParam_spec10);
+ sync_agent_unref_param_spec(pParam_spec11);
+
+ _EXTERN_FUNC_EXIT;
+ return pTask_spec;
+}
+
+sync_agent_ec_task_spec_s *make_edit_profile_task()
+{
+ _EXTERN_FUNC_ENTER;
+
+ sync_agent_ec_param_spec_s *pParam_spec1 = sync_agent_alloc_param_spec_int("accountId", true, false, false, 0, 0, false, 0, false, 0, 0);
+ sync_agent_ec_param_spec_s *pParam_spec2 = sync_agent_alloc_param_spec_structure("profileName", _string_copy_struct, free,
+ true, false, false, NULL, false, NULL, false, NULL);
+ sync_agent_ec_param_spec_s *pParam_spec3 = sync_agent_alloc_param_spec_structure("addr", _string_copy_struct, free,
+ true, false, false, NULL, false, NULL, false, NULL);
+ sync_agent_ec_param_spec_s *pParam_spec4 = sync_agent_alloc_param_spec_structure("id", _string_copy_struct, free,
+ true, false, false, NULL, false, NULL, false, NULL);
+ sync_agent_ec_param_spec_s *pParam_spec5 = sync_agent_alloc_param_spec_structure("password", _string_copy_struct, free,
+ true, false, false, NULL, false, NULL, false, NULL);
+ sync_agent_ec_param_spec_s *pParam_spec6 = sync_agent_alloc_param_spec_structure("syncMode", _string_copy_struct, free,
+ true, false, false, NULL, false, NULL, false, NULL);
+ sync_agent_ec_param_spec_s *pParam_spec7 = sync_agent_alloc_param_spec_structure("syncType", _string_copy_struct, free,
+ true, false, false, NULL, false, NULL, false, NULL);
+ sync_agent_ec_param_spec_s *pParam_spec8 = sync_agent_alloc_param_spec_structure("interval", _string_copy_struct, free,
+ true, false, false, NULL, false, NULL, false, NULL);
+ sync_agent_ec_param_spec_s *pParam_spec9 = sync_agent_alloc_param_spec_structure("categories", NULL, _free_sync_categorie_list,
+ true, false, false, NULL, false, NULL, false, NULL);
+
+ sync_agent_ec_param_spec_s *pParam_spec10 = sync_agent_alloc_param_spec_int("result", false, true, false, 0, 0, false, 0, false, 0, 0);
+
+ sync_agent_ec_param_spec_s *param_spec_array[10] = { pParam_spec1, pParam_spec2, pParam_spec3, pParam_spec4, pParam_spec5,
+ pParam_spec6, pParam_spec7, pParam_spec8, pParam_spec9, pParam_spec10
+ };
+
+ sync_agent_ec_task_spec_s *pTask_spec = sync_agent_alloc_simple_task_spec("edit_profile",
+ edit_profile_task_process, NULL, NULL,
+ 10, param_spec_array);
+
+ sync_agent_unref_param_spec(pParam_spec1);
+ sync_agent_unref_param_spec(pParam_spec2);
+ sync_agent_unref_param_spec(pParam_spec3);
+ sync_agent_unref_param_spec(pParam_spec4);
+ sync_agent_unref_param_spec(pParam_spec5);
+ sync_agent_unref_param_spec(pParam_spec6);
+ sync_agent_unref_param_spec(pParam_spec7);
+ sync_agent_unref_param_spec(pParam_spec8);
+ sync_agent_unref_param_spec(pParam_spec9);
+ sync_agent_unref_param_spec(pParam_spec10);
+
+ _EXTERN_FUNC_EXIT;
+ return pTask_spec;
+}
+
+sync_agent_ec_task_spec_s *make_delete_profile_task()
+{
+ _EXTERN_FUNC_ENTER;
+
+ sync_agent_ec_param_spec_s *pParam_spec1 = sync_agent_alloc_param_spec_structure("profiles", NULL, _free_delete_profile_list,
+ true, false, false, NULL, false, NULL, false, NULL);
+
+ sync_agent_ec_param_spec_s *pParam_spec2 = sync_agent_alloc_param_spec_int("result", false, true, false, 0, 0, false, 0, false, 0, 0);
+
+ sync_agent_ec_param_spec_s *param_spec_array[2] = { pParam_spec1, pParam_spec2 };
+
+ sync_agent_ec_task_spec_s *pTask_spec = sync_agent_alloc_simple_task_spec("delete_profile",
+ delete_profile_task_process, NULL, NULL,
+ 2, param_spec_array);
+
+ sync_agent_unref_param_spec(pParam_spec1);
+ sync_agent_unref_param_spec(pParam_spec2);
+
+ _EXTERN_FUNC_EXIT;
+ return pTask_spec;
+}
+
+sync_agent_ec_task_spec_s *make_get_profile_data_task()
+{
+ _EXTERN_FUNC_ENTER;
+
+ sync_agent_ec_param_spec_s *pParam_spec1 = sync_agent_alloc_param_spec_int("accountId", true, false, false, 0, 0, false, 0, false, 0, 0);
+ sync_agent_ec_param_spec_s *pParam_spec2 = sync_agent_alloc_param_spec_int("result", false, true, false, 0, 0, false, 0, false, 0, 0);
+ sync_agent_ec_param_spec_s *pParam_spec3 = sync_agent_alloc_param_spec_structure("profileName", _string_copy_struct, free,
+ false, true, false, NULL, false, NULL, false, NULL);
+ sync_agent_ec_param_spec_s *pParam_spec4 = sync_agent_alloc_param_spec_structure("addr", _string_copy_struct, free,
+ false, true, false, NULL, false, NULL, false, NULL);
+ sync_agent_ec_param_spec_s *pParam_spec5 = sync_agent_alloc_param_spec_structure("id", _string_copy_struct, free,
+ false, true, false, NULL, false, NULL, false, NULL);
+ sync_agent_ec_param_spec_s *pParam_spec6 = sync_agent_alloc_param_spec_structure("password", _string_copy_struct, free,
+ false, true, false, NULL, false, NULL, false, NULL);
+ sync_agent_ec_param_spec_s *pParam_spec7 = sync_agent_alloc_param_spec_structure("syncMode", _string_copy_struct, free,
+ false, true, false, NULL, false, NULL, false, NULL);
+ sync_agent_ec_param_spec_s *pParam_spec8 = sync_agent_alloc_param_spec_structure("syncType", _string_copy_struct, free,
+ false, true, false, NULL, false, NULL, false, NULL);
+ sync_agent_ec_param_spec_s *pParam_spec9 = sync_agent_alloc_param_spec_structure("interval", _string_copy_struct, free,
+ false, true, false, NULL, false, NULL, false, NULL);
+ sync_agent_ec_param_spec_s *pParam_spec10 = sync_agent_alloc_param_spec_int("lastSessionStatus", false, true, false, 0, 0, false, 0, false, 0, 0);
+ sync_agent_ec_param_spec_s *pParam_spec11 = sync_agent_alloc_param_spec_int("lastSessionTime", false, true, false, 0, 0, false, 0, false, 0, 0);
+
+ sync_agent_ec_param_spec_s *param_spec_array[11] = { pParam_spec1, pParam_spec2, pParam_spec3,
+ pParam_spec4, pParam_spec5, pParam_spec6, pParam_spec7, pParam_spec8,
+ pParam_spec9, pParam_spec10, pParam_spec11
+ };
+
+ sync_agent_ec_task_spec_s *pTask_spec = sync_agent_alloc_simple_task_spec("get_profile_data",
+ get_profile_data_task_process, NULL, NULL,
+ 11, param_spec_array);
+
+ sync_agent_unref_param_spec(pParam_spec1);
+ sync_agent_unref_param_spec(pParam_spec2);
+ sync_agent_unref_param_spec(pParam_spec3);
+ sync_agent_unref_param_spec(pParam_spec4);
+ sync_agent_unref_param_spec(pParam_spec5);
+ sync_agent_unref_param_spec(pParam_spec6);
+ sync_agent_unref_param_spec(pParam_spec7);
+ sync_agent_unref_param_spec(pParam_spec8);
+ sync_agent_unref_param_spec(pParam_spec9);
+ sync_agent_unref_param_spec(pParam_spec10);
+ sync_agent_unref_param_spec(pParam_spec11);
+
+ _EXTERN_FUNC_EXIT;
+ return pTask_spec;
+}
+
+sync_agent_ec_task_spec_s *make_get_profile_sync_category_task()
+{
+ _EXTERN_FUNC_ENTER;
+
+ sync_agent_ec_param_spec_s *pParam_spec1 = sync_agent_alloc_param_spec_int("accountId", true, false, false, 0, 0, false, 0, false, 0, 0);
+ sync_agent_ec_param_spec_s *pParam_spec2 = sync_agent_alloc_param_spec_int("contentType", true, false, false, 0, 0, false, 0, false, 0, 0);
+
+ sync_agent_ec_param_spec_s *pParam_spec3 = sync_agent_alloc_param_spec_int("result", false, true, false, 0, 0, false, 0, false, 0, 0);
+ sync_agent_ec_param_spec_s *pParam_spec4 = sync_agent_alloc_param_spec_int("enabled", false, true, false, 0, 0, false, 0, false, 0, 0);
+ sync_agent_ec_param_spec_s *pParam_spec5 = sync_agent_alloc_param_spec_structure("srcURI", _string_copy_struct, free,
+ false, true, false, NULL, false, NULL, false, NULL);
+ sync_agent_ec_param_spec_s *pParam_spec6 = sync_agent_alloc_param_spec_structure("tgtURI", _string_copy_struct, free,
+ false, true, false, NULL, false, NULL, false, NULL);
+ sync_agent_ec_param_spec_s *pParam_spec7 = sync_agent_alloc_param_spec_structure("id", _string_copy_struct, free,
+ false, true, false, NULL, false, NULL, false, NULL);
+ sync_agent_ec_param_spec_s *pParam_spec8 = sync_agent_alloc_param_spec_structure("password", _string_copy_struct, free,
+ false, true, false, NULL, false, NULL, false, NULL);
+
+ sync_agent_ec_param_spec_s *param_spec_array[8] = { pParam_spec1, pParam_spec2, pParam_spec3, pParam_spec4,
+ pParam_spec5, pParam_spec6, pParam_spec7, pParam_spec8
+ };
+
+ sync_agent_ec_task_spec_s *pTask_spec = sync_agent_alloc_simple_task_spec("get_profile_sync_category",
+ get_profile_sync_category_task_process, NULL, NULL,
+ 8, param_spec_array);
+
+ sync_agent_unref_param_spec(pParam_spec1);
+ sync_agent_unref_param_spec(pParam_spec2);
+ sync_agent_unref_param_spec(pParam_spec3);
+ sync_agent_unref_param_spec(pParam_spec4);
+ sync_agent_unref_param_spec(pParam_spec5);
+ sync_agent_unref_param_spec(pParam_spec6);
+ sync_agent_unref_param_spec(pParam_spec7);
+ sync_agent_unref_param_spec(pParam_spec8);
+
+ _EXTERN_FUNC_EXIT;
+ return pTask_spec;
+}
+
+sync_agent_ec_task_spec_s *make_get_profile_statistics_task()
+{
+ _EXTERN_FUNC_ENTER;
+
+ sync_agent_ec_param_spec_s *pParam_spec1 = sync_agent_alloc_param_spec_int("accountId", true, false, false, 0, 0, false, 0, false, 0, 0);
+ sync_agent_ec_param_spec_s *pParam_spec2 = sync_agent_alloc_param_spec_int("contentType", true, false, false, 0, 0, false, 0, false, 0, 0);
+
+ sync_agent_ec_param_spec_s *pParam_spec3 = sync_agent_alloc_param_spec_int("result", false, true, false, 0, 0, false, 0, false, 0, 0);
+ sync_agent_ec_param_spec_s *pParam_spec4 = sync_agent_alloc_param_spec_structure("dbSynced", _string_copy_struct, free,
+ false, true, false, NULL, false, NULL, false, NULL);
+ sync_agent_ec_param_spec_s *pParam_spec5 = sync_agent_alloc_param_spec_int("lastSessionTime", false, true, false, 0, 0, false, 0, false, 0, 0);
+ sync_agent_ec_param_spec_s *pParam_spec6 = sync_agent_alloc_param_spec_int("server2Client_Total", false, true, false, 0, 0, false, 0, false, 0, 0);
+ sync_agent_ec_param_spec_s *pParam_spec7 = sync_agent_alloc_param_spec_int("server2Client_NrOfAdd", false, true, false, 0, 0, false, 0, false, 0, 0);
+ sync_agent_ec_param_spec_s *pParam_spec8 = sync_agent_alloc_param_spec_int("server2Client_NrOfDelete", false, true, false, 0, 0, false, 0, false, 0, 0);
+ sync_agent_ec_param_spec_s *pParam_spec9 = sync_agent_alloc_param_spec_int("server2Client_NrOfReplace", false, true, false, 0, 0, false, 0, false, 0, 0);
+ sync_agent_ec_param_spec_s *pParam_spec10 = sync_agent_alloc_param_spec_int("client2Server_Total", false, true, false, 0, 0, false, 0, false, 0, 0);
+ sync_agent_ec_param_spec_s *pParam_spec11 = sync_agent_alloc_param_spec_int("client2Server_NrOfAdd", false, true, false, 0, 0, false, 0, false, 0, 0);
+ sync_agent_ec_param_spec_s *pParam_spec12 = sync_agent_alloc_param_spec_int("client2Server_NrOfDelete", false, true, false, 0, 0, false, 0, false, 0, 0);
+ sync_agent_ec_param_spec_s *pParam_spec13 = sync_agent_alloc_param_spec_int("client2Server_NrOfReplace", false, true, false, 0, 0, false, 0, false, 0, 0);
+
+ sync_agent_ec_param_spec_s *param_spec_array[13] = { pParam_spec1, pParam_spec2, pParam_spec3,
+ pParam_spec4, pParam_spec5, pParam_spec6, pParam_spec7, pParam_spec8,
+ pParam_spec9, pParam_spec10, pParam_spec11, pParam_spec12, pParam_spec13
+ };
+
+ sync_agent_ec_task_spec_s *pTask_spec = sync_agent_alloc_simple_task_spec("get_profile_statistics",
+ get_profile_statistics_task_process, NULL, NULL,
+ 13, param_spec_array);
+
+ sync_agent_unref_param_spec(pParam_spec1);
+ sync_agent_unref_param_spec(pParam_spec2);
+ sync_agent_unref_param_spec(pParam_spec3);
+ sync_agent_unref_param_spec(pParam_spec4);
+ sync_agent_unref_param_spec(pParam_spec5);
+ sync_agent_unref_param_spec(pParam_spec6);
+ sync_agent_unref_param_spec(pParam_spec7);
+ sync_agent_unref_param_spec(pParam_spec8);
+ sync_agent_unref_param_spec(pParam_spec9);
+ sync_agent_unref_param_spec(pParam_spec10);
+ sync_agent_unref_param_spec(pParam_spec11);
+ sync_agent_unref_param_spec(pParam_spec12);
+ sync_agent_unref_param_spec(pParam_spec13);
+
+ _EXTERN_FUNC_EXIT;
+ return pTask_spec;
+}
+
+sync_agent_ec_task_spec_s *make_reset_synchronizing_profiles_task()
+{
+ _EXTERN_FUNC_ENTER;
+
+ sync_agent_ec_task_spec_s *pTask_spec = sync_agent_alloc_simple_task_spec("reset_synchronizing_profiles",
+ reset_synchronizing_profiles_task_process, NULL, NULL,
+ 0, NULL);
+
+ _EXTERN_FUNC_EXIT;
+ return pTask_spec;
+}
+
+sync_agent_ec_task_spec_s *make_add_profile_cp_task()
+{
+ _EXTERN_FUNC_ENTER;
+
+ sync_agent_ec_param_spec_s *pParam_spec1 = sync_agent_alloc_param_spec_structure("profileName", _string_copy_struct, free,
+ true, false, false, NULL, false, NULL, false, NULL);
+ sync_agent_ec_param_spec_s *pParam_spec2 = sync_agent_alloc_param_spec_structure("addr", _string_copy_struct, free,
+ true, false, false, NULL, false, NULL, false, NULL);
+ sync_agent_ec_param_spec_s *pParam_spec3 = sync_agent_alloc_param_spec_structure("id", _string_copy_struct, free,
+ true, false, false, NULL, false, NULL, false, NULL);
+ sync_agent_ec_param_spec_s *pParam_spec4 = sync_agent_alloc_param_spec_structure("password", _string_copy_struct, free,
+ true, false, false, NULL, false, NULL, false, NULL);
+ sync_agent_ec_param_spec_s *pParam_spec5 = sync_agent_alloc_param_spec_structure("categories", NULL, _free_resource_cp_list,
+ true, false, false, NULL, false, NULL, false, NULL);
+
+ sync_agent_ec_param_spec_s *pParam_spec6 = sync_agent_alloc_param_spec_int("result", false, true, false, 0, 0, false, 0, false, 0, 0);
+ sync_agent_ec_param_spec_s *pParam_spec7 = sync_agent_alloc_param_spec_int("accountId", false, true, false, 0, 0, false, 0, false, 0, 0);
+
+ sync_agent_ec_param_spec_s *param_spec_array[7] = { pParam_spec1, pParam_spec2, pParam_spec3, pParam_spec4, pParam_spec5,
+ pParam_spec6, pParam_spec7
+ };
+
+ sync_agent_ec_task_spec_s *pTask_spec = sync_agent_alloc_simple_task_spec("add_profile_cp",
+ add_profile_cp_task_process, NULL, NULL,
+ 7, param_spec_array);
+
+ sync_agent_unref_param_spec(pParam_spec1);
+ sync_agent_unref_param_spec(pParam_spec2);
+ sync_agent_unref_param_spec(pParam_spec3);
+ sync_agent_unref_param_spec(pParam_spec4);
+ sync_agent_unref_param_spec(pParam_spec5);
+ sync_agent_unref_param_spec(pParam_spec6);
+ sync_agent_unref_param_spec(pParam_spec7);
+
+ _EXTERN_FUNC_EXIT;
+ return pTask_spec;
+}
+
+sync_agent_ec_task_spec_s *make_refresh_from_service_task()
+{
+ _EXTERN_FUNC_ENTER;
+
+ sync_agent_ec_param_spec_s *pParam_spec1 = sync_agent_alloc_param_spec_int("accountId", true, false, false, 0, 0, false, 0, false, 0, 0);
+
+ sync_agent_ec_param_spec_s *param_spec_array[1] = { pParam_spec1 };
+
+ sync_agent_ec_task_spec_s *pTask_spec = sync_agent_alloc_simple_task_spec("refresh_from_service",
+ refresh_from_service_task_process, NULL, NULL,
+ 1, param_spec_array);
+
+ sync_agent_unref_param_spec(pParam_spec1);
+
+ _EXTERN_FUNC_EXIT;
+ return pTask_spec;
+}
+
+sync_agent_ec_task_spec_s *make_cancel_request_task()
+{
+ _EXTERN_FUNC_ENTER;
+
+ sync_agent_ec_task_spec_s *pTask_spec = sync_agent_alloc_simple_task_spec("cancel_sync_request",
+ cancel_sync_request_task_process, NULL, NULL,
+ 0, NULL);
+
+ _EXTERN_FUNC_EXIT;
+ return pTask_spec;
+}
+
+sync_agent_ec_task_spec_s *make_reset_all_data_task()
+{
+ _EXTERN_FUNC_ENTER;
+
+ sync_agent_ec_param_spec_s *pParam_spec1 = sync_agent_alloc_param_spec_int("result", false, true, false, 0, 0, false, 0, false, 0, 0);
+ sync_agent_ec_param_spec_s *param_spec_array[1] = { pParam_spec1 };
+
+ sync_agent_ec_task_spec_s *pTask_spec = sync_agent_alloc_simple_task_spec("reset_all_data",
+ reset_all_data_task_process, NULL, NULL,
+ 1, param_spec_array);
+
+ sync_agent_unref_param_spec(pParam_spec1);
+
+ _EXTERN_FUNC_EXIT;
+ return pTask_spec;
+}
+
+sync_agent_ec_task_spec_s *make_get_all_profiles_data_task()
+{
+ _EXTERN_FUNC_ENTER;
+
+ sync_agent_ec_param_spec_s *pParam_spec1 = sync_agent_alloc_param_spec_int("result", false, true, false, 0, 0, false, 0, false, 0, 0);
+ sync_agent_ec_param_spec_s *pParam_spec2 = sync_agent_alloc_param_spec_structure("profilesData", NULL, NULL,
+ false, true, false, NULL, false, NULL, false, NULL);
+
+ sync_agent_ec_param_spec_s *param_spec_array[2] = { pParam_spec1, pParam_spec2 };
+
+ sync_agent_ec_task_spec_s *pTask_spec = sync_agent_alloc_simple_task_spec("get_all_profiles_data",
+ get_all_profiles_data_task_process, NULL, NULL,
+ 2, param_spec_array);
+
+ _EXTERN_FUNC_EXIT;
+ return pTask_spec;
+}
+
+sync_agent_ec_task_error_e synchronize_task_process(unsigned int param_cnt, sync_agent_ec_param_param_s ** param_array)
+{
+ _EXTERN_FUNC_ENTER;
+
+ sync_agent_ec_task_error_e err = SYNC_AGENT_EC_TASK_ERROR_RUN_SUCCESS;
+
+ int accountId = 0;
+ sync_agent_get_param_value(&(param_array[0]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &accountId);
+ retvm_if(accountId < 0, SYNC_AGENT_EC_TASK_ERROR_RUN_FAILED, "account id = %d", accountId);
+
+ char *syncMode = NULL;
+ sync_agent_get_param_value(&(param_array[1]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &syncMode);
+
+ san_package_s *pSanPackage = NULL;
+ sync_agent_get_param_value(&(param_array[2]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &pSanPackage);
+
+ _DEBUG_INFO("accountId = %d", accountId);
+ _DEBUG_INFO("syncMode = %s", syncMode);
+
+ bool result = synchronize(accountId, syncMode, pSanPackage);
+ if (result == false)
+ err = SYNC_AGENT_EC_TASK_ERROR_RUN_FAILED;
+
+ _EXTERN_FUNC_EXIT;
+ return err;
+}
+
+sync_agent_ec_task_error_e add_profile_task_process(unsigned int param_cnt, sync_agent_ec_param_param_s ** param_array)
+{
+ _EXTERN_FUNC_ENTER;
+
+ sync_agent_ec_task_error_e err = SYNC_AGENT_EC_TASK_ERROR_RUN_SUCCESS;
+
+ char *profileDirName = NULL;
+ char *profileName = NULL;
+ char *addr = NULL;
+ char *id = NULL;
+ char *password = NULL;
+ char *syncMode = NULL;
+ char *syncType = NULL;
+ char *interval = NULL;
+ GList *categories = NULL;
+ int accountId;
+
+ bool res;
+ int result;
+
+ sync_agent_get_param_value(&(param_array[0]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &profileDirName);
+ sync_agent_get_param_value(&(param_array[1]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &profileName);
+ sync_agent_get_param_value(&(param_array[2]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &addr);
+ sync_agent_get_param_value(&(param_array[3]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &id);
+ sync_agent_get_param_value(&(param_array[4]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &password);
+ sync_agent_get_param_value(&(param_array[5]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &syncMode);
+ sync_agent_get_param_value(&(param_array[6]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &syncType);
+ sync_agent_get_param_value(&(param_array[7]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &interval);
+ sync_agent_get_param_value(&(param_array[8]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &categories);
+
+ res = add_profile(profileDirName, profileName, addr, id, password, syncMode, syncType, interval, categories, &accountId);
+ if (res == false) {
+ err = SYNC_AGENT_EC_TASK_ERROR_RUN_FAILED;
+ result = 0;
+ } else
+ result = 1;
+
+ sync_agent_set_param_value(&(param_array[9]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &result);
+ sync_agent_set_param_value(&(param_array[10]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &accountId);
+
+ /*step 2 : start refresh_from_service for added account */
+ void *in_param_value_array[1] = { &accountId };
+ int in_param_index_array[1] = { 0 };
+ sync_agent_ec_value_type_e in_param_value_type_array[1] = { SYNC_AGENT_EC_VALUE_TYPE_INT };
+ unsigned int request_msg_id = 0;
+ sync_agent_request_async_task(EC_MSG_TYPE_SYNC_TASK_REFRESH_FROM_SERVICE, 0, 1, in_param_index_array, in_param_value_type_array, in_param_value_array, NULL, NULL, (int *)&request_msg_id);
+
+ _EXTERN_FUNC_EXIT;
+ return err;
+}
+
+sync_agent_ec_task_error_e edit_profile_task_process(unsigned int param_cnt, sync_agent_ec_param_param_s ** param_array)
+{
+ _EXTERN_FUNC_ENTER;
+
+ sync_agent_ec_task_error_e err = SYNC_AGENT_EC_TASK_ERROR_RUN_SUCCESS;
+
+ int accountId;
+ char *profileName = NULL;
+ char *addr = NULL;
+ char *id = NULL;
+ char *password = NULL;
+ char *syncMode = NULL;
+ char *syncType = NULL;
+ char *interval = NULL;
+ GList *categories = NULL;
+
+ bool res;
+ int result;
+
+ sync_agent_get_param_value(&(param_array[0]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &accountId);
+ sync_agent_get_param_value(&(param_array[1]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &profileName);
+ sync_agent_get_param_value(&(param_array[2]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &addr);
+ sync_agent_get_param_value(&(param_array[3]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &id);
+ sync_agent_get_param_value(&(param_array[4]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &password);
+ sync_agent_get_param_value(&(param_array[5]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &syncMode);
+ sync_agent_get_param_value(&(param_array[6]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &syncType);
+ sync_agent_get_param_value(&(param_array[7]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &interval);
+ sync_agent_get_param_value(&(param_array[8]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &categories);
+
+ res = edit_profile(accountId, profileName, addr, id, password, syncMode, syncType, interval, categories);
+ if (res == false) {
+ err = SYNC_AGENT_EC_TASK_ERROR_RUN_FAILED;
+ result = 0;
+ } else
+ result = 1;
+
+ sync_agent_set_param_value(&(param_array[9]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &result);
+
+ _EXTERN_FUNC_EXIT;
+ return err;
+}
+
+sync_agent_ec_task_error_e delete_profile_task_process(unsigned int param_cnt, sync_agent_ec_param_param_s ** param_array)
+{
+ _EXTERN_FUNC_ENTER;
+
+ bool res;
+ int result;
+ sync_agent_ec_task_error_e err = SYNC_AGENT_EC_TASK_ERROR_RUN_SUCCESS;
+
+ GList *profiles = NULL;
+ sync_agent_get_param_value(&(param_array[0]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &profiles);
+
+ res = delete_profiles(profiles);
+ if (res == 0) {
+ err = SYNC_AGENT_EC_TASK_ERROR_RUN_FAILED;
+ result = 0;
+ } else
+ result = 1;
+
+ sync_agent_set_param_value(&(param_array[1]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &result);
+
+ _EXTERN_FUNC_EXIT;
+ return err;
+
+}
+
+sync_agent_ec_task_error_e get_profile_data_task_process(unsigned int param_cnt, sync_agent_ec_param_param_s ** param_array)
+{
+ _EXTERN_FUNC_ENTER;
+
+ sync_agent_ec_task_error_e err = SYNC_AGENT_EC_TASK_ERROR_RUN_SUCCESS;
+
+ int accountId = 0;
+ char *profileName = NULL;
+ char *addr = NULL;
+ char *id = NULL;
+ char *password = NULL;
+ char *syncMode = NULL;
+ char *syncType = NULL;
+ char *interval = NULL;
+ int lastSessionStatus;
+ int lastSessionTime;
+ int result;
+ bool res;
+
+ sync_agent_get_param_value(&(param_array[0]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &accountId);
+ retvm_if(accountId < 0, SYNC_AGENT_EC_TASK_ERROR_RUN_FAILED, "account id = %d", accountId);
+
+ res = get_profile_data(accountId, &profileName, &addr, &id, &password, &syncMode, &syncType, &interval, &lastSessionStatus, &lastSessionTime);
+ if (res == false) {
+ err = SYNC_AGENT_EC_TASK_ERROR_RUN_FAILED;
+ result = 0;
+ } else
+ result = 1;
+
+ sync_agent_set_param_value(&(param_array[1]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &result);
+ sync_agent_set_param_value(&(param_array[2]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &profileName);
+ sync_agent_set_param_value(&(param_array[3]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &addr);
+ sync_agent_set_param_value(&(param_array[4]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &id);
+ sync_agent_set_param_value(&(param_array[5]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &password);
+ sync_agent_set_param_value(&(param_array[6]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &syncMode);
+ sync_agent_set_param_value(&(param_array[7]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &syncType);
+ sync_agent_set_param_value(&(param_array[8]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &interval);
+ sync_agent_set_param_value(&(param_array[9]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &lastSessionStatus);
+ sync_agent_set_param_value(&(param_array[10]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &lastSessionTime);
+
+ _EXTERN_FUNC_EXIT;
+ return err;
+
+}
+
+sync_agent_ec_task_error_e get_profile_sync_category_task_process(unsigned int param_cnt, sync_agent_ec_param_param_s ** param_array)
+{
+ _EXTERN_FUNC_ENTER;
+
+ sync_agent_ec_task_error_e err = SYNC_AGENT_EC_TASK_ERROR_RUN_SUCCESS;
+
+ int accountId = 0;
+ int contentType;
+
+ int enabled = 0;
+ char *srcURI = NULL;
+ char *tgtURI = NULL;
+ char *id = NULL;
+ char *password = NULL;
+ bool res;
+ int result = 0;
+
+ sync_agent_get_param_value(&(param_array[0]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &accountId);
+ retvm_if(accountId < 0, SYNC_AGENT_EC_TASK_ERROR_RUN_FAILED, "account id = %d", accountId);
+
+ sync_agent_get_param_value(&(param_array[1]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &contentType);
+
+ res = get_profile_sync_category(accountId, contentType, &enabled, &srcURI, &tgtURI, &id, &password);
+ if (res == false) {
+ err = SYNC_AGENT_EC_TASK_ERROR_RUN_FAILED;
+ result = 0;
+ } else
+ result = 1;
+
+ sync_agent_set_param_value(&(param_array[2]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &result);
+ sync_agent_set_param_value(&(param_array[3]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &enabled);
+ sync_agent_set_param_value(&(param_array[4]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &srcURI);
+ sync_agent_set_param_value(&(param_array[5]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &tgtURI);
+ sync_agent_set_param_value(&(param_array[6]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &id);
+ sync_agent_set_param_value(&(param_array[7]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &password);
+
+ _EXTERN_FUNC_EXIT;
+ return err;
+}
+
+sync_agent_ec_task_error_e get_profile_statistics_task_process(unsigned int param_cnt, sync_agent_ec_param_param_s ** param_array)
+{
+ _EXTERN_FUNC_ENTER;
+
+ sync_agent_ec_task_error_e err = SYNC_AGENT_EC_TASK_ERROR_RUN_SUCCESS;
+
+ int accountId = 0;
+ int contentType;
+
+ char *dbSynced = NULL;
+ int lastSessionTime = -1;
+ int server2Client_Total = 0;
+ int server2Client_NrOfAdd = 0;
+ int server2Client_NrOfDelete = 0;
+ int server2Client_NrOfReplace = 0;
+ int client2Server_Total = 0;
+ int client2Server_NrOfAdd = 0;
+ int client2Server_NrOfDelete = 0;
+ int client2Server_NrOfReplace = 0;
+
+ bool res;
+ int result;
+
+ sync_agent_get_param_value(&(param_array[0]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &accountId);
+ retvm_if(accountId < 0, SYNC_AGENT_EC_TASK_ERROR_RUN_FAILED, "account id = %d", accountId);
+
+ sync_agent_get_param_value(&(param_array[1]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &contentType);
+
+ res = get_profile_statistics(accountId, contentType, &dbSynced, &lastSessionTime,
+ &server2Client_Total, &server2Client_NrOfAdd, &server2Client_NrOfDelete, &server2Client_NrOfReplace, &client2Server_Total, &client2Server_NrOfAdd, &client2Server_NrOfDelete, &client2Server_NrOfReplace);
+
+ if (res == false) {
+ err = SYNC_AGENT_EC_TASK_ERROR_RUN_FAILED;
+ result = 0;
+ } else
+ result = 1;
+
+ sync_agent_set_param_value(&(param_array[2]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &result);
+ sync_agent_set_param_value(&(param_array[3]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &dbSynced);
+ sync_agent_set_param_value(&(param_array[4]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &lastSessionTime);
+ sync_agent_set_param_value(&(param_array[5]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &server2Client_Total);
+ sync_agent_set_param_value(&(param_array[6]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &server2Client_NrOfAdd);
+ sync_agent_set_param_value(&(param_array[7]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &server2Client_NrOfDelete);
+ sync_agent_set_param_value(&(param_array[8]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &server2Client_NrOfReplace);
+ sync_agent_set_param_value(&(param_array[9]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &client2Server_Total);
+ sync_agent_set_param_value(&(param_array[10]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &client2Server_NrOfAdd);
+ sync_agent_set_param_value(&(param_array[11]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &client2Server_NrOfDelete);
+ sync_agent_set_param_value(&(param_array[12]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &client2Server_NrOfReplace);
+
+ _EXTERN_FUNC_EXIT;
+ return err;
+}
+
+sync_agent_ec_task_error_e reset_synchronizing_profiles_task_process(unsigned int param_cnt, sync_agent_ec_param_param_s ** param_array)
+{
+ _EXTERN_FUNC_ENTER;
+
+ sync_agent_ec_task_error_e err = SYNC_AGENT_EC_TASK_ERROR_RUN_SUCCESS;
+
+ reset_synchronizing_profiles();
+
+ _EXTERN_FUNC_EXIT;
+ return err;
+}
+
+sync_agent_ec_task_error_e add_profile_cp_task_process(unsigned int param_cnt, sync_agent_ec_param_param_s ** param_array)
+{
+ _EXTERN_FUNC_ENTER;
+
+ sync_agent_ec_task_error_e err = SYNC_AGENT_EC_TASK_ERROR_RUN_SUCCESS;
+
+ char *profileName = NULL;
+ char *addr = NULL;
+ char *id = NULL;
+ char *password = NULL;
+ GList *categories = NULL;
+ int accountId;
+
+ bool res;
+ int result;
+
+ sync_agent_get_param_value(&(param_array[0]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &profileName);
+ sync_agent_get_param_value(&(param_array[1]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &addr);
+ sync_agent_get_param_value(&(param_array[2]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &id);
+ sync_agent_get_param_value(&(param_array[3]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &password);
+ sync_agent_get_param_value(&(param_array[4]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &categories);
+
+ res = add_profile_cp(profileName, addr, id, password, categories, &accountId);
+ if (res == false) {
+ err = SYNC_AGENT_EC_TASK_ERROR_RUN_FAILED;
+ result = 0;
+ } else
+ result = 1;
+
+ sync_agent_set_param_value(&(param_array[5]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &result);
+ sync_agent_set_param_value(&(param_array[6]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &accountId);
+
+ _EXTERN_FUNC_EXIT;
+ return err;
+}
+
+sync_agent_ec_task_error_e refresh_from_service_task_process(unsigned int param_cnt, sync_agent_ec_param_param_s ** param_array)
+{
+ _EXTERN_FUNC_ENTER;
+
+ sync_agent_ec_task_error_e err = SYNC_AGENT_EC_TASK_ERROR_RUN_SUCCESS;
+
+ int accountId;
+ bool res;
+
+ sync_agent_get_param_value(&(param_array[0]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &accountId);
+
+ res = refresh_from_service_all(accountId);
+ if (res == false)
+ err = SYNC_AGENT_EC_TASK_ERROR_RUN_FAILED;
+
+ _EXTERN_FUNC_EXIT;
+ return err;
+}
+
+sync_agent_ec_task_error_e cancel_sync_request_task_process(unsigned int param_cnt, sync_agent_ec_param_param_s ** param_array)
+{
+ _EXTERN_FUNC_ENTER;
+
+ sync_agent_ec_task_error_e err = SYNC_AGENT_EC_TASK_ERROR_RUN_SUCCESS;
+
+ cancel_sync_request();
+
+ _EXTERN_FUNC_EXIT;
+ return err;
+}
+
+sync_agent_ec_task_error_e reset_all_data_task_process(unsigned int param_cnt, sync_agent_ec_param_param_s ** param_array)
+{
+ _EXTERN_FUNC_ENTER;
+
+ sync_agent_ec_task_error_e err = SYNC_AGENT_EC_TASK_ERROR_RUN_SUCCESS;
+ int result = 1;
+
+ /* delete all profiles */
+ result = delete_all_profiles();
+
+ /* delete all agent default table */
+ result = delete_all_agent_default_table();
+
+ sync_agent_set_param_value(&(param_array[0]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &result);
+
+ _EXTERN_FUNC_EXIT;
+ return err;
+}
+
+sync_agent_ec_task_error_e get_all_profiles_data_task_process(unsigned int param_cnt, sync_agent_ec_param_param_s ** param_array)
+{
+ _EXTERN_FUNC_ENTER;
+
+ sync_agent_ec_task_error_e err = SYNC_AGENT_EC_TASK_ERROR_RUN_SUCCESS;
+
+ bool res;
+ int result;
+ GList *profiles_data = NULL;
+
+ res = get_all_profiles_data(&profiles_data);
+
+ if (res == false) {
+ err = SYNC_AGENT_EC_TASK_ERROR_RUN_FAILED;
+ result = 0;
+ } else
+ result = 1;
+
+ sync_agent_set_param_value(&(param_array[0]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &result);
+ sync_agent_set_param_value(&(param_array[1]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &profiles_data);
+
+ _EXTERN_FUNC_EXIT;
+ return err;
+
+}
+
+void insert_request_msg_info(int sync_type, unsigned int request_id)
+{
+ _EXTERN_FUNC_ENTER;
+
+ sync_request_id_list = g_list_prepend(sync_request_id_list, _create_request_msg_info(sync_type, request_id));
+
+ _EXTERN_FUNC_EXIT;
+}
+
+void delete_request_msg_info(unsigned int request_id)
+{
+ _EXTERN_FUNC_ENTER;
+
+ GList *iter = NULL;
+ request_msg_info_t *pMsg_info = NULL;
+
+ for (iter = sync_request_id_list; iter != NULL; iter = g_list_next(iter)) {
+ pMsg_info = iter->data;
+
+ if (pMsg_info->request_id == request_id) {
+ sync_request_id_list = g_list_remove_link(sync_request_id_list, iter);
+ break;
+ }
+ }
+
+ if (iter != NULL) {
+ _request_msg_info_free(iter->data);
+ g_list_free_1(iter);
+ }
+ _EXTERN_FUNC_EXIT;
+}
+
+bool get_synchronizing_request_id(unsigned int *pRequest_id)
+{
+ _EXTERN_FUNC_ENTER;
+
+ bool success = false;
+ request_msg_info_t *pMsg_info = NULL;
+ GList *iter = NULL;
+
+ for (iter = sync_request_id_list; iter != NULL; iter = g_list_next(iter)) {
+ pMsg_info = iter->data;
+
+ if (pMsg_info->sync_type == SYNC_MODE_MANUAL || pMsg_info->sync_type == SYNC_MODE_PERIODIC || pMsg_info->sync_type == SYNC_MODE_SAN) {
+ success = true;
+ *pRequest_id = pMsg_info->request_id;
+
+ _request_msg_info_free(pMsg_info);
+ sync_request_id_list = g_list_delete_link(sync_request_id_list, iter);
+
+ break;
+ }
+ }
+
+ _EXTERN_FUNC_EXIT;
+ return success;
+}
+
+bool get_manual_sync_request_id(unsigned int *pRequest_id)
+{
+ _EXTERN_FUNC_ENTER;
+
+ bool success = false;
+ request_msg_info_t *pMsg_info = NULL;
+ GList *iter = NULL;
+
+ for (iter = sync_request_id_list; iter != NULL; iter = g_list_next(iter)) {
+ pMsg_info = iter->data;
+
+ if (pMsg_info->sync_type == SYNC_MODE_MANUAL) {
+ success = true;
+ *pRequest_id = pMsg_info->request_id;
+
+ _request_msg_info_free(pMsg_info);
+ sync_request_id_list = g_list_delete_link(sync_request_id_list, iter);
+ break;
+ }
+ }
+
+ _EXTERN_FUNC_EXIT;
+ return success;
+}
+
+bool get_periodic_sync_request_id(unsigned int *pRequest_id)
+{
+ _EXTERN_FUNC_ENTER;
+
+ bool success = false;
+ request_msg_info_t *pMsg_info = NULL;
+ GList *iter = NULL;
+
+ for (iter = sync_request_id_list; iter != NULL; iter = g_list_next(iter)) {
+ pMsg_info = iter->data;
+
+ if (pMsg_info->sync_type == SYNC_MODE_PERIODIC) {
+ success = true;
+ *pRequest_id = pMsg_info->request_id;
+
+ _request_msg_info_free(pMsg_info);
+ sync_request_id_list = g_list_delete_link(sync_request_id_list, iter);
+
+ break;
+ }
+ }
+
+ _EXTERN_FUNC_EXIT;
+ return success;
+}
+
+bool get_san_sync_request_id(unsigned int *pRequest_id)
+{
+ _EXTERN_FUNC_ENTER;
+
+ bool success = false;
+ request_msg_info_t *pMsg_info = NULL;
+ GList *iter = NULL;
+
+ for (iter = sync_request_id_list; iter != NULL; iter = g_list_next(iter)) {
+ pMsg_info = iter->data;
+
+ if (pMsg_info->sync_type == SYNC_MODE_SAN) {
+ success = true;
+ *pRequest_id = pMsg_info->request_id;
+
+ _request_msg_info_free(pMsg_info);
+ sync_request_id_list = g_list_delete_link(sync_request_id_list, iter);
+
+ break;
+ }
+ }
+
+ _EXTERN_FUNC_EXIT;
+ return success;
+}
+
+bool get_auto_configure_request_id(unsigned int *pRequest_id)
+{
+ _EXTERN_FUNC_ENTER;
+
+ bool success = false;
+ request_msg_info_t *pMsg_info = NULL;
+ GList *iter = NULL;
+
+ for (iter = sync_request_id_list; iter != NULL; iter = g_list_next(iter)) {
+ pMsg_info = iter->data;
+
+ if (pMsg_info->sync_type == SYNC_MODE_AUTOCONFIG) {
+ success = true;
+ *pRequest_id = pMsg_info->request_id;
+
+ _request_msg_info_free(pMsg_info);
+ sync_request_id_list = g_list_delete_link(sync_request_id_list, iter);
+
+ break;
+ }
+ }
+
+ _EXTERN_FUNC_EXIT;
+ return success;
+}
+
+bool cancel_current_sync_task()
+{
+ _EXTERN_FUNC_ENTER;
+
+ unsigned int request_msg_id_to_cancel = 0;
+ unsigned int request_msg_id = 0;
+ bool has_autoconfig = get_auto_configure_request_id(&request_msg_id_to_cancel);
+ if (has_autoconfig) {
+ _DEBUG_INFO("has_autoconfig [%d] ", request_msg_id_to_cancel);
+ sync_agent_cancel_task(request_msg_id_to_cancel);
+ } else {
+ bool has_sync = get_synchronizing_request_id(&request_msg_id_to_cancel);
+ if (has_sync) {
+ _DEBUG_INFO("has_manual_sync [%d] ", request_msg_id_to_cancel);
+ sync_agent_cancel_task(request_msg_id_to_cancel);
+
+ /*request network session cancel */
+ sync_agent_request_async_task(EC_MSG_TYPE_SYNC_TASK_CANCEL_SYNC_REQUEST, 0, 0, NULL, NULL, NULL, NULL, NULL, (int *)&request_msg_id);
+ } else {
+ /* nothing to do */
+ }
+ }
+
+ _EXTERN_FUNC_EXIT;
+ return true;
+}