Add internal api for server TTS and error callback logic
[platform/core/uifw/tts.git] / client / tts_dbus.c
index d005363..72a8ed5 100644 (file)
@@ -47,96 +47,103 @@ static Eina_Bool listener_event_callback(void* data, Ecore_Fd_Handler *fd_handle
 
        dbus_connection_read_write_dispatch(g_conn_listener, 50);
 
-       DBusMessage* msg = NULL;
-       msg = dbus_connection_pop_message(g_conn_listener);
+       while (1) {
+               DBusMessage* msg = NULL;
+               msg = dbus_connection_pop_message(g_conn_listener);
 
-       if (true != dbus_connection_get_is_connected(g_conn_listener)) {
-               SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Connection is disconnected");
-               return ECORE_CALLBACK_RENEW;
-       }
+               if (true != dbus_connection_get_is_connected(g_conn_listener)) {
+                       SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Connection is disconnected");
+                       break;
+               }
 
-       /* loop again if we haven't read a message */
-       if (NULL == msg) {
-               return ECORE_CALLBACK_RENEW;
-       }
+               /* loop again if we haven't read a message */
+               if (NULL == msg) {
+                       break;
+               }
 
-       DBusError err;
-       dbus_error_init(&err);
+               DBusError err;
+               dbus_error_init(&err);
 
-       char if_name[64] = {0, };
-       snprintf(if_name, 64, "%s", TTS_CLIENT_SERVICE_INTERFACE);
+               char if_name[64] = {0, };
+               snprintf(if_name, 64, "%s", TTS_CLIENT_SERVICE_INTERFACE);
 
-       if (dbus_message_is_signal(msg, if_name, TTSD_METHOD_UTTERANCE_STARTED)) {
-               int uid = 0;
-               int uttid = 0;
+               if (dbus_message_is_signal(msg, if_name, TTSD_METHOD_UTTERANCE_STARTED)) {
+                       int uid = 0;
+                       int uttid = 0;
 
-               dbus_message_get_args(msg, &err, DBUS_TYPE_INT32, &uid, DBUS_TYPE_INT32, &uttid, DBUS_TYPE_INVALID);
-               if (dbus_error_is_set(&err)) {
-                       SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Get arguments error (%s)", err.message);
-                       dbus_error_free(&err);
-               }
+                       dbus_message_get_args(msg, &err, DBUS_TYPE_INT32, &uid, DBUS_TYPE_INT32, &uttid, DBUS_TYPE_INVALID);
+                       if (dbus_error_is_set(&err)) {
+                               SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Get arguments error (%s)", err.message);
+                               dbus_error_free(&err);
+                       }
 
-               if (0 == __tts_cb_utt_started(uid, uttid)) {
-                       SLOG(LOG_DEBUG, TAG_TTSC, "<<<< tts utterance started : uid(%d) uttid(%d)", uid, uttid);
-               }
-       } /* TTSD_METHOD_UTTERANCE_STARTED */
+                       if (0 == __tts_cb_utt_started(uid, uttid)) {
+                               SLOG(LOG_DEBUG, TAG_TTSC, "<<<< tts utterance started : uid(%d) uttid(%d)", uid, uttid);
+                       }
+               } /* TTSD_METHOD_UTTERANCE_STARTED */
 
-       else if (dbus_message_is_signal(msg, if_name, TTSD_METHOD_UTTERANCE_COMPLETED)) {
-               int uid = 0;
-               int uttid = 0;
+               else if (dbus_message_is_signal(msg, if_name, TTSD_METHOD_UTTERANCE_COMPLETED)) {
+                       int uid = 0;
+                       int uttid = 0;
 
-               dbus_message_get_args(msg, &err, DBUS_TYPE_INT32, &uid, DBUS_TYPE_INT32, &uttid, DBUS_TYPE_INVALID);
-               if (dbus_error_is_set(&err)) {
-                       SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Get arguments error (%s)", err.message);
-                       dbus_error_free(&err);
-               }
+                       dbus_message_get_args(msg, &err, DBUS_TYPE_INT32, &uid, DBUS_TYPE_INT32, &uttid, DBUS_TYPE_INVALID);
+                       if (dbus_error_is_set(&err)) {
+                               SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Get arguments error (%s)", err.message);
+                               dbus_error_free(&err);
+                       }
 
-               if (0 == __tts_cb_utt_completed(uid, uttid)) {
-                       SLOG(LOG_DEBUG, TAG_TTSC, "<<<< tts utterance completed : uid(%d) uttid(%d)", uid, uttid);
-               }
-       } /* TTS_SIGNAL_UTTERANCE_STARTED */
+                       if (0 == __tts_cb_utt_completed(uid, uttid)) {
+                               SLOG(LOG_DEBUG, TAG_TTSC, "<<<< tts utterance completed : uid(%d) uttid(%d)", uid, uttid);
+                       }
+               } /* TTS_SIGNAL_UTTERANCE_STARTED */
 
-       else if (dbus_message_is_signal(msg, if_name, TTSD_METHOD_SET_STATE)) {
-               int uid = 0;
-               int state = 0;
+               else if (dbus_message_is_signal(msg, if_name, TTSD_METHOD_SET_STATE)) {
+                       int uid = 0;
+                       int state = 0;
 
-               dbus_message_get_args(msg, &err, DBUS_TYPE_INT32, &uid, DBUS_TYPE_INT32, &state, DBUS_TYPE_INVALID);
-               if (dbus_error_is_set(&err)) {
-                       SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Get arguments error (%s)", err.message);
-                       dbus_error_free(&err);
-               }
+                       dbus_message_get_args(msg, &err, DBUS_TYPE_INT32, &uid, DBUS_TYPE_INT32, &state, DBUS_TYPE_INVALID);
+                       if (dbus_error_is_set(&err)) {
+                               SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Get arguments error (%s)", err.message);
+                               dbus_error_free(&err);
+                       }
 
-               if (0 == __tts_cb_set_state(uid, state)) {
-                       SLOG(LOG_DEBUG, TAG_TTSC, "<<<< tts state changed : uid(%d) state(%d)", uid, state);
-               }
-       } /* TTSD_SIGNAL_SET_STATE */
-
-       else if (dbus_message_is_signal(msg, if_name, TTSD_METHOD_ERROR)) {
-               int uid;
-               int uttid;
-               int reason;
-               char* err_msg;
-
-               dbus_message_get_args(msg, &err,
-                       DBUS_TYPE_INT32, &uid,
-                       DBUS_TYPE_INT32, &uttid,
-                       DBUS_TYPE_INT32, &reason,
-                       DBUS_TYPE_STRING, &err_msg,
-                       DBUS_TYPE_INVALID);
+                       if (0 == __tts_cb_set_state(uid, state)) {
+                               SLOG(LOG_DEBUG, TAG_TTSC, "<<<< tts state changed : uid(%d) state(%d)", uid, state);
+                       }
+               } /* TTSD_SIGNAL_SET_STATE */
+
+               else if (dbus_message_is_signal(msg, if_name, TTSD_METHOD_ERROR)) {
+                       int uid;
+                       int uttid;
+                       int reason;
+                       char* err_msg;
+
+                       dbus_message_get_args(msg, &err,
+                               DBUS_TYPE_INT32, &uid,
+                               DBUS_TYPE_INT32, &uttid,
+                               DBUS_TYPE_INT32, &reason,
+                               DBUS_TYPE_STRING, &err_msg,
+                               DBUS_TYPE_INVALID);
+
+                       if (dbus_error_is_set(&err)) {
+                               SLOG(LOG_ERROR, TAG_TTSC, "<<<< Get Error message - Get arguments error (%s)", err.message);
+                               dbus_error_free(&err);
+                       } else {
+                               SLOG(LOG_ERROR, TAG_TTSC, "<<<< Get Error message : uid(%d), error(%d), uttid(%d), err_msg(%s)", uid, reason, uttid, (NULL == err_msg) ? "NULL" : err_msg);
+                               __tts_cb_error(uid, reason, uttid, err_msg);
 
-               if (dbus_error_is_set(&err)) {
-                       SLOG(LOG_ERROR, TAG_TTSC, "<<<< Get Error message - Get arguments error (%s)", err.message);
-                       dbus_error_free(&err);
-               } else { 
-                       SLOG(LOG_ERROR, TAG_TTSC, "<<<< Get Error message : uid(%d), error(%d), uttid(%d), err_msg(%s)", uid, reason, uttid, (NULL == err_msg) ? "NULL" : err_msg);
-                       __tts_cb_error(uid, reason, uttid, err_msg);
+                       }
+               } /* TTSD_SIGNAL_ERROR */
 
+               else {
+                       SLOG(LOG_DEBUG, TAG_TTSC, "Message is NOT valid");
+                       dbus_message_unref(msg);
+                       break;
                }
-       } /* TTSD_SIGNAL_ERROR */
-
-       /* free the message */
-       dbus_message_unref(msg);
 
+               /* free the message */
+               dbus_message_unref(msg);
+       }
        return ECORE_CALLBACK_PASS_ON;
 }