From: Suyeon Hwang Date: Thu, 29 Dec 2022 09:04:34 +0000 (+0900) Subject: Send service state when preparing is succeeded X-Git-Tag: accepted/tizen/unified/20230221.085046~3 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=62a6542ef5f197965a6e4307511d2a81d36892ea;p=platform%2Fcore%2Fuifw%2Ftts.git Send service state when preparing is succeeded - 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 --- diff --git a/server/ttsd_dbus_server.c b/server/ttsd_dbus_server.c index e299b87d..037d8c8e 100644 --- a/server/ttsd_dbus_server.c +++ b/server/ttsd_dbus_server.c @@ -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); } diff --git a/server/ttsd_server.c b/server/ttsd_server.c index 3602a18f..2f323b1a 100644 --- a/server/ttsd_server.c +++ b/server/ttsd_server.c @@ -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; } diff --git a/server/ttsd_server.h b/server/ttsd_server.h index a40f9eb2..dde10bc8 100644 --- a/server/ttsd_server.h +++ b/server/ttsd_server.h @@ -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); diff --git a/server/ttsd_tidl.c b/server/ttsd_tidl.c index 4b87a13b..86baa2e5 100644 --- a/server/ttsd_tidl.c +++ b/server/ttsd_tidl.c @@ -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; }