[JIRA:N_SE-30007] Get profilesNum failed.
[framework/system/oma-ds-agent.git] / src / agent / framework / task / oma_ds_engine_controller_task.c
1 /*
2  * oma-ds-agent
3  * Copyright (c) 2012 Samsung Electronics Co., Ltd.
4  *
5  * Licensed under the Apache License, Version 2.0 (the License);
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  *     http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */
17
18 /**
19  *   @OMA_DS_Engine_Controller_Task.c
20  *   @version                                                                   0.1
21  *   @brief                                                                             This file is the source file of implementation of make and register task to Engine Controller
22  */
23
24 #include <string.h>
25
26 #include <sync_agent.h>
27
28 #include "framework/task/oma_ds_engine_controller_task.h"
29 #include "service-engine/se_account.h"
30 #include "service-engine/se_sync.h"
31 #include "service-engine/se_storage.h"
32
33 #ifndef OMADS_AGENT_LOG
34 #undef LOG_TAG
35 #define LOG_TAG "OMA_DS_COMMON"
36 #endif
37
38 static GList *sync_request_id_list = NULL;
39
40 static void _free_sync_categorie_list(void *list);
41 static void _free_delete_profile_list(void *list);
42 static void _free_resource_cp_list(void *list);
43
44 static void _request_msg_info_free(request_msg_info_t * info);
45 static void *_string_copy_struct(void *string);
46 static request_msg_info_t *_create_request_msg_info(int sync_type, unsigned int request_id, int profile_id);
47
48 static void __free_resource_cp(resource_cp_s * resource);
49
50 static void _free_sync_categorie_list(void *list)
51 {
52         _INNER_FUNC_ENTER;
53         retm_if(list == NULL, "list is NULL");
54
55         GList *categories = (GList *) list;
56         GList *iter = NULL;
57         for (iter = categories; iter != NULL; iter = g_list_next(iter))
58                 free_sync_service(iter->data);
59
60         g_list_free(categories);
61         _INNER_FUNC_EXIT;
62 }
63
64 static void _free_delete_profile_list(void *list)
65 {
66         _INNER_FUNC_ENTER;
67         retm_if(list == NULL, "list is NULL");
68
69         GList *profiles = (GList *) list;
70         GList *iter = NULL;
71         for (iter = profiles; iter != NULL; iter = g_list_next(iter))
72                 free(iter->data);
73
74         g_list_free(profiles);
75         _INNER_FUNC_EXIT;
76 }
77
78 static void _free_resource_cp_list(void *list)
79 {
80         _INNER_FUNC_ENTER;
81         retm_if(list == NULL, "list is NULL");
82
83         GList *profiles = (GList *) list;
84         GList *iter = NULL;
85         for (iter = profiles; iter != NULL; iter = g_list_next(iter))
86                 __free_resource_cp(iter->data);
87
88         g_list_free(profiles);
89         _INNER_FUNC_EXIT;
90 }
91
92 static void __free_resource_cp(resource_cp_s * resource)
93 {
94         _INNER_FUNC_ENTER;
95         retm_if(resource == NULL, "resource is NULL");
96
97         if (resource->name != NULL)
98                 free(resource->name);
99
100         if (resource->accept != NULL)
101                 free(resource->accept);
102
103         if (resource->id != NULL)
104                 free(resource->id);
105
106         if (resource->password != NULL)
107                 free(resource->password);
108
109         if (resource->auth_type != NULL)
110                 free(resource->auth_type);
111
112         if (resource->auth_data != NULL)
113                 free(resource->auth_data);
114
115         free(resource);
116         _INNER_FUNC_EXIT;
117 }
118
119 static request_msg_info_t *_create_request_msg_info(int sync_type, unsigned int request_id, int profile_id)
120 {
121         _INNER_FUNC_ENTER;
122         request_msg_info_t *pInfo = (request_msg_info_t *) calloc(1, sizeof(request_msg_info_t));
123         retvm_if(pInfo == NULL, NULL, "pInfo is NULL");
124
125         pInfo->sync_type = sync_type;
126         pInfo->request_id = request_id;
127         pInfo->profile_id = profile_id;
128
129         _INNER_FUNC_EXIT;
130         return pInfo;
131 }
132
133 static void _request_msg_info_free(request_msg_info_t * info)
134 {
135         _INNER_FUNC_ENTER;
136
137         if (info != NULL)
138                 free(info);
139
140         _INNER_FUNC_EXIT;
141 }
142
143 static void *_string_copy_struct(void *string)
144 {
145         _INNER_FUNC_ENTER;
146
147         void *data = NULL;
148         data = strdup((const char *)string);
149
150         _INNER_FUNC_EXIT;
151         return data;
152 }
153
154 sync_agent_ec_task_spec_s *make_synchronize_task()
155 {
156         _EXTERN_FUNC_ENTER;
157
158         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);
159         sync_agent_ec_param_spec_s *pParam_spec2 = sync_agent_alloc_param_spec_structure("syncMode", _string_copy_struct, free,
160                                                                                          true, false, false, NULL, false, NULL, false, NULL);
161         sync_agent_ec_param_spec_s *pParam_spec3 = sync_agent_alloc_param_spec_structure("sanPackage", NULL, sanPackageParserFree,
162                                                                                          true, false, false, NULL, false, NULL, false, NULL);
163         sync_agent_ec_param_spec_s *param_spec_array[3] = { pParam_spec1, pParam_spec2, pParam_spec3 };
164
165         sync_agent_ec_task_spec_s *pTask_spec = sync_agent_alloc_simple_task_spec("synchronize",
166                                                                                   synchronize_task_process, NULL, NULL,
167                                                                                   3, param_spec_array);
168
169         sync_agent_unref_param_spec(pParam_spec1);
170         sync_agent_unref_param_spec(pParam_spec2);
171         sync_agent_unref_param_spec(pParam_spec3);
172
173         _EXTERN_FUNC_EXIT;
174         return pTask_spec;
175 }
176
177 sync_agent_ec_task_spec_s *make_add_profile_task()
178 {
179         _EXTERN_FUNC_ENTER;
180
181         sync_agent_ec_param_spec_s *pParam_spec1 = sync_agent_alloc_param_spec_structure("profileName", _string_copy_struct, free,
182                                                                                          true, false, false, NULL, false, NULL, false, NULL);
183         sync_agent_ec_param_spec_s *pParam_spec2 = sync_agent_alloc_param_spec_structure("addr", _string_copy_struct, free,
184                                                                                          true, false, false, NULL, false, NULL, false, NULL);
185         sync_agent_ec_param_spec_s *pParam_spec3 = sync_agent_alloc_param_spec_structure("id", _string_copy_struct, free,
186                                                                                          true, false, false, NULL, false, NULL, false, NULL);
187         sync_agent_ec_param_spec_s *pParam_spec4 = sync_agent_alloc_param_spec_structure("password", _string_copy_struct, free,
188                                                                                          true, false, false, NULL, false, NULL, false, NULL);
189         sync_agent_ec_param_spec_s *pParam_spec5 = sync_agent_alloc_param_spec_int("syncMode", true, false, false, 0, 0, false, 0, false, 0, 0);
190         sync_agent_ec_param_spec_s *pParam_spec6 = sync_agent_alloc_param_spec_int("syncType", true, false, false, 0, 0, false, 0, false, 0, 0);
191         sync_agent_ec_param_spec_s *pParam_spec7 = sync_agent_alloc_param_spec_int("interval", true, false, false, 0, 0, false, 0, false, 0, 0);
192         sync_agent_ec_param_spec_s *pParam_spec8 = sync_agent_alloc_param_spec_structure("categories", NULL, _free_sync_categorie_list,
193                                                                                          true, false, false, NULL, false, NULL, false, NULL);
194
195         sync_agent_ec_param_spec_s *pParam_spec9 = sync_agent_alloc_param_spec_int("result", false, true, false, 0, 0, false, 0, false, 0, 0);
196         sync_agent_ec_param_spec_s *pParam_spec10 = sync_agent_alloc_param_spec_int("accountId", false, true, false, 0, 0, false, 0, false, 0, 0);
197
198         sync_agent_ec_param_spec_s *param_spec_array[10] = { pParam_spec1, pParam_spec2, pParam_spec3, pParam_spec4, pParam_spec5,
199                 pParam_spec6, pParam_spec7, pParam_spec8, pParam_spec9, pParam_spec10
200         };
201
202         sync_agent_ec_task_spec_s *pTask_spec = sync_agent_alloc_simple_task_spec("add_profile",
203                                                                                   add_profile_task_process, NULL, NULL,
204                                                                                   10, param_spec_array);
205
206         sync_agent_unref_param_spec(pParam_spec1);
207         sync_agent_unref_param_spec(pParam_spec2);
208         sync_agent_unref_param_spec(pParam_spec3);
209         sync_agent_unref_param_spec(pParam_spec4);
210         sync_agent_unref_param_spec(pParam_spec5);
211         sync_agent_unref_param_spec(pParam_spec6);
212         sync_agent_unref_param_spec(pParam_spec7);
213         sync_agent_unref_param_spec(pParam_spec8);
214         sync_agent_unref_param_spec(pParam_spec9);
215         sync_agent_unref_param_spec(pParam_spec10);
216
217         _EXTERN_FUNC_EXIT;
218         return pTask_spec;
219 }
220
221 sync_agent_ec_task_spec_s *make_edit_profile_task()
222 {
223         _EXTERN_FUNC_ENTER;
224
225         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);
226         sync_agent_ec_param_spec_s *pParam_spec2 = sync_agent_alloc_param_spec_structure("profileName", _string_copy_struct, free,
227                                                                                          true, false, false, NULL, false, NULL, false, NULL);
228         sync_agent_ec_param_spec_s *pParam_spec3 = sync_agent_alloc_param_spec_structure("addr", _string_copy_struct, free,
229                                                                                          true, false, false, NULL, false, NULL, false, NULL);
230         sync_agent_ec_param_spec_s *pParam_spec4 = sync_agent_alloc_param_spec_structure("id", _string_copy_struct, free,
231                                                                                          true, false, false, NULL, false, NULL, false, NULL);
232         sync_agent_ec_param_spec_s *pParam_spec5 = sync_agent_alloc_param_spec_structure("password", _string_copy_struct, free,
233                                                                                          true, false, false, NULL, false, NULL, false, NULL);
234         sync_agent_ec_param_spec_s *pParam_spec6 = sync_agent_alloc_param_spec_int("syncMode", true, false, false, 0, 0, false, 0, false, 0, 0);
235         sync_agent_ec_param_spec_s *pParam_spec7 = sync_agent_alloc_param_spec_int("syncType", true, false, false, 0, 0, false, 0, false, 0, 0);
236         sync_agent_ec_param_spec_s *pParam_spec8 = sync_agent_alloc_param_spec_int("interval", true, false, false, 0, 0, false, 0, false, 0, 0);
237         sync_agent_ec_param_spec_s *pParam_spec9 = sync_agent_alloc_param_spec_structure("categories", NULL, _free_sync_categorie_list,
238                                                                                          true, false, false, NULL, false, NULL, false, NULL);
239
240         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);
241
242         sync_agent_ec_param_spec_s *param_spec_array[10] = { pParam_spec1, pParam_spec2, pParam_spec3, pParam_spec4, pParam_spec5,
243                 pParam_spec6, pParam_spec7, pParam_spec8, pParam_spec9, pParam_spec10
244         };
245
246         sync_agent_ec_task_spec_s *pTask_spec = sync_agent_alloc_simple_task_spec("edit_profile",
247                                                                                   edit_profile_task_process, NULL, NULL,
248                                                                                   10, param_spec_array);
249
250         sync_agent_unref_param_spec(pParam_spec1);
251         sync_agent_unref_param_spec(pParam_spec2);
252         sync_agent_unref_param_spec(pParam_spec3);
253         sync_agent_unref_param_spec(pParam_spec4);
254         sync_agent_unref_param_spec(pParam_spec5);
255         sync_agent_unref_param_spec(pParam_spec6);
256         sync_agent_unref_param_spec(pParam_spec7);
257         sync_agent_unref_param_spec(pParam_spec8);
258         sync_agent_unref_param_spec(pParam_spec9);
259         sync_agent_unref_param_spec(pParam_spec10);
260
261         _EXTERN_FUNC_EXIT;
262         return pTask_spec;
263 }
264
265 sync_agent_ec_task_spec_s *make_delete_profile_task()
266 {
267         _EXTERN_FUNC_ENTER;
268
269         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);
270         sync_agent_ec_param_spec_s *pParam_spec2 = sync_agent_alloc_param_spec_structure("profiles", NULL, _free_delete_profile_list,
271                                                                                          true, false, false, NULL, false, NULL, false, NULL);
272
273         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);
274
275         sync_agent_ec_param_spec_s *param_spec_array[3] = { pParam_spec1, pParam_spec2, pParam_spec3 };
276
277         sync_agent_ec_task_spec_s *pTask_spec = sync_agent_alloc_simple_task_spec("delete_profile",
278                                                                                   delete_profile_task_process, NULL, NULL,
279                                                                                   3, param_spec_array);
280
281         sync_agent_unref_param_spec(pParam_spec1);
282         sync_agent_unref_param_spec(pParam_spec2);
283         sync_agent_unref_param_spec(pParam_spec3);
284
285         _EXTERN_FUNC_EXIT;
286         return pTask_spec;
287 }
288
289 sync_agent_ec_task_spec_s *make_get_profile_data_task()
290 {
291         _EXTERN_FUNC_ENTER;
292
293         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);
294
295         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);
296         sync_agent_ec_param_spec_s *pParam_spec3 = sync_agent_alloc_param_spec_structure("profile_dir_name", _string_copy_struct, free,
297                                                                                          false, true, false, NULL, false, NULL, false, NULL);
298         sync_agent_ec_param_spec_s *pParam_spec4 = sync_agent_alloc_param_spec_structure("profile_name", _string_copy_struct, free,
299                                                                                          false, true, false, NULL, false, NULL, false, NULL);
300         sync_agent_ec_param_spec_s *pParam_spec5 = sync_agent_alloc_param_spec_structure("addr", _string_copy_struct, free,
301                                                                                          false, true, false, NULL, false, NULL, false, NULL);
302         sync_agent_ec_param_spec_s *pParam_spec6 = sync_agent_alloc_param_spec_structure("id", _string_copy_struct, free,
303                                                                                          false, true, false, NULL, false, NULL, false, NULL);
304         sync_agent_ec_param_spec_s *pParam_spec7 = sync_agent_alloc_param_spec_structure("password", _string_copy_struct, free,
305                                                                                          false, true, false, NULL, false, NULL, false, NULL);
306         sync_agent_ec_param_spec_s *pParam_spec8 = sync_agent_alloc_param_spec_int("syncMode", false, true, false, 0, 0, false, 0, false, 0, 0);
307         sync_agent_ec_param_spec_s *pParam_spec9 = sync_agent_alloc_param_spec_int("syncType", false, true, false, 0, 0, false, 0, false, 0, 0);
308         sync_agent_ec_param_spec_s *pParam_spec10 = sync_agent_alloc_param_spec_int("interval", false, true, false, 0, 0, false, 0, false, 0, 0);
309         sync_agent_ec_param_spec_s *pParam_spec11 = sync_agent_alloc_param_spec_int("lastSessionStatus", false, true, false, 0, 0, false, 0, false, 0, 0);
310         sync_agent_ec_param_spec_s *pParam_spec12 = sync_agent_alloc_param_spec_int("lastSessionTime", false, true, false, 0, 0, false, 0, false, 0, 0);
311
312         sync_agent_ec_param_spec_s *param_spec_array[12] = { pParam_spec1, pParam_spec2, pParam_spec3,
313                 pParam_spec4, pParam_spec5, pParam_spec6, pParam_spec7, pParam_spec8,
314                 pParam_spec9, pParam_spec10, pParam_spec11, pParam_spec12
315         };
316
317         sync_agent_ec_task_spec_s *pTask_spec = sync_agent_alloc_simple_task_spec("get_profile_data",
318                                                                                   get_profile_data_task_process, NULL, NULL,
319                                                                                   12, param_spec_array);
320
321         sync_agent_unref_param_spec(pParam_spec1);
322         sync_agent_unref_param_spec(pParam_spec2);
323         sync_agent_unref_param_spec(pParam_spec3);
324         sync_agent_unref_param_spec(pParam_spec4);
325         sync_agent_unref_param_spec(pParam_spec5);
326         sync_agent_unref_param_spec(pParam_spec6);
327         sync_agent_unref_param_spec(pParam_spec7);
328         sync_agent_unref_param_spec(pParam_spec8);
329         sync_agent_unref_param_spec(pParam_spec9);
330         sync_agent_unref_param_spec(pParam_spec10);
331         sync_agent_unref_param_spec(pParam_spec11);
332         sync_agent_unref_param_spec(pParam_spec12);
333
334         _EXTERN_FUNC_EXIT;
335         return pTask_spec;
336 }
337
338 sync_agent_ec_task_spec_s *make_get_profile_sync_category_task()
339 {
340         _EXTERN_FUNC_ENTER;
341
342         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);
343         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);
344
345         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);
346         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);
347         sync_agent_ec_param_spec_s *pParam_spec5 = sync_agent_alloc_param_spec_int("srcURI", false, true, false, 0, 0, false, 0, false, 0, 0);
348         sync_agent_ec_param_spec_s *pParam_spec6 = sync_agent_alloc_param_spec_structure("tgtURI", _string_copy_struct, free,
349                                                                                          false, true, false, NULL, false, NULL, false, NULL);
350         sync_agent_ec_param_spec_s *pParam_spec7 = sync_agent_alloc_param_spec_structure("id", _string_copy_struct, free,
351                                                                                          false, true, false, NULL, false, NULL, false, NULL);
352         sync_agent_ec_param_spec_s *pParam_spec8 = sync_agent_alloc_param_spec_structure("password", _string_copy_struct, free,
353                                                                                          false, true, false, NULL, false, NULL, false, NULL);
354
355         sync_agent_ec_param_spec_s *param_spec_array[8] = { pParam_spec1, pParam_spec2, pParam_spec3, pParam_spec4,
356                 pParam_spec5, pParam_spec6, pParam_spec7, pParam_spec8
357         };
358
359         sync_agent_ec_task_spec_s *pTask_spec = sync_agent_alloc_simple_task_spec("get_profile_sync_category",
360                                                                                   get_profile_sync_category_task_process, NULL, NULL,
361                                                                                   8, param_spec_array);
362
363         sync_agent_unref_param_spec(pParam_spec1);
364         sync_agent_unref_param_spec(pParam_spec2);
365         sync_agent_unref_param_spec(pParam_spec3);
366         sync_agent_unref_param_spec(pParam_spec4);
367         sync_agent_unref_param_spec(pParam_spec5);
368         sync_agent_unref_param_spec(pParam_spec6);
369         sync_agent_unref_param_spec(pParam_spec7);
370         sync_agent_unref_param_spec(pParam_spec8);
371
372         _EXTERN_FUNC_EXIT;
373         return pTask_spec;
374 }
375
376 sync_agent_ec_task_spec_s *make_get_profile_statistics_task()
377 {
378         _EXTERN_FUNC_ENTER;
379
380         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);
381         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);
382
383         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);
384         sync_agent_ec_param_spec_s *pParam_spec4 = sync_agent_alloc_param_spec_structure("dbSynced", _string_copy_struct, free,
385                                                                                          false, true, false, NULL, false, NULL, false, NULL);
386         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);
387         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);
388         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);
389         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);
390         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);
391         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);
392         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);
393         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);
394         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);
395
396         sync_agent_ec_param_spec_s *param_spec_array[13] = { pParam_spec1, pParam_spec2, pParam_spec3,
397                 pParam_spec4, pParam_spec5, pParam_spec6, pParam_spec7, pParam_spec8,
398                 pParam_spec9, pParam_spec10, pParam_spec11, pParam_spec12, pParam_spec13
399         };
400
401         sync_agent_ec_task_spec_s *pTask_spec = sync_agent_alloc_simple_task_spec("get_profile_statistics",
402                                                                                   get_profile_statistics_task_process, NULL, NULL,
403                                                                                   13, param_spec_array);
404
405         sync_agent_unref_param_spec(pParam_spec1);
406         sync_agent_unref_param_spec(pParam_spec2);
407         sync_agent_unref_param_spec(pParam_spec3);
408         sync_agent_unref_param_spec(pParam_spec4);
409         sync_agent_unref_param_spec(pParam_spec5);
410         sync_agent_unref_param_spec(pParam_spec6);
411         sync_agent_unref_param_spec(pParam_spec7);
412         sync_agent_unref_param_spec(pParam_spec8);
413         sync_agent_unref_param_spec(pParam_spec9);
414         sync_agent_unref_param_spec(pParam_spec10);
415         sync_agent_unref_param_spec(pParam_spec11);
416         sync_agent_unref_param_spec(pParam_spec12);
417         sync_agent_unref_param_spec(pParam_spec13);
418
419         _EXTERN_FUNC_EXIT;
420         return pTask_spec;
421 }
422
423 sync_agent_ec_task_spec_s *make_reset_synchronizing_profiles_task()
424 {
425         _EXTERN_FUNC_ENTER;
426
427         sync_agent_ec_task_spec_s *pTask_spec = sync_agent_alloc_simple_task_spec("reset_synchronizing_profiles",
428                                                                                   reset_synchronizing_profiles_task_process, NULL, NULL,
429                                                                                   0, NULL);
430
431         _EXTERN_FUNC_EXIT;
432         return pTask_spec;
433 }
434
435 sync_agent_ec_task_spec_s *make_add_profile_cp_task()
436 {
437         _EXTERN_FUNC_ENTER;
438
439         sync_agent_ec_param_spec_s *pParam_spec1 = sync_agent_alloc_param_spec_structure("profileName", _string_copy_struct, free,
440                                                                                          true, false, false, NULL, false, NULL, false, NULL);
441         sync_agent_ec_param_spec_s *pParam_spec2 = sync_agent_alloc_param_spec_structure("addr", _string_copy_struct, free,
442                                                                                          true, false, false, NULL, false, NULL, false, NULL);
443         sync_agent_ec_param_spec_s *pParam_spec3 = sync_agent_alloc_param_spec_structure("id", _string_copy_struct, free,
444                                                                                          true, false, false, NULL, false, NULL, false, NULL);
445         sync_agent_ec_param_spec_s *pParam_spec4 = sync_agent_alloc_param_spec_structure("password", _string_copy_struct, free,
446                                                                                          true, false, false, NULL, false, NULL, false, NULL);
447         sync_agent_ec_param_spec_s *pParam_spec5 = sync_agent_alloc_param_spec_structure("categories", NULL, _free_resource_cp_list,
448                                                                                          true, false, false, NULL, false, NULL, false, NULL);
449
450         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);
451         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);
452
453         sync_agent_ec_param_spec_s *param_spec_array[7] = { pParam_spec1, pParam_spec2, pParam_spec3, pParam_spec4, pParam_spec5,
454                 pParam_spec6, pParam_spec7
455         };
456
457         sync_agent_ec_task_spec_s *pTask_spec = sync_agent_alloc_simple_task_spec("add_profile_cp",
458                                                                                   add_profile_cp_task_process, NULL, NULL,
459                                                                                   7, param_spec_array);
460
461         sync_agent_unref_param_spec(pParam_spec1);
462         sync_agent_unref_param_spec(pParam_spec2);
463         sync_agent_unref_param_spec(pParam_spec3);
464         sync_agent_unref_param_spec(pParam_spec4);
465         sync_agent_unref_param_spec(pParam_spec5);
466         sync_agent_unref_param_spec(pParam_spec6);
467         sync_agent_unref_param_spec(pParam_spec7);
468
469         _EXTERN_FUNC_EXIT;
470         return pTask_spec;
471 }
472
473 sync_agent_ec_task_spec_s *make_refresh_from_service_task()
474 {
475         _EXTERN_FUNC_ENTER;
476
477         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);
478
479         sync_agent_ec_param_spec_s *param_spec_array[1] = { pParam_spec1 };
480
481         sync_agent_ec_task_spec_s *pTask_spec = sync_agent_alloc_simple_task_spec("refresh_from_service",
482                                                                                   refresh_from_service_task_process, NULL, NULL,
483                                                                                   1, param_spec_array);
484
485         sync_agent_unref_param_spec(pParam_spec1);
486
487         _EXTERN_FUNC_EXIT;
488         return pTask_spec;
489 }
490
491 sync_agent_ec_task_spec_s *make_cancel_request_task()
492 {
493         _EXTERN_FUNC_ENTER;
494
495         sync_agent_ec_task_spec_s *pTask_spec = sync_agent_alloc_simple_task_spec("cancel_sync_request",
496                                                                                   cancel_sync_request_task_process, NULL, NULL,
497                                                                                   0, NULL);
498
499         _EXTERN_FUNC_EXIT;
500         return pTask_spec;
501 }
502
503 sync_agent_ec_task_spec_s *make_reset_all_data_task()
504 {
505         _EXTERN_FUNC_ENTER;
506
507         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);
508         sync_agent_ec_param_spec_s *param_spec_array[1] = { pParam_spec1 };
509
510         sync_agent_ec_task_spec_s *pTask_spec = sync_agent_alloc_simple_task_spec("reset_all_data",
511                                                                                   reset_all_data_task_process, NULL, NULL,
512                                                                                   1, param_spec_array);
513
514         sync_agent_unref_param_spec(pParam_spec1);
515
516         _EXTERN_FUNC_EXIT;
517         return pTask_spec;
518 }
519
520 sync_agent_ec_task_spec_s *make_get_all_profiles_data_task()
521 {
522         _EXTERN_FUNC_ENTER;
523
524         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);
525         sync_agent_ec_param_spec_s *pParam_spec2 = sync_agent_alloc_param_spec_structure("profilesData", NULL, NULL,
526                                                                                          false, true, false, NULL, false, NULL, false, NULL);
527
528         sync_agent_ec_param_spec_s *param_spec_array[2] = { pParam_spec1, pParam_spec2 };
529
530         sync_agent_ec_task_spec_s *pTask_spec = sync_agent_alloc_simple_task_spec("get_all_profiles_data",
531                                                                                   get_all_profiles_data_task_process, NULL, NULL,
532                                                                                   2, param_spec_array);
533
534         _EXTERN_FUNC_EXIT;
535         return pTask_spec;
536 }
537
538 sync_agent_ec_task_error_e synchronize_task_process(unsigned int param_cnt, sync_agent_ec_param_param_s ** param_array)
539 {
540         _EXTERN_FUNC_ENTER;
541
542         sync_agent_ec_task_error_e err = SYNC_AGENT_EC_TASK_ERROR_RUN_SUCCESS;
543
544         int accountId = 0;
545         sync_agent_get_param_value(&(param_array[0]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &accountId);
546         retvm_if(accountId < 0, SYNC_AGENT_EC_TASK_ERROR_RUN_FAILED, "account id = %d", accountId);
547
548         char *syncMode = NULL;
549         sync_agent_get_param_value(&(param_array[1]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &syncMode);
550
551         san_package_s *pSanPackage = NULL;
552         sync_agent_get_param_value(&(param_array[2]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &pSanPackage);
553
554         _DEBUG_INFO("accountId = %d", accountId);
555         _DEBUG_INFO("syncMode = %s", syncMode);
556
557         bool result = synchronize(accountId, syncMode, pSanPackage);
558         if (result == false)
559                 err = SYNC_AGENT_EC_TASK_ERROR_RUN_FAILED;
560
561         _EXTERN_FUNC_EXIT;
562         return err;
563 }
564
565 sync_agent_ec_task_error_e add_profile_task_process(unsigned int param_cnt, sync_agent_ec_param_param_s ** param_array)
566 {
567         _EXTERN_FUNC_ENTER;
568
569         sync_agent_ec_task_error_e err = SYNC_AGENT_EC_TASK_ERROR_RUN_SUCCESS;
570
571         char *profileName = NULL;
572         char *addr = NULL;
573         char *id = NULL;
574         char *password = NULL;
575         int syncMode = 0;
576         int syncType = 0;
577         int interval = 0;
578         GList *categories = NULL;
579         int accountId;
580
581         bool res;
582         int result;
583
584         sync_agent_get_param_value(&(param_array[0]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &profileName);
585         sync_agent_get_param_value(&(param_array[1]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &addr);
586         sync_agent_get_param_value(&(param_array[2]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &id);
587         sync_agent_get_param_value(&(param_array[3]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &password);
588         sync_agent_get_param_value(&(param_array[4]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &syncMode);
589         sync_agent_get_param_value(&(param_array[5]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &syncType);
590         sync_agent_get_param_value(&(param_array[6]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &interval);
591         sync_agent_get_param_value(&(param_array[7]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &categories);
592
593         res = add_profile(profileName, addr, id, password, syncMode, syncType, interval, categories, &accountId);
594         if (res == false) {
595                 err = SYNC_AGENT_EC_TASK_ERROR_RUN_FAILED;
596                 result = 0;
597         } else
598                 result = 1;
599
600         sync_agent_set_param_value(&(param_array[8]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &result);
601         sync_agent_set_param_value(&(param_array[9]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &accountId);
602
603         /*step 2 : start refresh_from_service for added account */
604         void *in_param_value_array[1] = { &accountId };
605         int in_param_index_array[1] = { 0 };
606         sync_agent_ec_value_type_e in_param_value_type_array[1] = { SYNC_AGENT_EC_VALUE_TYPE_INT };
607         unsigned int request_msg_id = 0;
608         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);
609
610         _EXTERN_FUNC_EXIT;
611         return err;
612 }
613
614 sync_agent_ec_task_error_e edit_profile_task_process(unsigned int param_cnt, sync_agent_ec_param_param_s ** param_array)
615 {
616         _EXTERN_FUNC_ENTER;
617
618         sync_agent_ec_task_error_e err = SYNC_AGENT_EC_TASK_ERROR_RUN_SUCCESS;
619
620         int profile_id = 0;
621         int sync_profile_id = 0;
622         char *profileName = NULL;
623         char *addr = NULL;
624         char *id = NULL;
625         char *password = NULL;
626         int syncMode = 0;
627         int syncType = 0;
628         int interval = 0;
629         GList *categories = NULL;
630
631         bool res = false;
632         int result = 0;
633
634         sync_agent_get_param_value(&(param_array[0]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &profile_id);
635         sync_agent_get_param_value(&(param_array[1]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &profileName);
636         sync_agent_get_param_value(&(param_array[2]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &addr);
637         sync_agent_get_param_value(&(param_array[3]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &id);
638         sync_agent_get_param_value(&(param_array[4]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &password);
639         sync_agent_get_param_value(&(param_array[5]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &syncMode);
640         sync_agent_get_param_value(&(param_array[6]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &syncType);
641         sync_agent_get_param_value(&(param_array[7]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &interval);
642         sync_agent_get_param_value(&(param_array[8]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &categories);
643
644         // get sync_profile_id
645         res = get_synchronizing_profile_id(&sync_profile_id);
646
647         if (res == false) {
648                 _DEBUG_INFO("get_synchronizing_profile_id failed!!");
649         }
650
651         _DEBUG_INFO("profile_id: [%d]", profile_id);
652         _DEBUG_INFO("sync_profile_id: [%d]", sync_profile_id);
653
654         if (sync_profile_id != profile_id) {
655                 res = edit_profile(profile_id, profileName, addr, id, password, syncMode, syncType, interval, categories);
656                 if (res == false) {
657                         err = SYNC_AGENT_EC_TASK_ERROR_RUN_FAILED;
658                         _DEBUG_INFO("edit_profile failed!!");
659                         result = 0;
660                 } else {
661                         _DEBUG_INFO("edit_profile success!!");
662                         result = 1;
663                 }
664         } else {
665                 _DEBUG_INFO("profile is synchronising!!");
666                 result = 2;
667         }
668
669         sync_agent_set_param_value(&(param_array[9]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &result);
670
671         _EXTERN_FUNC_EXIT;
672         return err;
673 }
674
675 sync_agent_ec_task_error_e delete_profile_task_process(unsigned int param_cnt, sync_agent_ec_param_param_s ** param_array)
676 {
677         _EXTERN_FUNC_ENTER;
678
679         bool res = false;
680         int result = 0;
681         sync_agent_ec_task_error_e err = SYNC_AGENT_EC_TASK_ERROR_RUN_SUCCESS;
682
683         int profile_id = 0;
684         int sync_profile_id = 0;
685         GList *profiles = NULL;
686
687         sync_agent_get_param_value(&(param_array[0]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &profile_id);
688         sync_agent_get_param_value(&(param_array[1]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &profiles);
689
690         // get sync_profile_id
691         res = get_synchronizing_profile_id(&sync_profile_id);
692
693         if (res == false) {
694                 _DEBUG_INFO("get_synchronizing_profile_id failed!!");
695         }
696
697         _DEBUG_INFO("profile_id: [%d]", profile_id);
698         _DEBUG_INFO("sync_profile_id: [%d]", sync_profile_id);
699
700         if (sync_profile_id != profile_id) {
701                 res = delete_profiles(profiles);
702                 if (res == 0) {
703                         err = SYNC_AGENT_EC_TASK_ERROR_RUN_FAILED;
704                         _DEBUG_INFO("delete_profiles failed!!");
705                         result = 0;
706                 } else {
707                         _DEBUG_INFO("delete_profiles success!!");
708                         result = 1;
709                 }
710         } else {
711                 _DEBUG_INFO("profile is synchronising!!");
712                 result = 2;
713         }
714
715         sync_agent_set_param_value(&(param_array[2]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &result);
716
717         _EXTERN_FUNC_EXIT;
718         return err;
719
720 }
721
722 sync_agent_ec_task_error_e get_profile_data_task_process(unsigned int param_cnt, sync_agent_ec_param_param_s ** param_array)
723 {
724         _EXTERN_FUNC_ENTER;
725
726         sync_agent_ec_task_error_e err = SYNC_AGENT_EC_TASK_ERROR_RUN_SUCCESS;
727
728         int accountId = 0;
729         char *profile_dir_name = NULL;
730         char *profileName = NULL;
731         char *addr = NULL;
732         char *id = NULL;
733         char *password = NULL;
734         int sync_mode = 0;
735         int syncType = 0;
736         int interval = 0;
737         int lastSessionStatus;
738         int lastSessionTime;
739         int result;
740         bool res;
741
742         sync_agent_get_param_value(&(param_array[0]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &accountId);
743         retvm_if(accountId < 1, SYNC_AGENT_EC_TASK_ERROR_RUN_FAILED, "account id = %d", accountId);
744
745         res = get_profile_data(accountId, &profile_dir_name, &profileName, &addr, &id, &password, &sync_mode, &syncType, &interval, &lastSessionStatus, &lastSessionTime);
746         if (res == false) {
747                 err = SYNC_AGENT_EC_TASK_ERROR_RUN_FAILED;
748                 result = 0;
749         } else
750                 result = 1;
751
752         sync_agent_set_param_value(&(param_array[1]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &result);
753         sync_agent_set_param_value(&(param_array[2]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &profile_dir_name);
754         sync_agent_set_param_value(&(param_array[3]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &profileName);
755         sync_agent_set_param_value(&(param_array[4]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &addr);
756         sync_agent_set_param_value(&(param_array[5]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &id);
757         sync_agent_set_param_value(&(param_array[6]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &password);
758         sync_agent_set_param_value(&(param_array[7]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &sync_mode);
759         sync_agent_set_param_value(&(param_array[8]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &syncType);
760         sync_agent_set_param_value(&(param_array[9]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &interval);
761         sync_agent_set_param_value(&(param_array[10]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &lastSessionStatus);
762         sync_agent_set_param_value(&(param_array[11]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &lastSessionTime);
763
764         _EXTERN_FUNC_EXIT;
765         return err;
766
767 }
768
769 sync_agent_ec_task_error_e get_profile_sync_category_task_process(unsigned int param_cnt, sync_agent_ec_param_param_s ** param_array)
770 {
771         _EXTERN_FUNC_ENTER;
772
773         sync_agent_ec_task_error_e err = SYNC_AGENT_EC_TASK_ERROR_RUN_SUCCESS;
774
775         int accountId = 0;
776         int contentType;
777
778         int enabled = 0;
779         int srcURI = 0;
780         char *tgtURI = NULL;
781         char *id = NULL;
782         char *password = NULL;
783         bool res;
784         int result = 0;
785
786         sync_agent_get_param_value(&(param_array[0]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &accountId);
787         retvm_if(accountId < 0, SYNC_AGENT_EC_TASK_ERROR_RUN_FAILED, "account id = %d", accountId);
788
789         sync_agent_get_param_value(&(param_array[1]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &contentType);
790
791         res = get_profile_sync_category(accountId, contentType, &enabled, &srcURI, &tgtURI, &id, &password);
792         if (res == false) {
793                 err = SYNC_AGENT_EC_TASK_ERROR_RUN_FAILED;
794                 result = 0;
795         } else
796                 result = 1;
797
798         sync_agent_set_param_value(&(param_array[2]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &result);
799         sync_agent_set_param_value(&(param_array[3]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &enabled);
800         sync_agent_set_param_value(&(param_array[4]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &srcURI);
801         sync_agent_set_param_value(&(param_array[5]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &tgtURI);
802         sync_agent_set_param_value(&(param_array[6]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &id);
803         sync_agent_set_param_value(&(param_array[7]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &password);
804
805         _EXTERN_FUNC_EXIT;
806         return err;
807 }
808
809 sync_agent_ec_task_error_e get_profile_statistics_task_process(unsigned int param_cnt, sync_agent_ec_param_param_s ** param_array)
810 {
811         _EXTERN_FUNC_ENTER;
812
813         sync_agent_ec_task_error_e err = SYNC_AGENT_EC_TASK_ERROR_RUN_SUCCESS;
814
815         int accountId = 0;
816         int contentType;
817
818         char *dbSynced = NULL;
819         int lastSessionTime = -1;
820         int server2Client_Total = 0;
821         int server2Client_NrOfAdd = 0;
822         int server2Client_NrOfDelete = 0;
823         int server2Client_NrOfReplace = 0;
824         int client2Server_Total = 0;
825         int client2Server_NrOfAdd = 0;
826         int client2Server_NrOfDelete = 0;
827         int client2Server_NrOfReplace = 0;
828
829         bool res;
830         int result;
831
832         sync_agent_get_param_value(&(param_array[0]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &accountId);
833         retvm_if(accountId < 0, SYNC_AGENT_EC_TASK_ERROR_RUN_FAILED, "account id = %d", accountId);
834
835         sync_agent_get_param_value(&(param_array[1]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &contentType);
836
837         res = get_profile_statistics(accountId, contentType, &dbSynced, &lastSessionTime,
838                                      &server2Client_Total, &server2Client_NrOfAdd, &server2Client_NrOfDelete, &server2Client_NrOfReplace, &client2Server_Total, &client2Server_NrOfAdd, &client2Server_NrOfDelete, &client2Server_NrOfReplace);
839
840         if (res == false) {
841                 err = SYNC_AGENT_EC_TASK_ERROR_RUN_FAILED;
842                 result = 0;
843         } else
844                 result = 1;
845
846         sync_agent_set_param_value(&(param_array[2]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &result);
847         sync_agent_set_param_value(&(param_array[3]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &dbSynced);
848         sync_agent_set_param_value(&(param_array[4]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &lastSessionTime);
849         sync_agent_set_param_value(&(param_array[5]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &server2Client_Total);
850         sync_agent_set_param_value(&(param_array[6]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &server2Client_NrOfAdd);
851         sync_agent_set_param_value(&(param_array[7]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &server2Client_NrOfDelete);
852         sync_agent_set_param_value(&(param_array[8]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &server2Client_NrOfReplace);
853         sync_agent_set_param_value(&(param_array[9]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &client2Server_Total);
854         sync_agent_set_param_value(&(param_array[10]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &client2Server_NrOfAdd);
855         sync_agent_set_param_value(&(param_array[11]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &client2Server_NrOfDelete);
856         sync_agent_set_param_value(&(param_array[12]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &client2Server_NrOfReplace);
857
858         _EXTERN_FUNC_EXIT;
859         return err;
860 }
861
862 sync_agent_ec_task_error_e reset_synchronizing_profiles_task_process(unsigned int param_cnt, sync_agent_ec_param_param_s ** param_array)
863 {
864         _EXTERN_FUNC_ENTER;
865
866         sync_agent_ec_task_error_e err = SYNC_AGENT_EC_TASK_ERROR_RUN_SUCCESS;
867
868         reset_synchronizing_profiles();
869
870         _EXTERN_FUNC_EXIT;
871         return err;
872 }
873
874 sync_agent_ec_task_error_e add_profile_cp_task_process(unsigned int param_cnt, sync_agent_ec_param_param_s ** param_array)
875 {
876         _EXTERN_FUNC_ENTER;
877
878         sync_agent_ec_task_error_e err = SYNC_AGENT_EC_TASK_ERROR_RUN_SUCCESS;
879
880         char *profileName = NULL;
881         char *addr = NULL;
882         char *id = NULL;
883         char *password = NULL;
884         GList *categories = NULL;
885         int accountId;
886
887         bool res;
888         int result;
889
890         sync_agent_get_param_value(&(param_array[0]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &profileName);
891         sync_agent_get_param_value(&(param_array[1]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &addr);
892         sync_agent_get_param_value(&(param_array[2]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &id);
893         sync_agent_get_param_value(&(param_array[3]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &password);
894         sync_agent_get_param_value(&(param_array[4]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &categories);
895
896         res = add_profile_cp(profileName, addr, id, password, categories, &accountId);
897         if (res == false) {
898                 err = SYNC_AGENT_EC_TASK_ERROR_RUN_FAILED;
899                 result = 0;
900         } else
901                 result = 1;
902
903         sync_agent_set_param_value(&(param_array[5]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &result);
904         sync_agent_set_param_value(&(param_array[6]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &accountId);
905
906         _EXTERN_FUNC_EXIT;
907         return err;
908 }
909
910 sync_agent_ec_task_error_e refresh_from_service_task_process(unsigned int param_cnt, sync_agent_ec_param_param_s ** param_array)
911 {
912         _EXTERN_FUNC_ENTER;
913
914         sync_agent_ec_task_error_e err = SYNC_AGENT_EC_TASK_ERROR_RUN_SUCCESS;
915
916         int accountId;
917         bool res;
918
919         sync_agent_get_param_value(&(param_array[0]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &accountId);
920
921         res = refresh_from_service_all(accountId);
922         if (res == false)
923                 err = SYNC_AGENT_EC_TASK_ERROR_RUN_FAILED;
924
925         _EXTERN_FUNC_EXIT;
926         return err;
927 }
928
929 sync_agent_ec_task_error_e cancel_sync_request_task_process(unsigned int param_cnt, sync_agent_ec_param_param_s ** param_array)
930 {
931         _EXTERN_FUNC_ENTER;
932
933         sync_agent_ec_task_error_e err = SYNC_AGENT_EC_TASK_ERROR_RUN_SUCCESS;
934
935         cancel_sync_request();
936
937         _EXTERN_FUNC_EXIT;
938         return err;
939 }
940
941 sync_agent_ec_task_error_e reset_all_data_task_process(unsigned int param_cnt, sync_agent_ec_param_param_s ** param_array)
942 {
943         _EXTERN_FUNC_ENTER;
944
945         sync_agent_ec_task_error_e err = SYNC_AGENT_EC_TASK_ERROR_RUN_SUCCESS;
946         int result = 1;
947
948         /* delete all profiles */
949         result = delete_all_profiles();
950
951         /* delete all agent default table */
952         result = delete_all_agent_default_table();
953
954         sync_agent_set_param_value(&(param_array[0]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &result);
955
956         _EXTERN_FUNC_EXIT;
957         return err;
958 }
959
960 sync_agent_ec_task_error_e get_all_profiles_data_task_process(unsigned int param_cnt, sync_agent_ec_param_param_s ** param_array)
961 {
962         _EXTERN_FUNC_ENTER;
963
964         sync_agent_ec_task_error_e err = SYNC_AGENT_EC_TASK_ERROR_RUN_SUCCESS;
965
966         bool res;
967         int result;
968         GList *profiles_data = NULL;
969
970         res = get_all_profiles_data(&profiles_data);
971
972         if (res == false) {
973                 err = SYNC_AGENT_EC_TASK_ERROR_RUN_FAILED;
974                 result = 0;
975         } else
976                 result = 1;
977
978         sync_agent_set_param_value(&(param_array[0]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &result);
979         sync_agent_set_param_value(&(param_array[1]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &profiles_data);
980
981         _EXTERN_FUNC_EXIT;
982         return err;
983
984 }
985
986 void insert_request_msg_info(int sync_type, unsigned int request_id, int profile_id)
987 {
988         _EXTERN_FUNC_ENTER;
989
990         _DEBUG_INFO("sync_type: [%d]", sync_type);
991         _DEBUG_INFO("request_id: [%d]", request_id);
992         _DEBUG_INFO("profile_id: [%d]", profile_id);
993
994         sync_request_id_list = g_list_prepend(sync_request_id_list, _create_request_msg_info(sync_type, request_id, profile_id));
995
996         _EXTERN_FUNC_EXIT;
997 }
998
999 void delete_request_msg_info(unsigned int request_id)
1000 {
1001         _EXTERN_FUNC_ENTER;
1002
1003         GList *iter = NULL;
1004         request_msg_info_t *pMsg_info = NULL;
1005
1006         for (iter = sync_request_id_list; iter != NULL; iter = g_list_next(iter)) {
1007                 pMsg_info = iter->data;
1008
1009                 if (pMsg_info->request_id == request_id) {
1010                         sync_request_id_list = g_list_remove_link(sync_request_id_list, iter);
1011                         break;
1012                 }
1013         }
1014
1015         if (iter != NULL) {
1016                 _request_msg_info_free(iter->data);
1017                 g_list_free_1(iter);
1018         }
1019         _EXTERN_FUNC_EXIT;
1020 }
1021
1022 bool get_synchronizing_request_id(unsigned int *pRequest_id)
1023 {
1024         _EXTERN_FUNC_ENTER;
1025
1026         bool success = false;
1027         request_msg_info_t *pMsg_info = NULL;
1028         GList *iter = NULL;
1029
1030         for (iter = sync_request_id_list; iter != NULL; iter = g_list_next(iter)) {
1031                 pMsg_info = iter->data;
1032
1033                 if (pMsg_info->sync_type == SYNC_MODE_MANUAL || pMsg_info->sync_type == SYNC_MODE_PERIODIC || pMsg_info->sync_type == SYNC_MODE_SAN) {
1034                         success = true;
1035                         *pRequest_id = pMsg_info->request_id;
1036
1037                         _request_msg_info_free(pMsg_info);
1038                         sync_request_id_list = g_list_delete_link(sync_request_id_list, iter);
1039
1040                         break;
1041                 }
1042         }
1043
1044         _EXTERN_FUNC_EXIT;
1045         return success;
1046 }
1047
1048 bool get_synchronizing_profile_id(int *pProfile_id)
1049 {
1050         _EXTERN_FUNC_ENTER;
1051
1052         bool success = false;
1053         request_msg_info_t *pMsg_info = NULL;
1054         GList *iter = NULL;
1055
1056         for (iter = sync_request_id_list; iter != NULL; iter = g_list_next(iter)) {
1057                 pMsg_info = iter->data;
1058
1059                 if (pMsg_info->sync_type == SYNC_MODE_MANUAL || pMsg_info->sync_type == SYNC_MODE_PERIODIC || pMsg_info->sync_type == SYNC_MODE_SAN) {
1060                         success = true;
1061                         *pProfile_id = pMsg_info->profile_id;
1062
1063                         sync_request_id_list = g_list_first(sync_request_id_list);
1064
1065                         break;
1066                 }
1067         }
1068
1069         _EXTERN_FUNC_EXIT;
1070         return success;
1071 }
1072
1073 bool get_manual_sync_request_id(unsigned int *pRequest_id)
1074 {
1075         _EXTERN_FUNC_ENTER;
1076
1077         bool success = false;
1078         request_msg_info_t *pMsg_info = NULL;
1079         GList *iter = NULL;
1080
1081         for (iter = sync_request_id_list; iter != NULL; iter = g_list_next(iter)) {
1082                 pMsg_info = iter->data;
1083
1084                 if (pMsg_info->sync_type == SYNC_MODE_MANUAL) {
1085                         success = true;
1086                         *pRequest_id = pMsg_info->request_id;
1087
1088                         _request_msg_info_free(pMsg_info);
1089                         sync_request_id_list = g_list_delete_link(sync_request_id_list, iter);
1090                         break;
1091                 }
1092         }
1093
1094         _EXTERN_FUNC_EXIT;
1095         return success;
1096 }
1097
1098 bool get_periodic_sync_request_id(unsigned int *pRequest_id)
1099 {
1100         _EXTERN_FUNC_ENTER;
1101
1102         bool success = false;
1103         request_msg_info_t *pMsg_info = NULL;
1104         GList *iter = NULL;
1105
1106         for (iter = sync_request_id_list; iter != NULL; iter = g_list_next(iter)) {
1107                 pMsg_info = iter->data;
1108
1109                 if (pMsg_info->sync_type == SYNC_MODE_PERIODIC) {
1110                         success = true;
1111                         *pRequest_id = pMsg_info->request_id;
1112
1113                         _request_msg_info_free(pMsg_info);
1114                         sync_request_id_list = g_list_delete_link(sync_request_id_list, iter);
1115
1116                         break;
1117                 }
1118         }
1119
1120         _EXTERN_FUNC_EXIT;
1121         return success;
1122 }
1123
1124 bool get_san_sync_request_id(unsigned int *pRequest_id)
1125 {
1126         _EXTERN_FUNC_ENTER;
1127
1128         bool success = false;
1129         request_msg_info_t *pMsg_info = NULL;
1130         GList *iter = NULL;
1131
1132         for (iter = sync_request_id_list; iter != NULL; iter = g_list_next(iter)) {
1133                 pMsg_info = iter->data;
1134
1135                 if (pMsg_info->sync_type == SYNC_MODE_SAN) {
1136                         success = true;
1137                         *pRequest_id = pMsg_info->request_id;
1138
1139                         _request_msg_info_free(pMsg_info);
1140                         sync_request_id_list = g_list_delete_link(sync_request_id_list, iter);
1141
1142                         break;
1143                 }
1144         }
1145
1146         _EXTERN_FUNC_EXIT;
1147         return success;
1148 }
1149
1150 bool get_auto_configure_request_id(unsigned int *pRequest_id)
1151 {
1152         _EXTERN_FUNC_ENTER;
1153
1154         bool success = false;
1155         request_msg_info_t *pMsg_info = NULL;
1156         GList *iter = NULL;
1157
1158         for (iter = sync_request_id_list; iter != NULL; iter = g_list_next(iter)) {
1159                 pMsg_info = iter->data;
1160
1161                 if (pMsg_info->sync_type == SYNC_MODE_AUTOCONFIG) {
1162                         success = true;
1163                         *pRequest_id = pMsg_info->request_id;
1164
1165                         _request_msg_info_free(pMsg_info);
1166                         sync_request_id_list = g_list_delete_link(sync_request_id_list, iter);
1167
1168                         break;
1169                 }
1170         }
1171
1172         _EXTERN_FUNC_EXIT;
1173         return success;
1174 }
1175
1176 bool cancel_current_sync_task()
1177 {
1178         _EXTERN_FUNC_ENTER;
1179
1180         unsigned int request_msg_id_to_cancel = 0;
1181         unsigned int request_msg_id = 0;
1182         bool has_autoconfig = get_auto_configure_request_id(&request_msg_id_to_cancel);
1183         if (has_autoconfig) {
1184                 _DEBUG_INFO("has_autoconfig [%d] ", request_msg_id_to_cancel);
1185                 sync_agent_cancel_task(request_msg_id_to_cancel);
1186         } else {
1187                 bool has_sync = get_synchronizing_request_id(&request_msg_id_to_cancel);
1188                 if (has_sync) {
1189                         _DEBUG_INFO("has_manual_sync [%d] ", request_msg_id_to_cancel);
1190                         sync_agent_cancel_task(request_msg_id_to_cancel);
1191
1192                         /*request network session cancel */
1193                         sync_agent_request_async_task(EC_MSG_TYPE_SYNC_TASK_CANCEL_SYNC_REQUEST, 0, 0, NULL, NULL, NULL, NULL, NULL, (int *)&request_msg_id);
1194                 } else {
1195                         /* nothing to do */
1196                 }
1197         }
1198
1199         _EXTERN_FUNC_EXIT;
1200         return true;
1201 }