summaryrefslogtreecommitdiff
path: root/src/agent/service-engine
diff options
context:
space:
mode:
authorJinkun Jang <jinkun.jang@samsung.com>2013-03-16 01:18:13 +0900
committerJinkun Jang <jinkun.jang@samsung.com>2013-03-16 01:18:13 +0900
commit2928ee51d097094087c5a6445bea90840f6f1db6 (patch)
tree2322cd9266510a98abd61e1a8d7fb9f593665eff /src/agent/service-engine
parentd6aa47559c38d7e20d6d6a7a3671fa48ed58b9eb (diff)
downloadoma-ds-agent-2928ee51d097094087c5a6445bea90840f6f1db6.tar.gz
oma-ds-agent-2928ee51d097094087c5a6445bea90840f6f1db6.tar.bz2
oma-ds-agent-2928ee51d097094087c5a6445bea90840f6f1db6.zip
merge with master
Diffstat (limited to 'src/agent/service-engine')
-rwxr-xr-xsrc/agent/service-engine/se_account.c287
-rwxr-xr-xsrc/agent/service-engine/se_notification.c10
-rwxr-xr-xsrc/agent/service-engine/se_storage.c249
-rwxr-xr-xsrc/agent/service-engine/se_sync.c128
4 files changed, 622 insertions, 52 deletions
diff --git a/src/agent/service-engine/se_account.c b/src/agent/service-engine/se_account.c
index 803f9d3..b1608d8 100755
--- a/src/agent/service-engine/se_account.c
+++ b/src/agent/service-engine/se_account.c
@@ -56,6 +56,11 @@ static datastore_cp_info predefinedServer[] = {
{"Everdroid", 1}
};
+static char * _convert_to_sync_mode_str(int sync_mode);
+static char * _convert_to_sync_type_str(int sync_type);
+static char * _convert_to_interval_str(int interval);
+static char * _convert_to_src_uri_str(int src_uri);
+
static se_error_type_e _add_profile(char *addr, char *id, char *password, char *access_name, int *account_id);
static se_error_type_e _set_profile_info(int account_id, char *profile_name, char *sync_mode, char *sync_type, char *interval);
static se_error_type_e _set_profile_category(int account_id, sync_service_s * category);
@@ -69,6 +74,145 @@ static se_error_type_e _set_profile_category_info_cp(int account_id, int content
static se_error_type_e __set_profile_category_info_into_cofnig_list(int account_id, int content_type, int enabled, char *src_uri, char *tgt_uri, char *id, char *password, GList ** config_list);
static se_error_type_e ___append_config_value(int account_id, char *key, char *value, char *type, char *access_name, GList ** list);
+static char * _convert_to_sync_mode_str(int sync_mode)
+{
+ _INNER_FUNC_ENTER;
+
+ _DEBUG_INFO("sync_mode: [%d]",sync_mode);
+ char *sync_mode_str = NULL;
+
+ switch (sync_mode) {
+ case MODE_MANUAL:
+ sync_mode_str = DEFINE_SYNC_MODE_MANUAL;
+ break;
+ case MODE_PERIODIC:
+ sync_mode_str = DEFINE_SYNC_MODE_PERIODIC;
+ break;
+ case MODE_PUSH:
+ sync_mode_str = DEFINE_SYNC_MODE_PUSH;
+ break;
+ default:
+ _DEBUG_ERROR("sync_mode is invalid!!");
+ break;
+ }
+
+ _DEBUG_INFO("sync_mode_str: [%s]",sync_mode_str);
+
+ _INNER_FUNC_EXIT;
+ return sync_mode_str;
+}
+
+static char * _convert_to_sync_type_str(int sync_type)
+{
+ _INNER_FUNC_ENTER;
+ char *sync_type_str = NULL;
+
+ _DEBUG_INFO("sync_type: [%d]",sync_type);
+
+ switch (sync_type) {
+ case SYNC_TYPE_FULL_SYNC:
+ sync_type_str = DEFINE_ALERT_SLOW_SYNC_STR;
+ break;
+ case SYNC_TYPE_UPDATE_BOTH:
+ sync_type_str = DEFINE_ALERT_TWO_WAY_STR;
+ break;
+ case SYNC_TYPE_UPDATE_TO_SERVER:
+ sync_type_str = DEFINE_ALERT_ONE_WAY_FROM_CLIENT_STR;
+ break;
+ case SYNC_TYPE_UPDATE_TO_PHONE:
+ sync_type_str = DEFINE_ALERT_ONE_WAY_FROM_SERVER_STR;
+ break;
+ case SYNC_TYPE_REFRESH_FROM_SERVER:
+ sync_type_str = DEFINE_ALERT_REFRESH_FROM_SERVER_STR;
+ break;
+ case SYNC_TYPE_REFRESH_FROM_PHONE:
+ sync_type_str = DEFINE_ALERT_REFRESH_FROM_CLIENT_STR;
+ break;
+ default:
+ _DEBUG_ERROR("sync_type is invalid!!");
+ sync_type_str = DEFINE_ALERT_UNKNOWN_STR;
+ break;
+ }
+
+ _DEBUG_INFO("sync_type_str: [%s]",sync_type_str);
+
+ _INNER_FUNC_EXIT;
+ return sync_type_str;
+}
+
+static char * _convert_to_interval_str(int interval)
+{
+ _INNER_FUNC_ENTER;
+ char *interval_str = NULL;
+
+ _DEBUG_INFO("interval: [%d]",interval);
+
+ switch (interval) {
+ case SYNC_INTERVAL_5_MINUTES:
+ interval_str = DEFINE_SYNC_INTERVAL_5_MINUTES_STR;
+ break;
+ case SYNC_INTERVAL_15_MINUTES:
+ interval_str = DEFINE_SYNC_INTERVAL_15_MINUTES_STR;
+ break;
+ case SYNC_INTERVAL_1_HOUR:
+ interval_str = DEFINE_SYNC_INTERVAL_1_HOUR_STR;
+ break;
+ case SYNC_INTERVAL_4_HOURS:
+ interval_str = DEFINE_SYNC_INTERVAL_4_HOURS_STR;
+ break;
+ case SYNC_INTERVAL_12_HOURS:
+ interval_str = DEFINE_SYNC_INTERVAL_12_HOURS_STR;
+ break;
+ case SYNC_INTERVAL_1_DAY:
+ interval_str = DEFINE_SYNC_INTERVAL_1_DAY_STR;
+ break;
+ case SYNC_INTERVAL_1_WEEK:
+ interval_str = DEFINE_SYNC_INTERVAL_1_WEEK_STR;
+ break;
+ case SYNC_INTERVAL_1_MONTH:
+ interval_str = DEFINE_SYNC_INTERVAL_1_MONTH_STR;
+ break;
+ default:
+ _DEBUG_ERROR("interval is invalid!!");
+ break;
+ }
+
+ _DEBUG_INFO("interval_str: [%s]",interval_str);
+
+ _INNER_FUNC_EXIT;
+ return interval_str;
+}
+
+static char * _convert_to_src_uri_str(int src_uri)
+{
+ _INNER_FUNC_ENTER;
+ char* src_uri_str = NULL;
+
+ _DEBUG_INFO("src_uri: [%d]",src_uri);
+
+ switch (src_uri) {
+ case SRC_URI_CONTACT:
+ src_uri_str = DEFINE_SOURCE_CONTACT_URI;
+ break;
+ case SRC_URI_CALENDAR:
+ src_uri_str = DEFINE_SOURCE_CALENDAR_URI;
+ break;
+ case SRC_URI_MEMO:
+ src_uri_str = DEFINE_SOURCE_MEMO_URI;
+ break;
+ case SRC_URI_CALLLOG:
+ src_uri_str = DEFINE_SOURCE_CALLLOG_URI;
+ break;
+ default:
+ _DEBUG_ERROR("src_uri is invalid!!");
+ break;
+ }
+ _DEBUG_INFO("src_uri_str: [%s]", src_uri_str);
+
+ _INNER_FUNC_EXIT;
+ return src_uri_str;
+}
+
static se_error_type_e _add_profile(char *addr, char *id, char *password, char *access_name, int *account_id)
{
_INNER_FUNC_ENTER;
@@ -353,7 +497,7 @@ static se_error_type_e _set_profile_category(int account_id, sync_service_s * ca
_DEBUG_TRACE("category->content_type : %d", category->service_type);
_DEBUG_TRACE("category->enabled : %d", category->enabled);
- _DEBUG_TRACE("category->src_uri : %s", category->src_uri);
+ _DEBUG_TRACE("category->src_uri : %d", category->src_uri);
_DEBUG_TRACE("category->tgt_uri : %s", category->tgt_uri);
_DEBUG_TRACE("category->id : %s", category->id);
_DEBUG_TRACE("category->password : %s", category->password);
@@ -366,6 +510,7 @@ static se_error_type_e _set_profile_category(int account_id, sync_service_s * ca
char datastore_source[128];
char datastore_id[128];
char datastore_pw[128];
+ char *src_uri_str = NULL;
if (category->service_type == TYPE_CONTACT)
datastore = DEFINE_CONFIG_KEY_PROFILE_CATEGORY_CONTACTS;
@@ -388,12 +533,19 @@ static se_error_type_e _set_profile_category(int account_id, sync_service_s * ca
goto error;
}
- result = set_config_str(account_id, datastore_source, category->src_uri, "string", "SE");
+ src_uri_str = _convert_to_src_uri_str(category->src_uri);
+ if (src_uri_str == NULL){
+ _DEBUG_ERROR("failed in _convert_to_src_uri_str");
+ goto error;
+ }
+
+ result = set_config_str(account_id, datastore_source, src_uri_str, "string", "SE");
if (result == false) {
_DEBUG_ERROR("failed in set_config");
err = SE_INTERNAL_DA_ERROR;
goto error;
}
+ _DEBUG_INFO("src_uri_str: [%s]",src_uri_str);
result = set_config_str(account_id, datastore_target, category->tgt_uri, "string", "SE");
if (result == false) {
@@ -426,6 +578,7 @@ static se_error_type_e _set_profile_category(int account_id, sync_service_s * ca
static se_error_type_e _set_periodic_sync_config(int account_id, char *sync_mode, char *interval)
{
_INNER_FUNC_ENTER;
+ _DEBUG_TRACE("account_id = %d", account_id);
_DEBUG_TRACE("sync_mode = %s", sync_mode);
se_error_type_e err = SE_INTERNAL_OK;
@@ -460,14 +613,14 @@ static se_error_type_e _set_periodic_sync_config(int account_id, char *sync_mode
}
if (strcmp(sync_mode, DEFINE_SYNC_MODE_PERIODIC) == 0 && interval != NULL) {
-
+/*
result = set_config_str(account_id, DEFINE_CONFIG_KEY_PROFILE_CLIENT_SYNC_TYPE, DEFINE_ALERT_TWO_WAY_STR, "string", "SE");
if (result == false) {
_DEBUG_ERROR("failed in set_config");
err = SE_INTERNAL_DA_ERROR;
goto error;
}
-
+*/
int week[] = { DAY_SUN, DAY_MON, DAY_TUE, DAY_WED, DAY_THU, DAY_FRI, DAY_SAT };
time_t current_time;
struct tm *struct_time;
@@ -510,6 +663,10 @@ static se_error_type_e _set_periodic_sync_config(int account_id, char *sync_mode
_DEBUG_TRACE("1 week");
alarm_info->repeat_type = REPEAT_WEEKLY;
alarm_info->repeat_value = week[struct_time->tm_wday];
+ } else if (strcmp(interval, "1 month") == 0) {
+ _DEBUG_TRACE("1 month");
+ alarm_info->repeat_type = REPEAT;//REPEAT_MONTHLY;
+ alarm_info->repeat_value = (((24 * 60) * 60) * 30 );
}
scheduler_err = sync_agent_add_service_data(1, alarm_info, &alarm_id);
@@ -538,14 +695,19 @@ static se_error_type_e _set_periodic_sync_config(int account_id, char *sync_mode
error:
- if (value != NULL)
+ if (value != NULL) {
free(value);
+ value = NULL;
+ }
if (alarm_info != NULL) {
- if (alarm_info->start_alarm_time != NULL)
+ if (alarm_info->start_alarm_time != NULL) {
free(alarm_info->start_alarm_time);
+ alarm_info->start_alarm_time = NULL;
+ }
free(alarm_info);
+ alarm_info = NULL;
}
_INNER_FUNC_EXIT;
@@ -670,12 +832,20 @@ static se_error_type_e _set_profile_category_info(int account_id, sync_service_s
retvm_if(category == NULL, SE_INTERNAL_NOT_DEFINED, "category is NULL");
se_error_type_e err = SE_INTERNAL_OK;
- err = __set_profile_category_info_into_cofnig_list(account_id, category->service_type, category->enabled, category->src_uri, category->tgt_uri, category->id, category->password, config_list);
+ char *src_uri_str = NULL;
+
+ src_uri_str = _convert_to_src_uri_str(category->src_uri);
+ if (src_uri_str == NULL) {
+ _DEBUG_ERROR("failed in _convert_to_src_uri_str");
+ goto error;
+ }
+
+ err = __set_profile_category_info_into_cofnig_list(account_id, category->service_type, category->enabled, src_uri_str, category->tgt_uri, category->id, category->password, config_list);
if (err != SE_INTERNAL_OK) {
_DEBUG_ERROR("failed in _set_profile_category_info_into_cofnig_list");
goto error;
}
-
+ _DEBUG_INFO("src_uri_str: [%s]",src_uri_str);
error:
_INNER_FUNC_EXIT;
@@ -1016,6 +1186,7 @@ static se_error_type_e _get_empty_profile_dir_name(char **empty_profile_dir_name
char profileIndex[2];
int index;
int i;
+ int cnt = 0;
sync_agent_acc_error_e acc_err = SYNC_AGENT_ACC_SUCCESS;
sync_agent_fw_account_s *fw_account = NULL;
@@ -1031,6 +1202,9 @@ static se_error_type_e _get_empty_profile_dir_name(char **empty_profile_dir_name
goto error;
}
+ cnt = g_list_length(account_info_list);
+ _DEBUG_INFO("account_info_list , length = %d", cnt);
+
for (iter = account_info_list; iter != NULL; iter = g_list_next(iter)) {
fw_account = (sync_agent_fw_account_s *) iter->data;
@@ -1039,6 +1213,7 @@ static se_error_type_e _get_empty_profile_dir_name(char **empty_profile_dir_name
profileDirName = NULL;
}
+ _DEBUG_INFO("fw_account->account_id = %d", fw_account->account_id);
result = get_config(fw_account->account_id, DEFINE_CONFIG_KEY_PROFILE_DIR_NAME, &profileDirName);
if (result == false) {
_DEBUG_ERROR("failed in get_Config");
@@ -1075,7 +1250,7 @@ static se_error_type_e _get_empty_profile_dir_name(char **empty_profile_dir_name
return err;
}
-bool add_profile(char *profile_dir_name, char *profile_name, char *addr, char *id, char *password, char *sync_mode, char *sync_type, char *interval, GList * categories, int *account_id)
+bool add_profile(char *profile_name, char *addr, char *id, char *password, int sync_mode, int sync_type, int interval, GList * categories, int *account_id)
{
_EXTERN_FUNC_ENTER;
@@ -1083,13 +1258,17 @@ bool add_profile(char *profile_dir_name, char *profile_name, char *addr, char *i
_DEBUG_INFO("addr = %s", addr);
_DEBUG_INFO("id = %s", id);
_DEBUG_INFO("password = %s", password);
- _DEBUG_INFO("sync_mode = %s", sync_mode);
- _DEBUG_INFO("sync_type = %s", sync_type);
- _DEBUG_INFO("interval = %s", interval);
+ _DEBUG_INFO("sync_mode = %d", sync_mode);
+ _DEBUG_INFO("sync_type = %d", sync_type);
+ _DEBUG_INFO("interval = %d", interval);
se_error_type_e err = SE_INTERNAL_OK;
int account = -1;
GList *config_list = NULL;
+ char *profile_dir_name = NULL;
+ char * sync_mode_str = NULL;
+ char * sync_type_str = NULL;
+ char * interval_str = NULL;
sync_agent_da_return_e da_err = sync_agent_open_agent();
if (da_err != SYNC_AGENT_DA_SUCCESS) {
@@ -1097,25 +1276,68 @@ bool add_profile(char *profile_dir_name, char *profile_name, char *addr, char *i
goto error;
}
+ // Assign profile_dir_name
+ err = _get_empty_profile_dir_name(&profile_dir_name);
+ if (err != SE_INTERNAL_OK) {
+ _DEBUG_ERROR("failed in _get_empty_profileDirName");
+ goto error;
+ }
+
+ if (profile_dir_name == NULL) {
+ _DEBUG_ERROR("Maximum profiles count is %d, no more profile", MAXIMUM_ACCOUNT_COUNT);
+ err = SE_INTERNAL_ERROR;
+ goto error;
+ }
+ _DEBUG_INFO("profile_dir_name[%s]", profile_dir_name);
+
err = _add_profile(addr, id, password, "SE", &account);
if (err != SE_INTERNAL_OK) {
- _DEBUG_ERROR("failed in add_Account");
+ _DEBUG_ERROR("failed in _add_profile");
goto error;
}
- err = _set_profile_info_into_config_list(account, profile_dir_name, addr, profile_name, sync_mode, sync_type, interval, NULL, NULL, &config_list);
+ sync_mode_str = _convert_to_sync_mode_str(sync_mode);
+ if (sync_mode_str == NULL) {
+ _DEBUG_ERROR("_convert_to_sync_mode_str failed!!");
+ err = SE_INTERNAL_ERROR;
+ goto error;
+ }
+
+ sync_type_str = _convert_to_sync_type_str(sync_type);
+ if (sync_type_str == NULL) {
+ _DEBUG_ERROR("_convert_to_sync_type_str failed!!");
+ err = SE_INTERNAL_ERROR;
+ goto error;
+ }
+
+ interval_str = _convert_to_interval_str(interval);
+ if (interval_str == NULL) {
+ _DEBUG_ERROR("_convert_to_interval_str failed!!");
+ err = SE_INTERNAL_ERROR;
+ goto error;
+ }
+
+ _DEBUG_INFO("sync_mode_str : [%s]", sync_mode_str);
+ _DEBUG_INFO("sync_type_str : [%s]", sync_type_str);
+ _DEBUG_INFO("interval_str : [%s]", interval_str);
+
+ err = _set_profile_info_into_config_list(account, profile_dir_name, addr, profile_name, sync_mode_str, sync_type_str, interval_str, NULL, NULL, &config_list);
if (err != SE_INTERNAL_OK) {
- _DEBUG_ERROR("failed in add_Account");
+ _DEBUG_ERROR("_set_profile_info_into_config_list failed!!");
goto error;
}
+ int cnt = 0;
+ cnt = g_list_length(categories);
+ _DEBUG_INFO("categories length : [%d]", cnt);
+
sync_service_s *category = NULL;
GList *iter = NULL;
for (iter = categories; iter != NULL; iter = g_list_next(iter)) {
category = iter->data;
err = _set_profile_category_info(account, category, &config_list);
if (err != SE_INTERNAL_OK) {
- _DEBUG_ERROR("failed in __set_profile_category");
+ _DEBUG_ERROR("failed in _set_profile_category_info");
goto error;
}
}
@@ -1123,10 +1345,11 @@ bool add_profile(char *profile_dir_name, char *profile_name, char *addr, char *i
da_err = sync_agent_add_config_list(config_list);
if (da_err != SYNC_AGENT_DA_SUCCESS) {
err = SE_INTERNAL_DA_ERROR;
+ _DEBUG_ERROR("failed in sync_agent_add_config_list");
goto error;
}
- err = _set_periodic_sync_config(account, sync_mode, interval);
+ err = _set_periodic_sync_config(account, sync_mode_str, interval_str);
if (err != SE_INTERNAL_OK) {
_DEBUG_ERROR("failed in _set_periodic_sync_config");
goto error;
@@ -1445,7 +1668,7 @@ bool add_profile_dive(int *account_id)
return true;
}
-bool edit_profile(int account_id, char *profile_name, char *addr, char *id, char *password, char *sync_mode, char *sync_type, char *interval, GList * categories)
+bool edit_profile(int account_id, char *profile_name, char *addr, char *id, char *password, int sync_mode, int sync_type, int interval, GList * categories)
{
_EXTERN_FUNC_ENTER;
@@ -1453,6 +1676,9 @@ bool edit_profile(int account_id, char *profile_name, char *addr, char *id, char
sync_agent_acc_error_e acc_err = SYNC_AGENT_ACC_SUCCESS;
sync_agent_fw_account_s *fw_account = NULL;
bool result;
+ char* sync_mode_str = NULL;
+ char* sync_type_str = NULL;
+ char* interval_str = NULL;
sync_agent_da_return_e da_err = sync_agent_open_agent();
if (da_err != SYNC_AGENT_DA_SUCCESS) {
@@ -1485,13 +1711,34 @@ bool edit_profile(int account_id, char *profile_name, char *addr, char *id, char
goto error;
}
- err = _set_profile_info(account_id, profile_name, sync_mode, sync_type, interval);
+ sync_mode_str = _convert_to_sync_mode_str(sync_mode);
+ if (sync_mode_str == NULL) {
+ _DEBUG_ERROR("_convert_to_sync_mode_str failed!!");
+ err = SE_INTERNAL_DA_ERROR;
+ goto error;
+ }
+
+ sync_type_str = _convert_to_sync_type_str(sync_type);
+ if (sync_type_str == NULL) {
+ _DEBUG_ERROR("_convert_to_sync_type_str failed!!");
+ err = SE_INTERNAL_DA_ERROR;
+ goto error;
+ }
+
+ interval_str = _convert_to_interval_str(interval);
+ if (interval_str == NULL) {
+ _DEBUG_ERROR("_convert_to_interval_str failed!!");
+ err = SE_INTERNAL_DA_ERROR;
+ goto error;
+ }
+
+ err = _set_profile_info(account_id, profile_name, sync_mode_str, sync_type_str, interval_str);
if (err != SE_INTERNAL_OK) {
_DEBUG_ERROR("failed in __set_profile_info");
goto error;
}
- err = _set_periodic_sync_config(account_id, sync_mode, interval);
+ err = _set_periodic_sync_config(account_id, sync_mode_str, interval_str);
if (err != SE_INTERNAL_OK) {
_DEBUG_ERROR("failed in __set_profile_info");
goto error;
diff --git a/src/agent/service-engine/se_notification.c b/src/agent/service-engine/se_notification.c
index 1fdf1c5..6a22701 100755
--- a/src/agent/service-engine/se_notification.c
+++ b/src/agent/service-engine/se_notification.c
@@ -36,7 +36,7 @@
#define NOTI_KEY "OMADS"
#define OMA_DS_UI_PKG "ug-setting-synchronise-efl"
-se_error_type_e send_noti_session_process(char *profile, char *sync_type, char *progress, char *error)
+se_error_type_e send_noti_session_process(char *profile, int sync_type, char *progress, char *error)
{
_EXTERN_FUNC_ENTER;
@@ -59,7 +59,7 @@ se_error_type_e send_noti_session_process(char *profile, char *sync_type, char *
}
sync_agent_append_event_data_param(noti, SYNC_AGENT_EVENT_PARAM_TYPE_STRING, (void *)profile);
- sync_agent_append_event_data_param(noti, SYNC_AGENT_EVENT_PARAM_TYPE_STRING, (void *)sync_type);
+ sync_agent_append_event_data_param(noti, SYNC_AGENT_EVENT_PARAM_TYPE_INTEGER, &sync_type);
sync_agent_append_event_data_param(noti, SYNC_AGENT_EVENT_PARAM_TYPE_STRING, (void *)progress);
sync_agent_append_event_data_param(noti, SYNC_AGENT_EVENT_PARAM_TYPE_STRING, (void *)error);
@@ -81,7 +81,7 @@ se_error_type_e send_noti_session_process(char *profile, char *sync_type, char *
return err;
}
-se_error_type_e send_noti_process_update(char *profile_dir_name, char *sync_type, char *uri, char *progress_status, char *operation_type, int is_from_server, int total_per_operation, int synced_per_operation, int total_per_db, int synced_per_db)
+se_error_type_e send_noti_process_update(char *profile_dir_name, int sync_type, int uri, char *progress_status, char *operation_type, int is_from_server, int total_per_operation, int synced_per_operation, int total_per_db, int synced_per_db)
{
_EXTERN_FUNC_ENTER;
@@ -104,8 +104,8 @@ se_error_type_e send_noti_process_update(char *profile_dir_name, char *sync_type
}
sync_agent_append_event_data_param(noti, SYNC_AGENT_EVENT_PARAM_TYPE_STRING, (void *)profile_dir_name);
- sync_agent_append_event_data_param(noti, SYNC_AGENT_EVENT_PARAM_TYPE_STRING, (void *)sync_type);
- sync_agent_append_event_data_param(noti, SYNC_AGENT_EVENT_PARAM_TYPE_STRING, (void *)uri);
+ sync_agent_append_event_data_param(noti, SYNC_AGENT_EVENT_PARAM_TYPE_INTEGER, &sync_type);
+ sync_agent_append_event_data_param(noti, SYNC_AGENT_EVENT_PARAM_TYPE_INTEGER, &uri);
sync_agent_append_event_data_param(noti, SYNC_AGENT_EVENT_PARAM_TYPE_STRING, (void *)progress_status);
sync_agent_append_event_data_param(noti, SYNC_AGENT_EVENT_PARAM_TYPE_STRING, (void *)operation_type);
sync_agent_append_event_data_param(noti, SYNC_AGENT_EVENT_PARAM_TYPE_INTEGER, &is_from_server);
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);
diff --git a/src/agent/service-engine/se_sync.c b/src/agent/service-engine/se_sync.c
index c946921..367b89b 100755
--- a/src/agent/service-engine/se_sync.c
+++ b/src/agent/service-engine/se_sync.c
@@ -39,6 +39,8 @@
#define LOG_TAG "OMA_DS_SE"
#endif
+static int __convert_alert_to_sync_type_value(alert_type_e sync_type);
+static int __convert_src_uri_value(char *src_uri);
static se_error_type_e _session_process(int account_id, alert_type_e server_sync_type, sync_progress_e process, sync_error_e error);
static se_error_type_e __process_update(int account_id, alert_type_e server_sync_type, sync_progress_status_e progress_status, operation_type_e operation_type, int content_type, bool is_from_server, bool need_to_save, sync_result_s * sync_result);
static se_error_type_e _write_sync_data(int account_id, alert_type_e alert_type, sync_session_result_e sync_session_result, int last_session_time, int only_from_client);
@@ -88,6 +90,64 @@ static inline long myclock()
return (tv.tv_sec * 1000 + tv.tv_usec / 1000);
}
+static int __convert_alert_to_sync_type_value(alert_type_e sync_type)
+{
+ _INNER_FUNC_ENTER;
+
+ int sync_type_value = 0;
+ _DEBUG_INFO("sync_type: [%d]", sync_type);
+
+ switch (sync_type) {
+ case ALERT_TWO_WAY:
+ sync_type_value = SYNC_TYPE_UPDATE_BOTH;
+ break;
+ case ALERT_SLOW_SYNC:
+ sync_type_value = SYNC_TYPE_FULL_SYNC;
+ break;
+ case ALERT_ONE_WAY_FROM_CLIENT:
+ sync_type_value = SYNC_TYPE_UPDATE_TO_SERVER;
+ break;
+ case ALERT_REFRESH_FROM_CLIENT:
+ sync_type_value = SYNC_TYPE_REFRESH_FROM_PHONE;
+ break;
+ case ALERT_ONE_WAY_FROM_SERVER:
+ sync_type_value = SYNC_TYPE_UPDATE_TO_PHONE;
+ break;
+ case ALERT_REFRESH_FROM_SERVER:
+ sync_type_value = SYNC_TYPE_REFRESH_FROM_SERVER;
+ break;
+ default:
+ _DEBUG_ERROR("sync_type is invalid!!");
+ break;
+ }
+
+ _INNER_FUNC_EXIT;
+ return sync_type_value;
+}
+
+static int __convert_src_uri_value(char *src_uri)
+{
+ _INNER_FUNC_ENTER;
+
+ int src_uri_value = 0;
+ _DEBUG_INFO("src_uri: [%s]", src_uri);
+
+ if (strcmp(src_uri,DEFINE_SOURCE_CONTACT_URI) == 0) {
+ src_uri_value = SRC_URI_CONTACT;
+ } else if (strcmp(src_uri,DEFINE_SOURCE_CALENDAR_URI)) {
+ src_uri_value = SRC_URI_CALENDAR;
+ } else if (strcmp(src_uri,DEFINE_SOURCE_MEMO_URI)) {
+ src_uri_value = SRC_URI_MEMO;
+ } else if (strcmp(src_uri,DEFINE_SOURCE_CALLLOG_URI)) {
+ src_uri_value = SRC_URI_CALLLOG;
+ } else {
+ _DEBUG_ERROR("src_uri is invalid!!");
+ }
+
+ _INNER_FUNC_EXIT;
+ return src_uri_value;
+}
+
static se_error_type_e _session_process(int account_id, alert_type_e server_sync_type, sync_progress_e process, sync_error_e error)
{
_INNER_FUNC_ENTER;
@@ -95,6 +155,7 @@ static se_error_type_e _session_process(int account_id, alert_type_e server_sync
char *profileDirName = NULL;
se_error_type_e err = SE_INTERNAL_OK;
bool result;
+ int sync_type_value = 0;
result = get_config(account_id, DEFINE_CONFIG_KEY_PROFILE_DIR_NAME, &profileDirName);
if (result == false) {
@@ -103,8 +164,11 @@ static se_error_type_e _session_process(int account_id, alert_type_e server_sync
goto error;
}
+ sync_type_value = __convert_alert_to_sync_type_value(server_sync_type);
+ _DEBUG_INFO("sync_type_value: [%d]", sync_type_value);
+
if (profileDirName != NULL) {
- err = session_process(profileDirName, server_sync_type, process, error);
+ err = session_process(profileDirName, sync_type_value, process, error);
if (err != SE_INTERNAL_OK) {
_DEBUG_ERROR("failed to send noti");
goto error;
@@ -112,8 +176,10 @@ static se_error_type_e _session_process(int account_id, alert_type_e server_sync
}
error:
- if (profileDirName != NULL)
+ if (profileDirName != NULL) {
free(profileDirName);
+ profileDirName = NULL;
+ }
_INNER_FUNC_EXIT;
@@ -133,6 +199,8 @@ static se_error_type_e __process_update(int account_id, alert_type_e server_sync
char *sync_type = NULL;
char *operation = NULL;
char *progress = NULL;
+ int sync_type_value = 0;
+ int uri_value = 0;
bool result;
result = get_config(account_id, DEFINE_CONFIG_KEY_PROFILE_DIR_NAME, &profileDirName);
@@ -157,6 +225,8 @@ static se_error_type_e __process_update(int account_id, alert_type_e server_sync
}
sync_type = __convert_sync_type_str(server_sync_type);
+ sync_type_value = __convert_alert_to_sync_type_value(server_sync_type);
+ _DEBUG_INFO("sync_type_value: [%d]", sync_type_value);
progress = ___convert_sync_progress_status_str(progress_status);
@@ -171,8 +241,15 @@ static se_error_type_e __process_update(int account_id, alert_type_e server_sync
if (datastoreinfo_per_content_type[content_type]->source != NULL)
uri = strdup(datastoreinfo_per_content_type[content_type]->source);
}
+ if (uri != NULL) {
+ uri_value = __convert_src_uri_value(uri);
+ _DEBUG_INFO("uri_value: [%d]", uri_value);
+ } else {
+ _DEBUG_ERROR("uri is NULL!!");
+ goto error;
+ }
- err = send_noti_process_update(profileDirName, sync_type, uri, progress, operation, is_from_server, 0, 0, sync_result->number_of_change, sync_result->add_count + sync_result->replace_count + sync_result->delete_count);
+ err = send_noti_process_update(profileDirName, sync_type_value, uri_value, progress, operation, is_from_server, 0, 0, sync_result->number_of_change, sync_result->add_count + sync_result->replace_count + sync_result->delete_count);
if (err != SE_INTERNAL_OK) {
_DEBUG_ERROR("failed in send_noti_process_update");
goto error;
@@ -965,7 +1042,7 @@ static se_error_type_e _assemble_changed_datastores(int account_id, alert_type_e
/*_DEBUG_TRACE("sync_agent_refresh_item_tbl_from_service");
sync_agent_refresh_item_tbl_from_service(account_id, datastoreinfo_per_content_type[content_type]->plugin_type);*/
- /* Delete All item (include changelog), before adapting server item data… */
+ /* Delete All item (include changelog), before adapting server item data */
_DEBUG_TRACE("sync_agent_begin_service = %d", datastoreinfo_per_content_type[content_type]->datastore_id);
sync_agent_begin_service(datastoreinfo_per_content_type[content_type]->datastore_id);
sync_agent_begin_transaction();
@@ -1072,7 +1149,16 @@ static se_error_type_e _assemble_changed_datastores(int account_id, alert_type_e
}
_DEBUG_TRACE("sync_agent_end_service = %d", datastoreinfo_per_content_type[content_type]->datastore_id);
- sync_agent_end_service(datastoreinfo_per_content_type[content_type]->datastore_id, 1);
+ da_err = sync_agent_end_service(datastoreinfo_per_content_type[content_type]->datastore_id, 1);
+ if (da_err != SYNC_AGENT_DA_SUCCESS) {
+
+ sync_agent_end_transaction(SYNC_AGENT_DA_TRANSACTION_COMMIT);
+ sync_agent_free_item_list(item_list);
+
+ _DEBUG_ERROR("failed in sync_agent_end_service !!");
+ err = SE_INTERNAL_DA_ERROR;
+ goto error;
+ }
sync_agent_end_transaction(SYNC_AGENT_DA_TRANSACTION_COMMIT);
sync_agent_free_item_list(item_list);
}
@@ -2416,6 +2502,9 @@ static char *_convert_sync_progress_str(sync_progress_e process)
case PROGRESS_DONE:
syncProcess = DEFINE_SYNC_DONE;
break;
+ case PROGRESS_CANCEL:
+ syncProcess = DEFINE_SYNC_CANCEL;
+ break;
case PROGRESS_ERROR:
syncProcess = DEFINE_SYNC_ERROR;
break;
@@ -2775,7 +2864,7 @@ bool synchronize(int account_id, char *sync_mode, san_package_s * san_package)
bool cancel_status = check_cancel_status();
if (cancel_status) {
err = SE_INTERNAL_SUSPEND;
- _DEBUG_INFO("cancle flag is on");
+ _DEBUG_INFO("cancel_status is on");
goto suspend_part;
}
} else {
@@ -2790,7 +2879,7 @@ bool synchronize(int account_id, char *sync_mode, san_package_s * san_package)
bool cancel_status = check_cancel_status();
if (cancel_status) {
err = SE_INTERNAL_SUSPEND;
- _DEBUG_INFO("cancle flag is on");
+ _DEBUG_INFO("cancel_status is on");
goto suspend_part;
}
}
@@ -2838,8 +2927,10 @@ bool synchronize(int account_id, char *sync_mode, san_package_s * san_package)
suspend_part:
errorCode = suspend_sync(TRANSPORT_TYPE, account_id, server_flag);
+
if (errorCode != COMMON_OK) {
- _DEBUG_ERROR("Failed in suspend_sync = %d", errorCode);
+ _DEBUG_ERROR("failed in suspend_sync = %d",errorCode);
+
err = SE_INTERNAL_SA_ERROR;
if (errorCode == COMMON_SUSPEND_FAIL)
_off_resume_flag(account_id);
@@ -2968,8 +3059,6 @@ void convert_common_errorcode(common_error_type_e errorCode, sync_progress_e * p
_EXTERN_FUNC_ENTER;
switch (errorCode) {
- case COMMON_CANCEL:
- case COMMON_SUSPEND_FAIL:
case COMMON_OK: /*ERROR_INTERNAL_OK */
{
/* Do nothing : Error None
@@ -2982,6 +3071,13 @@ void convert_common_errorcode(common_error_type_e errorCode, sync_progress_e * p
*error = ERROR_NONE;
}
break;
+ case COMMON_SUSPEND_FAIL:
+ case COMMON_CANCEL:
+ {
+ *process = PROGRESS_CANCEL;
+ *error = ERROR_NONE;
+ }
+ break;
case COMMON_MISCONFIGURATION: /*ERROR_INTERNAL_MISCONFIGURATION : need configure infomation (account_id, id, pw, server_url...) */
{
*process = PROGRESS_ERROR;
@@ -3046,12 +3142,15 @@ void convert_engine_errorcode(se_error_type_e err, sync_progress_e * process, sy
_EXTERN_FUNC_ENTER;
switch (err) {
- case SE_INTERNAL_SUSPEND:
- case SE_INTERNAL_CANCEL:
case SE_INTERNAL_OK:
*process = PROGRESS_DONE;
*error = ERROR_NONE;
break;
+ case SE_INTERNAL_SUSPEND:
+ case SE_INTERNAL_CANCEL:
+ *process = PROGRESS_CANCEL;
+ *error = ERROR_NONE;
+ break;
case ERROR_UNKNOWN:
case SE_INTERNAL_SA_ERROR:
case SE_INTERNAL_SCHEDULER_ERROR:
@@ -3096,8 +3195,11 @@ se_error_type_e session_process(char *profileDirName, alert_type_e server_sync_t
char *sync_type = NULL;
char *syncProcess = NULL;
char *syncError = NULL;
+ int sync_type_value = 0;
sync_type = __convert_sync_type_str(server_sync_type);
+ sync_type_value = __convert_alert_to_sync_type_value(server_sync_type);
+ _DEBUG_INFO("sync_type_value: [%d]", sync_type_value);
syncProcess = _convert_sync_progress_str(process);
@@ -3108,7 +3210,7 @@ se_error_type_e session_process(char *profileDirName, alert_type_e server_sync_t
goto error;
}
- err = send_noti_session_process(profileDirName, sync_type, syncProcess, syncError);
+ err = send_noti_session_process(profileDirName, sync_type_value, syncProcess, syncError);
if (err != SE_INTERNAL_OK) {
_DEBUG_ERROR("failed in send_noti_session_process");
goto error;