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.
18 #include "utility/sync_util.h"
20 #include "data-adapter/agent.h"
22 #include "data-adapter/agent_handler_manager.h"
23 #include "data-adapter/agent_handler_manager_internal.h"
25 #include "data-adapter/interface_service_item.h"
28 #define EXPORT_API __attribute__ ((visibility("default")))
31 #ifndef SYNC_AGENT_LOG
33 #define LOG_TAG "AF_DACI"
36 static sync_agent_da_handler_mgr_s *agent_db_handler_mgr = 0;
38 /* static function define */
39 static sync_agent_da_return_e _free_agent_dc_handler_table(void);
40 static sync_agent_da_return_e _free_agent_dc_handler_table_mutex(void);
41 static sync_agent_da_return_e _create_agent_db_handler_mgr_info(void);
42 static sync_agent_da_return_e __alloc_agent_dc_handler_table(void);
43 static sync_agent_da_return_e __alloc_agent_dc_handler_table_mutex(void);
44 static void ___destroy_agent_db_hashtable_value(void *handler);
45 static void ___destory_agent_db_hashtable_key(void *key);
47 /* general function implementation */
49 * ==================================
50 * external API (1. about agent db handler mgr)
51 * ==================================
53 sync_agent_da_return_e da_alloc_agentdb_handler_mgr()
57 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
59 /* alloc the agentDBHandlerMgr */
60 agent_db_handler_mgr = (sync_agent_da_handler_mgr_s *) calloc(1, sizeof(sync_agent_da_handler_mgr_s));
61 if (agent_db_handler_mgr == NULL)
62 return SYNC_AGENT_DA_ERR_DB_HANDLER_MGR;
63 _DEBUG_INFO("[%s] pAgentDBHandlerMgr alloc success !\n", __func__);
65 /* alloc the agentDBHandlerMgr information */
66 ret = _create_agent_db_handler_mgr_info();
67 if (ret != SYNC_AGENT_DA_SUCCESS)
68 _DEBUG_INFO("[%s] _da_create_agent_db_handler_mgr_info alloc fail !\n", __func__);
70 _DEBUG_INFO("[%s] _da_create_agent_db_handler_mgr_info alloc success !\n", __func__);
77 sync_agent_da_return_e da_free_agentdb_handler_mgr()
81 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
83 if (agent_db_handler_mgr != NULL) {
85 ret = _free_agent_dc_handler_table_mutex();
86 if (ret != SYNC_AGENT_DA_SUCCESS)
87 return SYNC_AGENT_DA_ERR_DB_HANDLER_MGR;
89 ret = _free_agent_dc_handler_table();
90 if (ret != SYNC_AGENT_DA_SUCCESS)
91 return SYNC_AGENT_DA_ERR_DB_HANDLER_MGR;
101 * ==================================
102 * external API (2. about agent db )
103 * ==================================
105 sync_agent_da_return_e da_clear_all_database_account()
109 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
110 int *account_Id_list = 0;
114 account_Id_list = da_get_account_id_list(&count);
115 if (account_Id_list == NULL) {
116 _DEBUG_ERROR("accountIdList empty");
117 return SYNC_AGENT_DA_ERR_DB_HANDLER_MGR;
119 _DEBUG_INFO("accountListCount : %d", count);
122 for (i = 0; i < count; i++) {
123 ret = da_delete_all_database_account(account_Id_list[i]);
124 if (ret != SYNC_AGENT_DA_SUCCESS)
129 if (account_Id_list != NULL)
130 free(account_Id_list);
137 sync_agent_da_return_e da_delete_all_database_account(int account_id)
141 sync_agent_da_return_e ret = 0;
143 SYNC_AGENT_DA_HANDLER *daci_handler = da_get_agent_handler(SYNC_AGENT_DA_GET_THREAD_ID);
144 if (daci_handler == NULL) {
145 _DEBUG_ERROR("[%s] no handler for key\n", __func__);
146 return SYNC_AGENT_DA_ERRORS;
150 /* if (da_is_exist_account_id(accountId) && DACI_Delete_EmailAccount(accountId) &&
151 DACI_Delete_ContactAccount(accountId) && DACI_Delete_CalendarAccount(accountId) &&
152 (da_delete_account_id(accountId) == SYNC_AGENT_DA_SUCCESS)) {*/
154 if (da_is_exist_account_id(account_id) && (da_delete_fw_account_id(account_id) == SYNC_AGENT_DA_SUCCESS)) {
155 /* all of the deleted account */
156 data_count = da_get_account_count(daci_handler);
158 ret = SYNC_AGENT_DA_ERR_DELETE_LAST_ACCOUNT;
160 ret = SYNC_AGENT_DA_SUCCESS;
163 ret = SYNC_AGENT_DA_ERRORS;
171 EXPORT_API sync_agent_da_return_e sync_agent_open_agent()
177 SYNC_AGENT_DA_HANDLER *daci_handler = da_get_agent_handler(SYNC_AGENT_DA_GET_THREAD_ID);
178 if (daci_handler == NULL) {
180 _DEBUG_INFO("daci_handler is 0");
181 _DEBUG_INFO("should register agent_handler to agent_handler_hash_table");
182 ret = da_open_agent(&daci_handler);
183 if (ret != SYNC_AGENT_DA_SUCCESS)
186 if (daci_handler != NULL) {
187 /* add agentDB handler to agentDBHandleMgr */
188 ret = da_add_agent_handler(SYNC_AGENT_DA_GET_THREAD_ID, daci_handler);
189 if (ret != SYNC_AGENT_DA_SUCCESS)
194 _DEBUG_INFO("daci_handler is not null");
195 _DEBUG_INFO("should not register mo_handler to mo_handler_hash_table");
198 _DEBUG_INFO("agent_db_agent_open_success");
202 return SYNC_AGENT_DA_SUCCESS;
205 EXPORT_API sync_agent_da_return_e sync_agent_close_agent()
211 SYNC_AGENT_DA_HANDLER *daci_handler = da_get_agent_handler(SYNC_AGENT_DA_GET_THREAD_ID);
212 if (daci_handler != NULL) {
214 /* remove agentDB handler to agentDBHandleMgr */
215 ret = da_remove_agent_handler(SYNC_AGENT_DA_GET_THREAD_ID);
216 if (ret != SYNC_AGENT_DA_SUCCESS)
219 _DEBUG_INFO("agent_db_agent_close_success");
224 return SYNC_AGENT_DA_SUCCESS;
227 sync_agent_da_return_e da_create_agent_default_table_wrapper()
231 SYNC_AGENT_DA_HANDLER *daci_handler = da_get_agent_handler(SYNC_AGENT_DA_GET_THREAD_ID);
235 return da_create_agent_default_table(daci_handler);
238 EXPORT_API sync_agent_da_return_e sync_agent_empty_agent_default_table(sync_agent_da_table_name_e table_name)
242 SYNC_AGENT_DA_HANDLER *daci_handler = da_get_agent_handler(SYNC_AGENT_DA_GET_THREAD_ID);
246 return da_empty_agent_default_table(daci_handler, table_name);
249 EXPORT_API sync_agent_da_return_e sync_agent_empty_all_agent_default_table()
253 SYNC_AGENT_DA_HANDLER *daci_handler = da_get_agent_handler(SYNC_AGENT_DA_GET_THREAD_ID);
257 return da_empty_all_agent_table(daci_handler);
260 EXPORT_API sync_agent_da_return_e sync_agent_begin_transaction()
264 SYNC_AGENT_DA_HANDLER *daci_handler = da_get_agent_handler(SYNC_AGENT_DA_GET_THREAD_ID);
265 if (daci_handler == NULL) {
266 _DEBUG_ERROR("[%s] no handler for key\n", __func__);
267 return SYNC_AGENT_DA_ERR_DB_HANDLER_MGR;
272 return da_begin_transaction(daci_handler);
275 EXPORT_API sync_agent_da_return_e sync_agent_end_transaction(sync_agent_da_transaction_e transaction)
279 SYNC_AGENT_DA_HANDLER *daci_handler = da_get_agent_handler(SYNC_AGENT_DA_GET_THREAD_ID);
280 if (daci_handler == NULL) {
281 _DEBUG_ERROR("[%s] no handler for key\n", __func__);
282 return SYNC_AGENT_DA_ERR_DB_HANDLER_MGR;
287 return da_end_transaction(daci_handler, transaction);
290 int da_add_fw_account_id(sync_agent_fw_account_s * account)
294 retvm_if(account == NULL, -1, "sync_agent_fw_account_s is NULL !!");
296 SYNC_AGENT_DA_HANDLER *daci_handler = da_get_agent_handler(SYNC_AGENT_DA_GET_THREAD_ID);
297 if (daci_handler == NULL) {
298 _DEBUG_ERROR("[%s] no handler for key\n", __func__);
304 return da_add_fw_account(daci_handler, account);
307 sync_agent_da_return_e da_update_fw_account_id(sync_agent_fw_account_s * account)
311 retvm_if(account == NULL, SYNC_AGENT_DA_ERRORS, "sync_agent_fw_account_s is NULL !!");
313 SYNC_AGENT_DA_HANDLER *daci_handler = da_get_agent_handler(SYNC_AGENT_DA_GET_THREAD_ID);
314 if (daci_handler == NULL) {
315 _DEBUG_ERROR("[%s] no handler for key\n", __func__);
321 return da_update_fw_account(daci_handler, account);
324 sync_agent_da_return_e da_delete_fw_account_id(int account_id)
328 SYNC_AGENT_DA_HANDLER *daci_handler = da_get_agent_handler(SYNC_AGENT_DA_GET_THREAD_ID);
329 if (daci_handler == NULL) {
330 _DEBUG_ERROR("[%s] no handler for key\n", __func__);
331 return SYNC_AGENT_DA_ERR_DB_HANDLER_MGR;
336 return da_delete_fw_account(daci_handler, account_id);
339 sync_agent_da_return_e da_get_fw_account_info(int account_id, sync_agent_fw_account_s ** account)
343 SYNC_AGENT_DA_HANDLER *daci_handler = da_get_agent_handler(SYNC_AGENT_DA_GET_THREAD_ID);
344 if (daci_handler == NULL) {
345 _DEBUG_ERROR("[%s] no handler for key\n", __func__);
346 return SYNC_AGENT_DA_ERR_DB_HANDLER_MGR;
351 return da_get_fw_account(daci_handler, account_id, account);
354 sync_agent_da_return_e da_get_all_fw_account_info(GList ** list)
358 SYNC_AGENT_DA_HANDLER *daci_handler = da_get_agent_handler(SYNC_AGENT_DA_GET_THREAD_ID);
359 if (daci_handler == NULL) {
360 _DEBUG_ERROR("[%s] no handler for key\n", __func__);
361 return SYNC_AGENT_DA_ERR_DB_HANDLER_MGR;
366 return da_get_all_fw_account(daci_handler, list);
369 sync_agent_da_return_e da_get_fw_account_info_by_access_name(char *access_name, GList ** list)
373 SYNC_AGENT_DA_HANDLER *daci_handler = da_get_agent_handler(SYNC_AGENT_DA_GET_THREAD_ID);
374 if (daci_handler == NULL) {
375 _DEBUG_ERROR("[%s] no handler for key\n", __func__);
376 return SYNC_AGENT_DA_ERR_DB_HANDLER_MGR;
381 return da_get_fw_account_by_access_name(daci_handler, access_name, list);
384 int *da_get_account_id_list(int *count)
388 SYNC_AGENT_DA_HANDLER *daci_handler = da_get_agent_handler(SYNC_AGENT_DA_GET_THREAD_ID);
389 if (daci_handler == NULL) {
390 _DEBUG_ERROR("[%s] no handler for key\n", __func__);
396 return da_get_account_account_id_list(daci_handler, count);
399 int da_is_exist_account_id(int account_id)
403 SYNC_AGENT_DA_HANDLER *daci_handler = da_get_agent_handler(SYNC_AGENT_DA_GET_THREAD_ID);
404 if (daci_handler == NULL) {
405 _DEBUG_ERROR("[%s] no handler for key\n", __func__);
406 return SYNC_AGENT_DA_ERR_DB_HANDLER_MGR;
411 return da_is_exist_account(daci_handler, account_id);
414 sync_agent_da_return_e da_add_folder_internal(sync_agent_da_folder_s * folder, int count)
418 retvm_if(folder == NULL, SYNC_AGENT_DA_ERRORS, "sync_agent_da_folder_s is NULL !!");
420 SYNC_AGENT_DA_HANDLER *daci_handler = da_get_agent_handler(SYNC_AGENT_DA_GET_THREAD_ID);
421 if (daci_handler == NULL) {
422 _DEBUG_ERROR("[%s] no handler for key\n", __func__);
423 return SYNC_AGENT_DA_ERR_DB_HANDLER_MGR;
428 return da_add_folder(daci_handler, folder, count);
431 sync_agent_da_return_e da_delete_folder_by_folder_id_wrapper(char *folder_id)
435 retvm_if(folder_id == NULL, SYNC_AGENT_DA_ERRORS, "folder id is NULL !!");
437 SYNC_AGENT_DA_HANDLER *daci_handler = da_get_agent_handler(SYNC_AGENT_DA_GET_THREAD_ID);
438 if (daci_handler == NULL) {
439 _DEBUG_ERROR("[%s] no handler for key\n", __func__);
440 return SYNC_AGENT_DA_ERR_DB_HANDLER_MGR;
445 return da_delete_folder_by_folder_id(daci_handler, folder_id);
448 char *da_get_folder_id_by_service_id_wrapper(int account_id, int item_type_id, char *service_id, int folder_type_id)
452 retvm_if(service_id == NULL, NULL, "service id is NULL !!");
454 SYNC_AGENT_DA_HANDLER *daci_handler = da_get_agent_handler(SYNC_AGENT_DA_GET_THREAD_ID);
455 if (daci_handler == NULL) {
456 _DEBUG_ERROR("[%s] no handler for key\n", __func__);
462 return da_get_folder_folder_id_by_service_id(daci_handler, account_id, item_type_id, service_id, folder_type_id);
465 sync_agent_da_id_list_s *da_get_folder_id_by_folder_type_id_internal(int account_id, int item_type_id, int folder_type_id)
469 SYNC_AGENT_DA_HANDLER *daci_handler = da_get_agent_handler(SYNC_AGENT_DA_GET_THREAD_ID);
470 if (daci_handler == NULL) {
471 _DEBUG_ERROR("[%s] no handler for key\n", __func__);
477 return da_get_folder_folder_id_by_folder_type_id(daci_handler, account_id, item_type_id, folder_type_id);
480 sync_agent_da_id_list_s *da_get_folder_id_list_by_item_type_id_internal(int account_id, int item_type_id)
484 SYNC_AGENT_DA_HANDLER *daci_handler = da_get_agent_handler(SYNC_AGENT_DA_GET_THREAD_ID);
485 if (daci_handler == NULL) {
486 _DEBUG_ERROR("[%s] no handler for key\n", __func__);
492 return da_get_folder_folder_id_list_by_item_type_id(daci_handler, account_id, item_type_id);
495 sync_agent_da_folder_s *da_get_item_mapping_service_id_by_folder_id_internal(int account_id, char *folder_id, int *count)
499 retvm_if(folder_id == NULL, NULL, "folder id id is NULL !!");
501 SYNC_AGENT_DA_HANDLER *daci_handler = da_get_agent_handler(SYNC_AGENT_DA_GET_THREAD_ID);
502 if (daci_handler == NULL) {
503 _DEBUG_ERROR("[%s] no handler for key\n", __func__);
509 return da_get_folder_mapping_service_id(daci_handler, account_id, folder_id, count);
512 sync_agent_da_return_e da_add_item_internal(sync_agent_da_item_s * item, int count)
516 retvm_if(item == NULL, SYNC_AGENT_DA_ERRORS, "sync_agent_da_item_s is NULL !!");
518 SYNC_AGENT_DA_HANDLER *daci_handler = da_get_agent_handler(SYNC_AGENT_DA_GET_THREAD_ID);
519 if (daci_handler == NULL) {
520 _DEBUG_ERROR("[%s] no handler for key\n", __func__);
521 return SYNC_AGENT_DA_ERR_DB_HANDLER_MGR;
526 return da_add_item(daci_handler, item, count);
529 sync_agent_da_return_e da_update_item_internal(char *fw_id, char *parent_id)
532 retvm_if(fw_id == NULL, SYNC_AGENT_DA_ERRORS, "fw_id is NULL !!");
533 retvm_if(parent_id == NULL, SYNC_AGENT_DA_ERRORS, "parent_id is NULL !!");
535 SYNC_AGENT_DA_HANDLER *daci_handler = da_get_agent_handler(SYNC_AGENT_DA_GET_THREAD_ID);
536 if (daci_handler == NULL) {
537 _DEBUG_ERROR("[%s] no handler for key\n", __func__);
538 return SYNC_AGENT_DA_ERR_DB_HANDLER_MGR;
542 return da_update_item(daci_handler, fw_id, parent_id);
546 sync_agent_da_return_e sync_agent_add_item_new(sync_agent_da_item_s * item, int count, char **item_id)
550 retvm_if(item == NULL, SYNC_AGENT_DA_ERRORS, "sync_agent_da_item_s is NULL !!");
552 SYNC_AGENT_DA_HANDLER *daci_handler = da_get_agent_handler(SYNC_AGENT_DA_GET_THREAD_ID);
553 if (daci_handler == NULL) {
554 _DEBUG_ERROR("[%s] no handler for key\n", __func__);
555 return SYNC_AGENT_DA_ERR_DB_HANDLER_MGR;
560 return da_add_item_new(daci_handler, item, count, item_id);
563 sync_agent_da_return_e da_delete_item_by_item_id_internal(char *item_id)
567 retvm_if(item_id == NULL, SYNC_AGENT_DA_ERRORS, "item id is NULL !!");
569 SYNC_AGENT_DA_HANDLER *daci_handler = da_get_agent_handler(SYNC_AGENT_DA_GET_THREAD_ID);
570 if (daci_handler == NULL) {
571 _DEBUG_ERROR("[%s] no handler for key\n", __func__);
572 return SYNC_AGENT_DA_ERR_DB_HANDLER_MGR;
577 return da_delete_item_by_Item_id(daci_handler, item_id);
580 sync_agent_da_return_e da_delete_item_by_item_type_id_internal(int account_id, int item_type_id)
584 SYNC_AGENT_DA_HANDLER *daci_handler = da_get_agent_handler(SYNC_AGENT_DA_GET_THREAD_ID);
585 if (daci_handler == NULL) {
586 _DEBUG_ERROR("[%s] no handler for key\n", __func__);
587 return SYNC_AGENT_DA_ERR_DB_HANDLER_MGR;
592 return da_delete_item_by_item_type_id(daci_handler, account_id, item_type_id);
595 sync_agent_da_return_e da_delete_all_child_item_internal(char *parent_service_id)
599 SYNC_AGENT_DA_HANDLER *daci_handler = da_get_agent_handler(SYNC_AGENT_DA_GET_THREAD_ID);
600 if (daci_handler == NULL) {
601 _DEBUG_ERROR("[%s] no handler for key\n", __func__);
602 return SYNC_AGENT_DA_ERR_DB_HANDLER_MGR;
606 return da_delete_all_child_item(daci_handler, parent_service_id);
609 sync_agent_da_return_e da_delete_child_item_internal(char *parent_service_id, char *child_service_id)
613 SYNC_AGENT_DA_HANDLER *daci_handler = da_get_agent_handler(SYNC_AGENT_DA_GET_THREAD_ID);
614 if (daci_handler == NULL) {
615 _DEBUG_ERROR("[%s] no handler for key\n", __func__);
616 return SYNC_AGENT_DA_ERR_DB_HANDLER_MGR;
620 return da_delete_child_item(daci_handler, parent_service_id, child_service_id);
624 sync_agent_da_return_e da_delete_item_and_changelog_by_item_type_id_internal(int account_id, int item_type_id)
628 SYNC_AGENT_DA_HANDLER *daci_handler = da_get_agent_handler(SYNC_AGENT_DA_GET_THREAD_ID);
629 if (daci_handler == NULL) {
630 _DEBUG_ERROR("[%s] no handler for key\n", __func__);
631 return SYNC_AGENT_DA_ERR_DB_HANDLER_MGR;
636 return da_delete_item_by_item_type_id_and_delete_changelog(daci_handler, account_id, item_type_id);
639 char *da_get_item_id_internal(int account_id, char *service_id, int item_type_id)
643 retvm_if(service_id == NULL, NULL, "service id is NULL !!");
645 SYNC_AGENT_DA_HANDLER *daci_handler = da_get_agent_handler(SYNC_AGENT_DA_GET_THREAD_ID);
646 if (daci_handler == NULL) {
647 _DEBUG_ERROR("[%s] no handler for key\n", __func__);
653 return da_get_item_item_id(daci_handler, account_id, service_id, item_type_id);
656 sync_agent_da_item_s *da_get_item_internal(char *item_id)
660 retvm_if(item_id == NULL, NULL, "item id is NULL !!");
662 SYNC_AGENT_DA_HANDLER *daci_handler = da_get_agent_handler(SYNC_AGENT_DA_GET_THREAD_ID);
663 if (daci_handler == NULL) {
664 _DEBUG_ERROR("[%s] no handler for key\n", __func__);
670 return da_get_item(daci_handler, item_id);
673 sync_agent_da_id_list_s *da_get_all_item_id_wrapper()
677 SYNC_AGENT_DA_HANDLER *daci_handler = da_get_agent_handler(SYNC_AGENT_DA_GET_THREAD_ID);
678 if (daci_handler == NULL) {
679 _DEBUG_ERROR("[%s] no handler for key\n", __func__);
685 return da_get_all_item_id(daci_handler);
688 sync_agent_da_id_list_s *da_get_item_id_list_internal(char *folder_id, sync_agent_da_column_name_e column_name)
692 retvm_if(folder_id == NULL, NULL, "folder id is NULL !!");
694 SYNC_AGENT_DA_HANDLER *daci_handler = da_get_agent_handler(SYNC_AGENT_DA_GET_THREAD_ID);
695 if (daci_handler == NULL) {
696 _DEBUG_ERROR("[%s] no handler for key\n", __func__);
702 return da_get_item_id_list(daci_handler, folder_id, column_name);
705 sync_agent_da_item_s *da_get_item_by_account_id_internal(int account_id, int item_type_id, int *count)
709 SYNC_AGENT_DA_HANDLER *daci_handler = da_get_agent_handler(SYNC_AGENT_DA_GET_THREAD_ID);
710 if (daci_handler == NULL) {
711 _DEBUG_ERROR("[%s] no handler for key\n", __func__);
717 return da_get_item_by_account_id(daci_handler, account_id, item_type_id, count);
720 sync_agent_da_item_info_s *da_get_item_info_by_item_type_id_internal(int account_id, int item_type_id, int *count)
724 SYNC_AGENT_DA_HANDLER *daci_handler = da_get_agent_handler(SYNC_AGENT_DA_GET_THREAD_ID);
725 if (daci_handler == NULL) {
726 _DEBUG_ERROR("[%s] no handler for key\n", __func__);
732 return da_get_item_info_by_item_type_id(daci_handler, account_id, item_type_id, count);
735 sync_agent_da_item_s *da_get_item_mapping_service_id_by_item_id_internal(int account_id, char *item_id, int *count)
739 retvm_if(item_id == NULL, NULL, "item id is NULL !!");
741 SYNC_AGENT_DA_HANDLER *daci_handler = da_get_agent_handler(SYNC_AGENT_DA_GET_THREAD_ID);
742 if (daci_handler == NULL) {
743 _DEBUG_ERROR("[%s] no handler for key\n", __func__);
749 return da_get_item_mapping_service_id(daci_handler, account_id, item_id, count);
752 sync_agent_da_id_list_s *da_get_item_id_list_by_data_store_id_internal(int data_store_id)
756 SYNC_AGENT_DA_HANDLER *daci_handler = da_get_agent_handler(SYNC_AGENT_DA_GET_THREAD_ID);
757 if (daci_handler == NULL) {
758 _DEBUG_ERROR("[%s] no handler for key\n", __func__);
764 return da_get_item_id_list_by_datastore_id(daci_handler, data_store_id);
767 sync_agent_da_id_list_s *da_get_item_id_list_by_data_store_id_with_account_id_internal(int account_id, int data_store_id)
771 SYNC_AGENT_DA_HANDLER *daci_handler = da_get_agent_handler(SYNC_AGENT_DA_GET_THREAD_ID);
772 if (daci_handler == NULL) {
773 _DEBUG_ERROR("[%s] no handler for key\n", __func__);
779 return da_get_item_id_list_by_datastore_id_with_account_id(daci_handler, account_id, data_store_id);
782 sync_agent_da_id_list_s *da_get_item_id_list_by_operation_id_internal(int account_id, int data_store_id, int operation_id)
786 SYNC_AGENT_DA_HANDLER *daci_handler = da_get_agent_handler(SYNC_AGENT_DA_GET_THREAD_ID);
787 if (daci_handler == NULL) {
788 _DEBUG_ERROR("[%s] no handler for key\n", __func__);
794 return da_get_item_id_list_by_operation_id(daci_handler, account_id, data_store_id, operation_id);
797 sync_agent_da_id_list_s *da_get_item_id_list_by_operation_id_and_folder_id_internal(int account_id, char *folder_id, int data_store_id, int operation_id)
801 retvm_if(folder_id == NULL, NULL, "folder id is NULL !!");
803 SYNC_AGENT_DA_HANDLER *daci_handler = da_get_agent_handler(SYNC_AGENT_DA_GET_THREAD_ID);
804 if (daci_handler == NULL) {
805 _DEBUG_ERROR("[%s] no handler for key\n", __func__);
811 return da_get_item_id_list_by_operation_id_and_folder_id(daci_handler, account_id, folder_id, data_store_id, operation_id);
814 int da_is_exist_item_wrapper(char *item_id)
818 retvm_if(item_id == NULL, 0, "item id is NULL !!");
820 SYNC_AGENT_DA_HANDLER *daci_handler = da_get_agent_handler(SYNC_AGENT_DA_GET_THREAD_ID);
821 if (daci_handler == NULL) {
822 _DEBUG_ERROR("[%s] no handler for key\n", __func__);
823 return SYNC_AGENT_DA_ERR_DB_HANDLER_MGR;
828 return da_is_exist_item(daci_handler, item_id);
831 //sync_agent_da_return_e sync_agent_add_config(sync_agent_da_config_s *config)
833 // SYNC_AGENT_DA_HANDLER *daci_handler = da_get_agent_handler(SYNC_AGENT_DA_GET_THREAD_ID);
834 // if (daci_handler == NULL) {
835 // _DEBUG_ERROR("[%s] no handler for key\n", __func__);
836 // return SYNC_AGENT_DA_ERR_DB_HANDLER_MGR;
839 // return add_config(daci_handler, config);
842 //sync_agent_da_return_e sync_agent_delete_config_by_key(int config_id, char *key)
844 // SYNC_AGENT_DA_HANDLER *daci_handler = da_get_agent_handler(SYNC_AGENT_DA_GET_THREAD_ID);
845 // if (daci_handler == NULL) {
846 // _DEBUG_ERROR("[%s] no handler for key\n", __func__);
847 // return SYNC_AGENT_DA_ERR_DB_HANDLER_MGR;
850 // return da_delete_config_by_key(daci_handler, config_id, key);
853 //sync_agent_da_config_s *sync_agent_get_config_by_config_id(int config_id, int *count)
855 // SYNC_AGENT_DA_HANDLER *daci_handler = da_get_agent_handler(SYNC_AGENT_DA_GET_THREAD_ID);
856 // if (daci_handler == NULL) {
857 // _DEBUG_ERROR("[%s] no handler for key\n", __func__);
861 // return da_get_config_by_config_id(daci_handler, config_id, count);
864 //sync_agent_da_return_e sync_agent_get_config_by_key(sync_agent_da_config_s *config)
866 // SYNC_AGENT_DA_HANDLER *daci_handler = da_get_agent_handler(SYNC_AGENT_DA_GET_THREAD_ID);
867 // if (daci_handler == NULL) {
868 // _DEBUG_ERROR("[%s] no handler for key\n", __func__);
869 // return SYNC_AGENT_DA_ERR_DB_HANDLER_MGR;
872 // return da_get_config_by_key(daci_handler, config);
875 //int sync_agent_is_exist_config(int config_id, char *key)
877 // SYNC_AGENT_DA_HANDLER *daci_handler = da_get_agent_handler(SYNC_AGENT_DA_GET_THREAD_ID);
878 // if (daci_handler == NULL) {
879 // _DEBUG_ERROR("[%s] no handler for key\n", __func__);
880 // return SYNC_AGENT_DA_ERR_DB_HANDLER_MGR;
883 // return da_is_exist_config(daci_handler, config_id, key);
886 //sync_agent_da_return_e sync_agent_update_config(sync_agent_da_config_s *config, int count)
888 // SYNC_AGENT_DA_HANDLER *daci_handler = da_get_agent_handler(SYNC_AGENT_DA_GET_THREAD_ID);
889 // if (daci_handler == NULL) {
890 // _DEBUG_ERROR("[%s] no handler for key\n", __func__);
891 // return SYNC_AGENT_DA_ERR_DB_HANDLER_MGR;
894 // return da_update_config(daci_handler, config, count);
897 sync_agent_da_return_e da_add_item_changelog_wrapper(int account_id, sync_agent_da_item_changelog_s * item_changelog, int count)
901 retvm_if(item_changelog == NULL, SYNC_AGENT_DA_ERRORS, "sync_agent_da_item_changelog_s is NULL !!");
903 SYNC_AGENT_DA_HANDLER *daci_handler = da_get_agent_handler(SYNC_AGENT_DA_GET_THREAD_ID);
904 if (daci_handler == NULL) {
905 _DEBUG_ERROR("[%s] no handler for key\n", __func__);
906 return SYNC_AGENT_DA_ERR_DB_HANDLER_MGR;
911 return da_add_item_changelog(daci_handler, account_id, item_changelog, count);
914 sync_agent_da_return_e da_delete_item_changelog_by_item_id_internal(int account_id, char *item_id)
918 retvm_if(item_id == NULL, SYNC_AGENT_DA_ERRORS, "item id is NULL !!");
920 SYNC_AGENT_DA_HANDLER *daci_handler = da_get_agent_handler(SYNC_AGENT_DA_GET_THREAD_ID);
921 if (daci_handler == NULL) {
922 _DEBUG_ERROR("[%s] no handler for key\n", __func__);
923 return SYNC_AGENT_DA_ERR_DB_HANDLER_MGR;
928 return da_delete_item_changelog_by_item_id(daci_handler, account_id, item_id);
931 sync_agent_da_return_e da_delete_item_changelog_by_item_id_list_internal(int account_id, char **item_id_list, int count)
935 retvm_if(item_id_list == NULL, SYNC_AGENT_DA_ERRORS, "item id list is NULL !!");
937 SYNC_AGENT_DA_HANDLER *daci_handler = da_get_agent_handler(SYNC_AGENT_DA_GET_THREAD_ID);
938 if (daci_handler == NULL) {
939 _DEBUG_ERROR("[%s] no handler for key\n", __func__);
940 return SYNC_AGENT_DA_ERR_DB_HANDLER_MGR;
945 return da_delete_item_changelog_by_item_id_list(daci_handler, account_id, item_id_list, count);
948 sync_agent_da_return_e da_delete_item_changelog_by_item_type_id_internal(int account_id, int item_type_id)
952 SYNC_AGENT_DA_HANDLER *daci_handler = da_get_agent_handler(SYNC_AGENT_DA_GET_THREAD_ID);
953 if (daci_handler == NULL) {
954 _DEBUG_ERROR("[%s] no handler for key\n", __func__);
955 return SYNC_AGENT_DA_ERR_DB_HANDLER_MGR;
960 return da_delete_item_changelog_by_item_type_id(daci_handler, account_id, item_type_id);
963 sync_agent_da_return_e da_set_item_changelog_operation_id_wrapper(int account_id, sync_agent_da_item_changelog_s * item_changelog)
967 retvm_if(item_changelog == NULL, SYNC_AGENT_DA_ERRORS, "sync_agent_da_item_changelog_s is NULL !!");
969 SYNC_AGENT_DA_HANDLER *daci_handler = da_get_agent_handler(SYNC_AGENT_DA_GET_THREAD_ID);
970 if (daci_handler == NULL) {
971 _DEBUG_ERROR("[%s] no handler for key\n", __func__);
972 return SYNC_AGENT_DA_ERR_DB_HANDLER_MGR;
977 return da_set_item_changelog_operation_id(daci_handler, account_id, item_changelog);
980 sync_agent_da_return_e da_set_item_changelog_sync_status_internal(int account_id, sync_agent_da_item_changelog_s * item_changelog)
984 retvm_if(item_changelog == NULL, SYNC_AGENT_DA_ERRORS, "sync_agent_da_item_changelog_s is NULL !!");
986 SYNC_AGENT_DA_HANDLER *daci_handler = da_get_agent_handler(SYNC_AGENT_DA_GET_THREAD_ID);
987 if (daci_handler == NULL) {
988 _DEBUG_ERROR("[%s] no handler for key\n", __func__);
989 return SYNC_AGENT_DA_ERR_DB_HANDLER_MGR;
994 return da_set_item_changelog_sync_status(daci_handler, account_id, item_changelog);
997 sync_agent_da_return_e da_set_item_changelog_wait_status_internal(int account_id, char **folder_id_list, int folder_id_count, int *item_type_id_list, int item_type_id_count)
1001 retvm_if(item_type_id_list == NULL, SYNC_AGENT_DA_ERRORS, "item type id list is NULL !!");
1003 SYNC_AGENT_DA_HANDLER *daci_handler = da_get_agent_handler(SYNC_AGENT_DA_GET_THREAD_ID);
1004 if (daci_handler == NULL) {
1005 _DEBUG_ERROR("[%s] no handler for key\n", __func__);
1006 return SYNC_AGENT_DA_ERR_DB_HANDLER_MGR;
1011 return da_set_item_changelog_wait_status(daci_handler, account_id, folder_id_list, folder_id_count, item_type_id_list, item_type_id_count);
1015 sync_agent_da_return_e sync_agent_get_item_changelog_by_item_id(int account_id, sync_agent_da_item_changelog_s * item_changelog)
1019 retvm_if(item_changelog == NULL, SYNC_AGENT_DA_ERRORS, "sync_agent_da_item_changelog_s is NULL !!");
1021 SYNC_AGENT_DA_HANDLER *daci_handler = da_get_agent_handler(SYNC_AGENT_DA_GET_THREAD_ID);
1022 if (daci_handler == NULL) {
1023 _DEBUG_ERROR("[%s] no handler for key\n", __func__);
1024 return SYNC_AGENT_DA_ERR_DB_HANDLER_MGR;
1029 return da_get_item_changelog_by_item_id(daci_handler, account_id, item_changelog);
1032 int da_is_exist_item_changelog_wrapper(int account_id, char *item_id)
1036 retvm_if(item_id == NULL, 0, "item id is NULL !!");
1038 SYNC_AGENT_DA_HANDLER *daci_handler = da_get_agent_handler(SYNC_AGENT_DA_GET_THREAD_ID);
1039 if (daci_handler == NULL) {
1040 _DEBUG_ERROR("[%s] no handler for key\n", __func__);
1041 return SYNC_AGENT_DA_ERR_DB_HANDLER_MGR;
1046 return da_is_exist_item_changelog(daci_handler, account_id, item_id);
1049 sync_agent_da_return_e da_add_last_anchor_internal(sync_agent_da_last_anchor_s * last_anchor)
1053 retvm_if(last_anchor == NULL, SYNC_AGENT_DA_ERRORS, "sync_agent_da_last_anchor_s is NULL !!");
1055 SYNC_AGENT_DA_HANDLER *daci_handler = da_get_agent_handler(SYNC_AGENT_DA_GET_THREAD_ID);
1056 if (daci_handler == NULL) {
1057 _DEBUG_ERROR("[%s] no handler for key\n", __func__);
1058 return SYNC_AGENT_DA_ERR_DB_HANDLER_MGR;
1063 return da_add_last_anchor(daci_handler, last_anchor);
1066 sync_agent_da_return_e DACI_Delete_Last_Anchor_By_Account_Id(int account_id)
1070 SYNC_AGENT_DA_HANDLER *daci_handler = da_get_agent_handler(SYNC_AGENT_DA_GET_THREAD_ID);
1071 if (daci_handler == NULL) {
1072 _DEBUG_ERROR("[%s] no handler for key\n", __func__);
1073 return SYNC_AGENT_DA_ERR_DB_HANDLER_MGR;
1078 return da_delete_last_anchor_by_account_id(daci_handler, account_id);
1081 sync_agent_da_return_e DACI_Delete_Last_Anchor_By_Item_Type_Id(int account_id, int item_type_id)
1085 SYNC_AGENT_DA_HANDLER *daci_handler = da_get_agent_handler(SYNC_AGENT_DA_GET_THREAD_ID);
1086 if (daci_handler == NULL) {
1087 _DEBUG_ERROR("[%s] no handler for key\n", __func__);
1088 return SYNC_AGENT_DA_ERR_DB_HANDLER_MGR;
1093 return da_delete_last_anchor_by_item_type_id(daci_handler, account_id, item_type_id);
1096 sync_agent_da_return_e da_set_last_anchor_internal(sync_agent_da_last_anchor_s * last_anchor)
1100 retvm_if(last_anchor == NULL, SYNC_AGENT_DA_ERRORS, "sync_agent_da_last_anchor_s is NULL !!");
1102 SYNC_AGENT_DA_HANDLER *daci_handler = da_get_agent_handler(SYNC_AGENT_DA_GET_THREAD_ID);
1103 if (daci_handler == NULL) {
1104 _DEBUG_ERROR("[%s] no handler for key\n", __func__);
1105 return SYNC_AGENT_DA_ERR_DB_HANDLER_MGR;
1110 return da_set_last_anchor(daci_handler, last_anchor);
1113 sync_agent_da_last_anchor_s *DACI_Get_Last_Anchor_By_Account_Id(int account_id, int *count)
1117 SYNC_AGENT_DA_HANDLER *daci_handler = da_get_agent_handler(SYNC_AGENT_DA_GET_THREAD_ID);
1118 if (daci_handler == NULL) {
1119 _DEBUG_ERROR("[%s] no handler for key\n", __func__);
1125 return da_get_last_anchor_by_account_id(daci_handler, account_id, count);
1128 sync_agent_da_last_anchor_s *da_get_last_anchor_by_item_type_id_internal(int account_id, int item_type_id, int *count)
1132 SYNC_AGENT_DA_HANDLER *daci_handler = da_get_agent_handler(SYNC_AGENT_DA_GET_THREAD_ID);
1133 if (daci_handler == NULL) {
1134 _DEBUG_ERROR("[%s] no handler for key\n", __func__);
1140 return da_get_last_anchor_by_item_type_id(daci_handler, account_id, item_type_id, count);
1143 int DACI_IsExist_Last_Anchor(int accountId, int item_type_id)
1147 SYNC_AGENT_DA_HANDLER *daci_handler = da_get_agent_handler(SYNC_AGENT_DA_GET_THREAD_ID);
1148 if (daci_handler == NULL) {
1149 _DEBUG_ERROR("[%s] no handler for key\n", __func__);
1150 return SYNC_AGENT_DA_ERR_DB_HANDLER_MGR;
1155 return da_is_exist_last_anchor(daci_handler, accountId, item_type_id);
1158 sync_agent_da_return_e da_add_mapping_internal(sync_agent_da_mapping_s * mapping)
1162 retvm_if(mapping == NULL, SYNC_AGENT_DA_ERRORS, "sync_agent_da_mapping_s is NULL !!");
1164 SYNC_AGENT_DA_HANDLER *daci_handler = da_get_agent_handler(SYNC_AGENT_DA_GET_THREAD_ID);
1165 if (daci_handler == NULL) {
1166 _DEBUG_ERROR("[%s] no handler for key\n", __func__);
1167 return SYNC_AGENT_DA_ERR_DB_HANDLER_MGR;
1172 return da_add_mapping(daci_handler, mapping);
1175 sync_agent_da_return_e da_delete_mapping_by_account_id_internal(int account_id)
1179 SYNC_AGENT_DA_HANDLER *daci_handler = da_get_agent_handler(SYNC_AGENT_DA_GET_THREAD_ID);
1180 if (daci_handler == NULL) {
1181 _DEBUG_ERROR("[%s] no handler for key\n", __func__);
1182 return SYNC_AGENT_DA_ERR_DB_HANDLER_MGR;
1187 return da_delete_mapping_by_account_id(daci_handler, account_id);
1190 sync_agent_da_return_e da_delete_mapping_by_luid_internal(int account_id, char *luid)
1194 retvm_if(luid == NULL, SYNC_AGENT_DA_ERRORS, "luid is NULL !!");
1196 SYNC_AGENT_DA_HANDLER *daci_handler = da_get_agent_handler(SYNC_AGENT_DA_GET_THREAD_ID);
1197 if (daci_handler == NULL) {
1198 _DEBUG_ERROR("[%s] no handler for key\n", __func__);
1199 return SYNC_AGENT_DA_ERR_DB_HANDLER_MGR;
1204 return da_delete_mapping_by_luid(daci_handler, account_id, luid);
1207 sync_agent_da_mapping_s *da_get_mapping_by_account_id_internal(int account_id, int *count)
1211 SYNC_AGENT_DA_HANDLER *daci_handler = da_get_agent_handler(SYNC_AGENT_DA_GET_THREAD_ID);
1212 if (daci_handler == NULL) {
1213 _DEBUG_ERROR("[%s] no handler for key\n", __func__);
1219 return da_get_mapping_by_account_id(daci_handler, account_id, count);
1222 char *da_get_mapping_guid_internal(int account_id, char *luid)
1226 retvm_if(luid == NULL, NULL, "luid is NULL !!");
1228 SYNC_AGENT_DA_HANDLER *daci_handler = da_get_agent_handler(SYNC_AGENT_DA_GET_THREAD_ID);
1229 if (daci_handler == NULL) {
1230 _DEBUG_ERROR("[%s] no handler for key\n", __func__);
1236 return da_get_mapping_guid(daci_handler, account_id, luid);
1239 int DACI_IsExist_Mapping_By_Luid(int account_id, char *luid)
1243 retvm_if(luid == NULL, 0, "luid is NULL !!");
1245 SYNC_AGENT_DA_HANDLER *daci_handler = da_get_agent_handler(SYNC_AGENT_DA_GET_THREAD_ID);
1246 if (daci_handler == NULL) {
1247 _DEBUG_ERROR("[%s] no handler for key\n", __func__);
1248 return SYNC_AGENT_DA_ERR_DB_HANDLER_MGR;
1253 return da_is_exist_mapping_by_luid(daci_handler, account_id, luid);
1256 sync_agent_da_return_e da_add_id_provider_wrapper(sync_agent_da_id_provider_s * id_provider)
1260 retvm_if(id_provider == NULL, SYNC_AGENT_DA_ERRORS, "sync_agent_da_id_provider_s is NULL !!");
1262 SYNC_AGENT_DA_HANDLER *daci_handler = da_get_agent_handler(SYNC_AGENT_DA_GET_THREAD_ID);
1263 if (daci_handler == NULL) {
1264 _DEBUG_ERROR("[%s] no handler for key\n", __func__);
1265 return SYNC_AGENT_DA_ERR_DB_HANDLER_MGR;
1270 return da_add_id_provider(daci_handler, id_provider);
1273 sync_agent_da_return_e da_get_id_provider_wrapper(unsigned int id_provider_code, sync_agent_da_id_provider_s ** id_provider)
1277 SYNC_AGENT_DA_HANDLER *daci_handler = da_get_agent_handler(SYNC_AGENT_DA_GET_THREAD_ID);
1278 if (daci_handler == NULL) {
1279 _DEBUG_ERROR("[%s] no handler for key\n", __func__);
1280 return SYNC_AGENT_DA_ERR_DB_HANDLER_MGR;
1285 return da_get_id_provider(daci_handler, id_provider_code, id_provider);
1288 sync_agent_da_return_e da_update_id_provider_wrapper(sync_agent_da_id_provider_s * id_provider)
1292 retvm_if(id_provider == NULL, SYNC_AGENT_DA_ERRORS, "sync_agent_da_id_provider_s is NULL !!");
1294 SYNC_AGENT_DA_HANDLER *daci_handler = da_get_agent_handler(SYNC_AGENT_DA_GET_THREAD_ID);
1295 if (daci_handler == NULL) {
1296 _DEBUG_ERROR("[%s] no handler for key\n", __func__);
1297 return SYNC_AGENT_DA_ERR_DB_HANDLER_MGR;
1302 return da_update_id_provider(daci_handler, id_provider);
1305 sync_agent_da_return_e da_add_id_page_wrapper(sync_agent_da_id_page_s * id_page, unsigned int page_byte_size)
1309 retvm_if(id_page == NULL, SYNC_AGENT_DA_ERRORS, "sync_agent_da_id_page_s is NULL !!");
1311 SYNC_AGENT_DA_HANDLER *daci_handler = da_get_agent_handler(SYNC_AGENT_DA_GET_THREAD_ID);
1312 if (daci_handler == NULL) {
1313 _DEBUG_ERROR("[%s] no handler for key\n", __func__);
1314 return SYNC_AGENT_DA_ERR_DB_HANDLER_MGR;
1319 return da_add_id_page(daci_handler, id_page, page_byte_size);
1322 sync_agent_da_return_e da_delete_id_page_wrapper(unsigned int id_provider_code, unsigned int page_index)
1326 SYNC_AGENT_DA_HANDLER *daci_handler = da_get_agent_handler(SYNC_AGENT_DA_GET_THREAD_ID);
1327 if (daci_handler == NULL) {
1328 _DEBUG_ERROR("[%s] no handler for key\n", __func__);
1329 return SYNC_AGENT_DA_ERR_DB_HANDLER_MGR;
1334 return da_delete_id_page(daci_handler, id_provider_code, page_index);
1337 sync_agent_da_return_e da_get_id_page_wrapper(unsigned int id_provider_code, unsigned int page_index, char **page_bit)
1341 SYNC_AGENT_DA_HANDLER *daci_handler = da_get_agent_handler(SYNC_AGENT_DA_GET_THREAD_ID);
1342 if (daci_handler == NULL) {
1343 _DEBUG_ERROR("[%s] no handler for key\n", __func__);
1344 return SYNC_AGENT_DA_ERR_DB_HANDLER_MGR;
1349 return da_get_id_page(daci_handler, id_provider_code, page_index, page_bit);
1352 sync_agent_da_return_e da_get_id_page_index_wrapper(unsigned int id_provider_code, int *count)
1356 SYNC_AGENT_DA_HANDLER *daci_handler = da_get_agent_handler(SYNC_AGENT_DA_GET_THREAD_ID);
1357 if (daci_handler == NULL) {
1358 _DEBUG_ERROR("[%s] no handler for key\n", __func__);
1359 return SYNC_AGENT_DA_ERR_DB_HANDLER_MGR;
1364 return da_get_id_page_index(daci_handler, id_provider_code, count);
1367 sync_agent_da_return_e da_update_id_page_wrapper(sync_agent_da_id_page_s * id_page, unsigned int page_byte_size)
1371 retvm_if(id_page == NULL, SYNC_AGENT_DA_ERRORS, "sync_agent_da_id_page_s is NULL !!");
1373 SYNC_AGENT_DA_HANDLER *daci_handler = da_get_agent_handler(SYNC_AGENT_DA_GET_THREAD_ID);
1374 if (daci_handler == NULL) {
1375 _DEBUG_ERROR("[%s] no handler for key\n", __func__);
1376 return SYNC_AGENT_DA_ERR_DB_HANDLER_MGR;
1381 return da_update_id_page(daci_handler, id_page, page_byte_size);
1385 * ==================================
1386 * Data connector module internal API
1387 * ==================================
1389 sync_agent_da_return_e da_add_agent_handler(unsigned int key, SYNC_AGENT_DA_HANDLER * handler)
1393 retvm_if(handler == NULL, SYNC_AGENT_DA_ERR_DB_HANDLER_MGR, "SYNC_AGENT_DA_HANDLER is NULL !!");
1395 if (agent_db_handler_mgr == NULL || agent_db_handler_mgr->daci_handlerTable_mutex == NULL) {
1396 return SYNC_AGENT_DA_ERR_DB_HANDLER_MGR;
1399 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
1401 unsigned int *key_copy = (unsigned int *)malloc(sizeof(unsigned int));
1402 if (key_copy == NULL)
1403 return SYNC_AGENT_DA_ERR_DB_HANDLER_MGR;
1407 pthread_mutex_lock(agent_db_handler_mgr->daci_handlerTable_mutex);
1408 if (agent_db_handler_mgr->daci_handlerTable == NULL) {
1409 ret = __alloc_agent_dc_handler_table();
1410 if (ret != SYNC_AGENT_DA_SUCCESS)
1411 goto addagentHandler;
1414 /* insert to handler */
1415 _DEBUG_INFO("[%s] Key = %d, Handler = %p !\n", __func__, key, handler);
1416 g_hash_table_insert(agent_db_handler_mgr->daci_handlerTable, key_copy, handler);
1420 __print_agentDBHashTableLog();
1422 pthread_mutex_unlock(agent_db_handler_mgr->daci_handlerTable_mutex);
1427 pthread_mutex_unlock(agent_db_handler_mgr->daci_handlerTable_mutex);
1428 if(key_copy != NULL) {
1435 sync_agent_da_return_e da_remove_agent_handler(unsigned int key)
1439 if (agent_db_handler_mgr == NULL || agent_db_handler_mgr->daci_handlerTable_mutex == NULL || agent_db_handler_mgr->daci_handlerTable == NULL) {
1440 return SYNC_AGENT_DA_ERR_DB_HANDLER_MGR;
1443 /* remove the handler to hash table */
1444 pthread_mutex_lock(agent_db_handler_mgr->daci_handlerTable_mutex);
1445 int is_success = g_hash_table_remove(agent_db_handler_mgr->daci_handlerTable, &key);
1446 pthread_mutex_unlock(agent_db_handler_mgr->daci_handlerTable_mutex);
1450 __print_agentDBHashTableLog();
1455 if (is_success == true)
1456 return SYNC_AGENT_DA_SUCCESS;
1458 return SYNC_AGENT_DA_ERR_DB_HANDLER_MGR;
1461 SYNC_AGENT_DA_HANDLER *da_get_agent_handler(unsigned int key)
1465 if (agent_db_handler_mgr == NULL || agent_db_handler_mgr->daci_handlerTable_mutex == NULL || agent_db_handler_mgr->daci_handlerTable == NULL) {
1466 _DEBUG_INFO("[%s] SYNC_AGENT_DA_ERR_DB_HANDLER_MGR !\n", __func__);
1470 /* get the handler to hash table */
1471 pthread_mutex_lock(agent_db_handler_mgr->daci_handlerTable_mutex);
1472 SYNC_AGENT_DA_HANDLER *pHandler = g_hash_table_lookup(agent_db_handler_mgr->daci_handlerTable, &key);
1473 pthread_mutex_unlock(agent_db_handler_mgr->daci_handlerTable_mutex);
1476 if (pHandler != NULL) {
1477 _DEBUG_INFO("[%s] ######### > Value Search Success(key = %d, handler = %p)\n", __func__, key, pHandler);
1479 _DEBUG_INFO("[%s] ######### > Value Search Fail(key = %d, handler = %p)\n", __func__, key, pHandler);
1488 /* static function implementation */
1489 static sync_agent_da_return_e __alloc_agent_dc_handler_table(void)
1493 if (agent_db_handler_mgr != NULL) {
1494 agent_db_handler_mgr->daci_handlerTable = g_hash_table_new_full(g_int_hash, g_int_equal, ___destory_agent_db_hashtable_key, ___destroy_agent_db_hashtable_value);
1495 if (agent_db_handler_mgr->daci_handlerTable == NULL) {
1496 _DEBUG_VERBOSE("[%s] Not Create agent dc handler hash table \n", __func__);
1497 return SYNC_AGENT_DA_ERR_DB_HANDLER_MGR;
1499 _DEBUG_VERBOSE("[%SYNC_AGENT_DA_ERR_DB_HANDLER_MGRent dc handler hash table \n", __func__);
1505 return SYNC_AGENT_DA_SUCCESS;
1508 static sync_agent_da_return_e __alloc_agent_dc_handler_table_mutex()
1512 if (agent_db_handler_mgr != NULL) {
1514 agent_db_handler_mgr->daci_handlerTable_mutex = (pthread_mutex_t *) malloc(sizeof(pthread_mutex_t));
1515 if (agent_db_handler_mgr->daci_handlerTable_mutex == NULL) {
1516 _DEBUG_VERBOSE("[%s] Not Create agent dc handler hash table mutex \n", __func__);
1517 return SYNC_AGENT_DA_ERR_DB_HANDLER_MGR;
1520 if (0 != pthread_mutex_init(agent_db_handler_mgr->daci_handlerTable_mutex, 0)) {
1521 _DEBUG_VERBOSE("[%s] Not init agent dc handler hash table mutex\n", __func__);
1522 return SYNC_AGENT_DA_ERR_DB_HANDLER_MGR;
1524 _DEBUG_VERBOSE("[%s] Init agent dc handler hash table mutex\n", __func__);
1530 return SYNC_AGENT_DA_SUCCESS;
1533 static sync_agent_da_return_e _free_agent_dc_handler_table(void)
1537 if (agent_db_handler_mgr != NULL && agent_db_handler_mgr->daci_handlerTable != NULL) {
1538 g_hash_table_destroy(agent_db_handler_mgr->daci_handlerTable);
1539 _DEBUG_TRACE("[%s] daci_handlerTable free success !\n", __func__);
1540 agent_db_handler_mgr->daci_handlerTable = 0;;
1545 return SYNC_AGENT_DA_SUCCESS;
1548 static sync_agent_da_return_e _free_agent_dc_handler_table_mutex(void)
1552 if (agent_db_handler_mgr != NULL && agent_db_handler_mgr->daci_handlerTable_mutex != NULL) {
1554 int ret = pthread_mutex_destroy(agent_db_handler_mgr->daci_handlerTable_mutex);
1556 _DEBUG_TRACE("[%s] daci_handlerTable_mutex free error !\n", __func__);
1557 return SYNC_AGENT_DA_ERR_DB_HANDLER_MGR;
1559 free(agent_db_handler_mgr->daci_handlerTable_mutex);
1560 agent_db_handler_mgr->daci_handlerTable_mutex = 0;
1561 _DEBUG_TRACE("[%s] daci_handlerTable_mutex free success !\n", __func__);
1567 return SYNC_AGENT_DA_SUCCESS;
1570 static sync_agent_da_return_e _create_agent_db_handler_mgr_info(void)
1574 sync_agent_da_return_e ret = SYNC_AGENT_DA_SUCCESS;
1576 if (agent_db_handler_mgr != NULL) {
1578 /* alloc agent db hander hash table */
1579 ret = __alloc_agent_dc_handler_table();
1580 if (ret != SYNC_AGENT_DA_SUCCESS)
1581 goto allocAgentDBHandlerMgrInfoErr;
1583 /* alloc agent db hander hash table mutex */
1584 ret = __alloc_agent_dc_handler_table_mutex();
1585 if (ret != SYNC_AGENT_DA_SUCCESS)
1586 goto allocAgentDBHandlerMgrInfoErr;
1591 return SYNC_AGENT_DA_SUCCESS;
1593 allocAgentDBHandlerMgrInfoErr:
1594 da_free_agentdb_handler_mgr();
1595 return SYNC_AGENT_DA_ERR_DB_HANDLER_MGR;
1598 static void ___destroy_agent_db_hashtable_value(void *handler)
1602 retm_if(handler == NULL, "SYNC_AGENT_DA_HANDLER is NULL !!");
1604 _DEBUG_VERBOSE("[%s] start \n", __func__);
1605 if (handler != NULL) {
1606 da_close_Agent((SYNC_AGENT_DA_HANDLER *) handler);
1608 _DEBUG_VERBOSE("[%s] end \n", __func__);
1613 static void ___destory_agent_db_hashtable_key(void *key)
1617 retm_if(key == NULL, "key is NULL !!");
1619 _DEBUG_VERBOSE("[%s] start \n", __func__);
1622 _DEBUG_VERBOSE("[%s] end \n", __func__);