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