Tizen 2.0 Release
[pkgs/o/oma-ds-service.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);
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)
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
128         _INNER_FUNC_EXIT;
129         return pInfo;
130 }
131
132 static void _request_msg_info_free(request_msg_info_t * info)
133 {
134         _INNER_FUNC_ENTER;
135
136         if (info != NULL)
137                 free(info);
138
139         _INNER_FUNC_EXIT;
140 }
141
142 static void *_string_copy_struct(void *string)
143 {
144         _INNER_FUNC_ENTER;
145
146         void *data = NULL;
147         data = strdup((const char *)string);
148
149         _INNER_FUNC_EXIT;
150         return data;
151 }
152
153 sync_agent_ec_task_spec_s *make_synchronize_task()
154 {
155         _EXTERN_FUNC_ENTER;
156
157         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);
158         sync_agent_ec_param_spec_s *pParam_spec2 = sync_agent_alloc_param_spec_structure("syncMode", _string_copy_struct, free,
159                                                                                          true, false, false, NULL, false, NULL, false, NULL);
160         sync_agent_ec_param_spec_s *pParam_spec3 = sync_agent_alloc_param_spec_structure("sanPackage", NULL, sanPackageParserFree,
161                                                                                          true, false, false, NULL, false, NULL, false, NULL);
162         sync_agent_ec_param_spec_s *param_spec_array[3] = { pParam_spec1, pParam_spec2, pParam_spec3 };
163
164         sync_agent_ec_task_spec_s *pTask_spec = sync_agent_alloc_simple_task_spec("synchronize",
165                                                                                   synchronize_task_process, NULL, NULL,
166                                                                                   3, param_spec_array);
167
168         sync_agent_unref_param_spec(pParam_spec1);
169         sync_agent_unref_param_spec(pParam_spec2);
170         sync_agent_unref_param_spec(pParam_spec3);
171
172         _EXTERN_FUNC_EXIT;
173         return pTask_spec;
174 }
175
176 sync_agent_ec_task_spec_s *make_add_profile_task()
177 {
178         _EXTERN_FUNC_ENTER;
179
180         sync_agent_ec_param_spec_s *pParam_spec1 = sync_agent_alloc_param_spec_structure("profileDirName", _string_copy_struct, free,
181                                                                                          true, false, false, NULL, false, NULL, false, NULL);
182         sync_agent_ec_param_spec_s *pParam_spec2 = sync_agent_alloc_param_spec_structure("profileName", _string_copy_struct, free,
183                                                                                          true, false, false, NULL, false, NULL, false, NULL);
184         sync_agent_ec_param_spec_s *pParam_spec3 = sync_agent_alloc_param_spec_structure("addr", _string_copy_struct, free,
185                                                                                          true, false, false, NULL, false, NULL, false, NULL);
186         sync_agent_ec_param_spec_s *pParam_spec4 = sync_agent_alloc_param_spec_structure("id", _string_copy_struct, free,
187                                                                                          true, false, false, NULL, false, NULL, false, NULL);
188         sync_agent_ec_param_spec_s *pParam_spec5 = sync_agent_alloc_param_spec_structure("password", _string_copy_struct, free,
189                                                                                          true, false, false, NULL, false, NULL, false, NULL);
190         sync_agent_ec_param_spec_s *pParam_spec6 = sync_agent_alloc_param_spec_structure("syncMode", _string_copy_struct, free,
191                                                                                          true, false, false, NULL, false, NULL, false, NULL);
192         sync_agent_ec_param_spec_s *pParam_spec7 = sync_agent_alloc_param_spec_structure("syncType", _string_copy_struct, free,
193                                                                                          true, false, false, NULL, false, NULL, false, NULL);
194         sync_agent_ec_param_spec_s *pParam_spec8 = sync_agent_alloc_param_spec_structure("interval", _string_copy_struct, free,
195                                                                                          true, false, false, NULL, false, NULL, false, NULL);
196         sync_agent_ec_param_spec_s *pParam_spec9 = sync_agent_alloc_param_spec_structure("categories", NULL, _free_sync_categorie_list,
197                                                                                          true, false, false, NULL, false, NULL, false, NULL);
198
199         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);
200         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);
201
202         sync_agent_ec_param_spec_s *param_spec_array[11] = { pParam_spec1, pParam_spec2, pParam_spec3, pParam_spec4, pParam_spec5,
203                 pParam_spec6, pParam_spec7, pParam_spec8, pParam_spec9, pParam_spec10, pParam_spec11
204         };
205
206         sync_agent_ec_task_spec_s *pTask_spec = sync_agent_alloc_simple_task_spec("add_profile",
207                                                                                   add_profile_task_process, NULL, NULL,
208                                                                                   11, param_spec_array);
209
210         sync_agent_unref_param_spec(pParam_spec1);
211         sync_agent_unref_param_spec(pParam_spec2);
212         sync_agent_unref_param_spec(pParam_spec3);
213         sync_agent_unref_param_spec(pParam_spec4);
214         sync_agent_unref_param_spec(pParam_spec5);
215         sync_agent_unref_param_spec(pParam_spec6);
216         sync_agent_unref_param_spec(pParam_spec7);
217         sync_agent_unref_param_spec(pParam_spec8);
218         sync_agent_unref_param_spec(pParam_spec9);
219         sync_agent_unref_param_spec(pParam_spec10);
220         sync_agent_unref_param_spec(pParam_spec11);
221
222         _EXTERN_FUNC_EXIT;
223         return pTask_spec;
224 }
225
226 sync_agent_ec_task_spec_s *make_edit_profile_task()
227 {
228         _EXTERN_FUNC_ENTER;
229
230         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);
231         sync_agent_ec_param_spec_s *pParam_spec2 = sync_agent_alloc_param_spec_structure("profileName", _string_copy_struct, free,
232                                                                                          true, false, false, NULL, false, NULL, false, NULL);
233         sync_agent_ec_param_spec_s *pParam_spec3 = sync_agent_alloc_param_spec_structure("addr", _string_copy_struct, free,
234                                                                                          true, false, false, NULL, false, NULL, false, NULL);
235         sync_agent_ec_param_spec_s *pParam_spec4 = sync_agent_alloc_param_spec_structure("id", _string_copy_struct, free,
236                                                                                          true, false, false, NULL, false, NULL, false, NULL);
237         sync_agent_ec_param_spec_s *pParam_spec5 = sync_agent_alloc_param_spec_structure("password", _string_copy_struct, free,
238                                                                                          true, false, false, NULL, false, NULL, false, NULL);
239         sync_agent_ec_param_spec_s *pParam_spec6 = sync_agent_alloc_param_spec_structure("syncMode", _string_copy_struct, free,
240                                                                                          true, false, false, NULL, false, NULL, false, NULL);
241         sync_agent_ec_param_spec_s *pParam_spec7 = sync_agent_alloc_param_spec_structure("syncType", _string_copy_struct, free,
242                                                                                          true, false, false, NULL, false, NULL, false, NULL);
243         sync_agent_ec_param_spec_s *pParam_spec8 = sync_agent_alloc_param_spec_structure("interval", _string_copy_struct, free,
244                                                                                          true, false, false, NULL, false, NULL, false, NULL);
245         sync_agent_ec_param_spec_s *pParam_spec9 = sync_agent_alloc_param_spec_structure("categories", NULL, _free_sync_categorie_list,
246                                                                                          true, false, false, NULL, false, NULL, false, NULL);
247
248         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);
249
250         sync_agent_ec_param_spec_s *param_spec_array[10] = { pParam_spec1, pParam_spec2, pParam_spec3, pParam_spec4, pParam_spec5,
251                 pParam_spec6, pParam_spec7, pParam_spec8, pParam_spec9, pParam_spec10
252         };
253
254         sync_agent_ec_task_spec_s *pTask_spec = sync_agent_alloc_simple_task_spec("edit_profile",
255                                                                                   edit_profile_task_process, NULL, NULL,
256                                                                                   10, param_spec_array);
257
258         sync_agent_unref_param_spec(pParam_spec1);
259         sync_agent_unref_param_spec(pParam_spec2);
260         sync_agent_unref_param_spec(pParam_spec3);
261         sync_agent_unref_param_spec(pParam_spec4);
262         sync_agent_unref_param_spec(pParam_spec5);
263         sync_agent_unref_param_spec(pParam_spec6);
264         sync_agent_unref_param_spec(pParam_spec7);
265         sync_agent_unref_param_spec(pParam_spec8);
266         sync_agent_unref_param_spec(pParam_spec9);
267         sync_agent_unref_param_spec(pParam_spec10);
268
269         _EXTERN_FUNC_EXIT;
270         return pTask_spec;
271 }
272
273 sync_agent_ec_task_spec_s *make_delete_profile_task()
274 {
275         _EXTERN_FUNC_ENTER;
276
277         sync_agent_ec_param_spec_s *pParam_spec1 = sync_agent_alloc_param_spec_structure("profiles", NULL, _free_delete_profile_list,
278                                                                                          true, false, false, NULL, false, NULL, false, NULL);
279
280         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);
281
282         sync_agent_ec_param_spec_s *param_spec_array[2] = { pParam_spec1, pParam_spec2 };
283
284         sync_agent_ec_task_spec_s *pTask_spec = sync_agent_alloc_simple_task_spec("delete_profile",
285                                                                                   delete_profile_task_process, NULL, NULL,
286                                                                                   2, param_spec_array);
287
288         sync_agent_unref_param_spec(pParam_spec1);
289         sync_agent_unref_param_spec(pParam_spec2);
290
291         _EXTERN_FUNC_EXIT;
292         return pTask_spec;
293 }
294
295 sync_agent_ec_task_spec_s *make_get_profile_data_task()
296 {
297         _EXTERN_FUNC_ENTER;
298
299         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);
300         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);
301         sync_agent_ec_param_spec_s *pParam_spec3 = sync_agent_alloc_param_spec_structure("profileName", _string_copy_struct, free,
302                                                                                          false, true, false, NULL, false, NULL, false, NULL);
303         sync_agent_ec_param_spec_s *pParam_spec4 = sync_agent_alloc_param_spec_structure("addr", _string_copy_struct, free,
304                                                                                          false, true, false, NULL, false, NULL, false, NULL);
305         sync_agent_ec_param_spec_s *pParam_spec5 = sync_agent_alloc_param_spec_structure("id", _string_copy_struct, free,
306                                                                                          false, true, false, NULL, false, NULL, false, NULL);
307         sync_agent_ec_param_spec_s *pParam_spec6 = sync_agent_alloc_param_spec_structure("password", _string_copy_struct, free,
308                                                                                          false, true, false, NULL, false, NULL, false, NULL);
309         sync_agent_ec_param_spec_s *pParam_spec7 = sync_agent_alloc_param_spec_structure("syncMode", _string_copy_struct, free,
310                                                                                          false, true, false, NULL, false, NULL, false, NULL);
311         sync_agent_ec_param_spec_s *pParam_spec8 = sync_agent_alloc_param_spec_structure("syncType", _string_copy_struct, free,
312                                                                                          false, true, false, NULL, false, NULL, false, NULL);
313         sync_agent_ec_param_spec_s *pParam_spec9 = sync_agent_alloc_param_spec_structure("interval", _string_copy_struct, free,
314                                                                                          false, true, false, NULL, false, NULL, false, NULL);
315         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);
316         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);
317
318         sync_agent_ec_param_spec_s *param_spec_array[11] = { pParam_spec1, pParam_spec2, pParam_spec3,
319                 pParam_spec4, pParam_spec5, pParam_spec6, pParam_spec7, pParam_spec8,
320                 pParam_spec9, pParam_spec10, pParam_spec11
321         };
322
323         sync_agent_ec_task_spec_s *pTask_spec = sync_agent_alloc_simple_task_spec("get_profile_data",
324                                                                                   get_profile_data_task_process, NULL, NULL,
325                                                                                   11, param_spec_array);
326
327         sync_agent_unref_param_spec(pParam_spec1);
328         sync_agent_unref_param_spec(pParam_spec2);
329         sync_agent_unref_param_spec(pParam_spec3);
330         sync_agent_unref_param_spec(pParam_spec4);
331         sync_agent_unref_param_spec(pParam_spec5);
332         sync_agent_unref_param_spec(pParam_spec6);
333         sync_agent_unref_param_spec(pParam_spec7);
334         sync_agent_unref_param_spec(pParam_spec8);
335         sync_agent_unref_param_spec(pParam_spec9);
336         sync_agent_unref_param_spec(pParam_spec10);
337         sync_agent_unref_param_spec(pParam_spec11);
338
339         _EXTERN_FUNC_EXIT;
340         return pTask_spec;
341 }
342
343 sync_agent_ec_task_spec_s *make_get_profile_sync_category_task()
344 {
345         _EXTERN_FUNC_ENTER;
346
347         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);
348         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);
349
350         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);
351         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);
352         sync_agent_ec_param_spec_s *pParam_spec5 = sync_agent_alloc_param_spec_structure("srcURI", _string_copy_struct, free,
353                                                                                          false, true, false, NULL, false, NULL, false, NULL);
354         sync_agent_ec_param_spec_s *pParam_spec6 = sync_agent_alloc_param_spec_structure("tgtURI", _string_copy_struct, free,
355                                                                                          false, true, false, NULL, false, NULL, false, NULL);
356         sync_agent_ec_param_spec_s *pParam_spec7 = sync_agent_alloc_param_spec_structure("id", _string_copy_struct, free,
357                                                                                          false, true, false, NULL, false, NULL, false, NULL);
358         sync_agent_ec_param_spec_s *pParam_spec8 = sync_agent_alloc_param_spec_structure("password", _string_copy_struct, free,
359                                                                                          false, true, false, NULL, false, NULL, false, NULL);
360
361         sync_agent_ec_param_spec_s *param_spec_array[8] = { pParam_spec1, pParam_spec2, pParam_spec3, pParam_spec4,
362                 pParam_spec5, pParam_spec6, pParam_spec7, pParam_spec8
363         };
364
365         sync_agent_ec_task_spec_s *pTask_spec = sync_agent_alloc_simple_task_spec("get_profile_sync_category",
366                                                                                   get_profile_sync_category_task_process, NULL, NULL,
367                                                                                   8, param_spec_array);
368
369         sync_agent_unref_param_spec(pParam_spec1);
370         sync_agent_unref_param_spec(pParam_spec2);
371         sync_agent_unref_param_spec(pParam_spec3);
372         sync_agent_unref_param_spec(pParam_spec4);
373         sync_agent_unref_param_spec(pParam_spec5);
374         sync_agent_unref_param_spec(pParam_spec6);
375         sync_agent_unref_param_spec(pParam_spec7);
376         sync_agent_unref_param_spec(pParam_spec8);
377
378         _EXTERN_FUNC_EXIT;
379         return pTask_spec;
380 }
381
382 sync_agent_ec_task_spec_s *make_get_profile_statistics_task()
383 {
384         _EXTERN_FUNC_ENTER;
385
386         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);
387         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);
388
389         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);
390         sync_agent_ec_param_spec_s *pParam_spec4 = sync_agent_alloc_param_spec_structure("dbSynced", _string_copy_struct, free,
391                                                                                          false, true, false, NULL, false, NULL, false, NULL);
392         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);
393         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);
394         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);
395         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);
396         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);
397         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);
398         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);
399         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);
400         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);
401
402         sync_agent_ec_param_spec_s *param_spec_array[13] = { pParam_spec1, pParam_spec2, pParam_spec3,
403                 pParam_spec4, pParam_spec5, pParam_spec6, pParam_spec7, pParam_spec8,
404                 pParam_spec9, pParam_spec10, pParam_spec11, pParam_spec12, pParam_spec13
405         };
406
407         sync_agent_ec_task_spec_s *pTask_spec = sync_agent_alloc_simple_task_spec("get_profile_statistics",
408                                                                                   get_profile_statistics_task_process, NULL, NULL,
409                                                                                   13, param_spec_array);
410
411         sync_agent_unref_param_spec(pParam_spec1);
412         sync_agent_unref_param_spec(pParam_spec2);
413         sync_agent_unref_param_spec(pParam_spec3);
414         sync_agent_unref_param_spec(pParam_spec4);
415         sync_agent_unref_param_spec(pParam_spec5);
416         sync_agent_unref_param_spec(pParam_spec6);
417         sync_agent_unref_param_spec(pParam_spec7);
418         sync_agent_unref_param_spec(pParam_spec8);
419         sync_agent_unref_param_spec(pParam_spec9);
420         sync_agent_unref_param_spec(pParam_spec10);
421         sync_agent_unref_param_spec(pParam_spec11);
422         sync_agent_unref_param_spec(pParam_spec12);
423         sync_agent_unref_param_spec(pParam_spec13);
424
425         _EXTERN_FUNC_EXIT;
426         return pTask_spec;
427 }
428
429 sync_agent_ec_task_spec_s *make_reset_synchronizing_profiles_task()
430 {
431         _EXTERN_FUNC_ENTER;
432
433         sync_agent_ec_task_spec_s *pTask_spec = sync_agent_alloc_simple_task_spec("reset_synchronizing_profiles",
434                                                                                   reset_synchronizing_profiles_task_process, NULL, NULL,
435                                                                                   0, NULL);
436
437         _EXTERN_FUNC_EXIT;
438         return pTask_spec;
439 }
440
441 sync_agent_ec_task_spec_s *make_add_profile_cp_task()
442 {
443         _EXTERN_FUNC_ENTER;
444
445         sync_agent_ec_param_spec_s *pParam_spec1 = sync_agent_alloc_param_spec_structure("profileName", _string_copy_struct, free,
446                                                                                          true, false, false, NULL, false, NULL, false, NULL);
447         sync_agent_ec_param_spec_s *pParam_spec2 = sync_agent_alloc_param_spec_structure("addr", _string_copy_struct, free,
448                                                                                          true, false, false, NULL, false, NULL, false, NULL);
449         sync_agent_ec_param_spec_s *pParam_spec3 = sync_agent_alloc_param_spec_structure("id", _string_copy_struct, free,
450                                                                                          true, false, false, NULL, false, NULL, false, NULL);
451         sync_agent_ec_param_spec_s *pParam_spec4 = sync_agent_alloc_param_spec_structure("password", _string_copy_struct, free,
452                                                                                          true, false, false, NULL, false, NULL, false, NULL);
453         sync_agent_ec_param_spec_s *pParam_spec5 = sync_agent_alloc_param_spec_structure("categories", NULL, _free_resource_cp_list,
454                                                                                          true, false, false, NULL, false, NULL, false, NULL);
455
456         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);
457         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);
458
459         sync_agent_ec_param_spec_s *param_spec_array[7] = { pParam_spec1, pParam_spec2, pParam_spec3, pParam_spec4, pParam_spec5,
460                 pParam_spec6, pParam_spec7
461         };
462
463         sync_agent_ec_task_spec_s *pTask_spec = sync_agent_alloc_simple_task_spec("add_profile_cp",
464                                                                                   add_profile_cp_task_process, NULL, NULL,
465                                                                                   7, param_spec_array);
466
467         sync_agent_unref_param_spec(pParam_spec1);
468         sync_agent_unref_param_spec(pParam_spec2);
469         sync_agent_unref_param_spec(pParam_spec3);
470         sync_agent_unref_param_spec(pParam_spec4);
471         sync_agent_unref_param_spec(pParam_spec5);
472         sync_agent_unref_param_spec(pParam_spec6);
473         sync_agent_unref_param_spec(pParam_spec7);
474
475         _EXTERN_FUNC_EXIT;
476         return pTask_spec;
477 }
478
479 sync_agent_ec_task_spec_s *make_refresh_from_service_task()
480 {
481         _EXTERN_FUNC_ENTER;
482
483         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);
484
485         sync_agent_ec_param_spec_s *param_spec_array[1] = { pParam_spec1 };
486
487         sync_agent_ec_task_spec_s *pTask_spec = sync_agent_alloc_simple_task_spec("refresh_from_service",
488                                                                                   refresh_from_service_task_process, NULL, NULL,
489                                                                                   1, param_spec_array);
490
491         sync_agent_unref_param_spec(pParam_spec1);
492
493         _EXTERN_FUNC_EXIT;
494         return pTask_spec;
495 }
496
497 sync_agent_ec_task_spec_s *make_cancel_request_task()
498 {
499         _EXTERN_FUNC_ENTER;
500
501         sync_agent_ec_task_spec_s *pTask_spec = sync_agent_alloc_simple_task_spec("cancel_sync_request",
502                                                                                   cancel_sync_request_task_process, NULL, NULL,
503                                                                                   0, NULL);
504
505         _EXTERN_FUNC_EXIT;
506         return pTask_spec;
507 }
508
509 sync_agent_ec_task_spec_s *make_reset_all_data_task()
510 {
511         _EXTERN_FUNC_ENTER;
512
513         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);
514         sync_agent_ec_param_spec_s *param_spec_array[1] = { pParam_spec1 };
515
516         sync_agent_ec_task_spec_s *pTask_spec = sync_agent_alloc_simple_task_spec("reset_all_data",
517                                                                                   reset_all_data_task_process, NULL, NULL,
518                                                                                   1, param_spec_array);
519
520         sync_agent_unref_param_spec(pParam_spec1);
521
522         _EXTERN_FUNC_EXIT;
523         return pTask_spec;
524 }
525
526 sync_agent_ec_task_spec_s *make_get_all_profiles_data_task()
527 {
528         _EXTERN_FUNC_ENTER;
529
530         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);
531         sync_agent_ec_param_spec_s *pParam_spec2 = sync_agent_alloc_param_spec_structure("profilesData", NULL, NULL,
532                                                                                          false, true, false, NULL, false, NULL, false, NULL);
533
534         sync_agent_ec_param_spec_s *param_spec_array[2] = { pParam_spec1, pParam_spec2 };
535
536         sync_agent_ec_task_spec_s *pTask_spec = sync_agent_alloc_simple_task_spec("get_all_profiles_data",
537                                                                                   get_all_profiles_data_task_process, NULL, NULL,
538                                                                                   2, param_spec_array);
539
540         _EXTERN_FUNC_EXIT;
541         return pTask_spec;
542 }
543
544 sync_agent_ec_task_error_e synchronize_task_process(unsigned int param_cnt, sync_agent_ec_param_param_s ** param_array)
545 {
546         _EXTERN_FUNC_ENTER;
547
548         sync_agent_ec_task_error_e err = SYNC_AGENT_EC_TASK_ERROR_RUN_SUCCESS;
549
550         int accountId = 0;
551         sync_agent_get_param_value(&(param_array[0]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &accountId);
552         retvm_if(accountId < 0, SYNC_AGENT_EC_TASK_ERROR_RUN_FAILED, "account id = %d", accountId);
553
554         char *syncMode = NULL;
555         sync_agent_get_param_value(&(param_array[1]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &syncMode);
556
557         san_package_s *pSanPackage = NULL;
558         sync_agent_get_param_value(&(param_array[2]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &pSanPackage);
559
560         _DEBUG_INFO("accountId = %d", accountId);
561         _DEBUG_INFO("syncMode = %s", syncMode);
562
563         bool result = synchronize(accountId, syncMode, pSanPackage);
564         if (result == false)
565                 err = SYNC_AGENT_EC_TASK_ERROR_RUN_FAILED;
566
567         _EXTERN_FUNC_EXIT;
568         return err;
569 }
570
571 sync_agent_ec_task_error_e add_profile_task_process(unsigned int param_cnt, sync_agent_ec_param_param_s ** param_array)
572 {
573         _EXTERN_FUNC_ENTER;
574
575         sync_agent_ec_task_error_e err = SYNC_AGENT_EC_TASK_ERROR_RUN_SUCCESS;
576
577         char *profileDirName = NULL;
578         char *profileName = NULL;
579         char *addr = NULL;
580         char *id = NULL;
581         char *password = NULL;
582         char *syncMode = NULL;
583         char *syncType = NULL;
584         char *interval = NULL;
585         GList *categories = NULL;
586         int accountId;
587
588         bool res;
589         int result;
590
591         sync_agent_get_param_value(&(param_array[0]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &profileDirName);
592         sync_agent_get_param_value(&(param_array[1]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &profileName);
593         sync_agent_get_param_value(&(param_array[2]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &addr);
594         sync_agent_get_param_value(&(param_array[3]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &id);
595         sync_agent_get_param_value(&(param_array[4]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &password);
596         sync_agent_get_param_value(&(param_array[5]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &syncMode);
597         sync_agent_get_param_value(&(param_array[6]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &syncType);
598         sync_agent_get_param_value(&(param_array[7]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &interval);
599         sync_agent_get_param_value(&(param_array[8]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &categories);
600
601         res = add_profile(profileDirName, profileName, addr, id, password, syncMode, syncType, interval, categories, &accountId);
602         if (res == false) {
603                 err = SYNC_AGENT_EC_TASK_ERROR_RUN_FAILED;
604                 result = 0;
605         } else
606                 result = 1;
607
608         sync_agent_set_param_value(&(param_array[9]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &result);
609         sync_agent_set_param_value(&(param_array[10]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &accountId);
610
611         /*step 2 : start refresh_from_service for added account */
612         void *in_param_value_array[1] = { &accountId };
613         int in_param_index_array[1] = { 0 };
614         sync_agent_ec_value_type_e in_param_value_type_array[1] = { SYNC_AGENT_EC_VALUE_TYPE_INT };
615         unsigned int request_msg_id = 0;
616         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);
617
618         _EXTERN_FUNC_EXIT;
619         return err;
620 }
621
622 sync_agent_ec_task_error_e edit_profile_task_process(unsigned int param_cnt, sync_agent_ec_param_param_s ** param_array)
623 {
624         _EXTERN_FUNC_ENTER;
625
626         sync_agent_ec_task_error_e err = SYNC_AGENT_EC_TASK_ERROR_RUN_SUCCESS;
627
628         int accountId;
629         char *profileName = NULL;
630         char *addr = NULL;
631         char *id = NULL;
632         char *password = NULL;
633         char *syncMode = NULL;
634         char *syncType = NULL;
635         char *interval = NULL;
636         GList *categories = NULL;
637
638         bool res;
639         int result;
640
641         sync_agent_get_param_value(&(param_array[0]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &accountId);
642         sync_agent_get_param_value(&(param_array[1]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &profileName);
643         sync_agent_get_param_value(&(param_array[2]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &addr);
644         sync_agent_get_param_value(&(param_array[3]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &id);
645         sync_agent_get_param_value(&(param_array[4]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &password);
646         sync_agent_get_param_value(&(param_array[5]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &syncMode);
647         sync_agent_get_param_value(&(param_array[6]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &syncType);
648         sync_agent_get_param_value(&(param_array[7]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &interval);
649         sync_agent_get_param_value(&(param_array[8]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &categories);
650
651         res = edit_profile(accountId, profileName, addr, id, password, syncMode, syncType, interval, categories);
652         if (res == false) {
653                 err = SYNC_AGENT_EC_TASK_ERROR_RUN_FAILED;
654                 result = 0;
655         } else
656                 result = 1;
657
658         sync_agent_set_param_value(&(param_array[9]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &result);
659
660         _EXTERN_FUNC_EXIT;
661         return err;
662 }
663
664 sync_agent_ec_task_error_e delete_profile_task_process(unsigned int param_cnt, sync_agent_ec_param_param_s ** param_array)
665 {
666         _EXTERN_FUNC_ENTER;
667
668         bool res;
669         int result;
670         sync_agent_ec_task_error_e err = SYNC_AGENT_EC_TASK_ERROR_RUN_SUCCESS;
671
672         GList *profiles = NULL;
673         sync_agent_get_param_value(&(param_array[0]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &profiles);
674
675         res = delete_profiles(profiles);
676         if (res == 0) {
677                 err = SYNC_AGENT_EC_TASK_ERROR_RUN_FAILED;
678                 result = 0;
679         } else
680                 result = 1;
681
682         sync_agent_set_param_value(&(param_array[1]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &result);
683
684         _EXTERN_FUNC_EXIT;
685         return err;
686
687 }
688
689 sync_agent_ec_task_error_e get_profile_data_task_process(unsigned int param_cnt, sync_agent_ec_param_param_s ** param_array)
690 {
691         _EXTERN_FUNC_ENTER;
692
693         sync_agent_ec_task_error_e err = SYNC_AGENT_EC_TASK_ERROR_RUN_SUCCESS;
694
695         int accountId = 0;
696         char *profileName = NULL;
697         char *addr = NULL;
698         char *id = NULL;
699         char *password = NULL;
700         char *syncMode = NULL;
701         char *syncType = NULL;
702         char *interval = NULL;
703         int lastSessionStatus;
704         int lastSessionTime;
705         int result;
706         bool res;
707
708         sync_agent_get_param_value(&(param_array[0]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &accountId);
709         retvm_if(accountId < 0, SYNC_AGENT_EC_TASK_ERROR_RUN_FAILED, "account id = %d", accountId);
710
711         res = get_profile_data(accountId, &profileName, &addr, &id, &password, &syncMode, &syncType, &interval, &lastSessionStatus, &lastSessionTime);
712         if (res == false) {
713                 err = SYNC_AGENT_EC_TASK_ERROR_RUN_FAILED;
714                 result = 0;
715         } else
716                 result = 1;
717
718         sync_agent_set_param_value(&(param_array[1]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &result);
719         sync_agent_set_param_value(&(param_array[2]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &profileName);
720         sync_agent_set_param_value(&(param_array[3]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &addr);
721         sync_agent_set_param_value(&(param_array[4]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &id);
722         sync_agent_set_param_value(&(param_array[5]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &password);
723         sync_agent_set_param_value(&(param_array[6]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &syncMode);
724         sync_agent_set_param_value(&(param_array[7]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &syncType);
725         sync_agent_set_param_value(&(param_array[8]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &interval);
726         sync_agent_set_param_value(&(param_array[9]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &lastSessionStatus);
727         sync_agent_set_param_value(&(param_array[10]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &lastSessionTime);
728
729         _EXTERN_FUNC_EXIT;
730         return err;
731
732 }
733
734 sync_agent_ec_task_error_e get_profile_sync_category_task_process(unsigned int param_cnt, sync_agent_ec_param_param_s ** param_array)
735 {
736         _EXTERN_FUNC_ENTER;
737
738         sync_agent_ec_task_error_e err = SYNC_AGENT_EC_TASK_ERROR_RUN_SUCCESS;
739
740         int accountId = 0;
741         int contentType;
742
743         int enabled = 0;
744         char *srcURI = NULL;
745         char *tgtURI = NULL;
746         char *id = NULL;
747         char *password = NULL;
748         bool res;
749         int result = 0;
750
751         sync_agent_get_param_value(&(param_array[0]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &accountId);
752         retvm_if(accountId < 0, SYNC_AGENT_EC_TASK_ERROR_RUN_FAILED, "account id = %d", accountId);
753
754         sync_agent_get_param_value(&(param_array[1]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &contentType);
755
756         res = get_profile_sync_category(accountId, contentType, &enabled, &srcURI, &tgtURI, &id, &password);
757         if (res == false) {
758                 err = SYNC_AGENT_EC_TASK_ERROR_RUN_FAILED;
759                 result = 0;
760         } else
761                 result = 1;
762
763         sync_agent_set_param_value(&(param_array[2]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &result);
764         sync_agent_set_param_value(&(param_array[3]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &enabled);
765         sync_agent_set_param_value(&(param_array[4]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &srcURI);
766         sync_agent_set_param_value(&(param_array[5]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &tgtURI);
767         sync_agent_set_param_value(&(param_array[6]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &id);
768         sync_agent_set_param_value(&(param_array[7]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &password);
769
770         _EXTERN_FUNC_EXIT;
771         return err;
772 }
773
774 sync_agent_ec_task_error_e get_profile_statistics_task_process(unsigned int param_cnt, sync_agent_ec_param_param_s ** param_array)
775 {
776         _EXTERN_FUNC_ENTER;
777
778         sync_agent_ec_task_error_e err = SYNC_AGENT_EC_TASK_ERROR_RUN_SUCCESS;
779
780         int accountId = 0;
781         int contentType;
782
783         char *dbSynced = NULL;
784         int lastSessionTime = -1;
785         int server2Client_Total = 0;
786         int server2Client_NrOfAdd = 0;
787         int server2Client_NrOfDelete = 0;
788         int server2Client_NrOfReplace = 0;
789         int client2Server_Total = 0;
790         int client2Server_NrOfAdd = 0;
791         int client2Server_NrOfDelete = 0;
792         int client2Server_NrOfReplace = 0;
793
794         bool res;
795         int result;
796
797         sync_agent_get_param_value(&(param_array[0]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &accountId);
798         retvm_if(accountId < 0, SYNC_AGENT_EC_TASK_ERROR_RUN_FAILED, "account id = %d", accountId);
799
800         sync_agent_get_param_value(&(param_array[1]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &contentType);
801
802         res = get_profile_statistics(accountId, contentType, &dbSynced, &lastSessionTime,
803                                      &server2Client_Total, &server2Client_NrOfAdd, &server2Client_NrOfDelete, &server2Client_NrOfReplace, &client2Server_Total, &client2Server_NrOfAdd, &client2Server_NrOfDelete, &client2Server_NrOfReplace);
804
805         if (res == false) {
806                 err = SYNC_AGENT_EC_TASK_ERROR_RUN_FAILED;
807                 result = 0;
808         } else
809                 result = 1;
810
811         sync_agent_set_param_value(&(param_array[2]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &result);
812         sync_agent_set_param_value(&(param_array[3]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &dbSynced);
813         sync_agent_set_param_value(&(param_array[4]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &lastSessionTime);
814         sync_agent_set_param_value(&(param_array[5]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &server2Client_Total);
815         sync_agent_set_param_value(&(param_array[6]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &server2Client_NrOfAdd);
816         sync_agent_set_param_value(&(param_array[7]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &server2Client_NrOfDelete);
817         sync_agent_set_param_value(&(param_array[8]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &server2Client_NrOfReplace);
818         sync_agent_set_param_value(&(param_array[9]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &client2Server_Total);
819         sync_agent_set_param_value(&(param_array[10]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &client2Server_NrOfAdd);
820         sync_agent_set_param_value(&(param_array[11]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &client2Server_NrOfDelete);
821         sync_agent_set_param_value(&(param_array[12]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &client2Server_NrOfReplace);
822
823         _EXTERN_FUNC_EXIT;
824         return err;
825 }
826
827 sync_agent_ec_task_error_e reset_synchronizing_profiles_task_process(unsigned int param_cnt, sync_agent_ec_param_param_s ** param_array)
828 {
829         _EXTERN_FUNC_ENTER;
830
831         sync_agent_ec_task_error_e err = SYNC_AGENT_EC_TASK_ERROR_RUN_SUCCESS;
832
833         reset_synchronizing_profiles();
834
835         _EXTERN_FUNC_EXIT;
836         return err;
837 }
838
839 sync_agent_ec_task_error_e add_profile_cp_task_process(unsigned int param_cnt, sync_agent_ec_param_param_s ** param_array)
840 {
841         _EXTERN_FUNC_ENTER;
842
843         sync_agent_ec_task_error_e err = SYNC_AGENT_EC_TASK_ERROR_RUN_SUCCESS;
844
845         char *profileName = NULL;
846         char *addr = NULL;
847         char *id = NULL;
848         char *password = NULL;
849         GList *categories = NULL;
850         int accountId;
851
852         bool res;
853         int result;
854
855         sync_agent_get_param_value(&(param_array[0]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &profileName);
856         sync_agent_get_param_value(&(param_array[1]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &addr);
857         sync_agent_get_param_value(&(param_array[2]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &id);
858         sync_agent_get_param_value(&(param_array[3]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &password);
859         sync_agent_get_param_value(&(param_array[4]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &categories);
860
861         res = add_profile_cp(profileName, addr, id, password, categories, &accountId);
862         if (res == false) {
863                 err = SYNC_AGENT_EC_TASK_ERROR_RUN_FAILED;
864                 result = 0;
865         } else
866                 result = 1;
867
868         sync_agent_set_param_value(&(param_array[5]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &result);
869         sync_agent_set_param_value(&(param_array[6]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &accountId);
870
871         _EXTERN_FUNC_EXIT;
872         return err;
873 }
874
875 sync_agent_ec_task_error_e refresh_from_service_task_process(unsigned int param_cnt, sync_agent_ec_param_param_s ** param_array)
876 {
877         _EXTERN_FUNC_ENTER;
878
879         sync_agent_ec_task_error_e err = SYNC_AGENT_EC_TASK_ERROR_RUN_SUCCESS;
880
881         int accountId;
882         bool res;
883
884         sync_agent_get_param_value(&(param_array[0]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &accountId);
885
886         res = refresh_from_service_all(accountId);
887         if (res == false)
888                 err = SYNC_AGENT_EC_TASK_ERROR_RUN_FAILED;
889
890         _EXTERN_FUNC_EXIT;
891         return err;
892 }
893
894 sync_agent_ec_task_error_e cancel_sync_request_task_process(unsigned int param_cnt, sync_agent_ec_param_param_s ** param_array)
895 {
896         _EXTERN_FUNC_ENTER;
897
898         sync_agent_ec_task_error_e err = SYNC_AGENT_EC_TASK_ERROR_RUN_SUCCESS;
899
900         cancel_sync_request();
901
902         _EXTERN_FUNC_EXIT;
903         return err;
904 }
905
906 sync_agent_ec_task_error_e reset_all_data_task_process(unsigned int param_cnt, sync_agent_ec_param_param_s ** param_array)
907 {
908         _EXTERN_FUNC_ENTER;
909
910         sync_agent_ec_task_error_e err = SYNC_AGENT_EC_TASK_ERROR_RUN_SUCCESS;
911         int result = 1;
912
913         /* delete all profiles */
914         result = delete_all_profiles();
915
916         /* delete all agent default table */
917         result = delete_all_agent_default_table();
918
919         sync_agent_set_param_value(&(param_array[0]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &result);
920
921         _EXTERN_FUNC_EXIT;
922         return err;
923 }
924
925 sync_agent_ec_task_error_e get_all_profiles_data_task_process(unsigned int param_cnt, sync_agent_ec_param_param_s ** param_array)
926 {
927         _EXTERN_FUNC_ENTER;
928
929         sync_agent_ec_task_error_e err = SYNC_AGENT_EC_TASK_ERROR_RUN_SUCCESS;
930
931         bool res;
932         int result;
933         GList *profiles_data = NULL;
934
935         res = get_all_profiles_data(&profiles_data);
936
937         if (res == false) {
938                 err = SYNC_AGENT_EC_TASK_ERROR_RUN_FAILED;
939                 result = 0;
940         } else
941                 result = 1;
942
943         sync_agent_set_param_value(&(param_array[0]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &result);
944         sync_agent_set_param_value(&(param_array[1]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &profiles_data);
945
946         _EXTERN_FUNC_EXIT;
947         return err;
948
949 }
950
951 void insert_request_msg_info(int sync_type, unsigned int request_id)
952 {
953         _EXTERN_FUNC_ENTER;
954
955         sync_request_id_list = g_list_prepend(sync_request_id_list, _create_request_msg_info(sync_type, request_id));
956
957         _EXTERN_FUNC_EXIT;
958 }
959
960 void delete_request_msg_info(unsigned int request_id)
961 {
962         _EXTERN_FUNC_ENTER;
963
964         GList *iter = NULL;
965         request_msg_info_t *pMsg_info = NULL;
966
967         for (iter = sync_request_id_list; iter != NULL; iter = g_list_next(iter)) {
968                 pMsg_info = iter->data;
969
970                 if (pMsg_info->request_id == request_id) {
971                         sync_request_id_list = g_list_remove_link(sync_request_id_list, iter);
972                         break;
973                 }
974         }
975
976         if (iter != NULL) {
977                 _request_msg_info_free(iter->data);
978                 g_list_free_1(iter);
979         }
980         _EXTERN_FUNC_EXIT;
981 }
982
983 bool get_synchronizing_request_id(unsigned int *pRequest_id)
984 {
985         _EXTERN_FUNC_ENTER;
986
987         bool success = false;
988         request_msg_info_t *pMsg_info = NULL;
989         GList *iter = NULL;
990
991         for (iter = sync_request_id_list; iter != NULL; iter = g_list_next(iter)) {
992                 pMsg_info = iter->data;
993
994                 if (pMsg_info->sync_type == SYNC_MODE_MANUAL || pMsg_info->sync_type == SYNC_MODE_PERIODIC || pMsg_info->sync_type == SYNC_MODE_SAN) {
995                         success = true;
996                         *pRequest_id = pMsg_info->request_id;
997
998                         _request_msg_info_free(pMsg_info);
999                         sync_request_id_list = g_list_delete_link(sync_request_id_list, iter);
1000
1001                         break;
1002                 }
1003         }
1004
1005         _EXTERN_FUNC_EXIT;
1006         return success;
1007 }
1008
1009 bool get_manual_sync_request_id(unsigned int *pRequest_id)
1010 {
1011         _EXTERN_FUNC_ENTER;
1012
1013         bool success = false;
1014         request_msg_info_t *pMsg_info = NULL;
1015         GList *iter = NULL;
1016
1017         for (iter = sync_request_id_list; iter != NULL; iter = g_list_next(iter)) {
1018                 pMsg_info = iter->data;
1019
1020                 if (pMsg_info->sync_type == SYNC_MODE_MANUAL) {
1021                         success = true;
1022                         *pRequest_id = pMsg_info->request_id;
1023
1024                         _request_msg_info_free(pMsg_info);
1025                         sync_request_id_list = g_list_delete_link(sync_request_id_list, iter);
1026                         break;
1027                 }
1028         }
1029
1030         _EXTERN_FUNC_EXIT;
1031         return success;
1032 }
1033
1034 bool get_periodic_sync_request_id(unsigned int *pRequest_id)
1035 {
1036         _EXTERN_FUNC_ENTER;
1037
1038         bool success = false;
1039         request_msg_info_t *pMsg_info = NULL;
1040         GList *iter = NULL;
1041
1042         for (iter = sync_request_id_list; iter != NULL; iter = g_list_next(iter)) {
1043                 pMsg_info = iter->data;
1044
1045                 if (pMsg_info->sync_type == SYNC_MODE_PERIODIC) {
1046                         success = true;
1047                         *pRequest_id = pMsg_info->request_id;
1048
1049                         _request_msg_info_free(pMsg_info);
1050                         sync_request_id_list = g_list_delete_link(sync_request_id_list, iter);
1051
1052                         break;
1053                 }
1054         }
1055
1056         _EXTERN_FUNC_EXIT;
1057         return success;
1058 }
1059
1060 bool get_san_sync_request_id(unsigned int *pRequest_id)
1061 {
1062         _EXTERN_FUNC_ENTER;
1063
1064         bool success = false;
1065         request_msg_info_t *pMsg_info = NULL;
1066         GList *iter = NULL;
1067
1068         for (iter = sync_request_id_list; iter != NULL; iter = g_list_next(iter)) {
1069                 pMsg_info = iter->data;
1070
1071                 if (pMsg_info->sync_type == SYNC_MODE_SAN) {
1072                         success = true;
1073                         *pRequest_id = pMsg_info->request_id;
1074
1075                         _request_msg_info_free(pMsg_info);
1076                         sync_request_id_list = g_list_delete_link(sync_request_id_list, iter);
1077
1078                         break;
1079                 }
1080         }
1081
1082         _EXTERN_FUNC_EXIT;
1083         return success;
1084 }
1085
1086 bool get_auto_configure_request_id(unsigned int *pRequest_id)
1087 {
1088         _EXTERN_FUNC_ENTER;
1089
1090         bool success = false;
1091         request_msg_info_t *pMsg_info = NULL;
1092         GList *iter = NULL;
1093
1094         for (iter = sync_request_id_list; iter != NULL; iter = g_list_next(iter)) {
1095                 pMsg_info = iter->data;
1096
1097                 if (pMsg_info->sync_type == SYNC_MODE_AUTOCONFIG) {
1098                         success = true;
1099                         *pRequest_id = pMsg_info->request_id;
1100
1101                         _request_msg_info_free(pMsg_info);
1102                         sync_request_id_list = g_list_delete_link(sync_request_id_list, iter);
1103
1104                         break;
1105                 }
1106         }
1107
1108         _EXTERN_FUNC_EXIT;
1109         return success;
1110 }
1111
1112 bool cancel_current_sync_task()
1113 {
1114         _EXTERN_FUNC_ENTER;
1115
1116         unsigned int request_msg_id_to_cancel = 0;
1117         unsigned int request_msg_id = 0;
1118         bool has_autoconfig = get_auto_configure_request_id(&request_msg_id_to_cancel);
1119         if (has_autoconfig) {
1120                 _DEBUG_INFO("has_autoconfig [%d] ", request_msg_id_to_cancel);
1121                 sync_agent_cancel_task(request_msg_id_to_cancel);
1122         } else {
1123                 bool has_sync = get_synchronizing_request_id(&request_msg_id_to_cancel);
1124                 if (has_sync) {
1125                         _DEBUG_INFO("has_manual_sync [%d] ", request_msg_id_to_cancel);
1126                         sync_agent_cancel_task(request_msg_id_to_cancel);
1127
1128                         /*request network session cancel */
1129                         sync_agent_request_async_task(EC_MSG_TYPE_SYNC_TASK_CANCEL_SYNC_REQUEST, 0, 0, NULL, NULL, NULL, NULL, NULL, (int *)&request_msg_id);
1130                 } else {
1131                         /* nothing to do */
1132                 }
1133         }
1134
1135         _EXTERN_FUNC_EXIT;
1136         return true;
1137 }