From: Suyeon Hwang Date: Fri, 28 Jan 2022 08:57:44 +0000 (+0900) Subject: Send return value from server to client X-Git-Tag: submit/tizen/20220211.020451~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F32%2F270832%2F1;p=platform%2Fcore%2Fuifw%2Ftts.git Send return value from server to client Current code does not send return value of server error to client which uses TIDL as IPC method. However, this can make unintented behavior because some function like tts_play() needs to error value for returning. This patch makes server send return value to client although the client uses TIDL. By this change, clients can always get proper error values from server. Change-Id: Ibb98cd1bf64e92746022632f3bc5bf9eded904df Signed-off-by: Suyeon Hwang (cherry picked from commit 3a86f249ae8266bf145944f108088af0dd5f2ba3) --- diff --git a/client/tts_tidl.c b/client/tts_tidl.c index 8624cf6..57c0fa0 100644 --- a/client/tts_tidl.c +++ b/client/tts_tidl.c @@ -505,6 +505,15 @@ int tts_tidl_request_hello_sync(unsigned int uid) return TTS_ERROR_NONE; } +static int __covert_unhandled_error(int ret) +{ + if (RPC_PORT_ERROR_IO_ERROR == ret || RPC_PORT_ERROR_OUT_OF_MEMORY == ret) { + return TTS_ERROR_OPERATION_FAILED; + } + + return ret; +} + int tts_tidl_request_initialize(unsigned int uid, bool* credential_needed) { SLOG(LOG_DEBUG, TAG_TTSC, "[TIDL] tts_tidl_request_initialize"); @@ -528,9 +537,10 @@ int tts_tidl_request_initialize(unsigned int uid, bool* credential_needed) return TTS_ERROR_OPERATION_FAILED; } - if (0 != rpc_port_proxy_tts_invoke_initialize(info->rpc_h, client->pid, uid, &temp)) { + int ret = rpc_port_proxy_tts_invoke_initialize(info->rpc_h, client->pid, uid, &temp); + if (RPC_PORT_ERROR_NONE != ret) { SLOG(LOG_ERROR, TAG_TTSC, ">>>> Request tts initialize : Fail to invoke message"); - return TTS_ERROR_OPERATION_FAILED; + return __covert_unhandled_error(ret); } *credential_needed = temp; @@ -561,9 +571,10 @@ int tts_tidl_request_finalize(unsigned int uid) return TTS_ERROR_OPERATION_FAILED; } - if (0 != rpc_port_proxy_tts_invoke_finalize(info->rpc_h, uid)) { + int ret = rpc_port_proxy_tts_invoke_finalize(info->rpc_h, uid); + if (RPC_PORT_ERROR_NONE != ret) { SLOG(LOG_ERROR, TAG_TTSC, ">>>> Request tts initialize : Fail to invoke message"); - return TTS_ERROR_OPERATION_FAILED; + return __covert_unhandled_error(ret); } tts_client_set_start_listening(uid, false); @@ -597,9 +608,10 @@ int tts_tidl_request_add_text(unsigned int uid, const char* text, const char* la } const char *not_null_credential = NULL == credential ? "NULL" : credential; - if (0 != rpc_port_proxy_tts_invoke_add_text(info->rpc_h, uid, text, lang, vctype, speed, uttid, not_null_credential)) { + int ret = rpc_port_proxy_tts_invoke_add_text(info->rpc_h, uid, text, lang, vctype, speed, uttid, not_null_credential); + if (RPC_PORT_ERROR_NONE != ret) { SLOG(LOG_ERROR, TAG_TTSC, ">>>> Request add text : Fail to invoke message"); - return TTS_ERROR_OPERATION_FAILED; + return __covert_unhandled_error(ret); } return TTS_ERROR_NONE; @@ -631,9 +643,10 @@ int tts_tidl_request_set_private_data(unsigned int uid, const char* key, const c return TTS_ERROR_OPERATION_FAILED; } - if (0 != rpc_port_proxy_tts_invoke_set_private(info->rpc_h, uid, key, data)) { + int ret = rpc_port_proxy_tts_invoke_set_private(info->rpc_h, uid, key, data); + if (RPC_PORT_ERROR_NONE != ret) { SLOG(LOG_ERROR, TAG_TTSC, ">>>> Request set private data : Fail to invoke message"); - return TTS_ERROR_OPERATION_FAILED; + return __covert_unhandled_error(ret); } return TTS_ERROR_NONE; @@ -667,10 +680,11 @@ int tts_tidl_request_get_private_data(unsigned int uid, const char* key, char** return TTS_ERROR_OPERATION_FAILED; } - if (0 != rpc_port_proxy_tts_invoke_get_private(info->rpc_h, uid, key, &tmp)) { + int ret = rpc_port_proxy_tts_invoke_get_private(info->rpc_h, uid, key, &tmp); + if (RPC_PORT_ERROR_NONE != ret) { SLOG(LOG_ERROR, TAG_TTSC, ">>>> Request get private data : Fail to invoke message"); free(tmp); - return TTS_ERROR_OPERATION_FAILED; + return __covert_unhandled_error(ret); } SLOG(LOG_DEBUG, TAG_TTSC, "<<<<"); @@ -701,9 +715,10 @@ int tts_tidl_request_play(unsigned int uid, const char* credential) } const char *not_null_credential = NULL == credential ? "NULL" : credential; - if (0 != rpc_port_proxy_tts_invoke_play(info->rpc_h, uid, not_null_credential)) { + int ret = rpc_port_proxy_tts_invoke_play(info->rpc_h, uid, not_null_credential); + if (RPC_PORT_ERROR_NONE != ret) { SLOG(LOG_ERROR, TAG_TTSC, ">>>> Request play : Fail to invoke message"); - return TTS_ERROR_OPERATION_FAILED; + return __covert_unhandled_error(ret); } SLOG(LOG_DEBUG, TAG_TTSC, "<<<<"); @@ -732,9 +747,10 @@ int tts_tidl_request_stop(unsigned int uid) return TTS_ERROR_OPERATION_FAILED; } - if (0 != rpc_port_proxy_tts_invoke_stop(info->rpc_h, uid)) { + int ret = rpc_port_proxy_tts_invoke_stop(info->rpc_h, uid); + if (RPC_PORT_ERROR_NONE != ret) { SLOG(LOG_ERROR, TAG_TTSC, ">>>> Request stop : Fail to invoke message"); - return TTS_ERROR_OPERATION_FAILED; + return __covert_unhandled_error(ret); } SLOG(LOG_DEBUG, TAG_TTSC, "<<<<"); @@ -762,9 +778,10 @@ int tts_tidl_request_pause(unsigned int uid) return TTS_ERROR_OPERATION_FAILED; } - if (0 != rpc_port_proxy_tts_invoke_pause(info->rpc_h, uid)) { - SLOG(LOG_ERROR, TAG_TTSC, ">>>> Request pause : Fail to invoke message"); - return TTS_ERROR_OPERATION_FAILED; + int ret = rpc_port_proxy_tts_invoke_pause(info->rpc_h, uid); + if (RPC_PORT_ERROR_NONE != ret) { + SLOG(LOG_ERROR, TAG_TTSC, ">>>> Request pause : Fail to invoke message(%d)", ret); + return __covert_unhandled_error(ret); } SLOG(LOG_DEBUG, TAG_TTSC, "<<<<"); @@ -794,9 +811,10 @@ int tts_tidl_request_play_pcm(unsigned int uid) return TTS_ERROR_OPERATION_FAILED; } - if (0 != rpc_port_proxy_tts_invoke_play_pcm(info->rpc_h, uid)) { - SLOG(LOG_ERROR, TAG_TTSC, ">>>> Request play pcm : Fail to invoke message"); - return TTS_ERROR_OPERATION_FAILED; + int ret = rpc_port_proxy_tts_invoke_play_pcm(info->rpc_h, uid); + if (RPC_PORT_ERROR_NONE != ret) { + SLOG(LOG_ERROR, TAG_TTSC, ">>>> Request play pcm : Fail to invoke message(%d)", ret); + return __covert_unhandled_error(ret); } SLOG(LOG_DEBUG, TAG_TTSC, "<<<<"); @@ -825,9 +843,10 @@ int tts_tidl_request_stop_pcm(unsigned int uid) return TTS_ERROR_OPERATION_FAILED; } - if (0 != rpc_port_proxy_tts_invoke_stop_pcm(info->rpc_h, uid)) { - SLOG(LOG_ERROR, TAG_TTSC, ">>>> Request pause pcm : Fail to invoke message"); - return TTS_ERROR_OPERATION_FAILED; + int ret = rpc_port_proxy_tts_invoke_stop_pcm(info->rpc_h, uid); + if (RPC_PORT_ERROR_NONE != ret) { + SLOG(LOG_ERROR, TAG_TTSC, ">>>> Request pause pcm : Fail to invoke message(%d)", ret); + return __covert_unhandled_error(ret); } SLOG(LOG_DEBUG, TAG_TTSC, "<<<<"); @@ -871,9 +890,9 @@ int tts_tidl_request_add_pcm(unsigned int uid, int event, const char* data, int int ret = rpc_port_proxy_tts_invoke_add_pcm(info->rpc_h, uid, event, pcm_data, data_size, audio_type, rate); rpc_port_proxy_array_char_destroy(pcm_data); - if (0 != ret) { + if (RPC_PORT_ERROR_NONE != ret) { SLOG(LOG_ERROR, TAG_TTSC, ">>>> Request pause pcm : Fail to invoke message(%d)", ret); - return ret; + return __covert_unhandled_error(ret); } SLOG(LOG_DEBUG, TAG_TTSC, "<<<<"); @@ -903,9 +922,10 @@ int tts_tidl_request_set_mode(unsigned int uid, tts_mode_e mode) return TTS_ERROR_OPERATION_FAILED; } - if (0 != rpc_port_proxy_tts_invoke_set_mode(info->rpc_h, uid, mode)) { - SLOG(LOG_ERROR, TAG_TTSC, ">>>> Request set private data : Fail to invoke message"); - return TTS_ERROR_OPERATION_FAILED; + int ret = rpc_port_proxy_tts_invoke_set_mode(info->rpc_h, uid, mode); + if (RPC_PORT_ERROR_NONE != ret) { + SLOG(LOG_ERROR, TAG_TTSC, ">>>> Request set private data : Fail to invoke message(%d)", ret); + return __covert_unhandled_error(ret); } return TTS_ERROR_NONE; diff --git a/server/ttsd_tidl.c b/server/ttsd_tidl.c index 3f33ff9..a430967 100644 --- a/server/ttsd_tidl.c +++ b/server/ttsd_tidl.c @@ -233,22 +233,22 @@ static int __register_cb_sync(rpc_port_stub_tts_context_h context, int pid, int SLOG(LOG_ERROR, tts_tag(), "<<<<<<<<<<<"); - return TTSE_ERROR_NONE; + return TTSD_ERROR_NONE; } static int __set_mode_cb(rpc_port_stub_tts_context_h context, int uid, int mode, void* user_data) { unsigned int u_uid = (unsigned int)uid; - SLOG(LOG_INFO, tts_tag(), "[Server] Set client mode. uid (%u), mode (%d)", u_uid, mode); + SLOG(LOG_INFO, tts_tag(), ">>>>> TTS SET MODE. uid(%u). mode (%d)", u_uid, mode); - int ret = -1; - ret = ttsd_server_set_mode(u_uid, mode); + int ret = ttsd_server_set_mode(u_uid, mode); if (TTSD_ERROR_NONE != ret) { - SLOG(LOG_ERROR, tts_tag(), "[Server] Fail to set mode. uid is not invalid"); + SLOG(LOG_ERROR, tts_tag(), "[ERROR] TTS SET MODE (%u) fail (%d/%s) <<<<<", u_uid, ret, get_error_message(ret)); return ret; } - return TTSE_ERROR_NONE; + SLOG(LOG_DEBUG, tts_tag(), "<<<<<"); + return TTSD_ERROR_NONE; } int ttsdc_tidl_send_hello(int pid, unsigned int uid, int ret, int credential_needed) @@ -287,7 +287,7 @@ static int __initialize_cb(rpc_port_stub_tts_context_h context, int pid, int uid } SLOG(LOG_ERROR, tts_tag(), "[OUT] tts initialize credential_needed(%d)", *credential_needed); - return TTSE_ERROR_NONE; + return TTSD_ERROR_NONE; } static int __finalize_cb(rpc_port_stub_tts_context_h context, int uid, void *user_data) @@ -295,8 +295,10 @@ static int __finalize_cb(rpc_port_stub_tts_context_h context, int uid, void *use unsigned int u_uid = (unsigned int)uid; SLOG(LOG_ERROR, tts_tag(), ">>>>> TTS FINALIZE. uid(%u)", u_uid); - if (0 != ttsd_server_finalize(u_uid)) { - return -1; + int ret = ttsd_server_finalize(u_uid); + if (TTSD_ERROR_NONE != ret) { + SLOG(LOG_ERROR, tts_tag(), "[ERROR] TTS FINALIZE (%u) fail (%d/%s) <<<<<", u_uid, ret, get_error_message(ret)); + return ret; } pthread_mutex_lock(&g_tidl_proxy_infos_mutex); @@ -316,122 +318,145 @@ static int __finalize_cb(rpc_port_stub_tts_context_h context, int uid, void *use rpc_port_stub_tts_context_set_tag(context, NULL); SLOG(LOG_ERROR, tts_tag(), "<<<<<"); - return TTSE_ERROR_NONE; + return TTSD_ERROR_NONE; } static int __add_text_cb(rpc_port_stub_tts_context_h context, int uid, const char *text, const char *lang, int vctype, int speed, int uttid, const char *credential, void *user_data) { - SLOG(LOG_DEBUG, tts_tag(), ">>>>> TTS ADD TEXT"); + unsigned int u_uid = (unsigned int)uid; + SLOG(LOG_DEBUG, tts_tag(), ">>>>> TTS ADD TEXT (%u)", u_uid); - if (0 != ttsd_server_add_queue((unsigned int)uid, text, lang, vctype, speed, uttid, credential)) { - return -1; + int ret = ttsd_server_add_queue(u_uid, text, lang, vctype, speed, uttid, credential); + if (TTSD_ERROR_NONE != ret) { + SLOG(LOG_ERROR, tts_tag(), "[ERROR] TTS ADD TEXT (%u) fail (%d/%s) <<<<<", u_uid, ret, get_error_message(ret)); + return ret; } SLOG(LOG_DEBUG, tts_tag(), "<<<<<"); - - return TTSE_ERROR_NONE; + return TTSD_ERROR_NONE; } static int __stop_cb(rpc_port_stub_tts_context_h context, int uid, void *user_data) { - SLOG(LOG_DEBUG, tts_tag(), ">>>>> TTS STOP"); + unsigned int u_uid = (unsigned int)uid; + SLOG(LOG_DEBUG, tts_tag(), ">>>>> TTS STOP (%u)", u_uid); - if (0 != ttsd_server_stop((unsigned int)uid)) { - return -1; + int ret = ttsd_server_stop(u_uid); + if (TTSD_ERROR_NONE != ret) { + SLOG(LOG_ERROR, tts_tag(), "[ERROR] TTS STOP (%u) fail (%d/%s) <<<<<", u_uid, ret, get_error_message(ret)); + return ret; } + SLOG(LOG_DEBUG, tts_tag(), "<<<<<"); - return TTSE_ERROR_NONE; + return TTSD_ERROR_NONE; } static int __pause_cb(rpc_port_stub_tts_context_h context, int uid, void *user_data) { int uttid; - SLOG(LOG_DEBUG, tts_tag(), ">>>>> TTS PLAYER PAUE"); + unsigned int u_uid = (unsigned int)uid; + SLOG(LOG_DEBUG, tts_tag(), ">>>>> TTS PLAYER PAUSE (%u)", u_uid); - if (0 != ttsd_server_pause((unsigned int)uid, &uttid)) { - return -1; + int ret = ttsd_server_pause(u_uid, &uttid); + if (TTSD_ERROR_NONE != ret) { + SLOG(LOG_ERROR, tts_tag(), "[ERROR] TTS PLAYER PAUSE (%u) fail (%d/%s) <<<<<", u_uid, ret, get_error_message(ret)); + return ret; } SLOG(LOG_DEBUG, tts_tag(), "<<<<<"); - return TTSE_ERROR_NONE; + return TTSD_ERROR_NONE; } static int __play_pcm_cb(rpc_port_stub_tts_context_h context, int uid, void *user_data) { - SLOG(LOG_DEBUG, tts_tag(), ">>>>> TTS PLAY PCM"); + unsigned int u_uid = (unsigned int)uid; + SLOG(LOG_DEBUG, tts_tag(), ">>>>> TTS PLAY PCM (%u)", u_uid); - if (0 != ttsd_server_play_pcm((unsigned int)uid)) { - return -1; + int ret = ttsd_server_play_pcm(u_uid); + if (TTSD_ERROR_NONE != ret) { + SLOG(LOG_ERROR, tts_tag(), "[ERROR] TTS PLAY PCM (%u) fail (%d/%s) <<<<<", u_uid, ret, get_error_message(ret)); + return ret; } SLOG(LOG_DEBUG, tts_tag(), "<<<<<"); - return TTSE_ERROR_NONE; + return TTSD_ERROR_NONE; } static int __stop_pcm_cb(rpc_port_stub_tts_context_h context, int uid, void *user_data) { - SLOG(LOG_DEBUG, tts_tag(), ">>>>> TTS STOP PCM"); + unsigned int u_uid = (unsigned int)uid; + SLOG(LOG_DEBUG, tts_tag(), ">>>>> TTS STOP PCM (%u)", u_uid); - if (0 != ttsd_server_stop_pcm((unsigned int)uid)) { - return -1; + int ret = ttsd_server_stop_pcm(u_uid); + if (TTSD_ERROR_NONE != ret) { + SLOG(LOG_ERROR, tts_tag(), "[ERROR] TTS STOP PCM (%u) fail (%d/%s) <<<<<", u_uid, ret, get_error_message(ret)); + return ret; } SLOG(LOG_DEBUG, tts_tag(), "<<<<<"); - - return TTSE_ERROR_NONE; + return TTSD_ERROR_NONE; } static int __set_private_cb(rpc_port_stub_tts_context_h context, int uid, const char *key, const char *data, void *user_data) { - SLOG(LOG_DEBUG, tts_tag(), ">>>>> TTS SET PRIVATE DATA"); + unsigned int u_uid = (unsigned int)uid; + SLOG(LOG_DEBUG, tts_tag(), ">>>>> TTS SET PRIVATE DATA (%u)", u_uid); - if (0 != ttsd_server_set_private_data((unsigned int)uid, key, data)) { - return -1; + int ret = ttsd_server_set_private_data(u_uid, key, data); + if (TTSD_ERROR_NONE != ret) { + SLOG(LOG_ERROR, tts_tag(), "[ERROR] TTS SET PRIVATE DATA (%u) fail (%d/%s) <<<<<", u_uid, ret, get_error_message(ret)); + return ret; } SLOG(LOG_DEBUG, tts_tag(), "<<<<<"); - return TTSE_ERROR_NONE; + return TTSD_ERROR_NONE; } static int __get_private_cb(rpc_port_stub_tts_context_h context, int uid, const char *key, char **data, void *user_data) { - SLOG(LOG_DEBUG, tts_tag(), ">>>>> TTS GET PRIVATE DATA"); + unsigned int u_uid = (unsigned int)uid; + SLOG(LOG_DEBUG, tts_tag(), ">>>>> TTS GET PRIVATE DATA (%u)", u_uid); char *tmp = NULL; - if (0 != ttsd_server_get_private_data((unsigned int)uid, key, &tmp)) { + int ret = ttsd_server_get_private_data(u_uid, key, &tmp); + if (TTSD_ERROR_NONE != ret) { + SLOG(LOG_ERROR, tts_tag(), "[ERROR] TTS GET PRIVATE DATA (%u) fail (%d/%s) <<<<<", u_uid, ret, get_error_message(ret)); free(tmp); - return TTSD_ERROR_OPERATION_FAILED; + return ret; } *data = tmp; SLOG(LOG_DEBUG, tts_tag(), "<<<<<"); - - return TTSE_ERROR_NONE; + return TTSD_ERROR_NONE; } static int __play_cb(rpc_port_stub_tts_context_h context, int uid, const char *credential, void *user_data) { unsigned int u_uid = (unsigned int)uid; - SLOG(LOG_DEBUG, tts_tag(), ">>>>> TTS PLAY (%d)", u_uid); - if (0 != ttsd_server_play(u_uid, credential)) { - return -1; + SLOG(LOG_DEBUG, tts_tag(), ">>>>> TTS PLAY (%u)", u_uid); + + int ret = ttsd_server_play(u_uid, credential); + if (TTSD_ERROR_NONE != ret) { + SLOG(LOG_ERROR, tts_tag(), "[ERROR] TTS PLAY (%u) fail (%d/%s) <<<<<", u_uid, ret, get_error_message(ret)); + return ret; } - SLOG(LOG_DEBUG, tts_tag(), "<<<<<"); - return TTSE_ERROR_NONE; + SLOG(LOG_DEBUG, tts_tag(), "<<<<<"); + return TTSD_ERROR_NONE; } static int __add_pcm_cb(rpc_port_stub_tts_context_h context, int uid, int event, rpc_port_stub_array_char_h pcm_data, int data_size, int audio_type, int rate, void *user_data) { unsigned int u_uid = (unsigned int)uid; - SLOG(LOG_DEBUG, tts_tag(), ">>>>> TTS ADD PCM (%d)", u_uid); + SLOG(LOG_DEBUG, tts_tag(), ">>>>> TTS ADD PCM (%u)", u_uid); + char* pcm_data_raw = NULL; int pcm_data_size = 0; rpc_port_stub_array_char_get(pcm_data, &pcm_data_raw, &pcm_data_size); @@ -439,9 +464,13 @@ static int __add_pcm_cb(rpc_port_stub_tts_context_h context, int uid, int event, int ret = ttsd_server_add_pcm(u_uid, event, (void *)pcm_data_raw, data_size, audio_type, rate); free(pcm_data_raw); - SLOG(LOG_DEBUG, tts_tag(), "<<<<<"); + if (TTSD_ERROR_NONE != ret) { + SLOG(LOG_ERROR, tts_tag(), "[ERROR] TTS ADD PCM (%u) fail (%d/%s) <<<<<", u_uid, ret, get_error_message(ret)); + return ret; + } - return ret; + SLOG(LOG_DEBUG, tts_tag(), "<<<<<"); + return TTSD_ERROR_NONE; } int ttsd_tidl_open_connection() @@ -472,7 +501,7 @@ int ttsd_tidl_open_connection() ret = rpc_port_stub_tts_register(&g_callback, NULL); if (0 == ret) { SLOG(LOG_DEBUG, tts_tag(), "regitster callback"); - return TTSE_ERROR_NONE; + return TTSD_ERROR_NONE; } usleep(100000); count++; @@ -487,7 +516,7 @@ int ttsd_tidl_close_connection() SLOG(LOG_DEBUG, tts_tag(), "[TIDL] ttsd_tidl_close_connection"); rpc_port_stub_tts_unregister(); - return TTSE_ERROR_NONE; + return TTSD_ERROR_NONE; } static int __send_message(int pid, unsigned int uid, int data, const char *method) @@ -505,7 +534,7 @@ static int __send_message(int pid, unsigned int uid, int data, const char *metho __send_msg(pid, uid, msg); bundle_free(msg); - return TTSE_ERROR_NONE; + return TTSD_ERROR_NONE; } int ttsdc_tidl_send_utt_start_message(int pid, unsigned int uid, int uttid) @@ -541,5 +570,5 @@ int ttsdc_tidl_send_error_message(int pid, unsigned int uid, int uttid, int reas __send_msg(pid, uid, msg); bundle_free(msg); - return TTSE_ERROR_NONE; + return TTSD_ERROR_NONE; }