summaryrefslogtreecommitdiff
path: root/src/agent/service-engine/se_storage.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/agent/service-engine/se_storage.c')
-rwxr-xr-xsrc/agent/service-engine/se_storage.c249
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);