From 5ff971a140b3283390871cf200b29e1b4baa2bea Mon Sep 17 00:00:00 2001 From: kismo Date: Tue, 28 Jan 2020 15:17:56 +0900 Subject: [PATCH] encoding and decoding data for engine specific request Change-Id: I6e58316b36dbc3bd778e85a739c262283cbd81bb (cherry picked from commit 66512bfbecab942362a3756d01b235c7e0b0e1e5) --- client/vc_mgr_dbus.c | 17 +++++++++++++++-- server/vcd_dbus.c | 12 +++++++++++- server/vcd_dbus_server.c | 10 ++++++++-- 3 files changed, 34 insertions(+), 5 deletions(-) mode change 100644 => 100755 client/vc_mgr_dbus.c mode change 100644 => 100755 server/vcd_dbus.c mode change 100644 => 100755 server/vcd_dbus_server.c diff --git a/client/vc_mgr_dbus.c b/client/vc_mgr_dbus.c old mode 100644 new mode 100755 index be34e3f..eb6d62e --- a/client/vc_mgr_dbus.c +++ b/client/vc_mgr_dbus.c @@ -215,7 +215,14 @@ static Eina_Bool vc_mgr_listener_event_callback(void* data, Ecore_Fd_Handler *fd dbus_message_get_args(msg, &err, DBUS_TYPE_STRING, &engine_app_id, DBUS_TYPE_STRING, &event, DBUS_TYPE_STRING, &result, DBUS_TYPE_INVALID); if (NULL != result) { - __vc_mgr_cb_specific_engine_result(engine_app_id, event, result); + gsize decodingSize=0; + gchar *gDecodedResult = (gchar *)g_base64_decode((const gchar *)result, &decodingSize); + if (gDecodedResult) + { + SLOG(LOG_WARN, TAG_VCM, "@@@ Get specific engine result --> %s", gDecodedResult); + __vc_mgr_cb_specific_engine_result(engine_app_id, event, gDecodedResult); + g_free(gDecodedResult); + } } SLOG(LOG_DEBUG, TAG_VCM, "@@@"); @@ -2233,11 +2240,13 @@ int vc_mgr_dbus_send_specific_engine_request(int pid, const char* engine_app_id, SLOG(LOG_INFO, TAG_VCM, "@@ vc send specific engine : pid(%d), engine_app_id(%s), event(%s), request(%s)", pid, engine_app_id, event, request); } + gchar *gEncodedRequest = g_base64_encode((const guchar*)request, strlen(request)); + dbus_message_append_args(msg, DBUS_TYPE_INT32, &pid, DBUS_TYPE_STRING, &engine_app_id, DBUS_TYPE_STRING, &event, - DBUS_TYPE_STRING, &request, + DBUS_TYPE_STRING, &gEncodedRequest, DBUS_TYPE_INVALID); dbus_message_set_no_reply(msg, TRUE); @@ -2245,6 +2254,8 @@ int vc_mgr_dbus_send_specific_engine_request(int pid, const char* engine_app_id, /* send the message and flush the connection */ if (1 != dbus_connection_send(g_m_conn_sender, msg, NULL)) { SLOG(LOG_ERROR, TAG_VCM, "[Dbus ERROR] Fail to Send"); + if (gEncodedRequest) + g_free(gEncodedRequest); dbus_message_unref(msg); return VC_ERROR_OPERATION_FAILED; } else { @@ -2252,6 +2263,8 @@ int vc_mgr_dbus_send_specific_engine_request(int pid, const char* engine_app_id, dbus_connection_flush(g_m_conn_sender); } + if (gEncodedRequest) + g_free(gEncodedRequest); dbus_message_unref(msg); return 0; } diff --git a/server/vcd_dbus.c b/server/vcd_dbus.c old mode 100644 new mode 100755 index 1ca143e..e0cd0c2 --- a/server/vcd_dbus.c +++ b/server/vcd_dbus.c @@ -426,18 +426,28 @@ int vcdc_send_specific_engine_result_to_manager(int manager_pid, const char* eng return VCD_ERROR_OUT_OF_MEMORY; } - dbus_message_append_args(msg, DBUS_TYPE_STRING, &engine_app_id, DBUS_TYPE_STRING, &event, DBUS_TYPE_STRING, &result, DBUS_TYPE_INVALID); + gchar *gEncodedResult = g_base64_encode((const guchar*)result, strlen(result)); + + dbus_message_append_args(msg, DBUS_TYPE_STRING, &engine_app_id, DBUS_TYPE_STRING, &event, DBUS_TYPE_STRING, &gEncodedResult, DBUS_TYPE_INVALID); dbus_message_set_no_reply(msg, TRUE); if (1 != dbus_connection_send(g_conn_sender, msg, NULL)) { SLOG(LOG_ERROR, TAG_VCD, "[Dbus ERROR] Fail to Send"); + if (gEncodedResult) + g_free(gEncodedResult); + dbus_message_unref(msg); return VCD_ERROR_OPERATION_FAILED; } else { SLOG(LOG_INFO, TAG_VCD, "[Dbus] SUCCESS Send"); dbus_connection_flush(g_conn_sender); } + if (gEncodedResult) + g_free(gEncodedResult); + + dbus_message_unref(msg); + return 0; } diff --git a/server/vcd_dbus_server.c b/server/vcd_dbus_server.c old mode 100644 new mode 100755 index 46bacac..2adb89e --- a/server/vcd_dbus_server.c +++ b/server/vcd_dbus_server.c @@ -654,8 +654,14 @@ int vcd_dbus_server_mgr_send_specific_engine_request(DBusConnection* conn, DBusM dbus_error_free(&err); ret = VCD_ERROR_OPERATION_FAILED; } else { - ret = vcd_server_mgr_send_specific_engine_request(pid, engine_app_id, event, request); - SLOG(LOG_INFO, TAG_VCD, "[IN] vcd mgr specific engine request : pid(%d), engine_app_id(%s), event(%s), request(%s), ret(%d)", pid, engine_app_id, event, request, ret); + gsize decodingSize=0; + gchar *gDecodedRequest = (gchar *)g_base64_decode((const gchar *)request, &decodingSize); + if (gDecodedRequest) + { + ret = vcd_server_mgr_send_specific_engine_request(pid, engine_app_id, event, gDecodedRequest); + SLOG(LOG_INFO, TAG_VCD, "[IN] vcd mgr specific engine request : pid(%d), engine_app_id(%s), event(%s), request(%s), ret(%d)", pid, engine_app_id, event, gDecodedRequest, ret); + g_free(gDecodedRequest); + } } return 0; -- 2.7.4