/* * oma-ds-agent * Copyright (c) 2012 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the License); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** * @OMA_DS_Event_Handler.c * @version 0.1 * @brief This file is the source file of implementation of event callback function(from ui) */ #include #include #include #include #include "framework/event/oma_ds_event_handler.h" #include "framework/event/oma_ds_platform_event_handler.h" #include "framework/task/oma_ds_engine_controller_task.h" #include "common/common_define.h" #include "common/common_vconf.h" #include "common/common_util.h" #ifndef OMADS_AGENT_LOG #undef LOG_TAG #define LOG_TAG "OMA_DS_COMMON" #endif #define NOTI_KEY "OMADS" static void _request_manual_sync_task_finish_callback(sync_agent_ec_task_error_e task_error, unsigned int out_param_cnt, sync_agent_ec_param_param_s ** out_param_spec_array, void *usr_data); static void _request_manual_sync_task_finish_callback(sync_agent_ec_task_error_e task_error, unsigned int out_param_cnt, sync_agent_ec_param_param_s ** out_param_spec_array, void *usr_data) { _INNER_FUNC_ENTER; unsigned int request_msg_id_to_cancel = 0; get_manual_sync_request_id(&request_msg_id_to_cancel); _INNER_FUNC_EXIT; } int event_callback_add_profile_sync(sync_agent_event_data_s * request, sync_agent_event_data_s * response) { _EXTERN_FUNC_ENTER; char *profile_name = NULL; char *addr = NULL; char *id = NULL; char *password = NULL; int sync_mode = 0; int sync_type = 0; int interval = 0; int category_count = 0; int result = 0; int account_id = 0; GList *categorys = NULL; GList *iter = NULL; sync_agent_get_event_data_param_str(request, &profile_name); sync_agent_get_event_data_param_str(request, &addr); sync_agent_get_event_data_param_str(request, &id); sync_agent_get_event_data_param_str(request, &password); sync_agent_get_event_data_param_int(request, (int*)&sync_mode); sync_agent_get_event_data_param_int(request, (int*)&sync_type); sync_agent_get_event_data_param_int(request, (int*)&interval); sync_agent_get_event_data_param_int(request, &category_count); /* _DEBUG_INFO("request param : %s", profile_dir_name); _DEBUG_INFO("request param : %s", profile_name); _DEBUG_INFO("request param : %s", addr); _DEBUG_INFO("request param : %s", id); _DEBUG_INFO("request param : %s", password); _DEBUG_INFO("request param : %s", sync_mode); _DEBUG_INFO("request param : %s", sync_type); _DEBUG_INFO("request param : %s", interval); _DEBUG_INFO("request param : %d", category_count); */ int i = 0; for (; i < category_count; i++) { sync_service_s *category = (sync_service_s *) calloc(1, sizeof(sync_service_s)); if (category == NULL) { _DEBUG_ERROR("category is NULL !"); if (profile_name != NULL) { free(profile_name); profile_name = NULL; } if (addr != NULL) { free(addr); addr = NULL; } if (id != NULL) { free(id); id = NULL; } if (password != NULL) { free(password); password = NULL; } return 0; } sync_agent_get_event_data_param_int(request, (int*)&((category->service_type))); sync_agent_get_event_data_param_int(request, &(category->enabled)); sync_agent_get_event_data_param_int(request, (int*)&(category->src_uri)); sync_agent_get_event_data_param_str(request, &(category->tgt_uri)); sync_agent_get_event_data_param_str(request, &(category->id)); sync_agent_get_event_data_param_str(request, &(category->password)); categorys = g_list_append(categorys, category); /* _DEBUG_INFO("category[i]->content_type : %d", category->content_type); _DEBUG_INFO("category[i]->enabled : %d", category->enabled); _DEBUG_INFO("category[i]->srcURI : %s", category->src_uri); _DEBUG_INFO("category[i]->tgtURI : %s", category->tgt_uri); _DEBUG_INFO("category[i]->id : %s", category->id); _DEBUG_INFO("category[i]->password : %s", category->password); */ } /* send to engine controller */ void *in_param_value_array[8] = {&profile_name, &addr, &id, &password, &sync_mode, &sync_type, &interval, &categorys }; int in_param_index_array[8] = { 0, 1, 2, 3, 4, 5, 6, 7}; sync_agent_ec_value_type_e in_param_value_type_array[8] = {SYNC_AGENT_EC_VALUE_TYPE_STRUCT, SYNC_AGENT_EC_VALUE_TYPE_STRUCT, SYNC_AGENT_EC_VALUE_TYPE_STRUCT, SYNC_AGENT_EC_VALUE_TYPE_STRUCT, SYNC_AGENT_EC_VALUE_TYPE_INT, SYNC_AGENT_EC_VALUE_TYPE_INT, SYNC_AGENT_EC_VALUE_TYPE_INT, SYNC_AGENT_EC_VALUE_TYPE_STRUCT }; unsigned int request_msg_id = 0; unsigned int out_param_count; sync_agent_ec_task_error_e task_error = SYNC_AGENT_EC_TASK_ERROR_NOT_YET_RUN; sync_agent_ec_param_param_s **param_array = NULL; sync_agent_request_sync_task(EC_MSG_TYPE_SYNC_TASK_ADD_PROFILE, 0, 8, in_param_index_array, in_param_value_type_array, in_param_value_array, (int *)&request_msg_id, &task_error, &out_param_count, ¶m_array); sync_agent_get_param_value(&(param_array[0]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &result); sync_agent_get_param_value(&(param_array[1]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &account_id); sync_agent_append_event_data_param(response, SYNC_AGENT_EVENT_PARAM_TYPE_INTEGER, &result); sync_agent_append_event_data_param(response, SYNC_AGENT_EVENT_PARAM_TYPE_INTEGER, &account_id); for (iter = categorys; iter != NULL; iter = g_list_next(iter)) { sync_service_s *category = (sync_service_s *) iter->data; if (category != NULL) { free_sync_service(category); category = NULL; } } _EXTERN_FUNC_EXIT; return 0; } int event_callback_edit_profile_sync(sync_agent_event_data_s * request, sync_agent_event_data_s * response) { _EXTERN_FUNC_ENTER; char *profile_dir_name = NULL; char *profile_name = NULL; char *addr = NULL; char *id = NULL; char *password = NULL; int sync_mode = 0; int sync_type = 0; int interval = 0; int category_count = 0; int result = 0; GList *categorys = NULL; GList *iter = NULL; sync_agent_get_event_data_param_str(request, &profile_dir_name); if (profile_dir_name == NULL) { _DEBUG_ERROR("profile_dir_name is not defined"); result = 0; goto error; } _DEBUG_INFO("request param : %s", profile_dir_name); int account_id = get_account_id(profile_dir_name, false); sync_agent_get_event_data_param_str(request, &profile_name); sync_agent_get_event_data_param_str(request, &addr); sync_agent_get_event_data_param_str(request, &id); sync_agent_get_event_data_param_str(request, &password); sync_agent_get_event_data_param_int(request, (int*)&sync_mode); sync_agent_get_event_data_param_int(request, (int*)&sync_type); sync_agent_get_event_data_param_int(request, (int*)&interval); sync_agent_get_event_data_param_int(request, &category_count); _DEBUG_INFO("request param : %s", profile_name); _DEBUG_INFO("request param : %s", addr); _DEBUG_INFO("request param : %s", id); _DEBUG_INFO("request param : %s", password); _DEBUG_INFO("request param : %d", sync_mode); _DEBUG_INFO("request param : %d", sync_type); _DEBUG_INFO("request param : %d", interval); _DEBUG_INFO("request param : %d", category_count); int i = 0; for (; i < category_count; i++) { sync_service_s *category = (sync_service_s *) calloc(1, sizeof(sync_service_s)); if (category == NULL) { _DEBUG_ERROR("category is NULL !"); if (profile_dir_name != NULL) free(profile_dir_name); if (profile_name != NULL) free(profile_name); if (addr != NULL) free(addr); if (id != NULL) free(id); if (password != NULL) free(password); return 0; } sync_agent_get_event_data_param_int(request, (int*)&(category->service_type)); sync_agent_get_event_data_param_int(request, &(category->enabled)); sync_agent_get_event_data_param_int(request, (int*)&(category->src_uri)); sync_agent_get_event_data_param_str(request, &(category->tgt_uri)); sync_agent_get_event_data_param_str(request, &(category->id)); sync_agent_get_event_data_param_str(request, &(category->password)); categorys = g_list_append(categorys, category); _DEBUG_INFO("category[i]->content_type : %d", category->service_type); _DEBUG_INFO("category[i]->enabled : %d", category->enabled); _DEBUG_INFO("category[i]->srcURI : %d", category->src_uri); _DEBUG_INFO("category[i]->tgtURI : %s", category->tgt_uri); _DEBUG_INFO("category[i]->id : %s", category->id); _DEBUG_INFO("category[i]->password : %s", category->password); } /* send to engine controller */ void *in_param_value_array[9] = { &account_id, &profile_name, &addr, &id, &password, &sync_mode, &sync_type, &interval, &categorys }; int in_param_index_array[9] = { 0, 1, 2, 3, 4, 5, 6, 7, 8 }; sync_agent_ec_value_type_e in_param_value_type_array[9] = { SYNC_AGENT_EC_VALUE_TYPE_INT, SYNC_AGENT_EC_VALUE_TYPE_STRUCT, SYNC_AGENT_EC_VALUE_TYPE_STRUCT, SYNC_AGENT_EC_VALUE_TYPE_STRUCT, SYNC_AGENT_EC_VALUE_TYPE_STRUCT, SYNC_AGENT_EC_VALUE_TYPE_INT, SYNC_AGENT_EC_VALUE_TYPE_INT, SYNC_AGENT_EC_VALUE_TYPE_INT, SYNC_AGENT_EC_VALUE_TYPE_STRUCT }; unsigned int request_msg_id = 0; unsigned int out_param_count; sync_agent_ec_task_error_e task_error = SYNC_AGENT_EC_TASK_ERROR_NOT_YET_RUN; sync_agent_ec_param_param_s **param_array = NULL; sync_agent_request_sync_task(EC_MSG_TYPE_SYNC_TASK_EDIT_PROFILE, 0, 9, in_param_index_array, in_param_value_type_array, in_param_value_array, (int *)&request_msg_id, &task_error, &out_param_count, ¶m_array); sync_agent_get_param_value(&(param_array[0]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &result); error: sync_agent_append_event_data_param(response, SYNC_AGENT_EVENT_PARAM_TYPE_INTEGER, &result); for (iter = categorys; iter != NULL; iter = g_list_next(iter)) { sync_service_s *category = (sync_service_s *) iter->data; if (category != NULL) free_sync_service(category); } if (profile_dir_name != NULL) free(profile_dir_name); _EXTERN_FUNC_EXIT; return 0; } int event_callback_delete_profile_sync(sync_agent_event_data_s * request, sync_agent_event_data_s * response) { _EXTERN_FUNC_ENTER; int result = 0; int count; sync_agent_get_event_data_param_int(request, &count); GList *profiles = NULL; int *account_id = 0; int i; char *profile = NULL; for (i = 0; i < count; i++) { if (profile != NULL) { free(profile); profile = NULL; } sync_agent_get_event_data_param_str(request, &profile); if (profile == NULL) { _DEBUG_ERROR("profile is not defined"); result = 0; goto error; } _DEBUG_INFO("request param : %s", profile); account_id = (int *)calloc(1, sizeof(int)); if (account_id == NULL) { _DEBUG_ERROR("account_id is NULL"); result = 0; goto error; } *account_id = get_account_id(profile, false); profiles = g_list_append(profiles, account_id); } /* send to engine controller */ void *in_param_value_array[1] = { &profiles }; int in_param_index_array[1] = { 0 }; sync_agent_ec_value_type_e in_param_value_type_array[1] = { SYNC_AGENT_EC_VALUE_TYPE_STRUCT }; unsigned int request_msg_id = 0; unsigned int out_param_count; sync_agent_ec_task_error_e task_error = SYNC_AGENT_EC_TASK_ERROR_NOT_YET_RUN; sync_agent_ec_param_param_s **param_array = NULL; sync_agent_request_sync_task(EC_MSG_TYPE_SYNC_TASK_DELETE_PROFILE, 0, 1, in_param_index_array, in_param_value_type_array, in_param_value_array, (int *)&request_msg_id, &task_error, &out_param_count, ¶m_array); sync_agent_get_param_value(&(param_array[0]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &result); error: sync_agent_append_event_data_param(response, SYNC_AGENT_EVENT_PARAM_TYPE_INTEGER, &result); if (profile != NULL) free(profile); _EXTERN_FUNC_EXIT; return 0; } int event_callback_request_sync_sync(sync_agent_event_data_s * request, sync_agent_event_data_s * response) { _EXTERN_FUNC_ENTER; char *profile = NULL; int result = 0; sync_agent_get_event_data_param_str(request, &profile); if (profile == NULL) { _DEBUG_ERROR("profile is not defined"); result = 0; goto error; } _DEBUG_INFO("request param : %s", profile); int account_id = get_account_id(profile, false); char *sync_mode = strdup(DEFINE_SYNC_MODE_MANUAL); void *in_param_value_array[3] = { &account_id, &sync_mode, NULL }; int in_param_index_array[3] = { 0, 1, 2 }; sync_agent_ec_value_type_e in_param_value_type_array[3] = { SYNC_AGENT_EC_VALUE_TYPE_INT, SYNC_AGENT_EC_VALUE_TYPE_STRUCT, SYNC_AGENT_EC_VALUE_TYPE_STRUCT }; unsigned int request_msg_id = 0; sync_agent_request_async_task(EC_MSG_TYPE_SYNC_TASK_REQUEST, 0, 3, in_param_index_array, in_param_value_type_array, in_param_value_array, _request_manual_sync_task_finish_callback, NULL, (int *)&request_msg_id); insert_request_msg_info(SYNC_MODE_MANUAL, request_msg_id); error: sync_agent_append_event_data_param(response, SYNC_AGENT_EVENT_PARAM_TYPE_INTEGER, &result); if (profile != NULL) free(profile); _EXTERN_FUNC_EXIT; return 0; } int event_callback_cancel_sync_sync(sync_agent_event_data_s * request, sync_agent_event_data_s * response) { _EXTERN_FUNC_ENTER; char *profile = NULL; int result = 0; bool res; sync_agent_get_event_data_param_str(request, &profile); if (profile == NULL) { _DEBUG_ERROR("profile is not defined"); result = 0; goto error; } _DEBUG_INFO("request param : %s", profile); res = cancel_current_sync_task(); if (res == true) result = 1; else result = 0; error: sync_agent_append_event_data_param(response, SYNC_AGENT_EVENT_PARAM_TYPE_INTEGER, &result); if (profile != NULL) free(profile); _EXTERN_FUNC_EXIT; return 0; } int event_callback_get_profile_data_sync(sync_agent_event_data_s * request, sync_agent_event_data_s * response) { _EXTERN_FUNC_ENTER; int result = 0; int profile_id = 0; //char *profile = NULL; char *profile_dir_name = NULL; char *profile_name = NULL; char *addr = NULL; char *id = NULL; char *password = NULL; int sync_mode = 0; int sync_type = 0; int interval = 0; int last_session_status = 0; int last_session_time = 0; sync_agent_get_event_data_param_int(request, &profile_id); if (profile_id < 1) { _DEBUG_ERROR("profile_id is invalid!!"); result = 0; goto error; } _DEBUG_INFO("request param : %d", profile_id); //int account_id = get_account_id(profile, false); int in_param_index_array[1] = { 0 }; void *in_param_value_array[1] = { &profile_id }; sync_agent_ec_value_type_e in_param_value_type_array[1] = { SYNC_AGENT_EC_VALUE_TYPE_INT }; unsigned int out_param_count; sync_agent_ec_task_error_e task_error = SYNC_AGENT_EC_TASK_ERROR_NOT_YET_RUN; sync_agent_ec_param_param_s **param_array = NULL; unsigned int request_msg_id = 0; sync_agent_request_sync_task(EC_MSG_TYPE_SYNC_TASK_GET_PROFILE_DATA, 0, 1, in_param_index_array, in_param_value_type_array, in_param_value_array, (int *)&request_msg_id, &task_error, &out_param_count, ¶m_array); sync_agent_get_param_value(&(param_array[0]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &result); sync_agent_get_param_value(&(param_array[1]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &profile_dir_name); sync_agent_get_param_value(&(param_array[2]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &profile_name); sync_agent_get_param_value(&(param_array[3]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &addr); sync_agent_get_param_value(&(param_array[4]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &id); sync_agent_get_param_value(&(param_array[5]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &password); sync_agent_get_param_value(&(param_array[6]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &sync_mode); sync_agent_get_param_value(&(param_array[7]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &sync_type); sync_agent_get_param_value(&(param_array[8]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &interval); sync_agent_get_param_value(&(param_array[9]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &last_session_status); sync_agent_get_param_value(&(param_array[10]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &last_session_time); error: sync_agent_append_event_data_param(response, SYNC_AGENT_EVENT_PARAM_TYPE_INTEGER, &result); sync_agent_append_event_data_param(response, SYNC_AGENT_EVENT_PARAM_TYPE_STRING, (void *)profile_dir_name); sync_agent_append_event_data_param(response, SYNC_AGENT_EVENT_PARAM_TYPE_STRING, (void *)profile_name); sync_agent_append_event_data_param(response, SYNC_AGENT_EVENT_PARAM_TYPE_STRING, (void *)addr); sync_agent_append_event_data_param(response, SYNC_AGENT_EVENT_PARAM_TYPE_STRING, (void *)id); sync_agent_append_event_data_param(response, SYNC_AGENT_EVENT_PARAM_TYPE_STRING, (void *)password); sync_agent_append_event_data_param(response, SYNC_AGENT_EVENT_PARAM_TYPE_INTEGER, &sync_mode); sync_agent_append_event_data_param(response, SYNC_AGENT_EVENT_PARAM_TYPE_INTEGER, &sync_type); sync_agent_append_event_data_param(response, SYNC_AGENT_EVENT_PARAM_TYPE_INTEGER, &interval); sync_agent_append_event_data_param(response, SYNC_AGENT_EVENT_PARAM_TYPE_INTEGER, &last_session_status); sync_agent_append_event_data_param(response, SYNC_AGENT_EVENT_PARAM_TYPE_INTEGER, &last_session_time); /* if (profile != NULL) { free(profile); profile = NULL; } */ _EXTERN_FUNC_EXIT; return 0; } int event_callback_get_profile_sync_category_sync(sync_agent_event_data_s * request, sync_agent_event_data_s * response) { _EXTERN_FUNC_ENTER; char *profile = NULL; int content_type = 0; int enabled = 0; char *srcURI = NULL; char *tgtURI = NULL; char *id = NULL; char *password = NULL; int result = 0; sync_agent_get_event_data_param_str(request, &profile); if (profile == NULL) { _DEBUG_ERROR("profile is not defined"); result = 0; goto error; } sync_agent_get_event_data_param_int(request, &content_type); _DEBUG_INFO("request param : %s", profile); _DEBUG_INFO("request param : %d", content_type); int account_id = get_account_id(profile, false); _DEBUG_INFO(" account_id: %d", account_id); int in_param_index_array[2] = { 0, 1 }; void *in_param_value_array[2] = { &account_id, &content_type }; sync_agent_ec_value_type_e in_param_value_type_array[2] = { SYNC_AGENT_EC_VALUE_TYPE_INT, SYNC_AGENT_EC_VALUE_TYPE_INT }; unsigned int out_param_count; sync_agent_ec_task_error_e task_error = SYNC_AGENT_EC_TASK_ERROR_NOT_YET_RUN; sync_agent_ec_param_param_s **param_array = NULL; unsigned int request_msg_id = 0; sync_agent_request_sync_task(EC_MSG_TYPE_SYNC_TASK_GET_PROFILE_SYNC_CATEGORY, 0, 2, in_param_index_array, in_param_value_type_array, in_param_value_array, (int *)&request_msg_id, &task_error, &out_param_count, ¶m_array); sync_agent_get_param_value(&(param_array[0]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &result); sync_agent_get_param_value(&(param_array[1]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &enabled); sync_agent_get_param_value(&(param_array[2]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &srcURI); sync_agent_get_param_value(&(param_array[3]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &tgtURI); sync_agent_get_param_value(&(param_array[4]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &id); sync_agent_get_param_value(&(param_array[5]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &password); /* _DEBUG_INFO("result = %d", result); _DEBUG_INFO("enabled = %d", enabled); _DEBUG_INFO("srcURI = %s", srcURI); _DEBUG_INFO("tgtURI = %s", tgtURI); _DEBUG_INFO("id = %s", id); _DEBUG_INFO("password = %s", password); */ sync_agent_append_event_data_param(response, SYNC_AGENT_EVENT_PARAM_TYPE_INTEGER, &result); sync_agent_append_event_data_param(response, SYNC_AGENT_EVENT_PARAM_TYPE_INTEGER, &enabled); sync_agent_append_event_data_param(response, SYNC_AGENT_EVENT_PARAM_TYPE_INTEGER, &srcURI); sync_agent_append_event_data_param(response, SYNC_AGENT_EVENT_PARAM_TYPE_STRING, (void *)tgtURI); sync_agent_append_event_data_param(response, SYNC_AGENT_EVENT_PARAM_TYPE_STRING, (void *)id); sync_agent_append_event_data_param(response, SYNC_AGENT_EVENT_PARAM_TYPE_STRING, (void *)password); error: if (profile != NULL) free(profile); _EXTERN_FUNC_EXIT; return 0; } int event_callback_get_profile_last_statistics_sync(sync_agent_event_data_s * request, sync_agent_event_data_s * response) { _EXTERN_FUNC_ENTER; char *profile = NULL; int content_type = 0; char *dbSynced = "NO"; int last_session_time = -1; int server2Client_Total = 0; int server2Client_NrOfAdd = 0; int server2Client_NrOfDelete = 0; int server2Client_NrOfReplace = 0; int client2Server_Total = 0; int client2Server_NrOfAdd = 0; int client2Server_NrOrDelete = 0; int client2Server_NrOfReplace = 0; int result = 0; sync_agent_get_event_data_param_str(request, &profile); if (profile == NULL) { _DEBUG_ERROR("profile is not defined"); result = 0; goto error; } sync_agent_get_event_data_param_int(request, &content_type); _DEBUG_INFO("request param : %s", profile); _DEBUG_INFO("request param : %d", content_type); int account_id = get_account_id(profile, false); int in_param_index_array[2] = { 0, 1 }; void *in_param_value_array[2] = { &account_id, &content_type }; sync_agent_ec_value_type_e in_param_value_type_array[2] = { SYNC_AGENT_EC_VALUE_TYPE_INT, SYNC_AGENT_EC_VALUE_TYPE_INT }; unsigned int out_param_count; sync_agent_ec_task_error_e task_error = SYNC_AGENT_EC_TASK_ERROR_NOT_YET_RUN; sync_agent_ec_param_param_s **param_array = NULL; unsigned int request_msg_id = 0; sync_agent_request_sync_task(EC_MSG_TYPE_SYNC_TASK_GET_PROFILE_STATISTICS, 0, 2, in_param_index_array, in_param_value_type_array, in_param_value_array, (int *)&request_msg_id, &task_error, &out_param_count, ¶m_array); sync_agent_get_param_value(&(param_array[0]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &result); sync_agent_get_param_value(&(param_array[1]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &dbSynced); sync_agent_get_param_value(&(param_array[2]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &last_session_time); sync_agent_get_param_value(&(param_array[3]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &server2Client_Total); sync_agent_get_param_value(&(param_array[4]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &server2Client_NrOfAdd); sync_agent_get_param_value(&(param_array[5]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &server2Client_NrOfDelete); sync_agent_get_param_value(&(param_array[6]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &server2Client_NrOfReplace); sync_agent_get_param_value(&(param_array[7]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &client2Server_Total); sync_agent_get_param_value(&(param_array[8]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &client2Server_NrOfAdd); sync_agent_get_param_value(&(param_array[9]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &client2Server_NrOrDelete); sync_agent_get_param_value(&(param_array[10]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &client2Server_NrOfReplace); /* _DEBUG_INFO("result = %d", result); _DEBUG_INFO("dbSynced = %s\n", dbSynced); _DEBUG_INFO("last_session_time = %d\n", last_session_time); _DEBUG_INFO("server2Client_Total = %d\n", server2Client_Total); _DEBUG_INFO("server2Client_NrOfAdd = %d\n", server2Client_NrOfAdd); _DEBUG_INFO("server2Client_NrOfDelete = %d\n", server2Client_NrOfDelete); _DEBUG_INFO("server2Client_NrOfReplace = %d\n", server2Client_NrOfReplace); _DEBUG_INFO("client2Server_Total = %d\n", client2Server_Total); _DEBUG_INFO("client2Server_NrOfAdd = %d\n", client2Server_NrOfAdd); _DEBUG_INFO("client2Server_NrOrDelete = %d\n", client2Server_NrOrDelete); _DEBUG_INFO("client2Server_NrOfReplace = %d\n", client2Server_NrOfReplace); */ error: sync_agent_append_event_data_param(response, SYNC_AGENT_EVENT_PARAM_TYPE_INTEGER, &result); sync_agent_append_event_data_param(response, SYNC_AGENT_EVENT_PARAM_TYPE_STRING, (void *)dbSynced); sync_agent_append_event_data_param(response, SYNC_AGENT_EVENT_PARAM_TYPE_INTEGER, &last_session_time); sync_agent_append_event_data_param(response, SYNC_AGENT_EVENT_PARAM_TYPE_INTEGER, &server2Client_Total); sync_agent_append_event_data_param(response, SYNC_AGENT_EVENT_PARAM_TYPE_INTEGER, &server2Client_NrOfAdd); sync_agent_append_event_data_param(response, SYNC_AGENT_EVENT_PARAM_TYPE_INTEGER, &server2Client_NrOfDelete); sync_agent_append_event_data_param(response, SYNC_AGENT_EVENT_PARAM_TYPE_INTEGER, &server2Client_NrOfReplace); sync_agent_append_event_data_param(response, SYNC_AGENT_EVENT_PARAM_TYPE_INTEGER, &client2Server_Total); sync_agent_append_event_data_param(response, SYNC_AGENT_EVENT_PARAM_TYPE_INTEGER, &client2Server_NrOfAdd); sync_agent_append_event_data_param(response, SYNC_AGENT_EVENT_PARAM_TYPE_INTEGER, &client2Server_NrOrDelete); sync_agent_append_event_data_param(response, SYNC_AGENT_EVENT_PARAM_TYPE_INTEGER, &client2Server_NrOfReplace); if (profile != NULL) free(profile); _EXTERN_FUNC_EXIT; return 0; } int event_callback_add_profile_cp_sync(sync_agent_event_data_s * request, sync_agent_event_data_s * response) { _EXTERN_FUNC_ENTER; char *profile_name = NULL; char *addr = NULL; char *id = NULL; char *password = NULL; int category_count = 0; int result = 0; int account_id = 0; sync_agent_get_event_data_param_str(request, &profile_name); sync_agent_get_event_data_param_str(request, &addr); sync_agent_get_event_data_param_str(request, &id); sync_agent_get_event_data_param_str(request, &password); sync_agent_get_event_data_param_int(request, &category_count); /* _DEBUG_INFO("request param : %s", profile_name); _DEBUG_INFO("request param : %s", addr); _DEBUG_INFO("request param : %s", id); _DEBUG_INFO("request param : %s", password); _DEBUG_INFO("request param : %d", category_count); */ GList *categorys = NULL; int i = 0; for (; i < category_count; i++) { resource_cp_s *category = (resource_cp_s *) calloc(1, sizeof(resource_cp_s)); if (category == NULL) { _DEBUG_ERROR("category is NULL !"); if (profile_name != NULL) free(profile_name); profile_name = NULL; if (addr != NULL) free(addr); addr = NULL; if (id != NULL) free(id); id = NULL; if (password != NULL) free(password); password = NULL; return 0; } sync_agent_get_event_data_param_str(request, &(category->name)); sync_agent_get_event_data_param_str(request, &(category->accept)); sync_agent_get_event_data_param_str(request, &(category->id)); sync_agent_get_event_data_param_str(request, &(category->password)); sync_agent_get_event_data_param_str(request, &(category->auth_type)); sync_agent_get_event_data_param_str(request, &(category->auth_data)); categorys = g_list_append(categorys, category); /* _DEBUG_INFO("category[%d]->name : %s", i, category->name); _DEBUG_INFO("category[%d]->accept : %s", i, category->accept); _DEBUG_INFO("category[%d]->id : %s", i, category->id); _DEBUG_INFO("category[%d]->password : %s", i, category->password); _DEBUG_INFO("category[%d]->authType : %s", i, category->auth_type); _DEBUG_INFO("category[%d]->authData : %s\n", i, category->auth_data); */ } /* send to engine controller */ void *in_param_value_array[5] = { &profile_name, &addr, &id, &password, &categorys }; int in_param_index_array[5] = { 0, 1, 2, 3, 4 }; sync_agent_ec_value_type_e in_param_value_type_array[5] = { SYNC_AGENT_EC_VALUE_TYPE_STRUCT, SYNC_AGENT_EC_VALUE_TYPE_STRUCT, SYNC_AGENT_EC_VALUE_TYPE_STRUCT, SYNC_AGENT_EC_VALUE_TYPE_STRUCT, SYNC_AGENT_EC_VALUE_TYPE_STRUCT }; unsigned int request_msg_id = 0; unsigned int out_param_count; sync_agent_ec_task_error_e task_error = SYNC_AGENT_EC_TASK_ERROR_NOT_YET_RUN; sync_agent_ec_param_param_s **param_array = NULL; sync_agent_request_sync_task(EC_MSG_TYPE_SYNC_TASK_ADD_PROFILE_CP, 0, 5, in_param_index_array, in_param_value_type_array, in_param_value_array, (int *)&request_msg_id, &task_error, &out_param_count, ¶m_array); sync_agent_get_param_value(&(param_array[0]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &result); sync_agent_get_param_value(&(param_array[1]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &account_id); sync_agent_append_event_data_param(response, SYNC_AGENT_EVENT_PARAM_TYPE_INTEGER, &result); sync_agent_append_event_data_param(response, SYNC_AGENT_EVENT_PARAM_TYPE_INTEGER, &account_id); _EXTERN_FUNC_EXIT; return 0; } int event_callback_request_calllog_sync_async(sync_agent_event_data_s * request, sync_agent_event_data_s * response) { _EXTERN_FUNC_ENTER; char *data = NULL; int result = 0; sync_agent_get_event_data_param_str(request, &data); if (data == NULL) { _DEBUG_ERROR("data is NULL"); result = 0; } else { _DEBUG_INFO("data = %s", data); result = send_ip_push_sync_msg(data); free(data); data = NULL; } sync_agent_append_event_data_param(response, SYNC_AGENT_EVENT_PARAM_TYPE_INTEGER, &result); _EXTERN_FUNC_EXIT; return 0; } int event_callback_request_reset_all_data_sync(sync_agent_event_data_s * request, sync_agent_event_data_s * response) { _EXTERN_FUNC_ENTER; int result; /* 1. cancel current sync session */ cancel_current_sync_task(); /* 2. reset all data */ unsigned int request_msg_id = 0; sync_agent_ec_task_error_e task_error = SYNC_AGENT_EC_TASK_ERROR_NOT_YET_RUN; unsigned int out_param_count; sync_agent_ec_param_param_s **param_array = NULL; sync_agent_request_sync_task(EC_MSG_TYPE_SYNC_TASK_RESET_ALL_DATA, 0, 0, NULL, NULL, NULL, (int *)&request_msg_id, &task_error, &out_param_count, ¶m_array); sync_agent_get_param_value(&(param_array[0]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &result); _DEBUG_INFO("result = %d", result); sync_agent_append_event_data_param(response, SYNC_AGENT_EVENT_PARAM_TYPE_INTEGER, &result); _EXTERN_FUNC_EXIT; return 0; } int event_callback_request_get_all_profiles_data(sync_agent_event_data_s * request, sync_agent_event_data_s * response) { _EXTERN_FUNC_ENTER; int result = 0; GList *profiles_data = NULL; GList *profile_iter = NULL; GList *category_iter = NULL; int profile_count = 0; int category_count = 0; sync_agent_ds_profile_info *profile_info = NULL; sync_agent_ds_service_info *category_info = NULL; unsigned int out_param_count; sync_agent_ec_task_error_e task_error = SYNC_AGENT_EC_TASK_ERROR_NOT_YET_RUN; sync_agent_ec_param_param_s **param_array = NULL; unsigned int request_msg_id = 0; sync_agent_request_sync_task(EC_MSG_TYPE_SYNC_TASK_GET_ALL_PROFILES_DATA, 0, 0, NULL, NULL, NULL, (int *)&request_msg_id, &task_error, &out_param_count, ¶m_array); sync_agent_get_param_value(&(param_array[0]->param_value), SYNC_AGENT_EC_VALUE_TYPE_INT, &result); sync_agent_get_param_value(&(param_array[1]->param_value), SYNC_AGENT_EC_VALUE_TYPE_STRUCT, &profiles_data); sync_agent_append_event_data_param(response, SYNC_AGENT_EVENT_PARAM_TYPE_INTEGER, &result); _DEBUG_INFO("result = %d", result); if (profiles_data != NULL) { profile_count = g_list_length(profiles_data); sync_agent_append_event_data_param(response, SYNC_AGENT_EVENT_PARAM_TYPE_INTEGER, &profile_count); _DEBUG_INFO("profile_count = %d", profile_count); for (profile_iter = profiles_data; profile_iter != NULL; profile_iter = g_list_next(profile_iter)) { profile_info = (sync_agent_ds_profile_info *) profile_iter->data; sync_agent_ds_server_info *server_info = &profile_info->server_info; sync_agent_ds_sync_info *sync_info = &profile_info->sync_info; sync_agent_append_event_data_param(response, SYNC_AGENT_EVENT_PARAM_TYPE_INTEGER, &profile_info->profile_id); sync_agent_append_event_data_param(response, SYNC_AGENT_EVENT_PARAM_TYPE_STRING, (void *)profile_info->profile_dir_name); sync_agent_append_event_data_param(response, SYNC_AGENT_EVENT_PARAM_TYPE_STRING, (void *)profile_info->profile_name); sync_agent_append_event_data_param(response, SYNC_AGENT_EVENT_PARAM_TYPE_STRING, (void *)server_info->addr); sync_agent_append_event_data_param(response, SYNC_AGENT_EVENT_PARAM_TYPE_STRING, (void *)server_info->id); sync_agent_append_event_data_param(response, SYNC_AGENT_EVENT_PARAM_TYPE_STRING, (void *)server_info->password); sync_agent_append_event_data_param(response, SYNC_AGENT_EVENT_PARAM_TYPE_INTEGER, &sync_info->sync_mode); sync_agent_append_event_data_param(response, SYNC_AGENT_EVENT_PARAM_TYPE_INTEGER, &sync_info->sync_type); sync_agent_append_event_data_param(response, SYNC_AGENT_EVENT_PARAM_TYPE_INTEGER, &sync_info->interval); sync_agent_append_event_data_param(response, SYNC_AGENT_EVENT_PARAM_TYPE_INTEGER, &profile_info->last_sync_status); sync_agent_append_event_data_param(response, SYNC_AGENT_EVENT_PARAM_TYPE_INTEGER, &profile_info->last_sync_time); _DEBUG_INFO("profile_info->profile_dir_name = %s", profile_info->profile_dir_name); _DEBUG_INFO("profile_info->profile_name = %s", profile_info->profile_name); _DEBUG_INFO("server_info->addr = %s", server_info->addr); _DEBUG_INFO("server_info->id = %s", server_info->id); _DEBUG_INFO("server_info->password = %s", server_info->password); _DEBUG_INFO("sync_info->sync_mode = %d", sync_info->sync_mode); _DEBUG_INFO("sync_info->sync_type = %d", sync_info->sync_type); _DEBUG_INFO("sync_info->interval = %d", sync_info->interval); _DEBUG_INFO("profile_info->last_sync_status = %d", profile_info->last_sync_status); _DEBUG_INFO("profile_info->last_sync_time = %d", profile_info->last_sync_time); category_count = g_list_length(profile_info->service_list); sync_agent_append_event_data_param(response, SYNC_AGENT_EVENT_PARAM_TYPE_INTEGER, &category_count); _DEBUG_INFO("category_count = %d", category_count); for (category_iter = profile_info->service_list; category_iter != NULL; category_iter = g_list_next(category_iter)) { category_info = (sync_agent_ds_service_info *) category_iter->data; sync_agent_append_event_data_param(response, SYNC_AGENT_EVENT_PARAM_TYPE_INTEGER, &category_info->service_type); sync_agent_append_event_data_param(response, SYNC_AGENT_EVENT_PARAM_TYPE_INTEGER, &category_info->enabled); sync_agent_append_event_data_param(response, SYNC_AGENT_EVENT_PARAM_TYPE_INTEGER, &category_info->src_uri); sync_agent_append_event_data_param(response, SYNC_AGENT_EVENT_PARAM_TYPE_STRING, (void *)category_info->tgt_uri); sync_agent_append_event_data_param(response, SYNC_AGENT_EVENT_PARAM_TYPE_STRING, (void *)category_info->id); sync_agent_append_event_data_param(response, SYNC_AGENT_EVENT_PARAM_TYPE_STRING, (void *)category_info->password); _DEBUG_INFO("category_info->service_type = %d", category_info->service_type); _DEBUG_INFO("category_info->enabled = %d", category_info->enabled); _DEBUG_INFO("category_info->src_uri = %d", category_info->src_uri); _DEBUG_INFO("category_info->tgt_uri = %s", category_info->tgt_uri); _DEBUG_INFO("category_info->id = %s", category_info->id); _DEBUG_INFO("category_info->password = %s", category_info->password); } } } _EXTERN_FUNC_EXIT; return 0; }