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;
}
}
-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;
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;
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);
{
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);
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));
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);
}
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))
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)
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();
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);
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;
/* 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);