From: hj kim Date: Tue, 5 Jun 2018 04:26:17 +0000 (+0900) Subject: Change request_id from int to char X-Git-Tag: submit/tizen_4.0/20180611.010536~2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=0a87777359cbe3d59e513eca6bc8e93efc533d71;p=platform%2Fcore%2Fapi%2Fmedia-controller.git Change request_id from int to char Change-Id: Idd19cc1cf10c14d4c2c0ca2ddae95f92a35ff1d9 --- diff --git a/CMakeLists.txt b/CMakeLists.txt index 78c61d2..9723bd0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -24,7 +24,7 @@ SET(service "media") SET(submodule "controller") # for package file -SET(dependents "capi-base-common glib-2.0 gio-2.0 dlog sqlite3 db-util aul bundle libtzplatform-config cynara-client cynara-session cynara-creds-socket") +SET(dependents "capi-base-common glib-2.0 gio-2.0 dlog sqlite3 db-util aul bundle libtzplatform-config cynara-client cynara-session cynara-creds-socket uuid") SET(fw_name "${project_prefix}-${service}-${submodule}") PROJECT(${fw_name}) diff --git a/include/media_controller_private.h b/include/media_controller_private.h index 34ff2ff..41e9928 100755 --- a/include/media_controller_private.h +++ b/include/media_controller_private.h @@ -275,7 +275,7 @@ typedef struct { } media_controller_client_s; /* formal callback to receive signal */ -typedef void(*mc_signal_received_cb)(const char *interface_name, const char *signal_name, const char *message, const unsigned int request_id, void *user_data); +typedef void(*mc_signal_received_cb)(const char *interface_name, const char *signal_name, const char *message, const char *request_id, void *user_data); typedef struct { GDBusConnection *dbus_conn; char *interface_name; @@ -293,7 +293,7 @@ char* mc_util_get_interface_name(const char *type, const char *name); int mc_util_make_filter_interface_name(const char *prefix, const char *filter, char **interface_name); int mc_util_set_command_available(mc_priv_type_e priv_type, const char *name, const char *command_type, const char *command); int mc_util_get_command_available(mc_priv_type_e priv_type, const char *name, const char *command_type, const char *command); -int mc_util_get_request_id(unsigned int *req_id); +char *mc_util_generate_uuid(void); int mc_util_bundle_to_string(bundle *bundle_data, char **str_data); int mc_safe_strtoi(const char *buffer, int *value); int mc_safe_strtoull(const char *buffer, unsigned long long *value); @@ -304,7 +304,7 @@ int mc_ipc_unref_dbus_connection(GDBusConnection *conn, int *dref_count); int mc_ipc_register_listener(GList **manage_list, GDBusConnection *connection, const char *interface_name, const char *signal_name, mc_signal_received_cb callback, void *user_data); int mc_ipc_unregister_listener(GList **manage_list, GDBusConnection *connection, const char *interface_name, const char *signal_name); int mc_ipc_unregister_all_listener(GList **manage_list, GDBusConnection *connection); -int mc_ipc_send_message(GDBusConnection *connection, const char *dbus_name, const char *interface_name, const char* signal_name, const char* message, unsigned int *request_id); +int mc_ipc_send_message(GDBusConnection *connection, const char *dbus_name, const char *interface_name, const char* signal_name, const char* message, char **request_id); int mc_ipc_send_message_to_server(mc_msg_type_e msg_type, mc_priv_type_e priv_type, const char *request_msg); int mc_ipc_service_connect(mc_priv_type_e type); diff --git a/packaging/capi-media-controller.spec b/packaging/capi-media-controller.spec index 638199c..1d6fca2 100755 --- a/packaging/capi-media-controller.spec +++ b/packaging/capi-media-controller.spec @@ -1,6 +1,6 @@ Name: capi-media-controller Summary: A media controller library in Tizen Native API -Version: 0.1.53 +Version: 0.1.54 Release: 1 Group: Multimedia/API License: Apache-2.0 @@ -21,6 +21,7 @@ BuildRequires: pkgconfig(libsystemd-login) BuildRequires: pkgconfig(libtzplatform-config) BuildRequires: pkgconfig(cynara-client) BuildRequires: pkgconfig(cynara-session) +BuildRequires: pkgconfig(uuid) %description This package provides a media controller library in Tizen Native API diff --git a/src/media_controller_client.c b/src/media_controller_client.c index f92b6ee..e259632 100755 --- a/src/media_controller_client.c +++ b/src/media_controller_client.c @@ -19,7 +19,7 @@ #include "media_controller_db.h" #include -static void __client_server_cb(const char *interface_name, const char *signal_name, const char *message, const unsigned int request_id, void *user_data) +static void __client_server_cb(const char *interface_name, const char *signal_name, const char *message, const char *request_id, void *user_data) { gchar **params = NULL; media_controller_receiver_s *reciever = (media_controller_receiver_s *)user_data; @@ -29,7 +29,7 @@ static void __client_server_cb(const char *interface_name, const char *signal_na mc_retm_if(reciever->callback == NULL, "server_state_cb is NULL"); mc_retm_if(message == NULL, "message is NULL"); - mc_debug("__client_server_cb(%s, %s, %s, %ld, %p)", interface_name, signal_name, message, request_id, user_data); + mc_debug("__client_server_cb(%s, %s, %s, %s, %p)", interface_name, signal_name, message, request_id, user_data); params = g_strsplit(message, MC_STRING_DELIMITER, 0); mc_retm_if(params == NULL, "invalid server data"); @@ -39,7 +39,7 @@ static void __client_server_cb(const char *interface_name, const char *signal_na g_strfreev(params); } -static void __client_playback_cb(const char *interface_name, const char *signal_name, const char *message, const unsigned int request_id, void *user_data) +static void __client_playback_cb(const char *interface_name, const char *signal_name, const char *message, const char *request_id, void *user_data) { gchar **params = NULL; media_controller_receiver_s *reciever = (media_controller_receiver_s *)user_data; @@ -50,7 +50,7 @@ static void __client_playback_cb(const char *interface_name, const char *signal_ mc_retm_if(reciever->callback == NULL, "playback_cb is NULL"); mc_retm_if(message == NULL, "message is NULL"); - mc_debug("__client_playback_cb(%s, %s, %s, %ld, %p)", interface_name, signal_name, message, request_id, user_data); + mc_debug("__client_playback_cb(%s, %s, %s, %s, %p)", interface_name, signal_name, message, request_id, user_data); playback = (media_controller_playback_s *)calloc(1, sizeof(media_controller_playback_s)); mc_retm_if(playback == NULL, "Error allocation memory"); @@ -73,7 +73,7 @@ static void __client_playback_cb(const char *interface_name, const char *signal_ g_strfreev(params); } -static void __client_metadata_cb(const char *interface_name, const char *signal_name, const char *message, const unsigned int request_id, void *user_data) +static void __client_metadata_cb(const char *interface_name, const char *signal_name, const char *message, const char *request_id, void *user_data) { int ret = MEDIA_CONTROLLER_ERROR_NONE; mc_metadata_h metadata = NULL; @@ -84,7 +84,7 @@ static void __client_metadata_cb(const char *interface_name, const char *signal_ mc_retm_if(mc_client->metadata_cb.callback == NULL, "metadata_cb is NULL"); mc_retm_if(message == NULL, "message is NULL"); - mc_debug("__client_metadata_cb(%s, %s, %s, %ld, %p)", interface_name, signal_name, message, request_id, user_data); + mc_debug("__client_metadata_cb(%s, %s, %s, %s, %p)", interface_name, signal_name, message, request_id, user_data); ret = mc_db_get_metadata_info(mc_client->db_handle, message, &metadata); if (ret != MEDIA_CONTROLLER_ERROR_NONE) @@ -95,7 +95,7 @@ static void __client_metadata_cb(const char *interface_name, const char *signal_ mc_client_destroy_metadata(metadata); } -static void __client_shuffle_cb(const char *interface_name, const char *signal_name, const char *message, const unsigned int request_id, void *user_data) +static void __client_shuffle_cb(const char *interface_name, const char *signal_name, const char *message, const char *request_id, void *user_data) { gchar **params = NULL; media_controller_receiver_s *reciever = (media_controller_receiver_s *)user_data; @@ -104,7 +104,7 @@ static void __client_shuffle_cb(const char *interface_name, const char *signal_n mc_retm_if(reciever->callback == NULL, "shuffle_cb is NULL"); - mc_debug("__client_shuffle_cb(%s, %s, %s, %ld, %p)", interface_name, signal_name, message, request_id, user_data); + mc_debug("__client_shuffle_cb(%s, %s, %s, %s, %p)", interface_name, signal_name, message, request_id, user_data); params = g_strsplit(message, MC_STRING_DELIMITER, 0); mc_retm_if(params == NULL, "invalid shuffle mode data"); @@ -114,7 +114,7 @@ static void __client_shuffle_cb(const char *interface_name, const char *signal_n g_strfreev(params); } -static void __client_repeat_cb(const char *interface_name, const char *signal_name, const char *message, const unsigned int request_id, void *user_data) +static void __client_repeat_cb(const char *interface_name, const char *signal_name, const char *message, const char *request_id, void *user_data) { gchar **params = NULL; media_controller_receiver_s *reciever = (media_controller_receiver_s *)user_data; @@ -123,7 +123,7 @@ static void __client_repeat_cb(const char *interface_name, const char *signal_na mc_retm_if(reciever->callback == NULL, "repeat_cb is NULL"); - mc_debug("__client_repeat_cb(%s, %s, %s, %ld, %p)", interface_name, signal_name, message, request_id, user_data); + mc_debug("__client_repeat_cb(%s, %s, %s, %s %p)", interface_name, signal_name, message, request_id, user_data); params = g_strsplit(message, MC_STRING_DELIMITER, 0); mc_retm_if(params == NULL, "invalid repeat mode data"); @@ -133,7 +133,7 @@ static void __client_repeat_cb(const char *interface_name, const char *signal_na g_strfreev(params); } -static void __client_reply_cb(const char *interface_name, const char *signal_name, const char *message, const unsigned int request_id, void *user_data) +static void __client_reply_cb(const char *interface_name, const char *signal_name, const char *message, const char *request_id, void *user_data) { gchar **params = NULL; int enc_size = 0; @@ -145,7 +145,7 @@ static void __client_reply_cb(const char *interface_name, const char *signal_nam mc_command_reply_received_cb callback = (mc_command_reply_received_cb)reciever->callback; mc_retm_if(reciever->callback == NULL, "reply_cb is NULL"); - mc_debug("__client_reply_cb(%s, %s, %s, %ld, %p)", interface_name, signal_name, message, request_id, user_data); + mc_debug("__client_reply_cb(%s, %s, %s, %s, %p)", interface_name, signal_name, message, request_id, user_data); params = g_strsplit(message, MC_STRING_DELIMITER, 0); mc_retm_if(params == NULL, "invalid custom data"); @@ -333,7 +333,7 @@ static int __mc_parse_server_name(const char *interface_name, char **server_name return MEDIA_CONTROLLER_ERROR_NONE; } -static int __mc_client_send_command(mc_client_h client, const char *server_name, const char *command_type, const char *command, const char *signal_name, const char *message, unsigned int *request_id) +static int __mc_client_send_command(mc_client_h client, const char *server_name, const char *command_type, const char *command, const char *signal_name, const char *message, char **request_id) { int ret = MEDIA_CONTROLLER_ERROR_NONE; media_controller_client_s *mc_client = (media_controller_client_s *)client; diff --git a/src/media_controller_ipc.c b/src/media_controller_ipc.c index ca008d3..1a97e6a 100755 --- a/src/media_controller_ipc.c +++ b/src/media_controller_ipc.c @@ -22,7 +22,7 @@ #define MAX_RETRY_COUNT 3 #define MAX_WAIT_COUNT 100 -#define MC_SVC_NAME "mediacontroller" +#define DEFAULT_REQ_ID "DEF_REQ_ID" /* This checks if service daemon is running */ static int __is_service_activated(mc_priv_type_e priv_type) @@ -53,14 +53,18 @@ static void __mc_ipc_signal_cb(GDBusConnection *connection, mc_debug("__mc_ipc_signal_cb Received :"); gchar *message = NULL; - unsigned int request_id = 0; + gchar * request_id = NULL; - g_variant_get(parameters, "(u&s)", &request_id, &message); + g_variant_get(parameters, "(s&s)", &request_id, &message); if (!message) { mc_error("g_variant_get() fail"); return; } + if ((request_id != NULL) && (!g_strcmp0(request_id, DEFAULT_REQ_ID))) { + request_id = NULL; + } + char *key = __make_key_for_map(interface_name, signal_name); if (key == NULL) { mc_error("fail to get key"); @@ -71,7 +75,7 @@ static void __mc_ipc_signal_cb(GDBusConnection *connection, for (i = 0; i < listener_cnt; i++) { listener = (mc_ipc_listener_s *)g_list_nth_data(*listener_list, i); if (listener && !g_strcmp0(listener->key, key)) { - mc_debug("Received : [%s] (req_id = %ld) from %s.%s", message, request_id, listener->interface_name, listener->signal_name); + mc_debug("Received : [%s] (req_id = %s) from %s.%s", message, request_id, listener->interface_name, listener->signal_name); listener->callback(listener->interface_name, listener->signal_name, message, request_id, listener->user_data); break; } @@ -277,10 +281,10 @@ int mc_ipc_unregister_all_listener(GList **listener_list, GDBusConnection *conne return MEDIA_CONTROLLER_ERROR_NONE; } -int mc_ipc_send_message(GDBusConnection *connection, const char *dbus_name, const char *interface_name, const char *signal_name, const char *message, unsigned int *request_id) +int mc_ipc_send_message(GDBusConnection *connection, const char *dbus_name, const char *interface_name, const char *signal_name, const char *message, char **request_id) { GError *error = NULL; - unsigned int req_id = 0; + char *req_id = (char*)"DEF_REQ_ID"; mc_retvm_if(connection == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "connection is NULL"); mc_retvm_if(!MC_STRING_VALID(signal_name), MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Invalid signal_name"); @@ -288,8 +292,12 @@ int mc_ipc_send_message(GDBusConnection *connection, const char *dbus_name, cons mc_debug("emit signal - interface_name [%s], signal_name [%s]", interface_name, signal_name); - if (request_id != NULL) - mc_util_get_request_id(&req_id); + if (request_id != NULL) { + req_id = mc_util_generate_uuid(); + *request_id = g_strdup(req_id); + + mc_secure_debug("req_id[%s]", req_id); + } gboolean emmiting = g_dbus_connection_emit_signal( connection, @@ -297,7 +305,7 @@ int mc_ipc_send_message(GDBusConnection *connection, const char *dbus_name, cons MC_DBUS_PATH, interface_name, signal_name, - g_variant_new("(us)", req_id, message), + g_variant_new("(ss)", req_id, message), &error); if (!emmiting) { mc_error("g_dbus_connection_emit_signal failed : %s", error ? error->message : "none"); diff --git a/src/media_controller_server.c b/src/media_controller_server.c index 516ea16..e7d26d5 100755 --- a/src/media_controller_server.c +++ b/src/media_controller_server.c @@ -103,7 +103,7 @@ static int __mc_server_destoy(media_controller_server_s *mc_server) return ret; } -static void __server_playback_state_command_cb(const char *interface_name, const char *signal_name, const char *message, const unsigned int request_id, void *user_data) +static void __server_playback_state_command_cb(const char *interface_name, const char *signal_name, const char *message, const char *request_id, void *user_data) { gchar **params = NULL; media_controller_receiver_s *receiver = (media_controller_receiver_s *)user_data; @@ -115,7 +115,7 @@ static void __server_playback_state_command_cb(const char *interface_name, const mc_server_playback_state_command_received_cb callback = receiver->callback; mc_retm_if(receiver->callback == NULL, "playback_state_command_received_cb is NULL"); - mc_debug("__server_playback_state_command_cb(%s, %s, %s, %ld, %p)", interface_name, signal_name, message, request_id, user_data); + mc_debug("__server_playback_state_command_cb(%s, %s, %s, %s, %p)", interface_name, signal_name, message, request_id, user_data); params = g_strsplit(message, MC_STRING_DELIMITER, 0); mc_retm_if(params == NULL, "invalid playback state command"); @@ -137,7 +137,7 @@ static void __server_playback_state_command_cb(const char *interface_name, const g_strfreev(params); } -static void __server_custom_command_cb(const char *interface_name, const char *signal_name, const char *message, const unsigned int request_id, void *user_data) +static void __server_custom_command_cb(const char *interface_name, const char *signal_name, const char *message, const char *request_id, void *user_data) { gchar **params = NULL; int enc_size = 0; @@ -151,7 +151,7 @@ static void __server_custom_command_cb(const char *interface_name, const char *s mc_server_custom_command_received_cb callback = receiver->callback; mc_retm_if(receiver->callback == NULL, "custom_command_received_cb is NULL"); - mc_debug("__server_custom_cb(%s, %s, %s, %ld, %p)", interface_name, signal_name, message, request_id, user_data); + mc_debug("__server_custom_cb(%s, %s, %s, %s, %p)", interface_name, signal_name, message, request_id, user_data); params = g_strsplit(message, MC_STRING_DELIMITER, 0); mc_retm_if(params == NULL, "invalid custom data"); diff --git a/src/media_controller_util.c b/src/media_controller_util.c index 0a147e7..4e674e3 100755 --- a/src/media_controller_util.c +++ b/src/media_controller_util.c @@ -18,13 +18,12 @@ #include #include #include +#include #include "media_controller_private.h" //#define UNIT_TEST /* for testsuite */ #define MAX_NAME_LENGTH 255 -static GMutex mutex_req_id; - static void _mc_util_check_valid_name(const char *name, char **valid_name) { char old_word[MAX_NAME_LENGTH] = {0, }; @@ -176,24 +175,21 @@ int mc_util_get_command_available(mc_priv_type_e priv_type, const char *name, co return ret; } -int mc_util_get_request_id(unsigned int *req_id) +char *mc_util_generate_uuid(void) { - int ret = MEDIA_CONTROLLER_ERROR_NONE; - static unsigned int request_id = 0; - - mc_retvm_if(req_id == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "invalid parameter"); + uuid_t uuid_value; + static char uuid_unparsed[37]; - g_mutex_lock(&mutex_req_id); +RETRY_GEN: + uuid_generate(uuid_value); + uuid_unparse(uuid_value, uuid_unparsed); - if (request_id + 1 == UINT_MAX) { - request_id = 0; + if (strlen(uuid_unparsed) < 36) { + mc_debug("INVALID UUID : %s. RETRY GENERATE.", uuid_unparsed); + goto RETRY_GEN; } - request_id++; - *req_id = request_id; - g_mutex_unlock(&mutex_req_id); - - return ret; + return uuid_unparsed; } int mc_util_bundle_to_string(bundle *bundle_data, char **str_data)