Send service state when preparing is succeeded 13/288013/1
authorSuyeon Hwang <stom.hwang@samsung.com>
Thu, 29 Dec 2022 09:04:34 +0000 (18:04 +0900)
committerSuyeon Hwang <stom.hwang@samsung.com>
Thu, 9 Feb 2023 05:31:21 +0000 (14:31 +0900)
- Requirement:
Client library needs to get current service state when preparing is
succeeded.

- Contents:
This patch makes engine library send service state to client library.
To implement on-demand repreparing, client library needs to maintain
current service state. Through this patch, client library can get
service state in preparing protocol.

Change-Id: I7d8b7fb261401abcb230610aac0fd645bab015a1
Signed-off-by: Suyeon Hwang <stom.hwang@samsung.com>
server/ttsd_dbus_server.c
server/ttsd_server.c
server/ttsd_server.h
server/ttsd_tidl.c

index e299b87d76612fbb4e5d8dbb853de26e115abd72..037d8c8e4059178c1de12cd227eb6d8399f57078 100644 (file)
@@ -47,13 +47,13 @@ int ttsd_dbus_server_hello(DBusConnection* conn, DBusMessage* msg)
                SLOG(LOG_INFO, tts_tag(), "[IN] ttsd hello : pid(%d), uid(%u), mode(%d)", pid, uid, mode);
                bool is_initialized = false;
                bool is_credential_needed = false;
-               int service_state = TTSD_STATE_INVALID;
+               ttsd_state_e service_state = TTSD_STATE_INVALID;
                int credential_needed = 0;
                int ret = -1;
 
                ttsd_server_is_already_initialized(pid, uid, &is_initialized);
                if (false == is_initialized) {
-                       ret = ttsd_server_initialize(pid, uid, (ttsd_mode_e)mode, registered_event_mask, TTS_IPC_METHOD_DBUS, &is_credential_needed);
+                       ret = ttsd_server_initialize(pid, uid, (ttsd_mode_e)mode, registered_event_mask, TTS_IPC_METHOD_DBUS, &service_state, &is_credential_needed);
                        if (0 != ret) {
                                SLOG(LOG_ERROR, tts_tag(), "[IN ERROR] ttsd Hello : server initialize, ret(%d)", ret);
                        }
@@ -69,9 +69,9 @@ int ttsd_dbus_server_hello(DBusConnection* conn, DBusMessage* msg)
                }
 
                SLOG(LOG_INFO, tts_tag(), "[INFO] send_hello. pid(%d), uid(%u), ret(%d), service_state(%d), credential_needed(%d)",
-                               pid, uid, ret, service_state, credential_needed);
+                               pid, uid, ret, (int)service_state, credential_needed);
 
-               ttsdc_dbus_send_hello(pid, uid, ret, service_state, credential_needed);
+               ttsdc_dbus_send_hello(pid, uid, ret, (int)service_state, credential_needed);
        }
 
        return 0;
@@ -106,6 +106,7 @@ int ttsd_dbus_server_initialize(DBusConnection* conn, DBusMessage* msg)
        int pid;
        unsigned int uid;
        bool credential_needed = 0;
+       ttsd_state_e service_state = TTSD_STATE_INVALID;
        int mode = 0;
        int registered_event_mask = 0;
        int ret = 0;
@@ -125,15 +126,15 @@ int ttsd_dbus_server_initialize(DBusConnection* conn, DBusMessage* msg)
                ret = TTSD_ERROR_OPERATION_FAILED;
        } else {
                SECURE_SLOG(LOG_DEBUG, tts_tag(), "[IN] tts initialize : pid(%d), uid(%u), mode(%d)", pid, uid, mode);
-               ret = ttsd_server_initialize(pid, uid, (ttsd_mode_e)mode, registered_event_mask, TTS_IPC_METHOD_DBUS, &credential_needed);
+               ret = ttsd_server_initialize(pid, uid, (ttsd_mode_e)mode, registered_event_mask, TTS_IPC_METHOD_DBUS, &service_state, &credential_needed);
        }
 
        DBusMessage* reply;
        reply = dbus_message_new_method_return(msg);
 
        int tmp_credential_needed = (int)credential_needed;
-       int tmp_service_state = -1;
-       SLOG(LOG_DEBUG, tts_tag(), "[OUT] tts initialize : result(%d), credential_needed(%d)", ret, (int)credential_needed);
+       int tmp_service_state = (int)service_state;
+       SLOG(LOG_DEBUG, tts_tag(), "[OUT] tts initialize : result(%d), service_state(%d), credential_needed(%d)", ret, tmp_service_state, tmp_credential_needed);
        if (NULL != reply) {
                dbus_message_append_args(reply,
                        DBUS_TYPE_INT32, &ret,
@@ -142,7 +143,7 @@ int ttsd_dbus_server_initialize(DBusConnection* conn, DBusMessage* msg)
                        DBUS_TYPE_INVALID);
 
                if (0 == ret) {
-                       SLOG(LOG_DEBUG, tts_tag(), "[OUT] tts initialize : result(%d), credential_needed(%d)", ret, credential_needed);
+                       SLOG(LOG_DEBUG, tts_tag(), "[OUT] tts initialize : result(%d), service_state(%d), credential_needed(%d)", ret, tmp_service_state, tmp_credential_needed);
                } else {
                        SLOG(LOG_ERROR, tts_tag(), "[OUT ERROR] tts initialize : result(%d)", ret);
                }
index 3602a18f948558a80e506452f993fe10d8850988..2f323b1a20dc332b50432624bfc4c84a9476e4c8 100644 (file)
@@ -787,7 +787,7 @@ static int __check_app_agreed(int pid, unsigned int uid, bool credential_needed)
        return TTSD_ERROR_NONE;
 }
 
