return mc_ipc_send_message_to_server(MC_MSG_DB_UPDATE, priv_type, sql_str);
}
-static int __mc_db_get_single_result(sqlite3 *handle, char *sql_str, sqlite3_stmt **stmt)
+static int __mc_db_get_record(sqlite3 *handle, char *sql_str, sqlite3_stmt **stmt)
{
int ret = SQLITE_OK;
+ sqlite3_stmt *statement = NULL;
mc_retvm_if(handle == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "invalid handle");
mc_retvm_if(stmt == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "sqlite3_stmt is null");
mc_retvm_if(!MC_STRING_VALID(sql_str), MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "SQL string is null");
- ret = sqlite3_prepare_v2(handle, sql_str, strlen(sql_str), stmt, NULL);
+ ret = sqlite3_prepare_v2(handle, sql_str, strlen(sql_str), &statement, NULL);
SQLITE3_SAFE_FREE(sql_str);
mc_retvm_if(ret != SQLITE_OK, MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "prepare error [%s]", sqlite3_errmsg(handle));
- if (sqlite3_step(*stmt) != SQLITE_ROW) {
+ if (sqlite3_step(statement) != SQLITE_ROW) {
mc_error("end of row [%s]", sqlite3_errmsg(handle));
- SQLITE3_FINALIZE(*stmt);
+ SQLITE3_FINALIZE(statement);
return MEDIA_CONTROLLER_ERROR_INVALID_OPERATION;
}
- return MEDIA_CONTROLLER_ERROR_NONE;
-}
-
-static int __mc_db_get_count(sqlite3 *handle, const char *sql_str)
-{
- int ret = MEDIA_CONTROLLER_ERROR_NONE;
- sqlite3_stmt *stmt = NULL;
- int count = 0;
-
- mc_retvm_if(handle == NULL, 0, "invalid handle");
- mc_retvm_if(sql_str == NULL, 0, "invalid sql_str");
-
- ret = sqlite3_prepare_v2(handle, sql_str, strlen(sql_str), &stmt, NULL);
- mc_retvm_if(SQLITE_OK != ret, 0, "prepare error [%s]", sqlite3_errmsg(handle));
-
- if (sqlite3_step(stmt) == SQLITE_ROW)
- count = sqlite3_column_int(stmt, 0);
- else
- mc_error("end of row [%s]", sqlite3_errmsg(handle));
-
- SQLITE3_FINALIZE(stmt);
+ *stmt = statement;
- return count;
+ return MEDIA_CONTROLLER_ERROR_NONE;
}
int mc_db_update_playback_info(const char *server_name, const media_controller_playback_s playback)
sql_str = sqlite3_mprintf("SELECT playback_state, playback_position, playlist_name, playlist_index, playback_content_type, age_rating FROM %q WHERE name=%Q",
MC_DB_TABLE_SERVER_INFO, server_name);
- ret = __mc_db_get_single_result(handle, sql_str, &stmt);
- mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, ret, "__mc_db_get_single_result failed [%d]", ret);
+ ret = __mc_db_get_record(handle, sql_str, &stmt);
+ mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, ret, "__mc_db_get_record failed [%d]", ret);
_playback = (media_controller_playback_s *)calloc(1, sizeof(media_controller_playback_s));
if (!_playback) {
sql_str = sqlite3_mprintf("SELECT %s FROM %q WHERE name=%Q", META_LIST, MC_DB_TABLE_LATEST_META, server_name);
- ret = __mc_db_get_single_result(handle, sql_str, &stmt);
- mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, ret, "__mc_db_get_single_result failed [%d]", ret);
+ ret = __mc_db_get_record(handle, sql_str, &stmt);
+ mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, ret, "__mc_db_get_record failed [%d]", ret);
ret = __mc_db_get_metadata(stmt, 0, metadata);
SQLITE3_FINALIZE(stmt);
sql_str = sqlite3_mprintf("SELECT shuffle_mode FROM %q WHERE name=%Q", MC_DB_TABLE_SERVER_INFO, server_name);
- ret = __mc_db_get_single_result(handle, sql_str, &stmt);
- mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, ret, "__mc_db_get_single_result failed [%d]", ret);
+ ret = __mc_db_get_record(handle, sql_str, &stmt);
+ mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, ret, "__mc_db_get_record failed [%d]", ret);
*mode = sqlite3_column_int(stmt, 0);
SQLITE3_FINALIZE(stmt);
sql_str = sqlite3_mprintf("SELECT repeat_mode FROM %q WHERE name=%Q", MC_DB_TABLE_SERVER_INFO, server_name);
- ret = __mc_db_get_single_result(handle, sql_str, &stmt);
- mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, ret, "__mc_db_get_single_result failed [%d]", ret);
+ ret = __mc_db_get_record(handle, sql_str, &stmt);
+ mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, ret, "__mc_db_get_record failed [%d]", ret);
*mode = sqlite3_column_int(stmt, 0);
SQLITE3_FINALIZE(stmt);
sql_str = sqlite3_mprintf("SELECT icon_uri FROM %q WHERE name=%Q", MC_DB_TABLE_SERVER_INFO, server_name);
- ret = __mc_db_get_single_result(handle, sql_str, &stmt);
- mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, ret, "__mc_db_get_single_result failed [%d]", ret);
+ ret = __mc_db_get_record(handle, sql_str, &stmt);
+ mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, ret, "__mc_db_get_record failed [%d]", ret);
*uri = g_strdup((const char *)sqlite3_column_text(stmt, 0));
SQLITE3_FINALIZE(stmt);
sql_str = sqlite3_mprintf("SELECT ability_decided, ability_supported FROM %q WHERE name=%Q", MC_DB_TABLE_SERVER_INFO, server_name);
- ret = __mc_db_get_single_result(handle, sql_str, &stmt);
- mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, ret, "__mc_db_get_single_result failed [%d]", ret);
+ ret = __mc_db_get_record(handle, sql_str, &stmt);
+ mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, ret, "__mc_db_get_record failed [%d]", ret);
*decided = (unsigned long long)sqlite3_column_int64(stmt, 0);
*supported = (unsigned long long)sqlite3_column_int64(stmt, 1);
int _mc_db_get_playlist_count(sqlite3 *handle, const char *server_name)
{
+ int ret = MEDIA_CONTROLLER_ERROR_NONE;
char *sql_str = NULL;
int count = 0;
+ sqlite3_stmt *stmt = NULL;
mc_retvm_if(handle == NULL, 0, "invalid handle");
mc_retvm_if(server_name == NULL, 0, "invalid server_name");
sql_str = sqlite3_mprintf("SELECT COUNT(DISTINCT playlist_name) FROM %q WHERE server_name = %Q", MC_DB_TABLE_PLAYLIST, server_name);
- mc_retvm_if(!MC_STRING_VALID(sql_str), 0, "SQL string is null");
- count = __mc_db_get_count(handle, sql_str);
- SQLITE3_SAFE_FREE(sql_str);
+ ret = __mc_db_get_record(handle, sql_str, &stmt);
+ mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, 0, "__mc_db_get_record failed [%d]", ret);
+
+ count = sqlite3_column_int(stmt, 0);
+ SQLITE3_FINALIZE(stmt);
return count;
}
gboolean _mc_db_is_playlist_exist(sqlite3 *handle, const char *server_name, const char *playlist_name)
{
+ int ret = MEDIA_CONTROLLER_ERROR_NONE;
char *sql_str = NULL;
- int count = 0;
+ sqlite3_stmt *stmt = NULL;
mc_retvm_if(!handle, FALSE, "Invalid handle");
mc_retvm_if(!server_name, FALSE, "Invalid server_name");
mc_retvm_if(!playlist_name, FALSE, "Invalid playlist_name");
sql_str = sqlite3_mprintf("SELECT COUNT(*) FROM %q WHERE server_name=%Q AND playlist_name=%Q", MC_DB_TABLE_PLAYLIST, server_name, playlist_name);
- mc_retvm_if(!MC_STRING_VALID(sql_str), MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "SQL string is null");
- count = __mc_db_get_count(handle, sql_str);
- SQLITE3_SAFE_FREE(sql_str);
+ ret = __mc_db_get_record(handle, sql_str, &stmt);
+ mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, FALSE, "__mc_db_get_record failed [%d]", ret);
- if (count > 0)
- return TRUE;
+ ret = sqlite3_column_int(stmt, 0);
+ SQLITE3_FINALIZE(stmt);
- return FALSE;
+ return (ret == 0) ? FALSE : TRUE;
}
int mc_db_get_playlist_by_name(sqlite3 *handle, mc_priv_type_e type, const char *controller_name, const char *playlist_name, mc_playlist_h *playlist)
int _mc_db_get_playlist_item_count(sqlite3 *handle, const char *server_name, char *playlist_name)
{
+ int ret = MEDIA_CONTROLLER_ERROR_NONE;
char *sql_str = NULL;
int count = 0;
+ sqlite3_stmt *stmt = NULL;
mc_retvm_if(handle == NULL, 0, "invalid handle");
mc_retvm_if(server_name == NULL, 0, "invalid server_name");
mc_retvm_if(playlist_name == NULL, 0, "invalid playlist_name");
sql_str = sqlite3_mprintf("SELECT COUNT(*) FROM %q WHERE server_name=%Q AND playlist_name=%Q AND item_index IS NOT NULL", MC_DB_TABLE_PLAYLIST, server_name, playlist_name);
- mc_retvm_if(!MC_STRING_VALID(sql_str), 0, "SQL string is null");
- count = __mc_db_get_count(handle, sql_str);
- SQLITE3_SAFE_FREE(sql_str);
+ ret = __mc_db_get_record(handle, sql_str, &stmt);
+ mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, 0, "__mc_db_get_record failed [%d]", ret);
+
+ count = sqlite3_column_int(stmt, 0);
+ SQLITE3_FINALIZE(stmt);
return count;
}
gboolean mc_db_is_exist_server(sqlite3 *handle, const char *server_name)
{
+ int ret = MEDIA_CONTROLLER_ERROR_NONE;
char *sql_str = NULL;
- int count = 0;
+ sqlite3_stmt *stmt = NULL;
mc_retvm_if(handle == NULL, FALSE, "Handle is NULL");
mc_retvm_if(server_name == NULL, FALSE, "server_name is NULL");
mc_secure_debug("server_name [%s]", server_name);
sql_str = sqlite3_mprintf("SELECT COUNT(*) FROM %q WHERE name='%q'", MC_DB_TABLE_SERVER_INFO, server_name);
- mc_retvm_if(!MC_STRING_VALID(sql_str), FALSE, "SQL string is null");
- count = __mc_db_get_count(handle, sql_str);
- SQLITE3_SAFE_FREE(sql_str);
+ ret = __mc_db_get_record(handle, sql_str, &stmt);
+ mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, FALSE, "__mc_db_get_record failed [%d]", ret);
- if (count <= 0) {
- mc_debug("No server info [%s]", server_name);
- mc_db_foreach_server_list(handle, NULL, NULL);
+ ret = sqlite3_column_int(stmt, 0);
+ SQLITE3_FINALIZE(stmt);
+ if (ret == 0) {
+ mc_secure_error("No server info [%s]", server_name);
+ mc_db_foreach_server_list(handle, NULL, NULL);
return FALSE;
}
gboolean _mc_db_is_activated_client(sqlite3 *handle, const char *client_name)
{
+ int ret = MEDIA_CONTROLLER_ERROR_NONE;
char *sql_str = NULL;
- int count = 0;
+ sqlite3_stmt *stmt = NULL;
mc_retvm_if(handle == NULL, FALSE, "Handle is NULL");
mc_retvm_if(client_name == NULL, FALSE, "client_name is NULL");
mc_secure_debug("client name [%s]", client_name);
sql_str = sqlite3_mprintf("SELECT COUNT(*) FROM %q WHERE name='%q' AND type=%d", MC_DB_TABLE_APP_LIST, client_name, MC_PRIV_TYPE_CLIENT);
- mc_retvm_if(!MC_STRING_VALID(sql_str), FALSE, "SQL string is null");
- count = __mc_db_get_count(handle, sql_str);
- SQLITE3_SAFE_FREE(sql_str);
+ ret = __mc_db_get_record(handle, sql_str, &stmt);
+ mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, FALSE, "__mc_db_get_record failed [%d]", ret);
+
+ ret = sqlite3_column_int(stmt, 0);
+ SQLITE3_FINALIZE(stmt);
- if (count <= 0) {
+ if (ret == 0) {
mc_secure_error("[%s] is not activated", client_name);
mc_db_foreach_client_list(handle, NULL, NULL);
-
return FALSE;
}
gboolean _mc_db_is_activated_server(sqlite3 *handle, const char *server_name)
{
+ int ret = MEDIA_CONTROLLER_ERROR_NONE;
char *sql_str = NULL;
- int count = 0;
+ sqlite3_stmt *stmt = NULL;
mc_retvm_if(handle == NULL, FALSE, "Handle is NULL");
mc_retvm_if(server_name == NULL, FALSE, "server_name is NULL");
mc_secure_debug("server name [%s]", server_name);
sql_str = sqlite3_mprintf("SELECT COUNT(*) FROM %q WHERE name='%q' AND type=%d", MC_DB_TABLE_APP_LIST, server_name, MC_PRIV_TYPE_SERVER);
- mc_retvm_if(!MC_STRING_VALID(sql_str), FALSE, "SQL string is null");
- count = __mc_db_get_count(handle, sql_str);
- SQLITE3_SAFE_FREE(sql_str);
+ ret = __mc_db_get_record(handle, sql_str, &stmt);
+ mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, FALSE, "__mc_db_get_record failed [%d]", ret);
- if (count <= 0) {
+ ret = sqlite3_column_int(stmt, 0);
+ SQLITE3_FINALIZE(stmt);
+
+ if (ret == 0) {
mc_secure_error("[%s] is not activated", server_name);
mc_db_foreach_server_list(handle, NULL, NULL);
-
return FALSE;
}
gboolean _mc_db_is_latest_server(sqlite3 *handle, const char *server_name)
{
+ int ret = MEDIA_CONTROLLER_ERROR_NONE;
char *sql_str = NULL;
- int count = 0;
+ sqlite3_stmt *stmt = NULL;
mc_retvm_if(!handle, FALSE, "Handle is NULL");
mc_retvm_if(!server_name, FALSE, "server_name is NULL");
mc_secure_debug("server name [%s]", server_name);
sql_str = sqlite3_mprintf("SELECT COUNT(*) FROM %q WHERE name=%Q", MC_DB_TABLE_LATEST_SERVER, server_name);
- mc_retvm_if(!MC_STRING_VALID(sql_str), FALSE, "SQL string is null");
- count = __mc_db_get_count(handle, sql_str);
- SQLITE3_SAFE_FREE(sql_str);
+ ret = __mc_db_get_record(handle, sql_str, &stmt);
+ mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, FALSE, "__mc_db_get_record failed [%d]", ret);
- if (count <= 0) {
- mc_secure_debug("[%s] is not latest", server_name);
- return FALSE;
- }
+ ret = sqlite3_column_int(stmt, 0);
+ SQLITE3_FINALIZE(stmt);
- return TRUE;
+ return (ret == 0) ? FALSE : TRUE;
}
-
int mc_db_foreach_server_list(sqlite3 *handle, mc_activated_server_cb callback, void *user_data)
{
int ret = MEDIA_CONTROLLER_ERROR_NONE;