Add functions related to auth and stub tidl 58/278958/1
authorsooyeon <sooyeon.kim@samsung.com>
Mon, 13 Jun 2022 12:07:36 +0000 (21:07 +0900)
committersooyeon <sooyeon.kim@samsung.com>
Fri, 29 Jul 2022 01:25:58 +0000 (10:25 +0900)
Change-Id: I1eded5e4c8f419de2925d30019c4c1579d013008
Signed-off-by: sooyeon <sooyeon.kim@samsung.com>
server/CMakeLists.txt
server/vcd_client_data.c
server/vcd_client_data.h
server/vcd_dbus.c
server/vcd_dbus.h
server/vcd_tidl.c
server/vcd_tidl.h

index 5fe0268..c269a11 100644 (file)
@@ -12,6 +12,7 @@ SET(SRCS
        vcd_dbus_server.c
        vcd_dbus.c
        vcd_tidl.c
+       vcd_stub.c
        vcd_mgr_stub.c
        vcd_mgr_proxy.c
        vcd_widget_stub.c
index 8d5136d..8e33a1f 100644 (file)
@@ -1446,6 +1446,46 @@ client_ipc_info_s* vcd_client_get_ipc_info(int pid)
        return __get_client_ipc_info_element(pid);
 }
 
+int vcd_client_get_ipc_list(int** pids, int* pid_count)
+{
+       if (NULL == pids || NULL == pid_count)
+               return -1;
+
+       int count = g_slist_length(g_client_ipc_info_list);
+
+       if (0 == count)
+               return -1;
+
+       int *tmp;
+       tmp = (int*)calloc(count, sizeof(int));
+       if (NULL == tmp) {
+               SLOG(LOG_ERROR, TAG_VCD, "[ERROR] Fail to allocate memory");
+               return VCD_ERROR_OUT_OF_MEMORY;
+       }
+
+       GSList *iter = NULL;
+       client_ipc_info_s *data = NULL;
+       int i = 0;
+
+       iter = g_slist_nth(g_client_ipc_info_list, 0);
+
+       while (NULL != iter) {
+               data = iter->data;
+
+               if (NULL != data) {
+                       tmp[i] = data->pid;
+               }
+
+               iter = g_slist_next(iter);
+               i++;
+       }
+
+       *pids = tmp;
+       *pid_count = count;
+
+       return 0;
+}
+
 bool vcd_client_is_available(int pid)
 {
        vc_client_info_s* client_info = NULL;
index 0620b19..789f329 100644 (file)
@@ -204,6 +204,8 @@ int vcd_client_delete_ipc_info(int pid);
 
 client_ipc_info_s* vcd_client_get_ipc_info(int pid);
 
+int vcd_client_get_ipc_list(int** pids, int* pid_count);
+
 bool vcd_client_is_available(int pid);
 
 int vcd_client_get_ref_count();
index f7cfc10..0e67e46 100755 (executable)
@@ -227,7 +227,6 @@ int vcdc_send_result(int pid, int manager_pid, int cmd_type)
 
        return 0;
 }
