From: jiyong.min Date: Tue, 3 Mar 2020 03:25:31 +0000 (+0900) Subject: Seperate 'params' variable from parsing and updating database X-Git-Tag: submit/tizen/20200310.225736~4 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=f5a3804347c24e834fb58c036810ad8ac56a61b8;p=platform%2Fcore%2Fapi%2Fmedia-controller.git Seperate 'params' variable from parsing and updating database Change-Id: I99023a723c8c56aaa9f9d9295d5fce2fca7d065b --- diff --git a/svc/include/media_controller_db_util.h b/svc/include/media_controller_db_util.h index 6960445..aac33d8 100644 --- a/svc/include/media_controller_db_util.h +++ b/svc/include/media_controller_db_util.h @@ -31,7 +31,7 @@ int mc_db_util_init_latest_server_table(sqlite3 *handle); int mc_db_util_delete_app_list(sqlite3 *handle); int mc_db_util_get_user_version(sqlite3 *handle, int *version); int mc_db_util_set_user_version(sqlite3 *handle); -int mc_db_parse_and_update_db(uid_t uid, const char *data, int data_size); +int mc_db_request(uid_t uid, const char *data, int data_size); int mc_db_add_application(uid_t uid, const char *app_id, mc_priv_type_e priv_type); int mc_db_remove_application(uid_t uid, const char *app_id, mc_priv_type_e priv_type); diff --git a/svc/media_controller_db_util.c b/svc/media_controller_db_util.c index efc8b73..ded1966 100644 --- a/svc/media_controller_db_util.c +++ b/svc/media_controller_db_util.c @@ -634,35 +634,23 @@ static void __playlist_cb(const char *key, const int type, const bundle_keyval_ *query_list = g_list_append(*query_list, sql_str); } -int mc_db_parse_and_update_db(uid_t uid, const char *data, int data_size) +static int __parse_and_update_db(uid_t uid, gchar **params) { int ret = MEDIA_CONTROLLER_ERROR_NONE; char *sql_str = NULL; - gchar **params = NULL; int i_value = 0; int i_value_1 = 0; int i_value_2 = 0; unsigned long long llu_value = 0, llu_value2 = 0; sqlite3* _db_handle = NULL; - mc_retvm_if(data == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "data is NULL"); - mc_retvm_if(data_size <= 0 , MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "invalid data_size"); - - params = g_strsplit(data, MC_STRING_DELIMITER, 0); - mc_retvm_if(params == NULL, MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "fail to parsing query"); - - if (!params[0] || !params[1]) { - mc_error("invalid query"); - g_strfreev(params); - return MEDIA_CONTROLLER_ERROR_INVALID_OPERATION; - } + mc_retvm_if(!params, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "invalid params"); + mc_retvm_if((!params[0] || !params[1]), + MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "invalid query"); if (strncmp(MC_DB_CMD_UPDATE_PLAYBACK, params[0], strlen(MC_DB_CMD_UPDATE_PLAYBACK)) == 0) { - if (!params[2] || !params[3] || !params[4] || !params[5]) { - mc_error("invalid query"); - g_strfreev(params); - return MEDIA_CONTROLLER_ERROR_INVALID_OPERATION; - } + mc_retvm_if((!params[2] || !params[3] || !params[4] || !params[5]), + MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "invalid query"); mc_safe_strtoi(params[2], &i_value); mc_safe_strtoull(params[3], &llu_value); @@ -689,21 +677,13 @@ int mc_db_parse_and_update_db(uid_t uid, const char *data, int data_size) __replace_null(params[14]), __replace_null(params[15])); } else if (strncmp(MC_DB_CMD_UPDATE_SHUFFLE, params[0], strlen(MC_DB_CMD_UPDATE_SHUFFLE)) == 0) { - if (!params[2]) { - mc_error("invalid query"); - g_strfreev(params); - return MEDIA_CONTROLLER_ERROR_INVALID_OPERATION; - } + mc_retvm_if(!params[2], MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "invalid query"); mc_safe_strtoi(params[2], &i_value); sql_str = sqlite3_mprintf("UPDATE %q SET shuffle_mode=%d WHERE name=%Q", MC_DB_TABLE_SERVER_INFO, i_value, params[1]); } else if (strncmp(MC_DB_CMD_UPDATE_REPEAT, params[0], strlen(MC_DB_CMD_UPDATE_REPEAT)) == 0) { - if (!params[2]) { - mc_error("invalid query"); - g_strfreev(params); - return MEDIA_CONTROLLER_ERROR_INVALID_OPERATION; - } + mc_retvm_if(!params[2], MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "invalid query"); mc_safe_strtoi(params[2], &i_value); sql_str = sqlite3_mprintf("UPDATE %q SET repeat_mode=%d WHERE name=%Q", MC_DB_TABLE_SERVER_INFO, i_value, params[1]); @@ -713,11 +693,7 @@ int mc_db_parse_and_update_db(uid_t uid, const char *data, int data_size) } else if (strncmp(MC_DB_CMD_ADD_PLAYLIST, params[0], strlen(MC_DB_CMD_ADD_PLAYLIST)) == 0) { - if (!params[2]) { - mc_error("invalid query"); - g_strfreev(params); - return MEDIA_CONTROLLER_ERROR_INVALID_OPERATION; - } + mc_retvm_if(!params[2], MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "invalid query"); sql_str = sqlite3_mprintf("INSERT INTO %q(server_name, playlist_name) VALUES (%Q, %Q)", MC_DB_TABLE_PLAYLIST, params[1], params[2]); @@ -728,19 +704,12 @@ int mc_db_parse_and_update_db(uid_t uid, const char *data, int data_size) int total_query_len = 0; int i = 0; - if (!params[2] || !params[3] || !params[4]) { - mc_error("invalid query"); - g_strfreev(params); - return MEDIA_CONTROLLER_ERROR_INVALID_OPERATION; - } + mc_retvm_if((!params[2] || !params[3] || !params[4]), + MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "invalid query"); mc_safe_strtoi(params[3], &i_value); bundle = bundle_decode((bundle_raw *)params[4], i_value); - if (!bundle) { - mc_error("invalid bundle_data"); - g_strfreev(params); - return MEDIA_CONTROLLER_ERROR_INVALID_OPERATION; - } + mc_retvm_if(!bundle, MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "invalid bundle_data"); mc_debug("bundle item count [%d]", bundle_get_count(bundle)); @@ -753,7 +722,6 @@ int mc_db_parse_and_update_db(uid_t uid, const char *data, int data_size) list_len = g_list_length(query_list); if (list_len < 3) { mc_error("invalid query_list len [%d]", list_len); - g_strfreev(params); return MEDIA_CONTROLLER_ERROR_INVALID_OPERATION; } @@ -783,11 +751,8 @@ int mc_db_parse_and_update_db(uid_t uid, const char *data, int data_size) sql_str = sqlite3_mprintf("UPDATE %q SET icon_uri=NULL WHERE name=%Q", MC_DB_TABLE_SERVER_INFO, params[1]); } else if (strncmp(MC_DB_CMD_UPDATE_ABILITY, params[0], strlen(MC_DB_CMD_UPDATE_ABILITY)) == 0) { - if (!params[2] || !params[3]) { - mc_error("invalid query"); - g_strfreev(params); - return MEDIA_CONTROLLER_ERROR_INVALID_OPERATION; - } + mc_retvm_if((!params[2] || !params[3]), + MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "invalid query"); mc_safe_strtoull(params[2], &llu_value); mc_safe_strtoull(params[3], &llu_value2); @@ -795,57 +760,36 @@ int mc_db_parse_and_update_db(uid_t uid, const char *data, int data_size) sql_str = sqlite3_mprintf("UPDATE %q SET ability_decided=%llu, ability_supported=%llu WHERE name=%Q", MC_DB_TABLE_SERVER_INFO, llu_value, llu_value2, params[1]); } else if (strncmp(MC_DB_CMD_REMOVE_PLAYLIST, params[0], strlen(MC_DB_CMD_REMOVE_PLAYLIST)) == 0) { - if (!params[2]) { - mc_error("invalid query"); - g_strfreev(params); - return MEDIA_CONTROLLER_ERROR_INVALID_OPERATION; - } + mc_retvm_if(!params[2], MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "invalid query"); sql_str = sqlite3_mprintf("DELETE FROM %q WHERE server_name=%Q and playlist_name=%Q", MC_DB_TABLE_PLAYLIST, params[1], params[2]); } else if (strncmp(MC_DB_CMD_UPDATE_SUBTITLES, params[0], strlen(MC_DB_CMD_UPDATE_SUBTITLES)) == 0) { - if (!params[2]) { - mc_error("invalid query"); - g_strfreev(params); - return MEDIA_CONTROLLER_ERROR_INVALID_OPERATION; - } + mc_retvm_if(!params[2], MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "invalid query"); mc_safe_strtoi(params[2], &i_value); sql_str = sqlite3_mprintf("UPDATE %q SET subtitles_mode=%d WHERE name=%Q", MC_DB_TABLE_SERVER_INFO, i_value, params[1]); } else if (strncmp(MC_DB_CMD_UPDATE_DISPLAY_MODE, params[0], strlen(MC_DB_CMD_UPDATE_DISPLAY_MODE)) == 0) { - if (!params[2]) { - mc_error("invalid query"); - g_strfreev(params); - return MEDIA_CONTROLLER_ERROR_INVALID_OPERATION; - } + mc_retvm_if(!params[2], MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "invalid query"); mc_safe_strtoi(params[2], &i_value); sql_str = sqlite3_mprintf("UPDATE %q SET display_mode=%d WHERE name=%Q", MC_DB_TABLE_SERVER_INFO, i_value, params[1]); } else if (strncmp(MC_DB_CMD_UPDATE_DISPLAY_ROTATION, params[0], strlen(MC_DB_CMD_UPDATE_DISPLAY_ROTATION)) == 0) { - if (!params[2]) { - mc_error("invalid query"); - g_strfreev(params); - return MEDIA_CONTROLLER_ERROR_INVALID_OPERATION; - } + mc_retvm_if(!params[2], MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "invalid query"); mc_safe_strtoi(params[2], &i_value); sql_str = sqlite3_mprintf("UPDATE %q SET display_rotation=%d WHERE name=%Q", MC_DB_TABLE_SERVER_INFO, i_value, params[1]); } else if (strncmp(MC_DB_CMD_UPDATE_360, params[0], strlen(MC_DB_CMD_UPDATE_360)) == 0) { - if (!params[2]) { - mc_error("invalid query"); - g_strfreev(params); - return MEDIA_CONTROLLER_ERROR_INVALID_OPERATION; - } + mc_retvm_if(!params[2], MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "invalid query"); mc_safe_strtoi(params[2], &i_value); sql_str = sqlite3_mprintf("UPDATE %q SET spherical_mode=%d WHERE name=%Q", MC_DB_TABLE_SERVER_INFO, i_value, params[1]); } else { mc_error("invalid request [%s]", params[0]); - g_strfreev(params); return MEDIA_CONTROLLER_ERROR_INVALID_OPERATION; } @@ -880,6 +824,22 @@ int mc_db_parse_and_update_db(uid_t uid, const char *data, int data_size) ret = MEDIA_CONTROLLER_ERROR_OUT_OF_MEMORY; } + return ret; +} + +int mc_db_request(uid_t uid, const char *data, int data_size) +{ + int ret = MEDIA_CONTROLLER_ERROR_NONE; + gchar **params = NULL; + + mc_retvm_if(!data, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "invalid data"); + mc_retvm_if(data_size <= 0 , MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "invalid data_size"); + + params = g_strsplit(data, MC_STRING_DELIMITER, 0); + mc_retvm_if(!params, MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "fail to parsing query"); + + ret = __parse_and_update_db(uid, params); + g_strfreev(params); return ret; diff --git a/svc/media_controller_svc.c b/svc/media_controller_svc.c index 394aa11..920f8d9 100644 --- a/svc/media_controller_svc.c +++ b/svc/media_controller_svc.c @@ -608,7 +608,7 @@ static gboolean __mc_service_process(gpointer data) send_msg = MEDIA_CONTROLLER_ERROR_INVALID_OPERATION; break; } - send_msg = mc_db_parse_and_update_db(request_msg->uid, request_msg->msg, request_msg->msg_size); + send_msg = mc_db_request(request_msg->uid, request_msg->msg, request_msg->msg_size); break; case MC_MSG_CLIENT_SET: