Add to set false as exit when dbus disconnects
[platform/core/uifw/stt.git] / client / stt_dbus.c
index e5da100..2f3292a 100644 (file)
@@ -705,6 +705,8 @@ int stt_dbus_open_connection()
                return STT_ERROR_OPERATION_FAILED;
        }
 
+       dbus_connection_set_exit_on_disconnect(g_conn_listener, false);
+
        int pid = getpid();
 
        char service_name[64];
@@ -2139,3 +2141,118 @@ int stt_dbus_request_cancel(int uid)
        return result;
 #endif
 }
+
+int stt_dbus_request_start_file(int uid, const char* lang, const char* type, int silence, const char* appid, const char* credential, const char* filepath, stt_audio_type_e audio_type, int sample_rate)
+{
+       if (NULL == lang || NULL == type || NULL == appid) {
+               SLOG(LOG_ERROR, TAG_STTC, "Input parameter is NULL");
+               return STT_ERROR_INVALID_PARAMETER;
+       }
+
+       DBusMessage* msg;
+
+       /* create a signal & check for errors */
+       msg = dbus_message_new_method_call(
+               g_server_service_name,
+               g_server_service_object,
+               g_server_service_interface,
+               STT_METHOD_START_FILE);
+
+       if (NULL == msg) {
+               SLOG(LOG_ERROR, TAG_STTC, ">>>> stt start file : Fail to make message");
+               return STT_ERROR_OPERATION_FAILED;
+       } else {
+               SLOG(LOG_DEBUG, TAG_STTC, ">>>> stt start file : uid(%d), language(%s), type(%s), appid(%s), filepath(%s), audio_type(%d), sample_rate(%d)", uid, lang, type, appid, filepath, audio_type, sample_rate);
+       }
+
+       char *temp = NULL;
+       if (NULL == credential) {
+               temp = strdup("NULL");
+       } else {
+               temp = strdup(credential);
+       }
+
+       dbus_message_append_args(msg,
+               DBUS_TYPE_INT32, &uid,
+               DBUS_TYPE_STRING, &lang,
+               DBUS_TYPE_STRING, &type,
+               DBUS_TYPE_INT32, &silence,
+               DBUS_TYPE_STRING, &appid,
+               DBUS_TYPE_STRING, &temp,
+               DBUS_TYPE_STRING, &filepath,
+               DBUS_TYPE_INT32, &audio_type,
+               DBUS_TYPE_INT32, &sample_rate,
+               DBUS_TYPE_INVALID);
+       if (g_conn_sender) {
+               dbus_message_set_no_reply(msg, TRUE);
+
+               if (!dbus_connection_send(g_conn_sender, msg, NULL)) {
+                       SLOG(LOG_ERROR, TAG_STTC, "[Dbus ERROR] <<<< stt start message : Out Of Memory !");
+                       if (NULL != temp) {
+                               free(temp);
+                               temp = NULL;
+                       }
+                       return STT_ERROR_OUT_OF_MEMORY;
+               } else {
+                       dbus_connection_flush(g_conn_sender);
+               }
+
+               dbus_message_unref(msg);
+
+       } else {
+               SLOG(LOG_WARN, TAG_STTC, "[WARN] dbus connection handle is null (%p)", g_conn_sender);
+               if (NULL != temp) {
+                               free(temp);
+                               temp = NULL;
+               }
+               return STT_ERROR_OPERATION_FAILED;
+       }
+
+       if (NULL != temp) {
+                       free(temp);
+                       temp = NULL;
+       }
+       return 0;
+}
+
+int stt_dbus_request_cancel_file(int uid)
+{
+       DBusMessage* msg;
+
+       /* create a signal & check for errors */
+       msg = dbus_message_new_method_call(
+               g_server_service_name,
+               g_server_service_object,
+               g_server_service_interface,
+               STT_METHOD_CANCEL_FILE);
+
+       if (NULL == msg) {
+               SLOG(LOG_ERROR, TAG_STTC, ">>>> stt cancel file : Fail to make message");
+               return STT_ERROR_OPERATION_FAILED;
+       } else {
+               SLOG(LOG_DEBUG, TAG_STTC, ">>>> stt cancel file : uid(%d)", uid);
+       }
+
+       dbus_message_append_args(msg,
+               DBUS_TYPE_INT32, &uid,
+               DBUS_TYPE_INVALID);
+
+       if (g_conn_sender) {
+               dbus_message_set_no_reply(msg, TRUE);
+
+               if (!dbus_connection_send(g_conn_sender, msg, NULL)) {
+                       SLOG(LOG_ERROR, TAG_STTC, "[Dbus ERROR] <<<< stt stop message : Out Of Memory !");
+                       return STT_ERROR_OUT_OF_MEMORY;
+               } else {
+                       dbus_connection_flush(g_conn_sender);
+               }
+
+               dbus_message_unref(msg);
+       } else {
+               SLOG(LOG_WARN, TAG_STTC, "[WARN] dbus connection handle is null (%p)", g_conn_sender);
+               return STT_ERROR_OPERATION_FAILED;
+       }
+
+       return 0;
+}
+