Refactoring updateinfo related codes 29/128129/5
authorJunghyun Yeon <jungh.yeon@samsung.com>
Mon, 8 May 2017 00:19:38 +0000 (09:19 +0900)
committerjongmyeong ko <jongmyeong.ko@samsung.com>
Mon, 15 May 2017 05:15:12 +0000 (05:15 +0000)
- Remove unused codes
- Refactoring extra data type for several request type

Change-Id: I60787d11d32d738235db763183c1218926bc80b4
Signed-off-by: Junghyun Yeon <jungh.yeon@samsung.com>
include/queue.h
src/pkgmgr-server.c
src/queue.c
src/request.c

index 7d76a09..07dd26f 100644 (file)
@@ -20,7 +20,7 @@
 
 #include <sys/types.h>
 
-struct job_extra_info {
+struct getsize_sync_extra_info{
        int getsize_fd;
        char *getsize_fifo;
        GIOChannel *getsize_io;
@@ -37,7 +37,6 @@ struct backend_job {
        int backend_slot;
        char *backend_type;
        char *backend_path;
-       struct job_extra_info *extra;
        void *extra_data;
 };
 
index 7f6a2ae..f820631 100644 (file)
@@ -122,6 +122,8 @@ static gboolean getsize_io_handler(GIOChannel *io, GIOCondition cond,
        char buf[MAX_LONGLONG_LENGTH];
        long long result = 0;
        struct backend_job *job = (struct backend_job *)data;
+       struct getsize_sync_extra_info *extra_getsize_info =
+                       (struct getsize_sync_extra_info *)job->extra_data;
 
        s = g_io_channel_read_chars(io, (gchar *)buf, sizeof(buf), &len, &err);
        if (s != G_IO_STATUS_NORMAL) {
@@ -140,9 +142,9 @@ static gboolean getsize_io_handler(GIOChannel *io, GIOCondition cond,
        _return_value_to_caller(job->req_id, g_variant_new("(ix)",
                (result < 0) ? PKGMGR_R_ERROR : PKGMGR_R_OK, result));
 
-       unlink(job->extra->getsize_fifo);
-       free(job->extra->getsize_fifo);
-       job->extra->getsize_fifo = NULL;
+       unlink(extra_getsize_info->getsize_fifo);
+       free(extra_getsize_info->getsize_fifo);
+       extra_getsize_info->getsize_fifo = NULL;
 
        return FALSE;
 }
@@ -150,21 +152,24 @@ static gboolean getsize_io_handler(GIOChannel *io, GIOCondition cond,
 static int __setup_size_info_io(struct backend_job *job)
 {
        guint getsize_wid;
+       struct getsize_sync_extra_info *extra_getsize_info =
+                       (struct getsize_sync_extra_info *)job->extra_data;
 
-       job->extra->getsize_fd = open(job->extra->getsize_fifo,
+       extra_getsize_info->getsize_fd = open(extra_getsize_info->getsize_fifo,
                O_RDONLY | O_NONBLOCK);
-       if (job->extra->getsize_fd < 0) {
+       if (extra_getsize_info->getsize_fd < 0) {
                ERR("failed to open the fifo(%s), errno(%d)",
-                       job->extra->getsize_fifo, errno);
+                               extra_getsize_info->getsize_fifo, errno);
                return -1;
        }
 
-       job->extra->getsize_io = g_io_channel_unix_new(job->extra->getsize_fd);
-       if (!job->extra->getsize_io)
+       extra_getsize_info->getsize_io =
+                       g_io_channel_unix_new(extra_getsize_info->getsize_fd);
+       if (!extra_getsize_info->getsize_io)
                return -1;
-       g_io_channel_set_encoding(job->extra->getsize_io, NULL, NULL);
-       g_io_channel_set_buffered(job->extra->getsize_io, FALSE);
-       getsize_wid = g_io_add_watch(job->extra->getsize_io,
+       g_io_channel_set_encoding(extra_getsize_info->getsize_io, NULL, NULL);
+       g_io_channel_set_buffered(extra_getsize_info->getsize_io, FALSE);
+       getsize_wid = g_io_add_watch(extra_getsize_info->getsize_io,
                G_IO_IN, getsize_io_handler, job);
        if (!getsize_wid) {
                ERR("failed to add io watch");
@@ -182,6 +187,7 @@ static gboolean __signal_handler(GIOChannel *io, GIOCondition cond,
        gsize len;
        struct signalfd_siginfo fdsi;
        struct backend_job *job;
+       struct getsize_sync_extra_info *extra_getsize_info;
        pid_t pid;
        int status;
 
@@ -213,15 +219,17 @@ static gboolean __signal_handler(GIOChannel *io, GIOCondition cond,
                        INFO("backend[%s][%d] exit", job->backend_type, pid);
                }
 
-               if (job->extra) {
-                       if (job->extra->getsize_fifo) {
+               if (job->req_type == REQUEST_TYPE_GETSIZE_SYNC &&
+                               job->extra_data) {
+                       extra_getsize_info =
+                                       (struct getsize_sync_extra_info *)job->extra_data;
+                       if (extra_getsize_info->getsize_fifo) {
                                ERR("invalid backend close");
                                _return_value_to_caller(job->req_id,
-                                       g_variant_new("(ix)", PKGMGR_R_ERROR,
-                                       -1));
+                                       g_variant_new("(ix)",
+                                                       PKGMGR_R_ERROR, -1));
                        }
                }
-
                g_hash_table_remove(backend_info_table, (gconstpointer)pid);
        }
        g_idle_add(queue_job, NULL);
@@ -1182,27 +1190,29 @@ static int __process_getsize_sync(struct backend_job *job)
        char **argv;
        char args[MAX_PKG_ARGS_LEN];
        char fifo_path[PATH_MAX];
+       struct getsize_sync_extra_info *extra_getsize_info;
        int pid;
 
        snprintf(fifo_path, sizeof(fifo_path), "/tmp/pkgmgr/%s",
                        job->req_id);
 
-       job->extra = calloc(1, sizeof(struct job_extra_info));
-       if (!job->extra) {
+       extra_getsize_info = calloc(1, sizeof(struct getsize_sync_extra_info));
+       if (!extra_getsize_info) {
                ERR("memory alloc failed");
                goto error;
        }
 
-       job->extra->getsize_fifo = strdup(fifo_path);
-       if (!job->extra->getsize_fifo) {
+       extra_getsize_info->getsize_fifo = strdup(fifo_path);
+       if (!extra_getsize_info->getsize_fifo) {
                ERR("out of memory");
                goto error;
        }
 
-       if (mkfifo(job->extra->getsize_fifo, 0600) < 0) {
+       if (mkfifo(extra_getsize_info->getsize_fifo, 0600) < 0) {
                ERR("failed to mkfifo");
                goto error;
        }
+       job->extra_data = extra_getsize_info;
 
        snprintf(args, sizeof(args), "%s %s %s %d -k %s -u %d --sync",
                        backend_cmd, job->pkgid, job->args, job->caller_uid,
@@ -1644,6 +1654,7 @@ gboolean queue_job(void *data)
                break;
        case REQUEST_TYPE_REGISTER_PKG_UPDATE_INFO:
                ret = __process_register_pkg_update_info(job);
+               __free_extra_info(job);
                _free_backend_job(job);
                break;
        case REQUEST_TYPE_UNREGISTER_PKG_UPDATE_INFO:
index e70e774..61220c8 100644 (file)
@@ -27,6 +27,8 @@
 
 #include <glib.h>
 
+#include "pkgmgrinfo_type.h"
+#include "pkgmgr-info.h"
 #include "pkgmgr-server.h"
 #include "queue.h"
 
@@ -166,17 +168,32 @@ static gboolean __str_equal(gconstpointer v1, gconstpointer v2)
 
 void __free_extra_info(struct backend_job *job)
 {
-       if (job->extra) {
-               if (job->extra->getsize_io)
-                       g_io_channel_unref(job->extra->getsize_io);
-               if (job->extra->getsize_fd)
-                       close(job->extra->getsize_fd);
-               if (job->extra->getsize_fifo) {
-                       unlink(job->extra->getsize_fifo);
-                       free(job->extra->getsize_fifo);
+       struct getsize_sync_extra_info *getsize_sync_data;
+       pkgmgrinfo_updateinfo_h update_info;
+
+       switch (job->req_type) {
+       case REQUEST_TYPE_GETSIZE_SYNC:
+               getsize_sync_data = (struct getsize_sync_extra_info *)job->extra_data;
+               if (!getsize_sync_data)
+                       break;
+               if (getsize_sync_data->getsize_io)
+                       g_io_channel_unref(getsize_sync_data->getsize_io);
+               if (getsize_sync_data->getsize_fd)
+                       close(getsize_sync_data->getsize_fd);
+               if (getsize_sync_data->getsize_fifo) {
+                       unlink(getsize_sync_data->getsize_fifo);
+                       free(getsize_sync_data->getsize_fifo);
                }
-               free(job->extra);
-               job->extra = NULL;
+               free(getsize_sync_data);
+               job->extra_data = NULL;
+               break;
+       case REQUEST_TYPE_REGISTER_PKG_UPDATE_INFO:
+               update_info = (pkgmgrinfo_updateinfo_h)job->extra_data;
+               if (!update_info)
+                       break;
+               pkgmgrinfo_updateinfo_destroy(update_info);
+               job->extra_data = NULL;
+               break;
        }
 }
 
@@ -187,8 +204,6 @@ void _free_backend_job(struct backend_job *job)
        free(job->pkgid);
        free(job->appid);
        free(job->args);
-       if (job->extra_data)
-               free(job->extra_data);
        free(job);
 }
 
index b9db7e0..fe31de8 100644 (file)
@@ -657,22 +657,6 @@ static int __handle_request_enable_pkgs(uid_t caller_uid,
        return 0;
 }
 
-static int __convert_updateinfo_type(const char *type, pkgmgrinfo_updateinfo_update_type *converted_type)
-{
-       if (type == NULL || converted_type == NULL)
-               return -1;
-
-       if (strncmp(type, PMINFO_UPDATEINFO_TYPE_NONE, strlen(PMINFO_UPDATEINFO_TYPE_NONE)) == 0)
-               *converted_type = PMINFO_UPDATEINFO_NONE;
-       else if (strncmp(type, PMINFO_UPDATEINFO_TYPE_FORCE, strlen(PMINFO_UPDATEINFO_TYPE_FORCE)) == 0)
-               *converted_type = PMINFO_UPDATEINFO_FORCE;
-       else if (strncmp(type, PMINFO_UPDATEINFO_TYPE_OPTIONAL, strlen(PMINFO_UPDATEINFO_TYPE_OPTIONAL)) == 0)
-               *converted_type = PMINFO_UPDATEINFO_OPTIONAL;
-       else
-               return -1;
-       return 0;
-}
-
 static int __handle_request_register_pkg_update_info(
                uid_t caller_uid, GDBusMethodInvocation *invocation,
                GVariant *parameters)