-*/
 int vcdc_send_manager_pid(int manager_pid)
 {
        DBusError err;
@@ -235,7 +234,7 @@ int vcdc_send_manager_pid(int manager_pid)
 
        DBusMessage* msg = NULL;
 
-       /* Send to client */
+       // Send to client
        msg = dbus_message_new_signal(
                VC_CLIENT_SERVICE_OBJECT_PATH,
                VC_CLIENT_SERVICE_INTERFACE,
@@ -260,62 +259,7 @@ int vcdc_send_manager_pid(int manager_pid)
 
        return 0;
 }
-
-int vcdc_send_error_signal_to_manager(int manager_pid, int reason, char *err_msg)
-{
-       SLOG(LOG_ERROR, TAG_VCD, "@@ Send error signal to manager");
-
-       if (0 != __dbus_check()) {
-               return VCD_ERROR_OPERATION_FAILED;
-       }
-
-       int daemon_pid;
-       DBusError err;
-       dbus_error_init(&err);
-
-       DBusMessage* msg = NULL;
-
-       msg = dbus_message_new_signal(
-               VC_MANAGER_SERVICE_OBJECT_PATH,
-               VC_MANAGER_SERVICE_INTERFACE,
-               VCD_MANAGER_METHOD_ERROR);
-
-       if (NULL == msg) {
-               SLOG(LOG_ERROR, TAG_VCD, "[Dbus ERROR] Message is NULL");
-               return VCD_ERROR_OUT_OF_MEMORY;
-       }
-
-       char *temp_msg = NULL;
-       if (NULL == err_msg) {
-               SLOG(LOG_WARN, TAG_VCD, "[Dbus ERROR] Input parameter is NULL");
-               temp_msg = strdup("#NULL");
-       } else {
-               temp_msg = strdup(err_msg);
-       }
-
-       daemon_pid = getpid();
-       dbus_message_append_args(msg, DBUS_TYPE_INT32, &reason, DBUS_TYPE_INT32, &daemon_pid, DBUS_TYPE_STRING, &temp_msg, DBUS_TYPE_INVALID);
-
-       if (1 != dbus_connection_send(g_conn_sender, msg, NULL)) {
-               SLOG(LOG_ERROR, TAG_VCD, "[Dbus ERROR] Fail to Send");
-               if (NULL != temp_msg) {
-                       free(temp_msg);
-                       temp_msg = NULL;
-               }
-               return VCD_ERROR_OPERATION_FAILED;
-       } else {
-               SLOG(LOG_INFO, TAG_VCD, "@@ Send error signal to manager : reason(%d), Error Msg(%s)", reason, temp_msg);
-               dbus_connection_flush(g_conn_sender);
-       }
-
-       dbus_message_unref(msg);
-       if (NULL != temp_msg) {
-               free(temp_msg);
-               temp_msg = NULL;
-       }
-
-       return 0;
-}
+*/
 
 int vcdc_send_error_signal(int reason, char *err_msg)
 {
@@ -453,7 +397,6 @@ int vcdc_send_error_signal_to_app(int pid, int reason, char *err_msg)
 */
 
 /*
->>>>>>> Replace IPC (VCC) from dbus to tidl
 int vcdc_send_feedback_streaming(int pid, int utt_id, vc_feedback_event_e event, char* buffer, int len)
 {
        SLOG(LOG_INFO, TAG_VCD, "[Dbus] Send TTS feedback streaming : pid(%d), utt_id(%d), feedback event(%d), buffer(%p), length(%d)", pid, utt_id, event, buffer, len);
index d6ae86c..e1abbe3 100644 (file)
@@ -38,7 +38,7 @@ int vcdc_send_error_signal(int reason, char *err_msg);
 
 //int vcdc_send_error_signal_to_app(int pid, int reason, char *err_msg);
 
-int vcdc_send_manager_pid(int manager_pid);
+// int vcdc_send_manager_pid(int manager_pid);
 
 /* for TTS feedback */
 //int vcdc_send_feedback_streaming(int pid, int utt_id, vc_feedback_event_e event, char* buffer, int len);
index c81e81c..354cf21 100644 (file)
@@ -316,14 +316,13 @@ void __send_signal(bundle* msg)
 /**
  * TIDL functions for VC client
  */
-
 static void __vc_create_cb(rpc_port_stub_vc_context_h context, void *user_data)
 {
     SLOG(LOG_INFO, TAG_VCD, "[TIDL] __vc_create_cb");
 
        char *sender = NULL;
 
-       rpc_port_stub_SamsungAIAppPort_context_get_sender(context, &sender);
+       rpc_port_stub_vc_context_get_sender(context, &sender);
        if (!sender) {
         SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Sender is NULL");
         return ;
@@ -450,9 +449,9 @@ static int __vc_initialize_cb(rpc_port_stub_vc_context_h context, int pid, int *
     *mgr_pid = vcd_client_manager_get_pid();
 
     if (VCD_ERROR_NONE == ret) {
-       SLOG(LOG_INFO, TAG_VCD, "[IN] vcd initialize : pid(%d) daemon_pid(%d)", pid, daemon_pid);
+       SLOG(LOG_INFO, TAG_VCD, "[IN] vcd initialize : pid(%d) daemon_pid(%d)", pid, *daemon_pid);
     } else {
-       SLOG(LOG_ERROR, TAG_VCD, "[ERROR] Fail to vcd initialize : pid(%d) daemon_pid(%d) ret(%d)", pid, daemon_pid, ret);
+       SLOG(LOG_ERROR, TAG_VCD, "[ERROR] Fail to vcd initialize : pid(%d) daemon_pid(%d) ret(%d)", pid, *daemon_pid, ret);
     }
 
     return ret;
@@ -549,7 +548,7 @@ static int __vc_request_dialog_cb(rpc_port_stub_vc_context_h context, int pid, c
     if (VCD_ERROR_NONE == ret) {
        SLOG(LOG_INFO, TAG_VCD, "[IN] vcd request dialog : pid(%d), disp_text(%s), utt_text(%s), continuous(%d)", pid, disp_text, utt_text, continuous);
     } else {
-       SLOG(LOG_ERROR, TAG_VCD, "[ERROR] Fail to vcd request dialog : pid(%d), disp_text(%s), utt_text(%s), continuous(%d), ret(%d)", pid, disp_text, utt_text, continuous, ret(%d));
+       SLOG(LOG_ERROR, TAG_VCD, "[ERROR] Fail to vcd request dialog : pid(%d), disp_text(%s), utt_text(%s), continuous(%d), ret(%d)", pid, disp_text, utt_text, continuous, ret);
     }
     
     return ret;
@@ -561,7 +560,7 @@ static int __vc_is_system_command_valid_cb(rpc_port_stub_vc_context_h context, i
 
     int ret = VCD_ERROR_OPERATION_FAILED;
 
-    ret = vcd_server_is_system_command_valid(pid, &is_sys_cmd_valid);
+    ret = vcd_server_is_system_command_valid(pid, (int*)is_sys_cmd_valid);
     if (VCD_ERROR_NONE == ret) {
        SLOG(LOG_INFO, TAG_VCD, "[IN] vcd check system command is valid : pid(%d), is_sys_cmd_valid(%d)", pid, *is_sys_cmd_valid);
     } else {
@@ -573,28 +572,87 @@ static int __vc_is_system_command_valid_cb(rpc_port_stub_vc_context_h context, i
 
 static int __vc_auth_enable_cb(rpc_port_stub_vc_context_h context, int pid, int mgr_pid, void *user_data)
 {
-    SLOG(LOG_INFO, TAG_VCD, "[TIDL] __vc_auth_enable_cb");
+    SLOG(LOG_INFO, TAG_VCD, "[TIDL] __vc_auth_enable_cb. Send a request to vc_mgr");
+
+    // int ret = VCD_ERROR_OPERATION_FAILED;
+    // ret = vcdc_send_request_auth_enable(pid);
+    // if (VCD_ERROR_NONE == ret) {
+    //     SLOG(LOG_INFO, TAG_VCD, "[SUCCESS] Send request auth enable. pid(%d), mgr_pid(%d)", pid, mgr_pid);
+    // } else {
+    //     SLOG(LOG_ERROR, TAG_VCD, "[ERROR] Fail to send request auth enable. ret(%d), pid(%d), mgr_pid(%d)", ret, pid, mgr_pid);
+    // }
+
+    // return ret;
 
+    return VCD_ERROR_NONE;
 }
 
 static int __vc_auth_disable_cb(rpc_port_stub_vc_context_h context, int pid, int mgr_pid, void *user_data)
 {
-    SLOG(LOG_INFO, TAG_VCD, "[TIDL] __vc_auth_disable_cb");
+    SLOG(LOG_INFO, TAG_VCD, "[TIDL] __vc_auth_disable_cb. Send a request to vc_mgr");
+
+    // int ret = VCD_ERROR_OPERATION_FAILED;
+    // ret = vcdc_send_request_auth_disable(pid);
+    // if (VCD_ERROR_NONE == ret) {
+    //     SLOG(LOG_INFO, TAG_VCD, "[SUCCESS] Send request auth disable. pid(%d), mgr_pid(%d)", pid, mgr_pid);
+    // } else {
+    //     SLOG(LOG_ERROR, TAG_VCD, "[ERROR] Fail to send request auth disable. ret(%d), pid(%d), mgr_pid(%d)", ret, pid, mgr_pid);
+    // }
+
+    // return ret;
+
+    return VCD_ERROR_NONE;
 }
 
 static int __vc_auth_start_cb(rpc_port_stub_vc_context_h context, int pid, int mgr_pid, void *user_data)
 {
-    SLOG(LOG_INFO, TAG_VCD, "[TIDL] __vc_auth_start_cb");
+    SLOG(LOG_INFO, TAG_VCD, "[TIDL] __vc_auth_start_cb. Send a request to vc_mgr");
+
+    // int ret = VCD_ERROR_OPERATION_FAILED;
+    // ret = vcdc_send_request_auth_start(pid);
+    // if (VCD_ERROR_NONE == ret) {
+    //     SLOG(LOG_INFO, TAG_VCD, "[SUCCESS] Send request auth start. pid(%d), mgr_pid(%d)", pid, mgr_pid);
+    // } else {
+    //     SLOG(LOG_ERROR, TAG_VCD, "[ERROR] Fail to send request auth start. ret(%d), pid(%d), mgr_pid(%d)", ret, pid, mgr_pid);
+    // }
+
+    // return ret;
+
+    return VCD_ERROR_NONE;
 }
 
 static int __vc_auth_stop_cb(rpc_port_stub_vc_context_h context, int pid, int mgr_pid, void *user_data)
 {
-    SLOG(LOG_INFO, TAG_VCD, "[TIDL] __vc_auth_stop_cb");
+    SLOG(LOG_INFO, TAG_VCD, "[TIDL] __vc_auth_stop_cb. Send a request to vc_mgr");
+
+    // int ret = VCD_ERROR_OPERATION_FAILED;
+    // ret = vcdc_send_request_auth_stop(pid);
+    // if (VCD_ERROR_NONE == ret) {
+    //     SLOG(LOG_INFO, TAG_VCD, "[SUCCESS] Send request auth stop. pid(%d), mgr_pid(%d)", pid, mgr_pid);
+    // } else {
+    //     SLOG(LOG_ERROR, TAG_VCD, "[ERROR] Fail to send request auth stop. ret(%d), pid(%d), mgr_pid(%d)", ret, pid, mgr_pid);
+    // }
+
+    // return ret;
+
+    return VCD_ERROR_NONE;
 }
 
 static int __vc_auth_cancel_cb(rpc_port_stub_vc_context_h context, int pid, int mgr_pid, void *user_data)
 {
-    SLOG(LOG_INFO, TAG_VCD, "[TIDL] __vc_auth_cancel_cb");
+    SLOG(LOG_INFO, TAG_VCD, "[TIDL] __vc_auth_cancel_cb. Send a request to vc_mgr");
+
+    // int ret = VCD_ERROR_OPERATION_FAILED;
+    // ret = vcdc_send_request_auth_cancel(pid);
+    // if (VCD_ERROR_NONE == ret) {
+    //     SLOG(LOG_INFO, TAG_VCD, "[SUCCESS] Send request auth cancel. pid(%d), mgr_pid(%d)", pid, mgr_pid);
+    // } else {
+    //     SLOG(LOG_ERROR, TAG_VCD, "[ERROR] Fail to send request auth cancel. ret(%d), pid(%d), mgr_pid(%d)", ret, pid, mgr_pid);
+    // }
+
+    // return ret;
+
+    return VCD_ERROR_NONE;
 }
 
 static int __vc_request_tts_cb(rpc_port_stub_vc_context_h context, int pid, const char *text, const char *lang, bool to_vcm, int *utt_id, void *user_data)
@@ -603,7 +661,7 @@ static int __vc_request_tts_cb(rpc_port_stub_vc_context_h context, int pid, cons
 
     int ret = VCD_ERROR_OPERATION_FAILED;
 
-    ret = vcd_server_request_tts(pid, text, lang, to_vcm, &utt_id);
+    ret = vcd_server_request_tts(pid, text, lang, to_vcm, utt_id);
     if (VCD_ERROR_NONE == ret) {
        SLOG(LOG_INFO, TAG_VCD, "[IN] vcd request tts : pid(%d), text(%s), language(%s), to_vcm(%d)", pid, text, lang, to_vcm);
     } else {
@@ -635,7 +693,7 @@ static int __vc_get_tts_audio_format_cb(rpc_port_stub_vc_context_h context, int
 
     int ret = VCD_ERROR_OPERATION_FAILED;
 
-    ret = vcd_server_get_tts_audio_format(pid, &rate, &channel, &audio_type);
+    ret = vcd_server_get_tts_audio_format(pid, rate, channel, audio_type);
     if (VCD_ERROR_NONE == ret) {
        SLOG(LOG_INFO, TAG_VCD, "[IN] vcd get tts audio format : pid(%d), rate(%d), channel(%d), audio_type(%d)", pid, *rate, *channel, *audio_type);
     } else {
@@ -774,6 +832,57 @@ int vcdc_send_error_signal_to_app(int pid, int reason, char *err_msg)
     return VCD_ERROR_NONE;
 }
 
+int vcdc_send_manager_pid(int manager_pid)
+{
+    // send signal to all pid
+
+    // get all pids
+    int* client_list = NULL;
+       int client_count = 0;
+    int ret = -1;
+    ret = vcd_client_get_ipc_list(&client_list, &client_count);
+    if (0 != ret || 0 == client_count) {
+        SLOG(LOG_WARN, TAG_VCD, "[WARNING] There is no client");
+        return VCD_ERROR_NONE;
+    }
+
+    client_ipc_info_s* info;
+    int pid = -1;
+    bundle* bundle_data;
+    char pid_char[10] = {0};
+    char mgrpid_char[10] = {0};
+    for (int i = 0 ; i < client_count ; i++) {
+        pid = client_list[i];
+
+        info = vcd_client_get_ipc_info(pid);
+        if (NULL == info) {
+            SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Fail to get ipc info. pid(%d)", pid);
+            continue;
+        }
+
+        bundle_data = bundle_create();
+        if (NULL == bundle_data) {
+            SLOG(LOG_ERROR, TAG_VCD, "[TIDL ERROR] Fail to create bundle data");
+            continue;
+        }
+
+        SLOG(LOG_INFO, TAG_VCD, "[TIDL] Send manager pid(%d) to app(%d)", manager_pid, pid);
+
+        snprintf(pid_char, 10, "%d", pid);
+        snprintf(mgrpid_char, 10, "%d", manager_pid);
+
+        bundle_add_str(bundle_data, VC_BUNDLE_METHOD, VCD_METHOD_SEND_MANAGER_PID);
+        bundle_add_str(bundle_data, VC_BUNDLE_PID, pid_char);
+        bundle_add_str(bundle_data, VC_BUNDLE_MANAGER_PID, mgrpid_char);
+
+        rpc_port_stub_vc_notify_cb_invoke(info->notify_cb, pid, bundle_data);
+
+        bundle_free(bundle_data);
+    }
+
+    return VCD_ERROR_NONE;
+}
+
 int vcdc_send_feedback_streaming(int pid, int utt_id, vc_feedback_event_e event, char* buffer, int len)
 {
     if (NULL == buffer || 0 >= len) {
index a4cd96e..715e3f3 100644 (file)
@@ -74,14 +74,12 @@ int vcdc_send_result(int pid, int manager_pid, int cmd_type);
 
 int vcdc_send_error_signal_to_app(int pid, int reason, char *err_msg);
 
+int vcdc_send_manager_pid(int manager_pid);
+
 int vcdc_send_feedback_streaming(int pid, int utt_id, vc_feedback_event_e event, char* buffer, int len);
 
 #ifdef __cplusplus
 }
 #endif
 
-<<<<<<< HEAD
-#endif /* __VCD_TIDL_h__ */
-=======
 #endif /* __VCD_TIDL_h__ */
->>>>>>> Replace IPC (VCC) from dbus to tidl