From 31c6e7447ef216d032e01a05eedc616e27f5716a Mon Sep 17 00:00:00 2001 From: Minje Ahn Date: Wed, 12 Jun 2024 10:28:15 +0900 Subject: [PATCH] media_controller_util refactoring 1. Checked only an app name not a full interface name. 2. Changed the substitution pattern from 'APPID_SEP' to '__'. 3. Used g_autofree. 4. Used g_uuid_string_random() instead. (Remove uuid dependency) Change-Id: I54adcf7461dbe25482fedf2b442a1a8fb8498a27 Signed-off-by: Minje Ahn --- CMakeLists.txt | 4 +- include/media_controller_private.h | 5 +-- packaging/capi-media-controller.spec | 3 +- src/media_controller_client.c | 40 ++++++------------ src/media_controller_ipc.c | 21 ++++------ src/media_controller_server.c | 79 +++++++++++++++--------------------- src/media_controller_util.c | 79 ++++++++---------------------------- 7 files changed, 75 insertions(+), 156 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index c4ce5e0..9f71766 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,4 @@ -CMAKE_MINIMUM_REQUIRED(VERSION 2.6) +CMAKE_MINIMUM_REQUIRED(VERSION 2.6...2.8.12) SET(Services "application" @@ -26,7 +26,7 @@ SET(submodule "controller") SET(fw_name "${project_prefix}-${service}-${submodule}") # for package file -SET(dependents "capi-base-common glib-2.0 gio-2.0 dlog sqlite3 aul bundle libtzplatform-config cynara-client cynara-session cynara-creds-socket uuid vconf") +SET(dependents "capi-base-common glib-2.0 gio-2.0 dlog sqlite3 aul bundle libtzplatform-config cynara-client cynara-session cynara-creds-socket vconf") SET(pc_dependents "capi-base-common bundle") PROJECT(${fw_name}) diff --git a/include/media_controller_private.h b/include/media_controller_private.h index 851ee45..6e96628 100644 --- a/include/media_controller_private.h +++ b/include/media_controller_private.h @@ -397,11 +397,10 @@ typedef struct { /* util */ int _mc_util_get_own_name(char **name); -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); +char * _mc_util_get_interface_name(const char *type, const char *name); +char * _mc_util_make_filter_interface_name(const char *filter); 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); -char *_mc_util_generate_uuid(void); int _mc_util_bundle_to_string(bundle *bundle_data, char **str_data); gboolean _mc_util_is_valid_playback_action(mc_playback_action_e action); gboolean _mc_util_is_valid_display_mode(mc_display_mode_e mode); diff --git a/packaging/capi-media-controller.spec b/packaging/capi-media-controller.spec index 986d972..6f95938 100644 --- 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: 1.0.3 +Version: 1.0.4 Release: 0 Group: Multimedia/API License: Apache-2.0 @@ -20,7 +20,6 @@ BuildRequires: pkgconfig(libsystemd) BuildRequires: pkgconfig(libtzplatform-config) BuildRequires: pkgconfig(cynara-client) BuildRequires: pkgconfig(cynara-session) -BuildRequires: pkgconfig(uuid) BuildRequires: pkgconfig(capi-appfw-app-control) BuildRequires: pkgconfig(vconf) diff --git a/src/media_controller_client.c b/src/media_controller_client.c index 9259c74..63870f0 100644 --- a/src/media_controller_client.c +++ b/src/media_controller_client.c @@ -447,19 +447,15 @@ static int __mc_client_destroy(media_controller_client_s *mc_client) static int __mc_client_register_filter_listener(media_controller_client_s *mc_client, GList **filter_list, const char *server_name, const char *signal_name, mc_signal_received_cb callback, void *user_data) { int ret = MEDIA_CONTROLLER_ERROR_NONE; - char *filter_interface_name = NULL; + g_autofree gchar *filter = _mc_util_make_filter_interface_name(server_name); mc_debug("signal = [%s]", signal_name); + mc_retvm_if(!filter, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Fail _mc_util_make_filter_interface_name"); - ret = _mc_util_make_filter_interface_name(MC_DBUS_UPDATE_INTERFACE, server_name, &filter_interface_name); - mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, ret, "Fail _mc_util_make_filter_interface_name"); - - ret = _mc_ipc_register_listener(&mc_client->listeners, mc_client->dconn, filter_interface_name, signal_name, callback, user_data); + ret = _mc_ipc_register_listener(&mc_client->listeners, mc_client->dconn, filter, signal_name, callback, user_data); if (ret == MEDIA_CONTROLLER_ERROR_NONE) *filter_list = g_list_append(*filter_list, g_strdup(server_name)); - g_free(filter_interface_name); - return ret; } @@ -516,7 +512,7 @@ static int __mc_client_send_command(mc_client_h client, const char *server_name, { int ret = MEDIA_CONTROLLER_ERROR_NONE; media_controller_client_s *mc_client = (media_controller_client_s *)client; - char *interface_name = NULL; + g_autofree gchar *interface_name = NULL; mc_retvm_if(mc_client == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Handle is NULL"); mc_retvm_if(!MC_STRING_VALID(command_type), MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Invalid command_type"); @@ -533,8 +529,6 @@ static int __mc_client_send_command(mc_client_h client, const char *server_name, if (ret != MEDIA_CONTROLLER_ERROR_NONE) mc_error("Error _mc_ipc_send_message [%d]", ret); - g_free(interface_name); - return ret; } @@ -567,9 +561,8 @@ int mc_client_create(mc_client_h *client) static int __mc_client_set_updated_cb(mc_client_h client, mc_client_receive_event_e event, void *callback, void *user_data) { - int ret = MEDIA_CONTROLLER_ERROR_NONE; media_controller_client_s *mc_client = (media_controller_client_s *)client; - char *interface_name = NULL; + g_autofree gchar *interface_name = NULL; mc_retvm_if(mc_client == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Handle is NULL"); mc_retvm_if(callback == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "callback is NULL"); @@ -590,19 +583,15 @@ static int __mc_client_set_updated_cb(mc_client_h client, mc_client_receive_even interface_name = g_strdup(MC_DBUS_UPDATE_INTERFACE); } - ret = _mc_ipc_register_listener(&mc_client->listeners, mc_client->dconn, interface_name, cb_event[event].signal_name, - cb_event[event].cb_func, (void *)&(mc_client->updated_cb[event])); - - g_free(interface_name); - - return ret; + return _mc_ipc_register_listener(&mc_client->listeners, mc_client->dconn, interface_name, cb_event[event].signal_name, + cb_event[event].cb_func, (void *)&(mc_client->updated_cb[event])); } static int __mc_client_unset_updated_cb(mc_client_h client, mc_client_receive_event_e event) { int ret = MEDIA_CONTROLLER_ERROR_NONE; media_controller_client_s *mc_client = (media_controller_client_s *)client; - char *interface_name = NULL; + g_autofree gchar *interface_name = NULL; mc_retvm_if(mc_client == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Handle is NULL"); mc_retvm_if(((event < MC_CLIENT_EVENT_SERVER_STATE) || (event >= MC_CLIENT_EVENT_MAX)) , MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Invalid event [%d]", event); @@ -611,8 +600,6 @@ static int __mc_client_unset_updated_cb(mc_client_h client, mc_client_receive_ev interface_name = _mc_util_get_interface_name(MC_CLIENT, mc_client->client_name); ret = _mc_ipc_unregister_listener(&mc_client->listeners, interface_name, cb_event[event].signal_name); - - g_free(interface_name); } else { ret = _mc_ipc_unregister_listener(&mc_client->listeners, MC_DBUS_UPDATE_INTERFACE, cb_event[event].signal_name); @@ -1400,8 +1387,9 @@ int mc_client_send_search_cmd(mc_client_h client, const char *server_name, mc_se int mc_client_send_event_reply(mc_client_h client, const char *server_name, const char *request_id, int result_code, bundle *data) { int ret = MEDIA_CONTROLLER_ERROR_NONE; - char *message = NULL; - char *bundle_str = NULL; + g_autofree gchar *message = NULL; + g_autofree gchar *bundle_str = NULL; + g_autofree gchar *interface_name = NULL; media_controller_client_s *mc_client = (media_controller_client_s *)client; mc_retvm_if(mc_client == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Handle is NULL"); @@ -1412,17 +1400,13 @@ int mc_client_send_event_reply(mc_client_h client, const char *server_name, cons mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, ret, "Error when make string from bundle"); message = g_strdup_printf("%s%s%d%s%s", mc_client->client_name, MC_STRING_DELIMITER, result_code, MC_STRING_DELIMITER, bundle_str); - g_free(bundle_str); mc_retvm_if(message == NULL, MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "Error when making message"); - char *interface_name = _mc_util_get_interface_name(MC_SERVER, server_name); + interface_name = _mc_util_get_interface_name(MC_SERVER, server_name); ret = _mc_ipc_send_reply(mc_client->dconn, NULL, interface_name, MC_DBUS_SIGNAL_NAME_EVENT_REPLY, message, request_id); if (ret != MEDIA_CONTROLLER_ERROR_NONE) mc_error("Error _mc_ipc_send_message [%d]", ret); - g_free(message); - g_free(interface_name); - return ret; } diff --git a/src/media_controller_ipc.c b/src/media_controller_ipc.c index a974a01..e9e150c 100644 --- a/src/media_controller_ipc.c +++ b/src/media_controller_ipc.c @@ -278,32 +278,29 @@ int _mc_ipc_unregister_all_listener(GList **listener_list) int _mc_ipc_unregister_filter_listener(GList **listener_list, const char *server_name, const char *signal_name) { - int ret = MEDIA_CONTROLLER_ERROR_NONE; - char *filter_interface = NULL; + g_autofree gchar *filter = NULL; mc_retvm_if(!listener_list, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "listener_list is NULL"); mc_retvm_if(!server_name, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "server_name is NULL"); mc_retvm_if(!signal_name, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "signal_name is NULL"); - ret = _mc_util_make_filter_interface_name(MC_DBUS_UPDATE_INTERFACE, server_name, &filter_interface); - mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, ret, "Fail _mc_util_make_filter_interface_name"); - - ret = _mc_ipc_unregister_listener(listener_list, filter_interface, signal_name); - - g_free(filter_interface); + filter = _mc_util_make_filter_interface_name(server_name); + mc_retvm_if(!filter, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Fail _mc_util_make_filter_interface_name"); - return MEDIA_CONTROLLER_ERROR_NONE; + return _mc_ipc_unregister_listener(listener_list, filter, signal_name); } 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) { - const char *req_id = DEFAULT_REQ_ID; + g_autofree gchar *req_id = NULL; - if (request_id != NULL) { - req_id = _mc_util_generate_uuid(); + if (request_id) { + req_id = g_uuid_string_random(); *request_id = g_strdup(req_id); mc_secure_debug("req_id[%s]", req_id); + } else { + req_id = g_strdup(DEFAULT_REQ_ID); } return __dbus_send_message(connection, dbus_name, interface_name, signal_name, message, req_id); diff --git a/src/media_controller_server.c b/src/media_controller_server.c index d8c2083..e5cc215 100644 --- a/src/media_controller_server.c +++ b/src/media_controller_server.c @@ -556,14 +556,14 @@ static void __server_display_rotation_cb(const char *interface_name, const char callback(params[0], request_id, (mc_display_rotation_e)value, receiver->user_data); } -static int __mc_server_send_message(media_controller_server_s *mc_server, const char *interface_name, const char *signal_name, const int param1, const int param2, const char* param3) +static int __mc_server_send_message(media_controller_server_s *mc_server, const char *signal_name, const int param1, const int param2, const char* param3) { int ret = MEDIA_CONTROLLER_ERROR_NONE; - char *message = NULL; + g_autofree gchar *message = NULL; + g_autofree gchar *filter = NULL; mc_retvm_if(!mc_server, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Invalid handle"); mc_retvm_if(!mc_server->server_name, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Invalid server_name"); - mc_retvm_if(!interface_name, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Invalid interface_name"); mc_retvm_if(!signal_name, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Invalid signal_name"); if ((!g_strcmp0(MC_DBUS_SIGNAL_NAME_PLAY_BACK, signal_name)) @@ -581,26 +581,22 @@ static int __mc_server_send_message(media_controller_server_s *mc_server, const mc_retvm_if(!message, MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "Invalid message"); - ret = _mc_ipc_send_message(mc_server->dconn, NULL, interface_name, signal_name, message, NULL); + ret = _mc_ipc_send_message(mc_server->dconn, NULL, MC_DBUS_UPDATE_INTERFACE, signal_name, message, NULL); if (ret != MEDIA_CONTROLLER_ERROR_NONE) mc_error("Error _mc_ipc_send_message [%d]", ret); - mc_secure_debug("interface_name[%s] signal_name[%s] message[%s]", interface_name, signal_name, message); + mc_secure_debug("signal_name[%s] message[%s]", signal_name, message); /*Send again for the subscriber which receive filtered msg with server_name*/ - char *filter_interface_name = NULL; - ret = _mc_util_make_filter_interface_name(interface_name, mc_server->server_name, &filter_interface_name); + filter = _mc_util_make_filter_interface_name(mc_server->server_name); if (ret != MEDIA_CONTROLLER_ERROR_NONE) { mc_error("Error _mc_util_make_filter_interface_name [%d]", ret); } else { - ret = _mc_ipc_send_message(mc_server->dconn, NULL, filter_interface_name, signal_name, message, NULL); + ret = _mc_ipc_send_message(mc_server->dconn, NULL, filter, signal_name, message, NULL); if (ret != MEDIA_CONTROLLER_ERROR_NONE) mc_error("Error _mc_ipc_send_message [%d]", ret); } - g_free(filter_interface_name); - g_free(message); - return ret; } @@ -619,7 +615,7 @@ static int __mc_server_send_event(mc_server_h server, const char *client_name, c { int ret = MEDIA_CONTROLLER_ERROR_NONE; media_controller_server_s *mc_server = (media_controller_server_s *)server; - char *interface_name = NULL; + g_autofree gchar *interface_name = NULL; mc_retvm_if(!__is_valid_parameter(server, client_name), MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Invalid parameter"); mc_retvm_if(!MC_STRING_VALID(command_type), MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Invalid command_type"); @@ -635,8 +631,6 @@ static int __mc_server_send_event(mc_server_h server, const char *client_name, c if (ret != MEDIA_CONTROLLER_ERROR_NONE) mc_error("Error _mc_ipc_send_message [%d]", ret); - g_free(interface_name); - return ret; } @@ -738,7 +732,7 @@ int mc_server_update_playback_info(mc_server_h server) } } - ret = __mc_server_send_message(mc_server, MC_DBUS_UPDATE_INTERFACE, MC_DBUS_SIGNAL_NAME_PLAY_BACK, 0, 0, NULL); + ret = __mc_server_send_message(mc_server, MC_DBUS_SIGNAL_NAME_PLAY_BACK, 0, 0, NULL); if (ret != MEDIA_CONTROLLER_ERROR_NONE) mc_error("Error __mc_server_send_message [%d]", ret); @@ -762,7 +756,7 @@ int mc_server_update_shuffle_mode(mc_server_h server, mc_shuffle_mode_e mode) ret = _mc_db_update_server_attribute(mc_server->server_name, MC_DB_CMD_UPDATE_SHUFFLE, mode); mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, ret, "fail to update shuffle mode"); - ret = __mc_server_send_message(mc_server, MC_DBUS_UPDATE_INTERFACE, MC_DBUS_SIGNAL_NAME_PLAYBACK_SHUFFLE, mode, 0, NULL); + ret = __mc_server_send_message(mc_server, MC_DBUS_SIGNAL_NAME_PLAYBACK_SHUFFLE, mode, 0, NULL); mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, ret, "fail to __mc_server_send_message"); return ret; @@ -781,7 +775,7 @@ int mc_server_update_repeat_mode(mc_server_h server, mc_repeat_mode_e mode) ret = _mc_db_update_server_attribute(mc_server->server_name, MC_DB_CMD_UPDATE_REPEAT, mode); mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, ret, "fail to update repeat mode"); - ret = __mc_server_send_message(mc_server, MC_DBUS_UPDATE_INTERFACE, MC_DBUS_SIGNAL_NAME_PLAYBACK_REPEAT, mode, 0, NULL); + ret = __mc_server_send_message(mc_server, MC_DBUS_SIGNAL_NAME_PLAYBACK_REPEAT, mode, 0, NULL); mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, ret, "fail to __mc_server_send_message"); return ret; @@ -799,7 +793,7 @@ int mc_server_update_subtitles_enabled(mc_server_h server, bool enabled) ret = _mc_db_update_server_attribute(mc_server->server_name, MC_DB_CMD_UPDATE_SUBTITLES, enabled); mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, ret, "fail to update subtitles"); - ret = __mc_server_send_message(mc_server, MC_DBUS_UPDATE_INTERFACE, MC_DBUS_SIGNAL_NAME_SUBTITLES, enabled, 0, NULL); + ret = __mc_server_send_message(mc_server, MC_DBUS_SIGNAL_NAME_SUBTITLES, enabled, 0, NULL); mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, ret, "fail to __mc_server_send_message"); return ret; @@ -818,7 +812,7 @@ int mc_server_update_display_mode(mc_server_h server, mc_display_mode_e mode) ret = _mc_db_update_server_attribute(mc_server->server_name, MC_DB_CMD_UPDATE_DISPLAY_MODE, mode); mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, ret, "fail to update display mode"); - ret = __mc_server_send_message(mc_server, MC_DBUS_UPDATE_INTERFACE, MC_DBUS_SIGNAL_NAME_DISPLAY_MODE, mode, 0, NULL); + ret = __mc_server_send_message(mc_server, MC_DBUS_SIGNAL_NAME_DISPLAY_MODE, mode, 0, NULL); mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, ret, "fail to __mc_server_send_message"); return ret; @@ -836,7 +830,7 @@ int mc_server_update_display_rotation(mc_server_h server, mc_display_rotation_e ret = _mc_db_update_server_attribute(mc_server->server_name, MC_DB_CMD_UPDATE_DISPLAY_ROTATION, rotation); mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, ret, "fail to update display rotation"); - ret = __mc_server_send_message(mc_server, MC_DBUS_UPDATE_INTERFACE, MC_DBUS_SIGNAL_NAME_DISPLAY_ROTATION, rotation, 0, NULL); + ret = __mc_server_send_message(mc_server, MC_DBUS_SIGNAL_NAME_DISPLAY_ROTATION, rotation, 0, NULL); mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, ret, "fail to __mc_server_send_message"); return ret; @@ -854,7 +848,7 @@ int mc_server_update_360_mode_enabled(mc_server_h server, bool enabled) ret = _mc_db_update_server_attribute(mc_server->server_name, MC_DB_CMD_UPDATE_360, enabled); mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, ret, "fail to update 360 mode"); - ret = __mc_server_send_message(mc_server, MC_DBUS_UPDATE_INTERFACE, MC_DBUS_SIGNAL_NAME_360, enabled, 0, NULL); + ret = __mc_server_send_message(mc_server, MC_DBUS_SIGNAL_NAME_360, enabled, 0, NULL); mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, ret, "fail to __mc_server_send_message"); return ret; @@ -883,7 +877,7 @@ int mc_server_update_metadata(mc_server_h server) mc_server->metadata->season, mc_server->metadata->episode, mc_server->metadata->resolution); mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, ret, "fail to _mc_db_update_whole_metadata"); - ret = __mc_server_send_message(mc_server, MC_DBUS_UPDATE_INTERFACE, MC_DBUS_SIGNAL_NAME_METADATA, 0, 0, NULL); + ret = __mc_server_send_message(mc_server, MC_DBUS_SIGNAL_NAME_METADATA, 0, 0, NULL); mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, ret, "fail to __mc_server_send_message"); return ret; @@ -919,7 +913,7 @@ int mc_server_update_playlist_done(mc_server_h server, mc_playlist_h playlist) ret = _mc_playlist_update(MC_PRIV_TYPE_SERVER, mc_server->server_name, playlist); mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, ret, "fail to _mc_playlist_update"); - ret = __mc_server_send_message(mc_server, MC_DBUS_UPDATE_INTERFACE, MC_DBUS_SIGNAL_NAME_PLAYLIST, MC_PLAYLIST_UPDATED, 0, _playlist->playlist_name); + ret = __mc_server_send_message(mc_server, MC_DBUS_SIGNAL_NAME_PLAYLIST, MC_PLAYLIST_UPDATED, 0, _playlist->playlist_name); mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, ret, "fail to __mc_server_send_message"); return ret; @@ -938,7 +932,7 @@ int mc_server_delete_playlist(mc_server_h server, mc_playlist_h playlist) ret = _mc_db_remove_playlist(mc_server->server_name, _playlist->playlist_name); mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, ret, "fail to _mc_db_remove_playlist"); - ret = __mc_server_send_message(mc_server, MC_DBUS_UPDATE_INTERFACE, MC_DBUS_SIGNAL_NAME_PLAYLIST, MC_PLAYLIST_REMOVED, 0, _playlist->playlist_name); + ret = __mc_server_send_message(mc_server, MC_DBUS_SIGNAL_NAME_PLAYLIST, MC_PLAYLIST_REMOVED, 0, _playlist->playlist_name); mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, ret, "fail to __mc_server_send_message"); return ret; @@ -954,7 +948,7 @@ static int __mc_server_set_ability(mc_server_h server, mc_ability_e ability, mc_ ret = __mc_server_update_ability(server, ability, support, TRUE); mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, ret, "fail to __mc_server_update_ability"); - ret = __mc_server_send_message(mc_server, MC_DBUS_UPDATE_INTERFACE, MC_DBUS_SIGNAL_NAME_ABILITY_SUPPORT, ability, support, NULL); + ret = __mc_server_send_message(mc_server, MC_DBUS_SIGNAL_NAME_ABILITY_SUPPORT, ability, support, NULL); mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, ret, "fail to __mc_server_send_message"); return ret; @@ -962,9 +956,8 @@ static int __mc_server_set_ability(mc_server_h server, mc_ability_e ability, mc_ static int __mc_server_set_updated_cb(mc_server_h server, mc_server_receive_event_e event, void *callback, void *user_data) { - int ret = MEDIA_CONTROLLER_ERROR_NONE; media_controller_server_s *mc_server = (media_controller_server_s *)server; - char *interface_name = NULL; + g_autofree gchar *interface_name = NULL; mc_retvm_if(mc_server == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Handle is NULL"); mc_retvm_if(callback == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "callback is NULL"); @@ -975,18 +968,15 @@ static int __mc_server_set_updated_cb(mc_server_h server, mc_server_receive_even interface_name = _mc_util_get_interface_name(MC_SERVER, mc_server->server_name); - ret = _mc_ipc_register_listener(&mc_server->listeners, mc_server->dconn, interface_name, cb_event[event].signal_name, cb_event[event].cb_func, (void *)&(mc_server->updated_cb[event])); - - g_free(interface_name); - - return ret; + return _mc_ipc_register_listener(&mc_server->listeners, mc_server->dconn, interface_name, + cb_event[event].signal_name, cb_event[event].cb_func, (void *)&(mc_server->updated_cb[event])); } static int __mc_server_unset_updated_cb(mc_server_h server, mc_server_receive_event_e event) { int ret = MEDIA_CONTROLLER_ERROR_NONE; media_controller_server_s *mc_server = (media_controller_server_s *)server; - char *interface_name = NULL; + g_autofree gchar *interface_name = NULL; mc_retvm_if(mc_server == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Handle is NULL"); mc_retvm_if(((event < MC_SERVER_EVENT_PLAYBACK_ACTION) || (event >= MC_SERVER_EVENT_MAX)) , MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Invalid event [%d]", event); @@ -998,8 +988,6 @@ static int __mc_server_unset_updated_cb(mc_server_h server, mc_server_receive_ev mc_server->updated_cb[event].callback = NULL; mc_server->updated_cb[event].user_data = NULL; - g_free(interface_name); - return ret; } @@ -1126,8 +1114,9 @@ int mc_server_unset_360_mode_cmd_received_cb(mc_server_h server) int mc_server_send_cmd_reply(mc_server_h server, const char *client_name, const char *request_id, int result_code, bundle *data) { int ret = MEDIA_CONTROLLER_ERROR_NONE; - char *message = NULL; - char *bundle_str = NULL; + g_autofree gchar *message = NULL; + g_autofree gchar *bundle_str = NULL; + g_autofree gchar *interface_name = NULL; media_controller_server_s *mc_server = (media_controller_server_s *)server; mc_retvm_if(!__is_valid_parameter(server, client_name), MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Invalid parameter"); @@ -1137,17 +1126,13 @@ int mc_server_send_cmd_reply(mc_server_h server, const char *client_name, const mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, ret, "Error when make string from bundle"); message = g_strdup_printf("%s%s%d%s%s", mc_server->server_name, MC_STRING_DELIMITER, result_code, MC_STRING_DELIMITER, bundle_str); - g_free(bundle_str); mc_retvm_if(message == NULL, MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "Error when making message"); - char *interface_name = _mc_util_get_interface_name(MC_CLIENT, client_name); + interface_name = _mc_util_get_interface_name(MC_CLIENT, client_name); ret = _mc_ipc_send_reply(mc_server->dconn, NULL, interface_name, MC_DBUS_SIGNAL_NAME_CMD_REPLY, message, request_id); if (ret != MEDIA_CONTROLLER_ERROR_NONE) mc_error("Error _mc_ipc_send_message [%d]", ret); - g_free(message); - g_free(interface_name); - return ret; } @@ -1235,7 +1220,7 @@ int mc_server_update_playback_ability(mc_server_h server) ret = _mc_db_update_ability_supported(mc_server->server_name, mc_server->basic_ability); mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, ret, "fail to _mc_db_update_ability_supported"); - ret = __mc_server_send_message(mc_server, MC_DBUS_UPDATE_INTERFACE, MC_DBUS_SIGNAL_NAME_PLAYBACK_ABILITY, 0, 0, NULL); + ret = __mc_server_send_message(mc_server, MC_DBUS_SIGNAL_NAME_PLAYBACK_ABILITY, 0, 0, NULL); mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, ret, "fail to __mc_server_send_message"); return ret; @@ -1277,7 +1262,7 @@ int mc_server_set_display_mode_ability(mc_server_h server, unsigned int mode, mc ret = _mc_db_update_ability_supported(mc_server->server_name, mc_server->basic_ability); mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, ret, "fail to _mc_db_update_ability_supported"); - ret = __mc_server_send_message(mc_server, MC_DBUS_UPDATE_INTERFACE, MC_DBUS_SIGNAL_NAME_DP_MODE_ABILITY, 0, 0, NULL); + ret = __mc_server_send_message(mc_server, MC_DBUS_SIGNAL_NAME_DP_MODE_ABILITY, 0, 0, NULL); mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, ret, "fail to __mc_server_send_message"); return MEDIA_CONTROLLER_ERROR_NONE; @@ -1320,7 +1305,7 @@ int mc_server_set_display_rotation_ability(mc_server_h server, unsigned int rota ret = _mc_db_update_ability_supported(mc_server->server_name, mc_server->basic_ability); mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, ret, "fail to _mc_db_update_ability_supported"); - ret = __mc_server_send_message(mc_server, MC_DBUS_UPDATE_INTERFACE, MC_DBUS_SIGNAL_NAME_DP_ROTATION_ABILITY, 0, 0, NULL); + ret = __mc_server_send_message(mc_server, MC_DBUS_SIGNAL_NAME_DP_ROTATION_ABILITY, 0, 0, NULL); mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, ret, "fail to __mc_server_send_message"); return MEDIA_CONTROLLER_ERROR_NONE; @@ -1351,7 +1336,7 @@ int mc_server_create(mc_server_h *server) if (ret != MEDIA_CONTROLLER_ERROR_NONE) mc_error("fail to get ability [%d]", ret); - ret = __mc_server_send_message(mc_server, MC_DBUS_UPDATE_INTERFACE, MC_DBUS_SIGNAL_NAME_SERVER_STATE, MC_SERVER_STATE_ACTIVATE, 0, NULL); + ret = __mc_server_send_message(mc_server, MC_DBUS_SIGNAL_NAME_SERVER_STATE, MC_SERVER_STATE_ACTIVATE, 0, NULL); if (ret != MEDIA_CONTROLLER_ERROR_NONE) mc_error("Error __mc_server_send_message [%d]", ret); @@ -1375,7 +1360,7 @@ int mc_server_destroy(mc_server_h server) if (ret != MEDIA_CONTROLLER_ERROR_NONE) mc_error("fail _mc_ipc_unregister_all_listener [%d]", ret); - ret = __mc_server_send_message(mc_server, MC_DBUS_UPDATE_INTERFACE, MC_DBUS_SIGNAL_NAME_SERVER_STATE, MC_SERVER_STATE_DEACTIVATE, 0, NULL); + ret = __mc_server_send_message(mc_server, MC_DBUS_SIGNAL_NAME_SERVER_STATE, MC_SERVER_STATE_DEACTIVATE, 0, NULL); if (ret != MEDIA_CONTROLLER_ERROR_NONE) mc_error("Error __mc_server_send_message [%d]", ret); diff --git a/src/media_controller_util.c b/src/media_controller_util.c index defa949..6dc32cb 100644 --- a/src/media_controller_util.c +++ b/src/media_controller_util.c @@ -18,20 +18,17 @@ #include #include #include -#include #include "media_controller_private.h" //#define UNIT_TEST /* for testsuite */ #define MAX_NAME_LENGTH 255 -static void __mc_util_check_valid_name(const char *name, char **valid_name) +static gchar *__mc_util_check_valid_name(const char *name) { char new_word[MAX_NAME_LENGTH] = {0, }; unsigned int i = 0, j = 0; - mc_retm_if_failed(name); - - memset(new_word, 0, MAX_NAME_LENGTH); + mc_retvm_if(!name, NULL, "name is NULL"); /* only 0~9, a~z, A~Z, '.', '_' will be used */ for (i = 0; (i < strlen(name)) && (j < sizeof(new_word)); i++) { @@ -42,25 +39,18 @@ static void __mc_util_check_valid_name(const char *name, char **valid_name) (name[i] == '_' && i != 0)) { new_word[j++] = name[i]; } else { - if (j + 9 < sizeof(new_word)) { - new_word[j++] = 'A'; - new_word[j++] = 'P'; - new_word[j++] = 'P'; - new_word[j++] = 'I'; - new_word[j++] = 'D'; + if (j + 2 < sizeof(new_word)) { + new_word[j++] = '_'; new_word[j++] = '_'; - new_word[j++] = 'S'; - new_word[j++] = 'E'; - new_word[j++] = 'P'; } else { mc_error("Error failed to check valid name due to overrun!"); } } } - *valid_name = g_strdup(new_word); + mc_retvm_if(strlen(new_word) == 0, NULL, "invalid name"); - mc_retm_if_failed((*valid_name)); + return g_strdup(new_word); } int _mc_util_get_own_name(char **name) @@ -93,42 +83,28 @@ int _mc_util_get_own_name(char **name) return MEDIA_CONTROLLER_ERROR_NONE; } -char *_mc_util_get_interface_name(const char *type, const char *name) +char * _mc_util_get_interface_name(const char *type, const char *name) { - char *temp = NULL; - char *interface_name = NULL; - - mc_retvm_if(type == NULL, NULL, "type is NULL"); - mc_retvm_if(name == NULL, NULL, "name is NULL"); + g_autofree gchar *temp = __mc_util_check_valid_name(name); - temp = g_strdup_printf("%s.%s%s", MC_DBUS_INTERFACE_PREFIX, type, name); + mc_retvm_if(!type || (g_strcmp0(type, MC_SERVER) != 0 && g_strcmp0(type, MC_CLIENT) != 0), NULL, "wrong type"); + mc_retvm_if(!temp, NULL, "invalid name"); - __mc_util_check_valid_name(temp, &interface_name); - g_free(temp); - - return interface_name; + return g_strdup_printf("%s.%s%s", MC_DBUS_INTERFACE_PREFIX, type, temp); } -int _mc_util_make_filter_interface_name(const char *prefix, const char *filter, char **interface_name) +char * _mc_util_make_filter_interface_name(const char *filter) { - char *temp = NULL; - - mc_retvm_if(prefix == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "prefix is NULL"); - mc_retvm_if(filter == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "filter is NULL"); + g_autofree gchar *temp = __mc_util_check_valid_name(filter); - temp = g_strdup_printf("%s.server%s", prefix, filter); + mc_retvm_if(!temp, NULL, "invalid filter"); - __mc_util_check_valid_name(temp, interface_name); - - g_free(temp); - - return MEDIA_CONTROLLER_ERROR_NONE; + return g_strdup_printf("%s.server%s", MC_DBUS_UPDATE_INTERFACE, temp); } static int __send_command_available(mc_priv_type_e priv_type, const char *name, const char *command_type, const char *command, mc_msg_type_e msg_type) { - int ret = MEDIA_CONTROLLER_ERROR_NONE; - char *message = NULL; + g_autofree gchar *message = NULL; if (!MC_STRING_VALID(name) || !MC_STRING_VALID(command_type)) { mc_error("invalid query"); @@ -140,11 +116,7 @@ static int __send_command_available(mc_priv_type_e priv_type, const char *name, else message = g_strdup_printf("%s%s%s", name, command_type, command); - ret = _mc_ipc_send_message_to_server(msg_type, priv_type, message); - - g_free(message); - - return ret; + return _mc_ipc_send_message_to_server(msg_type, priv_type, message); } int _mc_util_set_command_available(mc_priv_type_e priv_type, const char *name, const char *command_type, const char *command) @@ -157,23 +129,6 @@ int _mc_util_get_command_available(mc_priv_type_e priv_type, const char *name, c return __send_command_available(priv_type, name, command_type, command, MC_MSG_CLIENT_GET); } -char *_mc_util_generate_uuid(void) -{ - uuid_t uuid_value; - static char uuid_unparsed[37]; - -RETRY_GEN: - uuid_generate(uuid_value); - uuid_unparse(uuid_value, uuid_unparsed); - - if (strlen(uuid_unparsed) < 36) { - mc_debug("INVALID UUID : %s. RETRY GENERATE.", uuid_unparsed); - goto RETRY_GEN; - } - - return uuid_unparsed; -} - int _mc_util_bundle_to_string(bundle *bundle_data, char **str_data) { int ret = MEDIA_CONTROLLER_ERROR_NONE; -- 2.7.4