[MPR-1333]Keep latest server's metadata. and bug fix of server/playback state when... 13/172713/5
authorhj kim <backto.kim@samsung.com>
Thu, 15 Mar 2018 09:56:40 +0000 (18:56 +0900)
committerhj kim <backto.kim@samsung.com>
Thu, 29 Mar 2018 07:49:10 +0000 (16:49 +0900)
Change-Id: Id5f7b721b6ec451df673bfb67cca1f191b4c5c09

include/media_controller_db.h
src/media_controller_db.c
src/media_controller_ipc.c
src/media_controller_server.c
svc/media_controller_db_util.c

index 3ffaf141bcd3e250484c2ab269a7bb1c9729183f..81a05d344f5e889d7fc94856b80bc8bf2df700b9 100755 (executable)
@@ -88,6 +88,7 @@ int mc_db_delete_server_address_from_table(void *db_handle, const char *table_na
 
 int mc_db_foreach_server_list(void *handle, mc_activated_server_cb callback, void *user_data);
 int mc_db_update_server_state(void *handle, const char *server_name, mc_server_state_e server_state);
+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 mc_db_update_latest_server_table(void *handle, const char *server_name);
 
 
index 7f8232f208d615727d36812b566a3d70c88bdc5b..c6eb60b3b2143a4bd9cd828b6c68e1672a907868 100755 (executable)
@@ -689,6 +689,22 @@ int mc_db_update_server_state(void *handle, const char *server_name, mc_server_s
        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)
 {
index 5bde8e9aceba20cffe604f9a64318617f43630c9..02931b7d1efa7fa85a3905c239fc6dcfc55e9d40 100755 (executable)
@@ -325,7 +325,7 @@ int mc_ipc_send_message_to_server(mc_msg_type_e msg_type, const int type, const
                return MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER;
        }
 
-       mc_error("type [%d], message [%s]", type, request_msg);
+       mc_info("type [%d], message [%s]", type, request_msg);
 
        mc_comm_msg_s send_msg;
        memset((void *)&send_msg, 0, sizeof(mc_comm_msg_s));
index b023f4501cfca3b3e10bc89e74065c2afb15a9d9..326ad89f089af3ab0f60406188e6744c65bf4174 100755 (executable)
@@ -832,6 +832,7 @@ int mc_server_create(mc_server_h *server)
        int ret = MEDIA_CONTROLLER_ERROR_NONE;
        media_controller_server_s *mc_server = NULL;
        bool table_exist = FALSE;
+       bool is_latest = FALSE;
 
        mc_debug_fenter();
 
@@ -858,7 +859,25 @@ int mc_server_create(mc_server_h *server)
                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);
@@ -873,18 +892,20 @@ int mc_server_create(mc_server_h *server)
                }
        }
 
-       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);
@@ -925,9 +946,9 @@ int mc_server_destroy(mc_server_h server)
 
        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)
index 157be4ff599e2fed7aa9229a2b6d64e4a4d79b6e..ec9f0cba652e96fc5142e9a9606a02f59075ddd4 100755 (executable)
@@ -126,9 +126,7 @@ static int __mc_create_server_list_table(sqlite3 *handle)
        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);
 
@@ -366,8 +364,8 @@ int mc_db_util_init_latest_server_table(void *handle)
 
        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);