Add getting request id 68/180768/1
authorJiyong Min <jiyong.min@samsung.com>
Mon, 14 May 2018 03:57:45 +0000 (12:57 +0900)
committerhj kim <backto.kim@samsung.com>
Mon, 4 Jun 2018 05:47:03 +0000 (14:47 +0900)
Change-Id: I9e523282d6510a465da1c79a32b3a0da4e069bac

include/media_controller_private.h
src/media_controller_client.c
src/media_controller_server.c
src/media_controller_util.c

index 53c6a39d4834dea6367e41fbfa7d2b47925afcaf..003a42f280cd8420dcf76bc477bdc7df66860334 100755 (executable)
@@ -248,8 +248,11 @@ typedef struct {
 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);
-int mc_util_set_command_availabe(const char *name, const char *command_type, const char *command);
-int mc_util_get_command_availabe(const char *name, const char *command_type, const char *command);
+int mc_util_set_command_available(const char *name, const char *command_type, const char *command);
+int mc_util_get_command_available(const char *name, const char *command_type, const char *command);
+int mc_util_get_request_id(unsigned int *req_id);
+int mc_safe_strtoi(const char *buffer, int *value);
+int mc_safe_strtoull(const char *buffer, unsigned long long *value);
 
 /* for d-bus IPC */
 int mc_ipc_get_dbus_connection(GDBusConnection **conn, int *dref_count);
index ac20f2a7fd85fb6f2feac6a1537323ee7f2e0474..9a8c6cf1d642070f8e3d37dcba1424728c5c8d32 100755 (executable)
@@ -965,7 +965,7 @@ int mc_client_send_playback_state_command(mc_client_h client, const char *server
        mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, ret, "Error mc_db_check_server_table_exist [%d]", ret);
        mc_retvm_if(exist_server == FALSE, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Error Invalid server_name");
 
-       ret = mc_util_set_command_availabe(mc_client->client_name, MC_COMMAND_PLAYBACKSTATE, NULL);
+       ret = mc_util_set_command_available(mc_client->client_name, MC_COMMAND_PLAYBACKSTATE, NULL);
        mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, ret, "Error mc_util_set_command_availabe [%d]", ret);
 
        message = g_strdup_printf("%s%s%d", mc_client->client_name, MC_STRING_DELIMITER, state);
@@ -998,7 +998,7 @@ int mc_client_send_custom_command(mc_client_h client, const char *server_name, c
        mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, ret, "Error mc_db_check_server_table_exist [%d]", ret);
        mc_retvm_if(exist_server == FALSE, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Error Invalid server_name");
 
-       ret = mc_util_set_command_availabe(mc_client->client_name, MC_COMMAND_CUSTOM, command);
+       ret = mc_util_set_command_available(mc_client->client_name, MC_COMMAND_CUSTOM, command);
        if (ret != MEDIA_CONTROLLER_ERROR_NONE) {
                mc_error("Error mc_util_set_command_availabe [%d]", ret);
                return ret;
index fc2d6fa50f6a4e4b4f22ff9e25e6dd5c4d2347d6..143c0606f258de26d366ba5d0fbaf4b1ad27ba5b 100755 (executable)
@@ -117,7 +117,7 @@ static void __server_playback_state_command_cb(const char *interface_name, const
        params = g_strsplit(message, MC_STRING_DELIMITER, 0);
        mc_retm_if(params == NULL, "invalid playback state command");
 
-       if (mc_util_get_command_availabe(params[0], MC_COMMAND_PLAYBACKSTATE, NULL) != MEDIA_CONTROLLER_ERROR_NONE) {
+       if (mc_util_get_command_available(params[0], MC_COMMAND_PLAYBACKSTATE, NULL) != MEDIA_CONTROLLER_ERROR_NONE) {
                mc_error("Error permission denied");
                return ;
        }
@@ -149,7 +149,7 @@ static void __server_custom_command_cb(const char *interface_name, const char *s
        if (params[0])
                sender = strdup(params[0]);
 
-       if (mc_util_get_command_availabe(sender, MC_COMMAND_CUSTOM, params[1]) != MEDIA_CONTROLLER_ERROR_NONE) {
+       if (mc_util_get_command_available(sender, MC_COMMAND_CUSTOM, params[1]) != MEDIA_CONTROLLER_ERROR_NONE) {
                mc_error("Error permission denied");
                MC_SAFE_FREE(sender);
                g_strfreev(params);
index 6c842e6f5eeaba3a4627d30af87e0bebb232abcc..5a9321b3c8a70fe2087117fb91b33b779a888693 100755 (executable)
@@ -19,6 +19,8 @@
 
 #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, };
@@ -120,7 +122,7 @@ int mc_util_make_filter_interface_name(const char *prefix, const char *filter, c
        return MEDIA_CONTROLLER_ERROR_NONE;
 }
 
-int mc_util_set_command_availabe(const char *name, const char *command_type, const char *command)
+int mc_util_set_command_available(const char *name, const char *command_type, const char *command)
 {
        int ret = MEDIA_CONTROLLER_ERROR_NONE;
        char *message = NULL;
@@ -142,7 +144,7 @@ int mc_util_set_command_availabe(const char *name, const char *command_type, con
        return ret;
 }
 
-int mc_util_get_command_availabe(const char *name, const char *command_type, const char *command)
+int mc_util_get_command_available(const char *name, const char *command_type, const char *command)
 {
        int ret = MEDIA_CONTROLLER_ERROR_NONE;
        char *message = NULL;
@@ -163,3 +165,59 @@ int mc_util_get_command_availabe(const char *name, const char *command_type, con
 
        return ret;
 }
+
+int mc_util_get_request_id(unsigned int *req_id)
+{
+       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");
+
+       g_mutex_lock(&mutex_req_id);
+
+       if (request_id + 1 == UINT_MAX) {
+               request_id = 0;
+       }
+       request_id++;
+       *req_id = request_id;
+
+       g_mutex_unlock(&mutex_req_id);
+
+       return ret;
+}
+
+int mc_safe_strtoi(const char *buffer, int *value)
+{
+       char *end = NULL;
+       errno = 0;
+       mc_retvm_if(buffer == NULL || value == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "invalid parameter");
+
+       const long sl = strtol(buffer, &end, 10);
+
+       mc_retvm_if(end == buffer, MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "not a decimal number");
+       mc_retvm_if('\0' != *end, MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "extra characters at end of input: %s", end);
+       mc_retvm_if((LONG_MIN == sl || LONG_MAX == sl) && (ERANGE == errno), MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "out of range of type long");
+       mc_retvm_if(sl > INT_MAX, MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "greater than INT_MAX");
+       mc_retvm_if(sl < INT_MIN, MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "smaller than INT_MIN");
+
+       *value = (int)sl;
+
+       return MEDIA_CONTROLLER_ERROR_NONE;
+}
+
+int mc_safe_strtoull(const char *buffer, unsigned long long *value)
+{
+       char *end = NULL;
+       errno = 0;
+       mc_retvm_if(buffer == NULL || value == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "invalid parameter");
+
+       const unsigned long long ull = strtoull(buffer, &end, 10);
+
+       mc_retvm_if(end == buffer, MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "not a decimal number");
+       mc_retvm_if('\0' != *end, MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "extra characters at end of input: %s", end);
+       mc_retvm_if((ULLONG_MAX == ull) && (ERANGE == errno), MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "out of range of type long");
+
+       *value = (unsigned long long)ull;
+
+       return MEDIA_CONTROLLER_ERROR_NONE;
+}