#include <sqlite3.h>
#include <tzplatform_config.h>
#include <gio/gio.h>
+#include <vconf.h>
#include "media_controller_private.h"
#include "media_controller_db_util.h"
return is_latest;
}
+static int __mc_update_latest_server_info(void *handle, const char *server_name, mc_server_state_e server_state, mc_playback_states_e playback_state, gboolean update_server_name)
+{
+ int ret = MEDIA_CONTROLLER_ERROR_NONE;
+ char *sql_str = NULL;
+
+ mc_retvm_if(!MC_STRING_VALID(server_name), MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "invalid server_name");
+
+ mc_secure_debug("server_name [%s], server_state [%d], playback_state [%d] update_server_name[%d]", server_name, server_state, playback_state, update_server_name);
+
+ /* Update DB */
+ if (handle) {
+ sql_str = sqlite3_mprintf(DB_UPDATE_STATE_PLAYBACK, server_name, server_state, playback_state);
+ ret = mc_db_util_update_db(handle, sql_str);
+ SQLITE3_SAFE_FREE(sql_str);
+ mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, ret, "fail to mc_db_util_update_db [%d]", ret);
+ }
+
+ /* Update vconf */
+ if (update_server_name) {
+ ret = vconf_set_str(VCONFKEY_MEDIA_CONTROLLER_LATEST_SERVER_NAME, server_name);
+ if (ret != VCONF_OK)
+ mc_error("fail to set latest server name [%d]", ret);
+ }
+
+ ret = vconf_set_int(VCONFKEY_MEDIA_CONTROLLER_LATEST_SERVER_STATE, server_state);
+ if (ret != VCONF_OK)
+ mc_error("fail to set latest server state [%d]", ret);
+
+ ret = vconf_set_int(VCONFKEY_MEDIA_CONTROLLER_LATEST_SERVER_PLAYBACK_STATE, playback_state);
+ if (ret != VCONF_OK)
+ mc_error("fail to set latest server playback state [%d]", ret);
+
+ return ret;
+}
static int __mc_update_dead_server(void *handle, const char *server_name)
{
/* Update server_state to deactivated, if the server is latest.
* Drop the table of server_name, if it is not latest.
*/
- if (__mc_db_is_latest(handle, server_name))
- sql_str = sqlite3_mprintf(DB_UPDATE_STATE_PLAYBACK, server_name, MC_SERVER_STATE_DEACTIVATE, MC_PLAYBACK_STATE_STOPPED);
- else
+ if (__mc_db_is_latest(handle, server_name)) {
+ ret = __mc_update_latest_server_info(handle, server_name, MC_SERVER_STATE_DEACTIVATE, MC_PLAYBACK_STATE_STOPPED, FALSE);
+ } else {
sql_str = sqlite3_mprintf(DB_DROP_TABLE, server_name);
-
- mc_retvm_if(!MC_STRING_VALID(sql_str), MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "SQL string is null");
-
- ret = mc_db_util_update_db(handle, sql_str);
- if (ret != MEDIA_CONTROLLER_ERROR_NONE)
- mc_secure_error("Error mc_db_util_update_db %d", ret);
-
- SQLITE3_SAFE_FREE(sql_str);
+ ret = mc_db_util_update_db(handle, sql_str);
+ SQLITE3_SAFE_FREE(sql_str);
+ }
return ret;
}
int mc_db_util_init_latest_server_table(void *handle)
{
int ret = MEDIA_CONTROLLER_ERROR_NONE;
- char *sql_str = NULL;
char *latest_server_name = NULL;
mc_retvm_if(handle == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Handle is NULL");
mc_retvm_if(latest_server_name == NULL, MEDIA_CONTROLLER_ERROR_NONE, "[No-Error] latest_server does not exist");
/* Update server_state and playback_state to 0 */
- sql_str = sqlite3_mprintf(DB_UPDATE_STATE_PLAYBACK, latest_server_name, MC_SERVER_STATE_DEACTIVATE, MC_PLAYBACK_STATE_STOPPED);
+ ret = __mc_update_latest_server_info(handle, latest_server_name, MC_SERVER_STATE_DEACTIVATE, MC_PLAYBACK_STATE_STOPPED, FALSE);
MC_SAFE_FREE(latest_server_name);
- mc_retvm_if(!MC_STRING_VALID(sql_str), MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "SQL string is null");
-
- ret = mc_db_util_update_db(handle, sql_str);
-
- SQLITE3_SAFE_FREE(sql_str);
return ret;
}
char *sql_str = NULL;
gchar **params = NULL;
int i_value = 0;
- int i_value_1 = 0;
unsigned long long llu_value = 0, llu_value2 = 0;
void* _db_handle = NULL;
gboolean is_query_from_client = FALSE;
goto ERROR;
}
- if (strncmp(MC_DB_CMD_UPDATE_STATE_PLAYBACK, params[0], strlen(MC_DB_CMD_UPDATE_STATE_PLAYBACK)) == 0) {
- if (params[2] == NULL || params[3] == NULL) {
- mc_error("wrong query");
- ret = MEDIA_CONTROLLER_ERROR_INVALID_OPERATION;
- goto ERROR;
- }
-
- mc_safe_strtoi(params[2], &i_value);
- mc_safe_strtoi(params[3], &i_value_1);
-
- sql_str = sqlite3_mprintf(DB_UPDATE_STATE_PLAYBACK, params[1], i_value, i_value_1);
-
- } else if (strncmp(MC_DB_CMD_UPDATE_PLAYBACK, params[0], strlen(MC_DB_CMD_UPDATE_PLAYBACK)) == 0) {
- sql_str = params[1];
+ if (strncmp(MC_DB_CMD_UPDATE_PLAYBACK, params[0], strlen(MC_DB_CMD_UPDATE_PLAYBACK)) == 0) {
+ sql_str = params[3];
is_query_from_client = TRUE;
} else if (strncmp(MC_DB_CMD_UPDATE_META, params[0], strlen(MC_DB_CMD_UPDATE_META)) == 0) {
if (ret != MEDIA_CONTROLLER_ERROR_NONE)
mc_error("media_db_update_db error : %d", ret);
+ /* Update vconf */
+ if (strncmp(MC_DB_CMD_UPDATE_LATEST, params[0], strlen(MC_DB_CMD_UPDATE_LATEST)) == 0) {
+ ret = __mc_update_latest_server_info(NULL, params[1], MC_SERVER_STATE_ACTIVATE, MC_PLAYBACK_STATE_PLAYING, TRUE);
+
+ } else if (strncmp(MC_DB_CMD_UPDATE_PLAYBACK, params[0], strlen(MC_DB_CMD_UPDATE_PLAYBACK)) == 0) {
+ if (__mc_db_is_latest(_db_handle, params[1])) {
+ mc_safe_strtoi(params[2], &i_value);
+ ret = __mc_update_latest_server_info(NULL, params[1], MC_SERVER_STATE_ACTIVATE, i_value, FALSE);
+ }
+ }
+
mc_db_disconnect(_db_handle);
if (!is_query_from_client)
ret = mc_db_connect(&_db_handle, uid, TRUE);
if (ret != MEDIA_CONTROLLER_ERROR_NONE) {
mc_error("mc_db_connect error : %d", ret);
- goto ERROR;
+ mc_db_disconnect(_db_handle);
+ return ret;
}
- if (__mc_db_is_latest(_db_handle, app_id))
- sql_str = sqlite3_mprintf(DB_UPDATE_STATE_PLAYBACK, app_id, MC_SERVER_STATE_ACTIVATE, MC_PLAYBACK_STATE_STOPPED);
- else
+ if (__mc_db_is_latest(_db_handle, app_id)) {
+ ret = __mc_update_latest_server_info(_db_handle, app_id, MC_SERVER_STATE_ACTIVATE, MC_PLAYBACK_STATE_STOPPED, FALSE);
+ } else {
sql_str = sqlite3_mprintf(DB_CREATE_SERVER_TABLE, app_id, app_id, DB_META_FIELD, app_id, app_id);
-
- if (sql_str == NULL) {
- mc_error("sql_str is NULL");
- ret = MEDIA_CONTROLLER_ERROR_OUT_OF_MEMORY;
- goto ERROR;
+ ret = mc_db_util_update_db(_db_handle, sql_str);
+ SQLITE3_SAFE_FREE(sql_str);
}
- ret = mc_db_util_update_db(_db_handle, sql_str);
- if (ret != MEDIA_CONTROLLER_ERROR_NONE)
- mc_error("media_db_update_db error : %d", ret);
-
-ERROR:
- SQLITE3_SAFE_FREE(sql_str);
mc_db_disconnect(_db_handle);
mc_debug_fleave();
ret = mc_db_connect(&_db_handle, uid, TRUE);
if (ret != MEDIA_CONTROLLER_ERROR_NONE) {
mc_error("mc_db_connect error : %d", ret);
- goto ERROR;
+ mc_db_disconnect(_db_handle);
+ return ret;
}
- if (__mc_db_is_latest(_db_handle, app_id))
- sql_str = sqlite3_mprintf(DB_UPDATE_STATE_PLAYBACK, app_id, MC_SERVER_STATE_DEACTIVATE, MC_PLAYBACK_STATE_STOPPED);
- else
+ if (__mc_db_is_latest(_db_handle, app_id)) {
+ ret = __mc_update_latest_server_info(_db_handle, app_id, MC_SERVER_STATE_DEACTIVATE, MC_PLAYBACK_STATE_STOPPED, FALSE);
+ } else {
sql_str = sqlite3_mprintf(DB_DROP_TABLE, app_id);
-
- if (sql_str == NULL) {
- mc_error("sql_str is NULL");
- ret = MEDIA_CONTROLLER_ERROR_OUT_OF_MEMORY;
- goto ERROR;
+ ret = mc_db_util_update_db(_db_handle, sql_str);
+ SQLITE3_SAFE_FREE(sql_str);
}
- ret = mc_db_util_update_db(_db_handle, sql_str);
- if (ret != MEDIA_CONTROLLER_ERROR_NONE)
- mc_error("media_db_update_db error : %d", ret);
-
-ERROR:
- SQLITE3_SAFE_FREE(sql_str);
mc_db_disconnect(_db_handle);
mc_debug_fleave();