-int ttsd_server_initialize(int pid, unsigned int uid, ttsd_mode_e mode, int registered_event_mask, tts_ipc_method_e method, bool* credential_needed)
+int ttsd_server_initialize(int pid, unsigned int uid, ttsd_mode_e mode, int registered_event_mask, tts_ipc_method_e method, ttsd_state_e* service_state, bool* credential_needed)
 {
        SLOG(LOG_INFO, tts_tag(), "[Server] Server initialize");
 
@@ -823,7 +823,15 @@ int ttsd_server_initialize(int pid, unsigned int uid, ttsd_mode_e mode, int regi
                return ret;
        }
 
+       ttsd_state_e tmp_service_state = ttsd_state_get_state();
+       if (TTSD_STATE_INVALID == tmp_service_state) {
+               SLOG(LOG_ERROR, tts_tag(), "[Server ERROR] Fail to get state");
+               ttsd_data_delete_client(uid);
+               return TTSD_ERROR_OPERATION_FAILED;
+       }
+
        *credential_needed = is_needed;
+       *service_state = tmp_service_state;
 
        return TTSD_ERROR_NONE;
 }
index a40f9eb20a62eece4de0d2cdcc29664e76d4b5a1..dde10bc88f96d32acf18e1245eae8ce8027c5c95 100644 (file)
@@ -49,7 +49,7 @@ int ttsd_set_activated_mode_changed_cb(ttse_activated_mode_changed_cb callback);
 
 int ttsd_server_is_already_initialized(int pid, unsigned int uid, bool* is_initialized);
 
-int ttsd_server_initialize(int pid, unsigned int uid, ttsd_mode_e mode, int registered_event_mask, tts_ipc_method_e method, bool* credential_needed);
+int ttsd_server_initialize(int pid, unsigned int uid, ttsd_mode_e mode, int registered_event_mask, tts_ipc_method_e method, ttsd_state_e* service_state, bool* credential_needed);
 
 int ttsd_server_finalize(unsigned int uid);
 
index 4b87a13b4fce8d09cf6faab42cf61dbfa3adbf02..86baa2e5a31719ee49128b628f1f0b02f21b4222 100644 (file)
@@ -147,11 +147,11 @@ static void __register_cb(rpc_port_stub_tts_context_h context, int pid, int uid,
 
        int ret = -1;
        int credential_needed = 0;
-       int service_state = TTSD_STATE_INVALID;
+       ttsd_state_e service_state = TTSD_STATE_INVALID;
 
        if (false == is_initialized) {
                bool is_credential_needed = false;
-               ret = ttsd_server_initialize(pid, u_uid, mode, registered_event_mask, TTS_IPC_METHOD_TIDL, &is_credential_needed);
+               ret = ttsd_server_initialize(pid, u_uid, mode, registered_event_mask, TTS_IPC_METHOD_TIDL, &service_state, &is_credential_needed);
                if (0 != ret) {
                        SLOG(LOG_ERROR, tts_tag(), "[IN ERROR] ttsd Hello : server initialize, ret(%d)", ret);
                }
@@ -192,7 +192,7 @@ static void __register_cb(rpc_port_stub_tts_context_h context, int pid, int uid,
        pthread_mutex_unlock(&g_tidl_proxy_infos_mutex);
 
        SLOG(LOG_INFO, tts_tag(), "create player instance");
-       ttsdc_tidl_send_hello(pid, u_uid, ret, service_state, credential_needed);
+       ttsdc_tidl_send_hello(pid, u_uid, ret, (int)service_state, credential_needed);
 
        SLOG(LOG_ERROR, tts_tag(), "<<<<<<<<<<<");
        return;
@@ -273,11 +273,13 @@ static int __initialize_cb(rpc_port_stub_tts_context_h context, int pid, int uid
        unsigned int u_uid = (unsigned int)uid;
        SECURE_SLOG(LOG_ERROR, tts_tag(), "[IN] tts initialize : pid(%d), uid(%u), mode(%d)", pid, u_uid, mode);
 
-       if (0 != ttsd_server_initialize(pid, u_uid, mode, registered_event_mask, TTS_IPC_METHOD_TIDL, credential_needed)) {
+       ttsd_state_e tmp_service_state = TTSD_STATE_INVALID;
+       if (0 != ttsd_server_initialize(pid, u_uid, mode, registered_event_mask, TTS_IPC_METHOD_TIDL, &tmp_service_state, credential_needed)) {
                return TTSD_ERROR_OPERATION_FAILED;
        }
 
-       SLOG(LOG_ERROR, tts_tag(), "[OUT] tts initialize credential_needed(%d)", *credential_needed);
+       *service_state = (int)tmp_service_state;
+       SLOG(LOG_ERROR, tts_tag(), "[OUT] tts initialize service_state(%d), credential_needed(%d)", tmp_service_state, *credential_needed);
        return TTSD_ERROR_NONE;
 }