diff options
Diffstat (limited to 'src/agent/service-engine/se_storage.c')
-rwxr-xr-x | src/agent/service-engine/se_storage.c | 249 |
1 files changed, 235 insertions, 14 deletions
diff --git a/src/agent/service-engine/se_storage.c b/src/agent/service-engine/se_storage.c index 51beeff..e204715 100755 --- a/src/agent/service-engine/se_storage.c +++ b/src/agent/service-engine/se_storage.c @@ -36,6 +36,10 @@ static se_error_type_e _write_sync_type(int account_id, alert_type_e alert_type); static se_error_type_e _write_last_session_values(int account_id, sync_session_result_e sync_session_result, int last_session_time); +static int _convert_sync_mode_value(char* sync_mode_str); +static int _convert_sync_type_value(char* sync_type_str); +static int _convert_interval_value(char* interval_str); +static int _convert_src_uri_value(char* src_uri_str); static se_error_type_e _write_sync_type(int account_id, alert_type_e alert_type) { @@ -109,6 +113,124 @@ static se_error_type_e _write_last_session_values(int account_id, sync_session_r return err; } +static int _convert_sync_mode_value(char* sync_mode_str) +{ + _INNER_FUNC_ENTER; + _DEBUG_INFO("sync_mode_str: [%s]", sync_mode_str); + + int sync_mode_value = 0; + + if (strcmp(sync_mode_str,DEFINE_SYNC_MODE_MANUAL) == 0){ + sync_mode_value = MODE_MANUAL; + } else if (strcmp(sync_mode_str,DEFINE_SYNC_MODE_PERIODIC) == 0){ + sync_mode_value = MODE_PERIODIC; + } else if (strcmp(sync_mode_str,DEFINE_SYNC_MODE_PUSH) == 0){ + sync_mode_value = MODE_PUSH; + } else { + _DEBUG_ERROR("sync_mode_str is invalid!!"); + goto error; + } + + error: + + _INNER_FUNC_EXIT; + return sync_mode_value; + +} + +static int _convert_sync_type_value(char* sync_type_str) +{ + _INNER_FUNC_ENTER; + _DEBUG_INFO("sync_type_str: [%s]", sync_type_str); + + int sync_type_value = 0; + + if (strcmp(sync_type_str,DEFINE_ALERT_SLOW_SYNC_STR) == 0){ + sync_type_value = SYNC_TYPE_FULL_SYNC; + } else if (strcmp(sync_type_str,DEFINE_ALERT_TWO_WAY_STR) == 0){ + sync_type_value = SYNC_TYPE_UPDATE_BOTH; + } else if (strcmp(sync_type_str,DEFINE_ALERT_ONE_WAY_FROM_CLIENT_STR) == 0){ + sync_type_value = SYNC_TYPE_UPDATE_TO_SERVER; + } else if (strcmp(sync_type_str,DEFINE_ALERT_ONE_WAY_FROM_SERVER_STR) == 0){ + sync_type_value = SYNC_TYPE_UPDATE_TO_PHONE; + } else if (strcmp(sync_type_str,DEFINE_ALERT_REFRESH_FROM_SERVER_STR) == 0){ + sync_type_value = SYNC_TYPE_REFRESH_FROM_SERVER; + } else if (strcmp(sync_type_str,DEFINE_ALERT_REFRESH_FROM_CLIENT_STR) == 0){ + sync_type_value = SYNC_TYPE_REFRESH_FROM_PHONE; + } else { + _DEBUG_ERROR("sync_type_str is invalid!!"); + goto error; + } + + error: + + _INNER_FUNC_EXIT; + return sync_type_value; + +} + +static int _convert_interval_value(char* interval_str) +{ + _INNER_FUNC_ENTER; + _DEBUG_INFO("interval_str: [%s]", interval_str); + + int interval_value = 0; + + if (strcmp(interval_str,DEFINE_SYNC_INTERVAL_5_MINUTES_STR) == 0){ + interval_value = SYNC_INTERVAL_5_MINUTES; + } else if (strcmp(interval_str,DEFINE_SYNC_INTERVAL_15_MINUTES_STR) == 0){ + interval_value = SYNC_INTERVAL_15_MINUTES; + } else if (strcmp(interval_str,DEFINE_SYNC_INTERVAL_1_HOUR_STR) == 0){ + interval_value = SYNC_INTERVAL_1_HOUR; + } else if (strcmp(interval_str,DEFINE_SYNC_INTERVAL_4_HOURS_STR) == 0){ + interval_value = SYNC_INTERVAL_4_HOURS; + } else if (strcmp(interval_str,DEFINE_SYNC_INTERVAL_12_HOURS_STR) == 0){ + interval_value = SYNC_INTERVAL_12_HOURS; + } else if (strcmp(interval_str,DEFINE_SYNC_INTERVAL_1_DAY_STR) == 0){ + interval_value = SYNC_INTERVAL_1_DAY; + } else if (strcmp(interval_str,DEFINE_SYNC_INTERVAL_1_WEEK_STR) == 0){ + interval_value = SYNC_INTERVAL_1_WEEK; + } else if (strcmp(interval_str,DEFINE_SYNC_INTERVAL_1_MONTH_STR) == 0){ + interval_value = SYNC_INTERVAL_1_MONTH; + } else { + _DEBUG_ERROR("interval_str is invalid!!"); + goto error; + } + + error: + + _INNER_FUNC_EXIT; + return interval_value; + +} + +static int _convert_src_uri_value(char* src_uri_str) +{ + _INNER_FUNC_ENTER; + _DEBUG_INFO("src_uri_str: [%s]", src_uri_str); + + int src_uri_value = 0; + + if (strcmp(src_uri_str,DEFINE_SOURCE_CONTACT_URI) == 0){ + src_uri_value = SRC_URI_CONTACT; + } else if (strcmp(src_uri_str,DEFINE_SOURCE_CALENDAR_URI) == 0){ + src_uri_value = SRC_URI_CALENDAR; + } else if (strcmp(src_uri_str,DEFINE_SOURCE_MEMO_URI) == 0){ + src_uri_value = SRC_URI_MEMO; + } else if (strcmp(src_uri_str,DEFINE_SOURCE_CALLLOG_URI) == 0){ + src_uri_value = SRC_URI_CALLLOG; + } else { + _DEBUG_ERROR("src_uri_str is invalid!!"); + goto error; + } + + error: + + _INNER_FUNC_EXIT; + return src_uri_value; + +} + se_error_type_e write_profile_data(int account_id, alert_type_e alert_type, sync_session_result_e sync_session_result, int last_session_time, int only_from_client) { _EXTERN_FUNC_ENTER; @@ -299,7 +421,7 @@ se_error_type_e write_sync_resource_info(int account_id, int content_type, int l return err; } -bool get_profile_data(int account_id, char **profile_name, char **addr, char **id, char **password, char **sync_mode, char **sync_type, char **interval, int *last_session_status, int *last_session_time) +bool get_profile_data(int account_id, char **profile_name, char **addr, char **id, char **password, int *sync_mode, int *sync_type, int *interval, int *last_session_status, int *last_session_time) { _EXTERN_FUNC_ENTER; @@ -311,6 +433,12 @@ bool get_profile_data(int account_id, char **profile_name, char **addr, char **i GList *iter = NULL; sync_agent_da_config_s *config_data = NULL; + char *sync_mode_str = NULL; + char *sync_type_str = NULL; + char *interval_str = NULL; + int sync_mode_value = 0; + int sync_type_value = 0; + int interval_value = 0; char *lastSessionStatus_str = NULL; char *lastSessionTime_str = NULL; @@ -367,21 +495,21 @@ bool get_profile_data(int account_id, char **profile_name, char **addr, char **i if (strcmp(config_data->key, DEFINE_CONFIG_KEY_PROFILE_SYNC_MODE) == 0) { if (config_data->value != NULL) { - *sync_mode = strdup(config_data->value); + sync_mode_str = strdup(config_data->value); continue; } } if (strcmp(config_data->key, DEFINE_CONFIG_KEY_PROFILE_CLIENT_SYNC_TYPE) == 0) { if (config_data->value != NULL) { - *sync_type = strdup(config_data->value); + sync_type_str = strdup(config_data->value); continue; } } if (strcmp(config_data->key, DEFINE_CONFIG_KEY_PROFILE_SYNC_INTERVAL) == 0) { if (config_data->value != NULL) { - *interval = strdup(config_data->value); + interval_str = strdup(config_data->value); continue; } } @@ -403,6 +531,24 @@ bool get_profile_data(int account_id, char **profile_name, char **addr, char **i } } + if (sync_mode_str != NULL) { + sync_mode_value = _convert_sync_mode_value(sync_mode_str); + _DEBUG_INFO("sync_mode_value: [%d]", sync_mode_value); + *sync_mode = sync_mode_value; + } + + if (sync_type_str != NULL) { + sync_type_value = _convert_sync_type_value(sync_type_str); + _DEBUG_INFO("sync_type_value: [%d]", sync_type_value); + *sync_type = sync_type_value; + } + + if (interval_str != NULL) { + interval_value = _convert_interval_value(interval_str); + _DEBUG_INFO("interval_value: [%d]", interval_value); + *interval = sync_type_value; + } + if (lastSessionStatus_str != NULL) *last_session_status = atoi(lastSessionStatus_str); @@ -417,11 +563,30 @@ bool get_profile_data(int account_id, char **profile_name, char **addr, char **i sync_agent_close_agent(); - if (lastSessionStatus_str != NULL) + if (sync_mode_str != NULL) { + free(sync_mode_str); + sync_mode_str = NULL; + } + + if (sync_type_str != NULL) { + free(sync_type_str); + sync_type_str = NULL; + } + + if (interval_str != NULL) { + free(interval_str); + interval_str = NULL; + } + + if (lastSessionStatus_str != NULL) { free(lastSessionStatus_str); + lastSessionStatus_str = NULL; + } - if (lastSessionTime_str != NULL) + if (lastSessionTime_str != NULL) { free(lastSessionTime_str); + lastSessionTime_str = NULL; + } _EXTERN_FUNC_EXIT; @@ -431,13 +596,15 @@ bool get_profile_data(int account_id, char **profile_name, char **addr, char **i return true; } -bool get_profile_sync_category(int account_id, int content_type, int *enabled, char **src_uri, char **tgt_uri, char **id, char **password) +bool get_profile_sync_category(int account_id, int content_type, int *enabled, int *src_uri, char **tgt_uri, char **id, char **password) { _EXTERN_FUNC_ENTER; se_error_type_e err = SE_INTERNAL_OK; char *datastore = NULL; char *enabled_str = NULL; + char *src_uri_str = NULL; + int src_uri_value = 0; char datastore_source[128]; char datastore_target[128]; @@ -494,7 +661,7 @@ bool get_profile_sync_category(int account_id, int content_type, int *enabled, c if (strcmp(config_data->key, datastore_source) == 0) { if (config_data->value != NULL) { - *src_uri = strdup(config_data->value); + src_uri_str = strdup(config_data->value); continue; } } @@ -526,14 +693,26 @@ bool get_profile_sync_category(int account_id, int content_type, int *enabled, c if (enabled_str != NULL) *enabled = atoi(enabled_str); + if (src_uri_str != NULL) { + src_uri_value = _convert_src_uri_value(src_uri_str); + *src_uri = src_uri_value; + } + error: sync_agent_free_config_list(config_list); sync_agent_close_agent(); - if (enabled_str != NULL) + if (enabled_str != NULL) { free(enabled_str); + enabled_str = NULL; + } + + if (src_uri_str != NULL) { + free(src_uri_str); + src_uri_str = NULL; + } _EXTERN_FUNC_EXIT; @@ -777,6 +956,14 @@ bool get_all_profiles_data(GList ** list) GList *free_iter = NULL; sync_agent_ds_service_info *category_info = NULL; + char* sync_mode_str = NULL; + char* sync_type_str = NULL; + char* interval_str = NULL; + char* src_uri_str = NULL; + int sync_mode_value = 0; + int sync_type_value = 0; + int interval_value = 0; + int src_uri_value = 0; sync_agent_da_return_e da_err = sync_agent_open_agent(); if (da_err != SYNC_AGENT_DA_SUCCESS) { @@ -847,21 +1034,30 @@ bool get_all_profiles_data(GList ** list) if (strcmp(config_data->key, DEFINE_CONFIG_KEY_PROFILE_SYNC_MODE) == 0) { if (config_data->value != NULL) { - sync_info->sync_mode = strdup(config_data->value); + sync_mode_str = strdup(config_data->value); + sync_mode_value = _convert_sync_mode_value(sync_mode_str); + _DEBUG_INFO("sync_mode_value: [%d]", sync_mode_value); + sync_info->sync_mode = sync_mode_value; continue; } } if (strcmp(config_data->key, DEFINE_CONFIG_KEY_PROFILE_CLIENT_SYNC_TYPE) == 0) { if (config_data->value != NULL) { - sync_info->sync_type = strdup(config_data->value); + sync_type_str = strdup(config_data->value); + sync_type_value = _convert_sync_type_value(sync_type_str); + _DEBUG_INFO("sync_type_value: [%d]", sync_type_value); + sync_info->sync_type = sync_type_value; continue; } } if (strcmp(config_data->key, DEFINE_CONFIG_KEY_PROFILE_SYNC_INTERVAL) == 0) { if (config_data->value != NULL) { - sync_info->interval = strdup(config_data->value); + interval_str = strdup(config_data->value); + interval_value = _convert_interval_value(interval_str); + _DEBUG_INFO("interval_value: [%d]", interval_value); + sync_info->interval =interval_value; continue; } } @@ -932,7 +1128,10 @@ bool get_all_profiles_data(GList ** list) if (strcmp(config_data->key, datastore_source) == 0) { if (config_data->value != NULL) { - category_info->src_uri = strdup(config_data->value); + src_uri_str = strdup(config_data->value); + src_uri_value = _convert_src_uri_value(src_uri_str); + _DEBUG_INFO("src_uri_value: [%d]", src_uri_value); + category_info->src_uri = src_uri_value; continue; } } @@ -977,13 +1176,35 @@ bool get_all_profiles_data(GList ** list) error: + if (sync_mode_str != NULL) { + free(sync_mode_str); + sync_mode_str = NULL; + } + + if (sync_type_str != NULL) { + free(sync_type_str); + sync_type_str = NULL; + } + + if (interval_str != NULL) { + free(interval_str); + interval_str = NULL; + } + + if (src_uri_str != NULL) { + free(src_uri_str); + src_uri_str = NULL; + } + for (free_iter = account_list; free_iter != NULL; free_iter = g_list_next(free_iter)) { sync_agent_ds_free_profile_info((ds_profile_h) free_iter->data); _DEBUG_INFO("free sync_agent_ds_profile_info"); } - if (profile_info != NULL) + if (profile_info != NULL) { free(profile_info); + profile_info = NULL; + } sync_agent_free_fw_account_list(account_info_list); |