Remove useless structures and use queue directly in socket 95/288095/8
authorhj kim <backto.kim@samsung.com>
Fri, 10 Feb 2023 09:27:57 +0000 (18:27 +0900)
committerhj kim <backto.kim@samsung.com>
Thu, 16 Feb 2023 06:58:08 +0000 (15:58 +0900)
Change-Id: I4c2cede650d9c822446d8bba1cacaaac64b67e74

packaging/capi-media-controller.spec
svc/media_controller_svc.c

index ef47c5f00dd6ab1927635686385f4c750c2601f9..6138f60095a15b0d155f63f55fea0a246d5f8528 100644 (file)
@@ -1,6 +1,6 @@
 Name:       capi-media-controller
 Summary:    A media controller library in Tizen Native API
-Version:    0.2.32
+Version:    0.2.33
 Release:    1
 Group:      Multimedia/API
 License:    Apache-2.0
index f0a1dbcb678cff81ad84dda01bf9a6df9d729700..46fba54c1c2835dd1a6810e2819a78baf215ab79 100644 (file)
@@ -52,14 +52,6 @@ typedef struct {
        GList *cmds_to_send;
 } mc_app_data_set_t;
 
-typedef struct {
-       GQueue *queue;
-} mc_manage_queue_t;
-
-typedef struct {
-       mc_manage_queue_t *request;
-} mc_service_t;
-
 static int __mc_sys_get_uid(uid_t *uid)
 {
        uid_t *list = NULL;
@@ -129,16 +121,6 @@ static void __mc_clean_connected_apps(void)
        }
 }
 
-static void __mc_destroy_request_queue(mc_manage_queue_t *data)
-{
-       mc_retm_if_failed(data);
-
-       g_queue_free_full(data->queue, __mc_destroy_queue);
-       data->queue = NULL;
-
-       g_free(data);
-}
-
 static void __mc_add_cmd_to_send(gpointer data, gpointer user_data)
 {
        mc_app_data_set_t *_app_data = (mc_app_data_set_t *)data;
@@ -192,27 +174,6 @@ static int __mc_list_get_index(GList *list, int pid, mc_priv_type_e priv_type)
        return -1;
 }
 
-static void __mc_service_init(mc_service_t **data)
-{
-       mc_service_t *_service_data = g_new0(mc_service_t, 1);
-
-       _service_data->request = g_new0(mc_manage_queue_t, 1);
-       _service_data->request->queue = g_queue_new();
-
-       *data = _service_data;
-}
-
-static void __mc_service_deinit(mc_service_t *data)
-{
-       if (!data)
-               return;
-
-       if (data->request != NULL)
-               __mc_destroy_request_queue(data->request);
-
-       g_free(data);
-}
-
 static int __mc_service_check_db(uid_t uid)
 {
        int res = MEDIA_CONTROLLER_ERROR_NONE;
@@ -349,11 +310,6 @@ static int __mc_service_reset_db(uid_t uid)
        return res;
 }
 
