3 * Copyright (c) 2012 Samsung Electronics Co., Ltd.
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
9 * http://www.apache.org/licenses/LICENSE-2.0
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.
19 * @OMA_DS_Engine_Controller_Task.c
21 * @brief This file is the source file of implementation of make and register task to Engine Controller
26 #include <sync_agent.h>
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"
33 #ifndef OMADS_AGENT_LOG
35 #define LOG_TAG "OMA_DS_COMMON"
38 static GList *sync_request_id_list = NULL;
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);
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);
48 static void __free_resource_cp(resource_cp_s * resource);
50 static void _free_sync_categorie_list(void *list)
53 retm_if(list == NULL, "list is NULL");
55 GList *categories = (GList *) list;
57 for (iter = categories; iter != NULL; iter = g_list_next(iter))
58 free_sync_service(iter->data);
60 g_list_free(categories);
64 static void _free_delete_profile_list(void *list)
67 retm_if(list == NULL, "list is NULL");
69 GList *profiles = (GList *) list;
71 for (iter = profiles; iter != NULL; iter = g_list_next(iter))
74 g_list_free(profiles);
78 static void _free_resource_cp_list(void *list)
81 retm_if(list == NULL, "list is NULL");
83 GList *profiles = (GList *) list;
85 for (iter = profiles; iter != NULL; iter = g_list_next(iter))
86 __free_resource_cp(iter->data);
88 g_list_free(profiles);
92 static void __free_resource_cp(resource_cp_s * resource)
95 retm_if(resource == NULL, "resource is NULL");
97 if (resource->name != NULL)
100 if (resource->accept != NULL)
101 free(resource->accept);
103 if (resource->id != NULL)
106 if (resource->password != NULL)
107 free(resource->password);
109 if (resource->auth_type != NULL)
110 free(resource->auth_type);
112 if (resource->auth_data != NULL)
113 free(resource->auth_data);
119 static request_msg_info_t *_create_request_msg_info(int sync_type, unsigned int request_id)
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");
125 pInfo->sync_type = sync_type;
126 pInfo->request_id = request_id;
132 static void _request_msg_info_free(request_msg_info_t * info)
142 static void *_string_copy_struct(void *string)
147 data = strdup((const char *)string);
153 sync_agent_ec_task_spec_s *make_synchronize_task()
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 };
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);
168 sync_agent_unref_param_spec(pParam_spec1);
169 sync_agent_unref_param_spec(pParam_spec2);
170 sync_agent_unref_param_spec(pParam_spec3);
176 sync_agent_ec_task_spec_s *make_add_profile_task()
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);
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);
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
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);
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);
226 sync_agent_ec_task_spec_s *make_edit_profile_task()
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);
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);
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
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);
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);
273 sync_agent_ec_task_spec_s *make_delete_profile_task()
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);
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);
282 sync_agent_ec_param_spec_s *param_spec_array[2] = { pParam_spec1, pParam_spec2 };
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);
288 sync_agent_unref_param_spec(pParam_spec1);
289 sync_agent_unref_param_spec(pParam_spec2);
295 sync_agent_ec_task_spec_s *make_get_profile_data_task()
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);
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
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);
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);
343 sync_agent_ec_task_spec_s *make_get_profile_sync_category_task()
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);
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);
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
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);
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);
382 sync_agent_ec_task_spec_s *make_get_profile_statistics_task()
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);
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);
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
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);
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);
429 sync_agent_ec_task_spec_s *make_reset_synchronizing_profiles_task()
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,
441 sync_agent_ec_task_spec_s *make_add_profile_cp_task()
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);
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);
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
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);
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);
479 sync_agent_ec_task_spec_s *make_refresh_from_service_task()
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);
485 sync_agent_ec_param_spec_s *param_spec_array[1] = { pParam_spec1 };
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);
491 sync_agent_unref_param_spec(pParam_spec1);
497 sync_agent_ec_task_spec_s *make_cancel_request_task()
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,
509 sync_agent_ec_task_spec_s *make_reset_all_data_task()
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 };
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);
520 sync_agent_unref_param_spec(pParam_spec1);
526 sync_agent_ec_task_spec_s *make_get_all_profiles_data_task()
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);
534 sync_agent_ec_param_spec_s *param_spec_array[2] = { pParam_spec1, pParam_spec2 };
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);
544 sync_agent_ec_task_error_e synchronize_task_process(unsigned int param_cnt, sync_agent_ec_param_param_s ** param_array)
548 sync_agent_ec_task_error_e err = SYNC_AGENT_EC_TASK_ERROR_RUN_SUCCESS;
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);
554 char *syncMode = NULL;
555 sync_agent_get_param_value(&(param_array[1]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &syncMode);
557 san_package_s *pSanPackage = NULL;
558 sync_agent_get_param_value(&(param_array[2]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &pSanPackage);
560 _DEBUG_INFO("accountId = %d", accountId);
561 _DEBUG_INFO("syncMode = %s", syncMode);
563 bool result = synchronize(accountId, syncMode, pSanPackage);
565 err = SYNC_AGENT_EC_TASK_ERROR_RUN_FAILED;
571 sync_agent_ec_task_error_e add_profile_task_process(unsigned int param_cnt, sync_agent_ec_param_param_s ** param_array)
575 sync_agent_ec_task_error_e err = SYNC_AGENT_EC_TASK_ERROR_RUN_SUCCESS;
577 char *profileDirName = NULL;
578 char *profileName = NULL;
581 char *password = NULL;
582 char *syncMode = NULL;
583 char *syncType = NULL;
584 char *interval = NULL;
585 GList *categories = NULL;
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);
601 res = add_profile(profileDirName, profileName, addr, id, password, syncMode, syncType, interval, categories, &accountId);
603 err = SYNC_AGENT_EC_TASK_ERROR_RUN_FAILED;
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);
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);
622 sync_agent_ec_task_error_e edit_profile_task_process(unsigned int param_cnt, sync_agent_ec_param_param_s ** param_array)
626 sync_agent_ec_task_error_e err = SYNC_AGENT_EC_TASK_ERROR_RUN_SUCCESS;
629 char *profileName = NULL;
632 char *password = NULL;
633 char *syncMode = NULL;
634 char *syncType = NULL;
635 char *interval = NULL;
636 GList *categories = NULL;
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);
651 res = edit_profile(accountId, profileName, addr, id, password, syncMode, syncType, interval, categories);
653 err = SYNC_AGENT_EC_TASK_ERROR_RUN_FAILED;
658 sync_agent_set_param_value(&(param_array[9]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &result);
664 sync_agent_ec_task_error_e delete_profile_task_process(unsigned int param_cnt, sync_agent_ec_param_param_s ** param_array)
670 sync_agent_ec_task_error_e err = SYNC_AGENT_EC_TASK_ERROR_RUN_SUCCESS;
672 GList *profiles = NULL;
673 sync_agent_get_param_value(&(param_array[0]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &profiles);
675 res = delete_profiles(profiles);
677 err = SYNC_AGENT_EC_TASK_ERROR_RUN_FAILED;
682 sync_agent_set_param_value(&(param_array[1]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &result);
689 sync_agent_ec_task_error_e get_profile_data_task_process(unsigned int param_cnt, sync_agent_ec_param_param_s ** param_array)
693 sync_agent_ec_task_error_e err = SYNC_AGENT_EC_TASK_ERROR_RUN_SUCCESS;
696 char *profileName = NULL;
699 char *password = NULL;
700 char *syncMode = NULL;
701 char *syncType = NULL;
702 char *interval = NULL;
703 int lastSessionStatus;
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);
711 res = get_profile_data(accountId, &profileName, &addr, &id, &password, &syncMode, &syncType, &interval, &lastSessionStatus, &lastSessionTime);
713 err = SYNC_AGENT_EC_TASK_ERROR_RUN_FAILED;
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);
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)
738 sync_agent_ec_task_error_e err = SYNC_AGENT_EC_TASK_ERROR_RUN_SUCCESS;
747 char *password = NULL;
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);
754 sync_agent_get_param_value(&(param_array[1]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &contentType);
756 res = get_profile_sync_category(accountId, contentType, &enabled, &srcURI, &tgtURI, &id, &password);
758 err = SYNC_AGENT_EC_TASK_ERROR_RUN_FAILED;
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);
774 sync_agent_ec_task_error_e get_profile_statistics_task_process(unsigned int param_cnt, sync_agent_ec_param_param_s ** param_array)
778 sync_agent_ec_task_error_e err = SYNC_AGENT_EC_TASK_ERROR_RUN_SUCCESS;
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;
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);
800 sync_agent_get_param_value(&(param_array[1]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &contentType);
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);
806 err = SYNC_AGENT_EC_TASK_ERROR_RUN_FAILED;
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);
827 sync_agent_ec_task_error_e reset_synchronizing_profiles_task_process(unsigned int param_cnt, sync_agent_ec_param_param_s ** param_array)
831 sync_agent_ec_task_error_e err = SYNC_AGENT_EC_TASK_ERROR_RUN_SUCCESS;
833 reset_synchronizing_profiles();
839 sync_agent_ec_task_error_e add_profile_cp_task_process(unsigned int param_cnt, sync_agent_ec_param_param_s ** param_array)
843 sync_agent_ec_task_error_e err = SYNC_AGENT_EC_TASK_ERROR_RUN_SUCCESS;
845 char *profileName = NULL;
848 char *password = NULL;
849 GList *categories = NULL;
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);
861 res = add_profile_cp(profileName, addr, id, password, categories, &accountId);
863 err = SYNC_AGENT_EC_TASK_ERROR_RUN_FAILED;
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);
875 sync_agent_ec_task_error_e refresh_from_service_task_process(unsigned int param_cnt, sync_agent_ec_param_param_s ** param_array)
879 sync_agent_ec_task_error_e err = SYNC_AGENT_EC_TASK_ERROR_RUN_SUCCESS;
884 sync_agent_get_param_value(&(param_array[0]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &accountId);
886 res = refresh_from_service_all(accountId);
888 err = SYNC_AGENT_EC_TASK_ERROR_RUN_FAILED;
894 sync_agent_ec_task_error_e cancel_sync_request_task_process(unsigned int param_cnt, sync_agent_ec_param_param_s ** param_array)
898 sync_agent_ec_task_error_e err = SYNC_AGENT_EC_TASK_ERROR_RUN_SUCCESS;
900 cancel_sync_request();
906 sync_agent_ec_task_error_e reset_all_data_task_process(unsigned int param_cnt, sync_agent_ec_param_param_s ** param_array)
910 sync_agent_ec_task_error_e err = SYNC_AGENT_EC_TASK_ERROR_RUN_SUCCESS;
913 /* delete all profiles */
914 result = delete_all_profiles();
916 /* delete all agent default table */
917 result = delete_all_agent_default_table();
919 sync_agent_set_param_value(&(param_array[0]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &result);
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)
929 sync_agent_ec_task_error_e err = SYNC_AGENT_EC_TASK_ERROR_RUN_SUCCESS;
933 GList *profiles_data = NULL;
935 res = get_all_profiles_data(&profiles_data);
938 err = SYNC_AGENT_EC_TASK_ERROR_RUN_FAILED;
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);
951 void insert_request_msg_info(int sync_type, unsigned int request_id)
955 sync_request_id_list = g_list_prepend(sync_request_id_list, _create_request_msg_info(sync_type, request_id));
960 void delete_request_msg_info(unsigned int request_id)
965 request_msg_info_t *pMsg_info = NULL;
967 for (iter = sync_request_id_list; iter != NULL; iter = g_list_next(iter)) {
968 pMsg_info = iter->data;
970 if (pMsg_info->request_id == request_id) {
971 sync_request_id_list = g_list_remove_link(sync_request_id_list, iter);
977 _request_msg_info_free(iter->data);
983 bool get_synchronizing_request_id(unsigned int *pRequest_id)
987 bool success = false;
988 request_msg_info_t *pMsg_info = NULL;
991 for (iter = sync_request_id_list; iter != NULL; iter = g_list_next(iter)) {
992 pMsg_info = iter->data;
994 if (pMsg_info->sync_type == SYNC_MODE_MANUAL || pMsg_info->sync_type == SYNC_MODE_PERIODIC || pMsg_info->sync_type == SYNC_MODE_SAN) {
996 *pRequest_id = pMsg_info->request_id;
998 _request_msg_info_free(pMsg_info);
999 sync_request_id_list = g_list_delete_link(sync_request_id_list, iter);
1009 bool get_manual_sync_request_id(unsigned int *pRequest_id)
1013 bool success = false;
1014 request_msg_info_t *pMsg_info = NULL;
1017 for (iter = sync_request_id_list; iter != NULL; iter = g_list_next(iter)) {
1018 pMsg_info = iter->data;
1020 if (pMsg_info->sync_type == SYNC_MODE_MANUAL) {
1022 *pRequest_id = pMsg_info->request_id;
1024 _request_msg_info_free(pMsg_info);
1025 sync_request_id_list = g_list_delete_link(sync_request_id_list, iter);
1034 bool get_periodic_sync_request_id(unsigned int *pRequest_id)
1038 bool success = false;
1039 request_msg_info_t *pMsg_info = NULL;
1042 for (iter = sync_request_id_list; iter != NULL; iter = g_list_next(iter)) {
1043 pMsg_info = iter->data;
1045 if (pMsg_info->sync_type == SYNC_MODE_PERIODIC) {
1047 *pRequest_id = pMsg_info->request_id;
1049 _request_msg_info_free(pMsg_info);
1050 sync_request_id_list = g_list_delete_link(sync_request_id_list, iter);
1060 bool get_san_sync_request_id(unsigned int *pRequest_id)
1064 bool success = false;
1065 request_msg_info_t *pMsg_info = NULL;
1068 for (iter = sync_request_id_list; iter != NULL; iter = g_list_next(iter)) {
1069 pMsg_info = iter->data;
1071 if (pMsg_info->sync_type == SYNC_MODE_SAN) {
1073 *pRequest_id = pMsg_info->request_id;
1075 _request_msg_info_free(pMsg_info);
1076 sync_request_id_list = g_list_delete_link(sync_request_id_list, iter);
1086 bool get_auto_configure_request_id(unsigned int *pRequest_id)
1090 bool success = false;
1091 request_msg_info_t *pMsg_info = NULL;
1094 for (iter = sync_request_id_list; iter != NULL; iter = g_list_next(iter)) {
1095 pMsg_info = iter->data;
1097 if (pMsg_info->sync_type == SYNC_MODE_AUTOCONFIG) {
1099 *pRequest_id = pMsg_info->request_id;
1101 _request_msg_info_free(pMsg_info);
1102 sync_request_id_list = g_list_delete_link(sync_request_id_list, iter);
1112 bool cancel_current_sync_task()
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);
1123 bool has_sync = get_synchronizing_request_id(&request_msg_id_to_cancel);
1125 _DEBUG_INFO("has_manual_sync [%d] ", request_msg_id_to_cancel);
1126 sync_agent_cancel_task(request_msg_id_to_cancel);
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);