Run only one service process regardless of client mode 89/271889/2
authorSuyeon Hwang <stom.hwang@samsung.com>
Mon, 10 Jan 2022 05:58:05 +0000 (14:58 +0900)
committerSuyeon Hwang <stom.hwang@samsung.com>
Tue, 15 Mar 2022 05:47:40 +0000 (14:47 +0900)
To support multiple mode, current code runs multiple service process for each mode. However,
this architecture needs huge resource for launching multiple process.

To reduce the resource usage, this patch makes client request to launch only one service
process.

Change-Id: I8e0161e0615bdf6a3548b7004c4aab34b826dbdf
Signed-off-by: Suyeon Hwang <stom.hwang@samsung.com>
client/tts_core.c
client/tts_dbus.c
client/tts_tidl.c

index 8be738a..090f0ef 100644 (file)
@@ -59,7 +59,7 @@ static const char* __convert_state(tts_state_e state)
        return "Invalid state";
 }
 
-static char* __get_engine_appid(int mode) {
+static char* __get_engine_appid() {
        if (NULL == g_engine_name) {
                return NULL;
        }
@@ -69,20 +69,7 @@ static char* __get_engine_appid(int mode) {
                return NULL;
        }
 
-       if (TTS_MODE_DEFAULT <= mode && TTS_MODE_SCREEN_READER >= mode) {
-               snprintf(appid, TTS_ENGINE_APPID_LEN, "%s", g_engine_name);
-//     } else if (TTS_MODE_NOTIFICATION == mode) {
-//             snprintf(appid, TTS_ENGINE_APPID_LEN, "%s-noti", g_engine_name);
-//     } else if (TTS_MODE_SCREEN_READER == mode) {
-//             snprintf(appid, TTS_ENGINE_APPID_LEN, "%s-sr", g_engine_name);
-       } else if (TTS_MODE_INTERRUPT == mode) {
-               snprintf(appid, TTS_ENGINE_APPID_LEN, "%s-interrupt", g_engine_name);
-       } else {
-               SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] mode is not valid. mode(%d)", mode);
-               free(appid);
-               return NULL;
-       }
-
+       snprintf(appid, TTS_ENGINE_APPID_LEN, "%s", g_engine_name);
        return appid;
 }
 
@@ -184,9 +171,9 @@ static bool __is_engine_installed(const char* appid)
        return true;
 }
 