-static gboolean __mc_service_is_valid_queue(mc_service_t *data)
-{
-       return (data && data->request && data->request->queue);
-}
-
 static gboolean __mc_service_is_exist_pid(GList *list, int pid, mc_priv_type_e priv_type)
 {
        return (__mc_list_get_index(list, pid, priv_type) != -1);
@@ -587,13 +543,9 @@ static gboolean __mc_service_process(gpointer data)
 {
        unsigned int length_of_queue = 0;
        int msg = MEDIA_CONTROLLER_ERROR_NONE;
-       mc_service_t *_service_data = (mc_service_t*)data;
        mc_service_request *req = NULL;
 
-       mc_retvm_if(!_service_data, G_SOURCE_REMOVE, "invalid data");
-       mc_retvm_if(!__mc_service_is_valid_queue(_service_data), G_SOURCE_REMOVE, "invalid queue");
-
-       GQueue *request_queue = _service_data->request->queue;
+       GQueue *request_queue = (GQueue *)data;
        length_of_queue = g_queue_get_length(request_queue);
 
        mc_info("Queue Length : %u", length_of_queue);
@@ -627,21 +579,20 @@ static gboolean __mc_read_service_request_tcp_socket(GIOChannel *src, GIOConditi
        int client_sock = -1;
        int msg = MEDIA_CONTROLLER_ERROR_NONE;
        mc_service_request *req = NULL;
-       mc_service_t *_service_data = (mc_service_t*)data;
-       GQueue *request_queue = _service_data->request->queue;
+       GQueue *request_queue = (GQueue *)data;
 
        mc_info_fenter();
 
        sock = g_io_channel_unix_get_fd(src);
        if (sock < 0) {
                mc_error("sock fd is invalid!");
-               return TRUE;
+               return G_SOURCE_CONTINUE;
        }
 
        /* get client socket fd */
        msg = mc_ipc_accept_client_tcp(sock, &(client_sock));
        if (msg != MEDIA_CONTROLLER_ERROR_NONE)
-               return TRUE;
+               return G_SOURCE_CONTINUE;
 
        mc_peer_creds creds;
        memset(&creds, 0x00, sizeof(mc_peer_creds));
@@ -695,7 +646,7 @@ static gboolean __mc_read_service_request_tcp_socket(GIOChannel *src, GIOConditi
 
        if (!g_source) {
                g_source = g_idle_source_new();
-               g_source_set_callback(g_source, __mc_service_process, _service_data, NULL);
+               g_source_set_callback(g_source, __mc_service_process, request_queue, NULL);
                g_source_attach(g_source, g_main_context_get_thread_default());
                g_source_unref(g_source);
        }
@@ -703,7 +654,7 @@ static gboolean __mc_read_service_request_tcp_socket(GIOChannel *src, GIOConditi
        MC_SAFE_FREE(creds.uid);
        MC_SAFE_FREE(creds.smack);
 
-       return TRUE;
+       return G_SOURCE_CONTINUE;
 
 ERROR:
        if (write(client_sock, &msg, sizeof(msg)) != sizeof(msg))
@@ -719,7 +670,19 @@ ERROR:
        MC_SAFE_FREE(creds.uid);
        MC_SAFE_FREE(creds.smack);
 
-       return TRUE;
+       return G_SOURCE_CONTINUE;
+}
+
+static void __destroy_recv_msg_queue(gpointer data)
+{
+       GQueue *recv_msg_queue = (GQueue *)data;
+
+       mc_debug_fenter();
+
+       if (!recv_msg_queue)
+               return;
+
+       g_queue_free_full(recv_msg_queue, __mc_destroy_queue);
 }
 
 gpointer mc_svc_thread(gpointer data)
@@ -729,7 +692,7 @@ gpointer mc_svc_thread(gpointer data)
        GSource *source = NULL;
        GIOChannel *channel = NULL;
        GMainContext *context = NULL;
-       mc_service_t *mc_service_data = NULL;
+       GQueue *recv_msg_queue = NULL;
        uid_t uid = DEFAULT_USER_UID;
 
        mc_debug_fenter();
@@ -794,12 +757,11 @@ gpointer mc_svc_thread(gpointer data)
        channel = g_io_channel_unix_new(sockfd);
        source = g_io_create_watch(channel, G_IO_IN);
 
-       /* Init data */
-       __mc_service_init(&mc_service_data);
-
        /* Set callback to be called when socket is readable */
-       g_source_set_callback(source, (GSourceFunc)__mc_read_service_request_tcp_socket, mc_service_data, NULL);
+       recv_msg_queue = g_queue_new();
+       g_source_set_callback(source, (GSourceFunc)__mc_read_service_request_tcp_socket, recv_msg_queue, __destroy_recv_msg_queue);
        g_source_attach(source, context);
+       g_source_unref(source);
 
        g_main_context_push_thread_default(context);
 
@@ -815,8 +777,6 @@ gpointer mc_svc_thread(gpointer data)
        if (aul_listen_app_dead_signal(NULL, NULL) != AUL_R_OK)
                mc_error("Failed to unregister app_dead signal");
 
-       __mc_service_deinit(mc_service_data);
-
        if (g_source) {
                g_source_destroy(g_source);
                g_source = NULL;
@@ -827,7 +787,7 @@ gpointer mc_svc_thread(gpointer data)
        /* Free resources */
        g_io_channel_shutdown(channel, FALSE, NULL);
        g_io_channel_unref(channel);
-       g_source_unref(source);
+       g_source_destroy(source);
 
        /* close socket */
        close(sockfd);