return ret;
}
+int mc_db_update_server_and_playback_state(void *handle, const char *server_name, mc_server_state_e server_state, mc_playback_states_e playback_state)
+{
+ int ret = MEDIA_CONTROLLER_ERROR_NONE;
+ char *sql_str = NULL;
+
+ mc_retvm_if(handle == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Handle is NULL");
+ mc_retvm_if(server_name == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "server_name is NULL");
+
+ sql_str = sqlite3_mprintf("UPDATE '%q' SET server_state=%d, playback_state=%d;", server_name, server_state, playback_state);
+
+ ret = __mc_db_update_db(handle, sql_str);
+
+ SQLITE3_SAFE_FREE(sql_str);
+
+ return ret;
+}
int mc_db_update_latest_server_table(void *handle, const char *server_name)
{
int ret = MEDIA_CONTROLLER_ERROR_NONE;
media_controller_server_s *mc_server = NULL;
bool table_exist = FALSE;
+ bool is_latest = FALSE;
mc_debug_fenter();
return ret;
}
- if (table_exist) {
+ ret = __mc_server_current_is_latest(mc_server, &is_latest);
+
+ if (table_exist && is_latest) {
+ //To keep latest server's metadata
+ ret = mc_db_delete_server_address_from_table(mc_server->db_handle, MC_DB_TABLE_SERVER_LIST, mc_server->server_name);
+ if (ret != MEDIA_CONTROLLER_ERROR_NONE) {
+ mc_error("mc_db_delete_server_address_from_table failed [%d]", ret);
+ __mc_server_destoy(mc_server);
+ return ret;
+ }
+
+ ret = mc_db_update_server_and_playback_state(mc_server->db_handle, mc_server->server_name, MC_SERVER_STATE_ACTIVATE, MC_PLAYBACK_STATE_STOPPED);
+ if (ret != MEDIA_CONTROLLER_ERROR_NONE) {
+ mc_error("mc_db_update_server_and_playback_state failed [%d]", ret);
+ __mc_server_destoy(mc_server);
+ return ret;
+ }
+
+ } else if (table_exist) {
ret = mc_db_delete_server_table(mc_server->db_handle, mc_server->server_name);
if (ret != MEDIA_CONTROLLER_ERROR_NONE) {
mc_error("mc_db_delete_server_table failed [%d]", ret);
}
}
- ret = mc_db_create_server_table(mc_server->db_handle, mc_server->server_name);
- if (ret != MEDIA_CONTROLLER_ERROR_NONE) {
- mc_error("fail mc_db_clear_table [%d]", ret);
- __mc_server_destoy(mc_server);
- return ret;
- }
+ if (!(table_exist && is_latest)) {
+ ret = mc_db_create_server_table(mc_server->db_handle, mc_server->server_name);
+ if (ret != MEDIA_CONTROLLER_ERROR_NONE) {
+ mc_error("fail mc_db_clear_table [%d]", ret);
+ __mc_server_destoy(mc_server);
+ return ret;
+ }
- ret = mc_db_insert_server_address_into_table(mc_server->db_handle, mc_server->server_name, mc_server->server_name);
- if (ret != MEDIA_CONTROLLER_ERROR_NONE) {
- mc_error("fail mc_db_insert_server_address_into_table [%d]", ret);
- __mc_server_destoy(mc_server);
- return ret;
+ ret = mc_db_insert_server_address_into_table(mc_server->db_handle, mc_server->server_name, mc_server->server_name);
+ if (ret != MEDIA_CONTROLLER_ERROR_NONE) {
+ mc_error("fail mc_db_insert_server_address_into_table [%d]", ret);
+ __mc_server_destoy(mc_server);
+ return ret;
+ }
}
ret = mc_db_insert_server_address_into_table(mc_server->db_handle, MC_DB_TABLE_SERVER_LIST, mc_server->server_name);
ret = __mc_server_current_is_latest(mc_server, &is_latest);
if (is_latest) {
- ret = mc_db_update_server_state(mc_server->db_handle, mc_server->server_name, MC_SERVER_STATE_DEACTIVATE);
+ ret = mc_db_update_server_and_playback_state(mc_server->db_handle, mc_server->server_name, MC_SERVER_STATE_DEACTIVATE, MC_PLAYBACK_STATE_STOPPED);
if (ret != MEDIA_CONTROLLER_ERROR_NONE)
- mc_error("fail mc_db_delete_server_table [%d]", ret);
+ mc_error("mc_db_update_server_and_playback_state failed [%d]", ret);
} else {
ret = mc_db_delete_server_table(mc_server->db_handle, mc_server->server_name);
if (ret != MEDIA_CONTROLLER_ERROR_NONE)
int ret = MEDIA_CONTROLLER_ERROR_NONE;
char *sql_str = NULL;
- sql_str = sqlite3_mprintf("CREATE TABLE IF NOT EXISTS %s (\
- server_name TEXT PRIMARY KEY);",
- MC_DB_TABLE_SERVER_LIST);
+ sql_str = sqlite3_mprintf("CREATE TABLE IF NOT EXISTS %s (server_name TEXT PRIMARY KEY);", MC_DB_TABLE_SERVER_LIST);
ret = mc_db_util_update_db(handle, sql_str);
mc_retvm_if(latest_server_name == NULL, MEDIA_CONTROLLER_ERROR_OUT_OF_MEMORY, "latest_server is not exist");
- /* Update server_state and playbakc_state to 0 */
- sql_str = sqlite3_mprintf(DB_UPDATE_STATES, latest_server_name, MC_SERVER_STATE_NONE, MC_PLAYBACK_STATE_NONE);
+ /* Update server_state and playback_state to 0 */
+ sql_str = sqlite3_mprintf(DB_UPDATE_STATES, latest_server_name, MC_SERVER_STATE_DEACTIVATE, MC_PLAYBACK_STATE_STOPPED);
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);