-static bool __is_engine_launched(tts_mode_e mode)
+static bool __is_engine_launched()
 {
-       char* appid = __get_engine_appid(mode);
+       char* appid = __get_engine_appid();
        if (NULL == appid) {
                SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Fail to get engine app ID");
                return false;
@@ -441,7 +428,7 @@ static int __send_hello_msg(tts_client_s* client)
        SLOG(LOG_INFO, TAG_TTSC, "[INFO] tts_h(%p), tts_client(%p), uid(%u)", tts_client_get_handle(client), client, uid);
 
        /* check service engine status */
-       bool is_launched = __is_engine_launched(tts_client_get_mode(client));
+       bool is_launched = __is_engine_launched();
        SLOG(LOG_INFO, TAG_TTSC, "[INFO] tts engine is launched(%d)", is_launched);
        if (false == is_launched) {
                /* If engine is NOT launched, check whether engine is updating or not */
@@ -482,7 +469,7 @@ static Eina_Bool __prepare_cb(void *data)
        if (TTS_HELLO_RETRY_COUNT == client->prepare_count) {
                SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Stop to prepare, retry count reaches the limit");
 
-               bool is_launched = __is_engine_launched(tts_client_get_mode(client));
+               bool is_launched = __is_engine_launched();
                SLOG(LOG_INFO, TAG_TTSC, "[INFO] tts engine is launched(%d)", is_launched);
 
                client->hello_timer = NULL;
@@ -518,7 +505,7 @@ static Eina_Bool __prepare_first_cb(void *data)
 static int __prepare_sync_cb(tts_client_s* client)
 {
        // TODO: make function duplicated block
-       bool is_launched = __is_engine_launched(tts_client_get_mode(client));
+       bool is_launched = __is_engine_launched();
        SLOG(LOG_INFO, TAG_TTSC, "[INFO] tts engine is launched(%d)", is_launched);
 
        if (false == is_launched) {
index 18fd6be..41e3344 100644 (file)
@@ -38,23 +38,14 @@ static volatile int g_connected_client = 0;
 static int __tts_dbus_add_match(unsigned int uid)
 {
        /* add a rule for daemon error */
-       char rule_err[256] = {0, };
        tts_client_s* client = tts_client_get_by_uid(uid);
        if (NULL == client) {
                SLOG(LOG_ERROR, TAG_TTSC, "Fail to get TTS client");
                return TTS_ERROR_OPERATION_FAILED;
        }
 
-       tts_mode_e mode = tts_client_get_mode(client);
-       if (TTS_MODE_DEFAULT <= mode && TTS_MODE_SCREEN_READER >= mode) {
-               snprintf(rule_err, 256, "sender='org.freedesktop.DBus',path='/org/freedesktop/DBus',interface='org.freedesktop.DBus',member='NameOwnerChanged',type='signal',arg0='%s'", TTS_SERVER_SERVICE_INTERFACE);
-//     } else if (TTS_MODE_NOTIFICATION == mode) {
-//             snprintf(rule_err, 256, "sender='org.freedesktop.DBus',path='/org/freedesktop/DBus',interface='org.freedesktop.DBus',member='NameOwnerChanged',type='signal',arg0='%s'", TTS_NOTI_SERVER_SERVICE_INTERFACE);
-//     } else if (TTS_MODE_SCREEN_READER == mode) {
-//             snprintf(rule_err, 256, "sender='org.freedesktop.DBus',path='/org/freedesktop/DBus',interface='org.freedesktop.DBus',member='NameOwnerChanged',type='signal',arg0='%s'", TTS_SR_SERVER_SERVICE_INTERFACE);
-       } else if (TTS_MODE_INTERRUPT == mode) {
-               snprintf(rule_err, 256, "sender='org.freedesktop.DBus',path='/org/freedesktop/DBus',interface='org.freedesktop.DBus',member='NameOwnerChanged',type='signal',arg0='%s'", TTS_INTERRUPT_SERVER_SERVICE_INTERFACE);
-       }
+       char rule_err[256] = {0, };
+       snprintf(rule_err, 256, "sender='org.freedesktop.DBus',path='/org/freedesktop/DBus',interface='org.freedesktop.DBus',member='NameOwnerChanged',type='signal',arg0='%s'", TTS_SERVER_SERVICE_INTERFACE);
 
        /* initialize the error value */
        DBusError err;
@@ -73,23 +64,15 @@ static int __tts_dbus_add_match(unsigned int uid)
        return TTS_ERROR_NONE;
 }
 
-static int __tts_dbus_remove_match(int mode)
+static void __tts_dbus_remove_match()
 {
        DBusError err;
        dbus_error_init(&err);
 
        /* remove a rule for daemon error */
        char rule_err[256] = {0, };
+       snprintf(rule_err, 256, "sender='org.freedesktop.DBus',path='/org/freedesktop/DBus',interface='org.freedesktop.DBus',member='NameOwnerChanged',type='signal',arg0='%s'", TTS_SERVER_SERVICE_INTERFACE);
 
-       if (TTS_MODE_DEFAULT <= mode && TTS_MODE_SCREEN_READER >= mode) {
-               snprintf(rule_err, 256, "sender='org.freedesktop.DBus',path='/org/freedesktop/DBus',interface='org.freedesktop.DBus',member='NameOwnerChanged',type='signal',arg0='%s'", TTS_SERVER_SERVICE_INTERFACE);
-//     } else if (TTS_MODE_NOTIFICATION == mode) {
-//             snprintf(rule_err, 256, "sender='org.freedesktop.DBus',path='/org/freedesktop/DBus',interface='org.freedesktop.DBus',member='NameOwnerChanged',type='signal',arg0='%s'", TTS_NOTI_SERVER_SERVICE_INTERFACE);
-//     } else if (TTS_MODE_SCREEN_READER == mode) {
-//             snprintf(rule_err, 256, "sender='org.freedesktop.DBus',path='/org/freedesktop/DBus',interface='org.freedesktop.DBus',member='NameOwnerChanged',type='signal',arg0='%s'", TTS_SR_SERVER_SERVICE_INTERFACE);
-       } else if (TTS_MODE_INTERRUPT == mode) {
-               snprintf(rule_err, 256, "sender='org.freedesktop.DBus',path='/org/freedesktop/DBus',interface='org.freedesktop.DBus',member='NameOwnerChanged',type='signal',arg0='%s'", TTS_INTERRUPT_SERVER_SERVICE_INTERFACE);
-       }
        dbus_bus_remove_match(g_conn_listener, rule_err, &err);
        dbus_connection_flush(g_conn_listener);
        if (dbus_error_is_set(&err)) {
@@ -97,8 +80,7 @@ static int __tts_dbus_remove_match(int mode)
                dbus_error_free(&err);
        }
 
-       SLOG(LOG_ERROR, TAG_TTSC, "[INFO] dbus match of mode(%d) is removed", mode);
-       return 0;
+       SLOG(LOG_ERROR, TAG_TTSC, "[INFO] dbus match is removed");
 }
 
 static Eina_Bool listener_event_callback(void* data, Ecore_Fd_Handler *fd_handler)
@@ -382,7 +364,8 @@ int tts_dbus_stop_listening(unsigned int uid)
                return TTS_ERROR_INVALID_PARAMETER;
        }
 
-       return __tts_dbus_remove_match(tts_client_get_mode(client));
+       __tts_dbus_remove_match();
+       return TTS_ERROR_NONE;
 }
 
 int tts_dbus_reconnect()
@@ -431,37 +414,11 @@ DBusMessage* __tts_dbus_make_message(unsigned int uid, const char* method)
                return NULL;
        }
 
-       DBusMessage* msg;
-
-       tts_mode_e mode = tts_client_get_mode(client);
-       if (TTS_MODE_DEFAULT <= mode && TTS_MODE_SCREEN_READER >= mode) {
-               msg = dbus_message_new_method_call(
-                       TTS_SERVER_SERVICE_NAME,
-                       TTS_SERVER_SERVICE_OBJECT_PATH,
-                       TTS_SERVER_SERVICE_INTERFACE,
-                       method);
-/*     } else if (TTS_MODE_NOTIFICATION == mode) {
-               msg = dbus_message_new_method_call(
-                       TTS_NOTI_SERVER_SERVICE_NAME,
-                       TTS_NOTI_SERVER_SERVICE_OBJECT_PATH,
-                       TTS_NOTI_SERVER_SERVICE_INTERFACE,
-                       method);
-       } else if (TTS_MODE_SCREEN_READER == mode) {
-               msg = dbus_message_new_method_call(
-                       TTS_SR_SERVER_SERVICE_NAME,
-                       TTS_SR_SERVER_SERVICE_OBJECT_PATH,
-                       TTS_SR_SERVER_SERVICE_INTERFACE,
-                       method);
-*/     } else if (TTS_MODE_INTERRUPT == mode) {
-               msg = dbus_message_new_method_call(
-                       TTS_INTERRUPT_SERVER_SERVICE_NAME,
-                       TTS_INTERRUPT_SERVER_SERVICE_OBJECT_PATH,
-                       TTS_INTERRUPT_SERVER_SERVICE_INTERFACE,
-                       method);
-       } else {
-               SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Input mode is not available");
-               return NULL;
-       }
+       DBusMessage* msg = dbus_message_new_method_call(
+               TTS_SERVER_SERVICE_NAME,
+               TTS_SERVER_SERVICE_OBJECT_PATH,
+               TTS_SERVER_SERVICE_INTERFACE,
+               method);
 
        return msg;
 }
@@ -600,23 +557,15 @@ int tts_dbus_request_initialize(unsigned int uid, bool* credential_needed)
                        SLOG(LOG_DEBUG, TAG_TTSC, "<<<< tts initialize : result = %d, credential_needed(%d)", result, *credential_needed);
 
                        /* add a rule for daemon error */
-                       char rule_err[256] = {0, };
                        tts_client_s* client = tts_client_get_by_uid(uid);
                        if (NULL == client) {
                                SLOG(LOG_ERROR, TAG_TTSC, "Fail to get TTS client");
                                return TTS_ERROR_OPERATION_FAILED;
                        }
 
-                       tts_mode_e mode = tts_client_get_mode(client);
-                       if (TTS_MODE_DEFAULT <= mode && TTS_MODE_SCREEN_READER >= mode) {
-                               snprintf(rule_err, 256, "sender='org.freedesktop.DBus',path='/org/freedesktop/DBus',interface='org.freedesktop.DBus',member='NameOwnerChanged',type='signal',arg0='%s'", TTS_SERVER_SERVICE_INTERFACE);
-//                     } else if (TTS_MODE_NOTIFICATION == mode) {
-//                             snprintf(rule_err, 256, "sender='org.freedesktop.DBus',path='/org/freedesktop/DBus',interface='org.freedesktop.DBus',member='NameOwnerChanged',type='signal',arg0='%s'", TTS_NOTI_SERVER_SERVICE_INTERFACE);
-//                     } else if (TTS_MODE_SCREEN_READER == mode) {
-//                             snprintf(rule_err, 256, "sender='org.freedesktop.DBus',path='/org/freedesktop/DBus',interface='org.freedesktop.DBus',member='NameOwnerChanged',type='signal',arg0='%s'", TTS_SR_SERVER_SERVICE_INTERFACE);
-                       } else if (TTS_MODE_INTERRUPT == mode) {
-                               snprintf(rule_err, 256, "sender='org.freedesktop.DBus',path='/org/freedesktop/DBus',interface='org.freedesktop.DBus',member='NameOwnerChanged',type='signal',arg0='%s'", TTS_INTERRUPT_SERVER_SERVICE_INTERFACE);
-                       }
+                       char rule_err[256] = {0, };
+                       snprintf(rule_err, 256, "sender='org.freedesktop.DBus',path='/org/freedesktop/DBus',interface='org.freedesktop.DBus',member='NameOwnerChanged',type='signal',arg0='%s'", TTS_SERVER_SERVICE_INTERFACE);
+
                        dbus_bus_add_match(g_conn_listener, rule_err, &err);
                        dbus_connection_flush(g_conn_listener);
 
@@ -640,7 +589,6 @@ int tts_dbus_request_initialize(unsigned int uid, bool* credential_needed)
 
 int tts_dbus_request_finalize(unsigned int uid)
 {
-       DBusMessage* msg;
        DBusError err;
        dbus_error_init(&err);
 
@@ -651,20 +599,9 @@ int tts_dbus_request_finalize(unsigned int uid)
        }
 
        /* remove a rule for daemon error */
-       tts_mode_e mode = tts_client_get_mode(client);
-       SLOG(LOG_INFO, TAG_TTSC, "[INFO] Remove match, mode(%d)", mode);
-       if (TTS_MODE_DEFAULT <= mode && TTS_MODE_SCREEN_READER >= mode) {
-               __tts_dbus_remove_match(TTS_MODE_DEFAULT);
-//     } else if (TTS_MODE_NOTIFICATION == mode) {
-//             __tts_dbus_remove_match(TTS_MODE_NOTIFICATION);
-//     } else if (TTS_MODE_SCREEN_READER == mode) {
-//             __tts_dbus_remove_match(TTS_MODE_SCREEN_READER);
-       } else if (TTS_MODE_INTERRUPT == mode) {
-               __tts_dbus_remove_match(TTS_MODE_INTERRUPT);
-       }
-
-       msg = __tts_dbus_make_message(uid, TTS_METHOD_FINALIZE);
+       __tts_dbus_remove_match();
 
+       DBusMessage* msg = __tts_dbus_make_message(uid, TTS_METHOD_FINALIZE);
        if (NULL == msg) {
                SLOG(LOG_ERROR, TAG_TTSC, ">>>> Request tts finalize : Fail to make message");
                return TTS_ERROR_OPERATION_FAILED;
index fbd408b..b6afcef 100644 (file)
@@ -214,7 +214,7 @@ static void __on_rejected(rpc_port_proxy_tts_h h, void *user_data)
        SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Rejected from server(%d)", uid);
 }
 
-static void __get_engine_app_id(int mode, int size, char* app_id)
+static void __get_engine_app_id(int size, char* app_id)
 {
        if (NULL == app_id) {
                SLOG(LOG_ERROR, TAG_TTSC, "app_id is NULL");
@@ -227,12 +227,7 @@ static void __get_engine_app_id(int mode, int size, char* app_id)
                engine_name = strdup(TTS_SERVER_ENGINE_DEFAULT);
        }
 
-       char* mode_str = "";
-       if (TTS_MODE_INTERRUPT == mode) {
-               mode_str = TTS_INTERRUPT_SERVER_MODE;
-       }
-
-       snprintf(app_id, size, "%s%s", engine_name, mode_str);
+       snprintf(app_id, size, "%s", engine_name);
        free(engine_name);
 
        SLOG(LOG_INFO, TAG_TTSC, "engine app id : %s", app_id);
@@ -272,9 +267,8 @@ int tts_tidl_open_connection(unsigned int uid)
                return TTS_ERROR_OUT_OF_MEMORY;
        }
 
-       tts_mode_e mode = tts_client_get_mode(client);
        char engine_app_id[TTS_ENGINE_APPID_LEN] = {0, };
-       __get_engine_app_id(mode, TTS_ENGINE_APPID_LEN, engine_app_id);
+       __get_engine_app_id(TTS_ENGINE_APPID_LEN, engine_app_id);
 
        info->rpc_h = __create_rpc_port(uid, engine_app_id);
        if (NULL == info->rpc_h) {
@@ -399,9 +393,8 @@ int tts_tidl_request_hello(unsigned int uid)
                return TTS_ERROR_INVALID_PARAMETER;
        }
 
-       tts_mode_e mode = tts_client_get_mode(client);
        char engine_app_id[TTS_ENGINE_APPID_LEN] = {0, };
-       __get_engine_app_id(mode, TTS_ENGINE_APPID_LEN, engine_app_id);
+       __get_engine_app_id(TTS_ENGINE_APPID_LEN, engine_app_id);
 
        if (NULL == info->engine_app_id || 0 != strncmp(info->engine_app_id, engine_app_id, TTS_ENGINE_APPID_LEN)) {
                SLOG(LOG_ERROR, TAG_TTSC, "[TIDL] tts engine is changed from (%s) to (%s)", info->engine_app_id, engine_app_id);