Revise client api 02/47402/10
authorSangyoon Jang <s89.jang@samsung.com>
Thu, 3 Sep 2015 06:23:42 +0000 (15:23 +0900)
committerSangyoon Jang <s89.jang@samsung.com>
Thu, 17 Sep 2015 08:31:48 +0000 (01:31 -0700)
get request key from server, do not generate in client side
generate arguments for backend in server side
refine request type to handle client request by each type

Change-Id: Ifd93d5acbeb7a2beb911d8ec01f844bff7a7b6d4
Signed-off-by: Sangyoon Jang <s89.jang@samsung.com>
client/src/pkgmgr.c
comm/comm_client.h
comm/comm_client_gdbus.c
server/include/pkgmgr-server.h
server/include/pm-queue.h
server/src/pkgmgr-server.c
server/src/pm-queue.c
server/src/request.c

index 5fb70ee..8caabcb 100644 (file)
@@ -335,133 +335,6 @@ static void __status_callback(void *cb_data, uid_t target_uid,
        return;
 }
 
-static char *__get_req_key(const char *pkg_path)
-{
-       struct timeval tv;
-       long curtime;
-       char timestr[PKG_STRING_LEN_MAX];
-       char *str_req_key;
-       int size;
-
-       gettimeofday(&tv, NULL);
-       curtime = tv.tv_sec * 1000000 + tv.tv_usec;
-       snprintf(timestr, sizeof(timestr), "%ld", curtime);
-
-       size = strlen(pkg_path) + strlen(timestr) + 2;
-       str_req_key = (char *)calloc(size, sizeof(char));
-       if (str_req_key == NULL) {
-               DBG("calloc failed");
-               return NULL;
-       }
-       snprintf(str_req_key, size, "%s_%s", pkg_path, timestr);
-
-       return str_req_key;
-}
-
-static char *__get_type_from_path(const char *pkg_path)
-{
-       int ret;
-       char mimetype[255] = { '\0', };
-       char extlist[256] = { '\0', };
-       char *pkg_type;
-
-       ret = _get_mime_from_file(pkg_path, mimetype, sizeof(mimetype));
-       if (ret) {
-               ERR("_get_mime_from_file() failed - error code[%d]\n",
-                     ret);
-               return NULL;
-       }
-
-       ret = _get_mime_extension(mimetype, extlist, sizeof(extlist));
-       if (ret) {
-               ERR("_get_mime_extension() failed - error code[%d]\n",
-                     ret);
-               return NULL;
-       }
-
-       if (strlen(extlist) == 0)
-               return NULL;
-
-       if (strchr(extlist, ',')) {
-               extlist[strlen(extlist) - strlen(strchr(extlist, ','))] = '\0';
-       }
-       pkg_type = strchr(extlist, '.') + 1;
-       return strdup(pkg_type);
-}
-
-static int __get_pkgid_by_appid(const char *appid, char **pkgid)
-{
-       pkgmgrinfo_appinfo_h pkgmgrinfo_appinfo = NULL;
-       int ret = -1;
-       char *pkg_id = NULL;
-       char *pkg_id_dup = NULL;
-
-       if (pkgmgrinfo_appinfo_get_appinfo(appid, &pkgmgrinfo_appinfo) != PMINFO_R_OK)
-               return -1;
-
-       if (pkgmgrinfo_appinfo_get_pkgname(pkgmgrinfo_appinfo, &pkg_id) != PMINFO_R_OK)
-               goto err;
-
-       pkg_id_dup = strdup(pkg_id);
-       if (pkg_id_dup == NULL)
-               goto err;
-
-       *pkgid = pkg_id_dup;
-       ret = PMINFO_R_OK;
-
-err:
-       pkgmgrinfo_appinfo_destroy_appinfo(pkgmgrinfo_appinfo);
-
-       return ret;
-}
-
-static int __appinfo_cb(pkgmgrinfo_appinfo_h handle, void *user_data)
-{
-       int ret;
-       char **appid = (char **)user_data;
-       char *val;
-
-       ret = pkgmgrinfo_appinfo_get_appid(handle, &val);
-       if (ret != PMINFO_R_OK)
-               return ret;
-
-       *appid = strdup(val);
-
-       return 0;
-}
-
-static char *__get_app_info_from_db_by_apppath(const char *apppath, uid_t uid)
-{
-       int ret;
-       char *caller_appid = NULL;
-       pkgmgrinfo_appinfo_filter_h filter;
-
-       if (apppath == NULL)
-               return NULL;
-
-       ret = pkgmgrinfo_appinfo_filter_create(&filter) != PMINFO_R_OK;
-       if (ret != PMINFO_R_OK)
-               return NULL;
-
-       ret = pkgmgrinfo_appinfo_filter_add_string(filter,
-                       PMINFO_APPINFO_PROP_APP_EXEC, apppath);
-       if (ret != PMINFO_R_OK) {
-               pkgmgrinfo_appinfo_filter_destroy(filter);
-               return NULL;
-       }
-
-       ret = pkgmgrinfo_appinfo_usr_filter_foreach_appinfo(filter,
-                       __appinfo_cb, &caller_appid, uid);
-       if (ret != PMINFO_R_OK) {
-               pkgmgrinfo_appinfo_filter_destroy(filter);
-               return NULL;
-       }
-
-       pkgmgrinfo_appinfo_filter_destroy(filter);
-
-       return caller_appid;
-}
-
 static inline int __read_proc(const char *path, char *buf, int size)
 {
        int fd = 0;
@@ -503,41 +376,6 @@ char *__proc_get_cmdline_bypid(int pid)
                return strdup(buf);
 }
 
-static int __get_appid_bypid(int pid, char *pkgname, int len, uid_t uid)
-{
-       char *cmdline = NULL;
-       char *caller_appid = NULL;
-
-       cmdline = __proc_get_cmdline_bypid(pid);
-       if (cmdline == NULL)
-               return -1;
-
-       caller_appid = __get_app_info_from_db_by_apppath(cmdline, uid);
-       snprintf(pkgname, len, "%s", caller_appid);
-
-       free(cmdline);
-       free(caller_appid);
-
-       return 0;
-}
-
-static char *__get_caller_pkgid(uid_t uid)
-{
-       char caller_appid[PKG_STRING_LEN_MAX] = {0, };
-       char *caller_pkgid = NULL;
-
-       if (__get_appid_bypid(getpid(), caller_appid, sizeof(caller_appid), uid) < 0) {
-               ERR("get appid fail!!!\n");
-               return NULL;
-       }
-       if (__get_pkgid_by_appid(caller_appid, &caller_pkgid) < 0){
-               ERR("get pkgid fail!!!\n");
-               return NULL;
-       }
-
-       return caller_pkgid;
-}
-
 static inline int __pkgmgr_read_proc(const char *path, char *buf, int size)
 {
        int fd;
@@ -714,169 +552,77 @@ catch:
        return ret;
 }
 
-static int __get_size_process(pkgmgr_client * pc, const char *pkgid, uid_t uid, pkgmgr_getsize_type get_type, pkgmgr_handler event_cb, void *data)
+static int __get_size_process(pkgmgr_client * pc, const char *pkgid, uid_t uid,
+               pkgmgr_getsize_type get_type, pkgmgr_handler event_cb,
+               void *data)
 {
+       GVariant *result;
+       int ret = PKGMGR_R_ECOMM;
        char *req_key = NULL;
-       int ret =0;
-       char *pkgtype = "rpm";
-       char *argv[PKG_ARGC_MAX] = { NULL, };
-       char *args = NULL;
-       int argcnt = 0;
-       int len = 0;
-       char *temp = NULL;
-       int i = 0;
-       char buf[128] = {'\0'};
-
-       pkgmgr_client_t *mpc = (pkgmgr_client_t *) pc;
-       retvm_if(mpc->ctype != PC_REQUEST, PKGMGR_R_EINVAL, "mpc->ctype is not PC_REQUEST\n");
-
-       req_key = __get_req_key(pkgid);
-
-       snprintf(buf, 128, "%d", get_type);
-       argv[argcnt++] = strdup(pkgid);
-       argv[argcnt++] = strdup(buf);
-       argv[argcnt++] = strdup("-k");
-       argv[argcnt++] = strdup(req_key);
+       pkgmgr_client_t *mpc = (pkgmgr_client_t *)pc;
 
-       /*** add quote in all string for special charactor like '\n'***   FIX */
-       for (i = 0; i < argcnt; i++) {
-               temp = g_shell_quote(argv[i]);
-               len += (strlen(temp) + 1);
-               g_free(temp);
+       if (pc == NULL || pkgid == NULL) {
+               ERR("invalid parameter");
+               return PKGMGR_R_EINVAL;
        }
 
-       args = (char *)calloc(len, sizeof(char));
-       tryvm_if(args == NULL, ret = PKGMGR_R_EINVAL, "installer_path fail");
-
-       strncpy(args, argv[0], len - 1);
-
-       for (i = 1; i < argcnt; i++) {
-               strncat(args, " ", strlen(" "));
-               temp = g_shell_quote(argv[i]);
-               strncat(args, temp, strlen(temp));
-               g_free(temp);
+       if (mpc->ctype != PC_REQUEST) {
+               ERR("mpc->ctype is not PC_REQUEST");
+               return PKGMGR_R_EINVAL;
        }
-       DBG("[args] %s [len] %d\n", args, len);
+       result = comm_client_request(mpc->info.request.cc, "getsize",
+                       g_variant_new("(si)", pkgid, get_type));
+       if (result == NULL)
+               return PKGMGR_R_ECOMM;
 
-       /* request */
-       ret = comm_client_request(mpc->info.request.cc, "getsize",
-                       g_variant_new("(ssss)", req_key, pkgtype, pkgid, args));
-       if (ret < 0)
-               ERR("comm_client_request failed, ret=%d\n", ret);
+       g_variant_get(result, "(i&s)", &ret, &req_key);
+       if (req_key == NULL) {
+               g_variant_unref(result);
+               return PKGMGR_R_ECOMM;
+       }
+       if (ret != PKGMGR_R_OK) {
+               g_variant_unref(result);
+               return ret;
+       }
 
        ret = __sync_process(req_key);
        if (ret < 0)
                ERR("get size failed, ret=%d\n", ret);
 
-catch:
-       for (i = 0; i < argcnt; i++)
-               free(argv[i]);
-
-       if(args)
-               free(args);
+       g_variant_unref(result);
 
        return ret;
 }
 
-static int __move_pkg_process(pkgmgr_client * pc, const char *pkgid, uid_t uid, pkgmgr_move_type move_type, pkgmgr_handler event_cb, void *data)
+static int __move_pkg_process(pkgmgr_client *pc, const char *pkgid,
+               const char *pkg_type, uid_t uid, pkgmgr_move_type move_type,
+               pkgmgr_handler event_cb, void *data)
 {
-       char *req_key = NULL;
-       int ret =0;
-       pkgmgrinfo_pkginfo_h handle = NULL;
-       char *pkgtype = NULL;
-       char *installer_path = NULL;
-       char *argv[PKG_ARGC_MAX] = { NULL, };
-       char *args = NULL;
-       int argcnt = 0;
-       int len = 0;
-       char *temp = NULL;
-       int i = 0;
-       char buf[128] = {'\0'};
-
-       pkgmgr_client_t *mpc = (pkgmgr_client_t *) pc;
-       retvm_if(mpc->ctype != PC_REQUEST, PKGMGR_R_EINVAL, "mpc->ctype is not PC_REQUEST\n");
-
-       if(uid != GLOBAL_USER)
-               ret = pkgmgrinfo_pkginfo_get_usr_pkginfo(pkgid, uid, &handle);
-       else
-               ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
-       retvm_if(ret < 0, PKGMGR_R_ERROR, "pkgmgrinfo_pkginfo_get_pkginfo failed");
+       int ret;
 
-       ret = pkgmgrinfo_pkginfo_get_type(handle, &pkgtype);
-       tryvm_if(ret < 0, ret = PKGMGR_R_ERROR, "pkgmgrinfo_pkginfo_get_type failed");
-
-       installer_path = _get_backend_path_with_type(pkgtype);
-       req_key = __get_req_key(pkgid);
-
-       /* generate argv */
-       snprintf(buf, 128, "%d", move_type);
-       /* argv[0] installer path */
-       argv[argcnt++] = installer_path;
-       /* argv[1] */
-       argv[argcnt++] = strdup("-k");
-       /* argv[2] */
-       argv[argcnt++] = req_key;
-       /* argv[3] */
-       argv[argcnt++] = strdup("-m");
-       /* argv[4] */
-       argv[argcnt++] = strdup(pkgid);
-       /* argv[5] */
-       argv[argcnt++] = strdup("-t");
-       /* argv[6] */
-       argv[argcnt++] = strdup(buf);
-
-       /*** add quote in all string for special charactor like '\n'***   FIX */
-       for (i = 0; i < argcnt; i++) {
-               temp = g_shell_quote(argv[i]);
-               len += (strlen(temp) + 1);
-               g_free(temp);
-       }
-
-       args = (char *)calloc(len, sizeof(char));
-       tryvm_if(args == NULL, ret = PKGMGR_R_EINVAL, "installer_path fail");
-
-       strncpy(args, argv[0], len - 1);
-
-       for (i = 1; i < argcnt; i++) {
-               strncat(args, " ", strlen(" "));
-               temp = g_shell_quote(argv[i]);
-               strncat(args, temp, strlen(temp));
-               g_free(temp);
-       }
-       DBG("[args] %s [len] %d\n", args, len);
-
-       /* 6. request */
-       ret = comm_client_request(mpc->info.request.cc, "move",
-                       g_variant_new("(ssss)", req_key, pkgtype, pkgid, args));
-       if (ret < 0)
-               ERR("comm_client_request failed, ret=%d\n", ret);
+       ret = pkgmgr_client_usr_move(pc, pkg_type, pkgid, move_type, 0, uid);
+       if (ret < 0) {
+               ERR("move request failed");
+               return ret;
+       }
 
+       /* FIXME */
        ret = __sync_process(pkgid);
        if (ret != 0)
                ERR("move pkg failed, ret=%d\n", ret);
 
-catch:
-       for (i = 0; i < argcnt; i++)
-               free(argv[i]);
-
-       if(args)
-               free(args);
-
-       if (handle)
-               pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
        return ret;
 }
 
-static int __check_app_process(pkgmgr_request_service_type service_type, pkgmgr_client * pc, const char *pkgid, uid_t uid, void *data)
+static int __check_app_process(pkgmgr_request_service_type service_type,
+               pkgmgr_client *pc, const char *pkgid, uid_t uid, void *data)
 {
-       char *pkgtype;
-       char *req_key = NULL;
-       int ret;
-       pkgmgrinfo_pkginfo_h handle = NULL;
+       GVariant *result;
+       int ret = PKGMGR_R_ECOMM;
+       pkgmgrinfo_pkginfo_h handle;
        int pid = -1;
-
-       /* Check for NULL value of pc */
        pkgmgr_client_t *mpc = (pkgmgr_client_t *) pc;
+
        retvm_if(mpc->ctype != PC_REQUEST, PKGMGR_R_EINVAL, "mpc->ctype is not PC_REQUEST\n");
 
        if (uid != GLOBAL_USER)
@@ -885,31 +631,27 @@ static int __check_app_process(pkgmgr_request_service_type service_type, pkgmgr_
                ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
        retvm_if(ret < 0, PKGMGR_R_ERROR, "pkgmgrinfo_pkginfo_get_pkginfo failed");
 
-       ret = pkgmgrinfo_pkginfo_get_type(handle, &pkgtype);
-       tryvm_if(ret < 0, ret = PKGMGR_R_ERROR, "pkgmgrinfo_pkginfo_get_type failed");
-
-       /* 2. generate req_key */
-       req_key = __get_req_key(pkgid);
-
-       /* 3. request activate */
        if (service_type == PM_REQUEST_KILL_APP)
-               ret = comm_client_request(mpc->info.request.cc, "kill",
-                               g_variant_new("(sss)", req_key, pkgtype, pkgid));
+               result = comm_client_request(mpc->info.request.cc, "kill",
+                               g_variant_new("(s)", pkgid));
        else if (service_type == PM_REQUEST_CHECK_APP)
-               ret = comm_client_request(mpc->info.request.cc, "check",
-                               g_variant_new("(sss)", req_key, pkgtype, pkgid));
+               result = comm_client_request(mpc->info.request.cc, "check",
+                               g_variant_new("(s)", pkgid));
 
-       if (ret < 0)
-               ERR("request failed, ret=%d\n", ret);
+       if (result == NULL)
+               return PKGMGR_R_ECOMM;
+       g_variant_get(result, "(i)", &ret);
+       g_variant_unref(result);
+       if (ret != PKGMGR_R_OK) {
+               ERR("request failed, ret=%d", ret);
+               return ret;
+       }
 
+       /* FIXME */
        pid  = __sync_process(pkgid);
-       * (int *) data = pid;
+       *(int *)data = pid;
 
-catch:
-       if (req_key)
-               free(req_key);
-       if (handle)
-               pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
+       pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
 
        return ret;
 
@@ -917,64 +659,33 @@ catch:
 
 static int __request_size_info(pkgmgr_client *pc, uid_t uid)
 {
+       GVariant *result;
+       int ret = PKGMGR_R_ECOMM;
        char *req_key = NULL;
-       int ret =0;
-       char *pkgtype = "getsize";
-       char *pkgid = "size_info";
-       pkgmgr_getsize_type get_type = PM_GET_SIZE_INFO;
-
-       char *argv[PKG_ARGC_MAX] = { NULL, };
-       char *args = NULL;
-       int argcnt = 0;
-       int len = 0;
-       char *temp = NULL;
-       int i = 0;
-       char buf[128] = {'\0'};
-
        pkgmgr_client_t *mpc = (pkgmgr_client_t *) pc;
-       retvm_if(mpc->ctype != PC_REQUEST, PKGMGR_R_EINVAL, "mpc->ctype is not PC_REQUEST\n");
 
-       req_key = __get_req_key(pkgid);
-
-       snprintf(buf, 128, "%d", get_type);
-       argv[argcnt++] = strdup(pkgid);
-       argv[argcnt++] = strdup(buf);
-       argv[argcnt++] = strdup("-k");
-       argv[argcnt++] = req_key;
-
-       /*** add quote in all string for special charactor like '\n'***   FIX */
-       for (i = 0; i < argcnt; i++) {
-               temp = g_shell_quote(argv[i]);
-               len += (strlen(temp) + 1);
-               g_free(temp);
+       if (pc == NULL) {
+               ERR("invalid parameter");
+               return PKGMGR_R_EINVAL;
        }
 
-       args = (char *)calloc(len, sizeof(char));
-       tryvm_if(args == NULL, ret = PKGMGR_R_EINVAL, "installer_path fail");
-
-       strncpy(args, argv[0], len - 1);
-
-       for (i = 1; i < argcnt; i++) {
-               strncat(args, " ", strlen(" "));
-               temp = g_shell_quote(argv[i]);
-               strncat(args, temp, strlen(temp));
-               g_free(temp);
+       if (mpc->ctype != PC_REQUEST) {
+               ERR("mpc->ctype is not PC_REQUEST");
+               return PKGMGR_R_EINVAL;
        }
-       DBG("[args] %s [len] %d\n", args, len);
 
-       /* request */
-       ret = comm_client_request(mpc->info.request.cc, "getsize",
-                       g_variant_new("(ssss)", req_key, pkgtype, pkgid, args));
-       if (ret < 0) {
-               ERR("COMM_REQ_GET_SIZE failed, ret=%d\n", ret);
-       }
+       result = comm_client_request(mpc->info.request.cc, "getsize",
+                       g_variant_new("(si)", "size_info", PM_GET_SIZE_INFO));
+       if (result == NULL)
+               return PKGMGR_R_ECOMM;
 
-catch:
-       for (i = 0; i < argcnt; i++)
-               free(argv[i]);
+       g_variant_get(result, "(i&s)", &ret, &req_key);
+       if (req_key == NULL) {
+               g_variant_unref(result);
+               return PKGMGR_R_ECOMM;
+       }
 
-       if(args)
-               free(args);
+       g_variant_unref(result);
 
        return ret;
 }
@@ -1013,60 +724,6 @@ static int __change_op_cb_for_getsize(pkgmgr_client *pc)
        return PKGMGR_R_OK;
 }
 
-static int __get_package_size_info(pkgmgr_client_t *mpc, char *req_key, const char *pkgid, pkgmgr_getsize_type get_type, uid_t uid)
-{
-       char *argv[PKG_ARGC_MAX] = { NULL, };
-       char *args = NULL;
-       int argcnt = 0;
-       char *pkgtype = "getsize"; //unused
-       char buf[128] = { 0, };
-       int len = 0;
-       char *temp = NULL;
-       int i = 0;
-       int ret = 0;
-
-       snprintf(buf, 128, "%d", get_type);
-       argv[argcnt++] = strdup(pkgid);
-       argv[argcnt++] = strdup(buf);
-       argv[argcnt++] = strdup("-k");
-       argv[argcnt++] = req_key;
-
-       /*** add quote in all string for special charactor like '\n'***   FIX */
-       for (i = 0; i < argcnt; i++) {
-               temp = g_shell_quote(argv[i]);
-               len += (strlen(temp) + 1);
-               g_free(temp);
-       }
-
-       args = (char *)calloc(len, sizeof(char));
-       tryvm_if(args == NULL, ret = PKGMGR_R_EINVAL, "installer_path fail");
-
-       strncpy(args, argv[0], len - 1);
-
-       for (i = 1; i < argcnt; i++) {
-               strncat(args, " ", strlen(" "));
-               temp = g_shell_quote(argv[i]);
-               strncat(args, temp, strlen(temp));
-               g_free(temp);
-       }
-       DBG("[args] %s [len] %d\n", args, len);
-
-       /* request */
-       ret = comm_client_request(mpc->info.request.cc, "getsize",
-                       g_variant_new("(ssss)", req_key, pkgtype, pkgid, args));
-       if (ret < 0)
-               ERR("COMM_REQ_GET_SIZE failed, ret=%d\n", ret);
-
-catch:
-       for (i = 0; i < argcnt; i++)
-               free(argv[i]);
-
-       if(args)
-               free(args);
-
-       return ret;
-}
-
 static int __get_pkg_size_info_cb(uid_t target_uid, int req_id, const char *req_type,
                const char *pkgid, const char *key,
                const char *value, const void *pc, void *user_data)
@@ -1207,678 +864,239 @@ API int pkgmgr_client_free(pkgmgr_client *pc)
 }
 
 
-API int pkgmgr_client_usr_install(pkgmgr_client * pc, const char *pkg_type,
-                             const char *descriptor_path, const char *pkg_path,
-                             const char *optional_file, pkgmgr_mode mode,
-                             pkgmgr_handler event_cb, void *data, uid_t uid)
+API int pkgmgr_client_usr_install(pkgmgr_client *pc, const char *pkg_type,
+               const char *descriptor_path, const char *pkg_path,
+               const char *optional_file, pkgmgr_mode mode,
+               pkgmgr_handler event_cb, void *data, uid_t uid)
 {
-       char *pkgtype = NULL;
-       char *installer_path = NULL;
+       GVariant *result;
+       int ret = PKGMGR_R_ECOMM;
        char *req_key = NULL;
-       int req_id = 0;
-       int i = 0;
-       char *argv[PKG_ARGC_MAX] = { NULL, };
-       char *args = NULL;
-       int argcnt = 0;
-       int len = 0;
-       char *temp = NULL;
-       int ret = 0;
-       char *caller_pkgid = NULL;
-
-       caller_pkgid = __get_caller_pkgid(uid);
-       if (caller_pkgid == NULL)
-               ERR("caller dont have pkgid..\n");
-
-       /* Check for NULL value of pc */
-       retvm_if(pc == NULL, PKGMGR_R_EINVAL, "package manager client handle is NULL");
-
-       /* 0. check the pc type */
-       pkgmgr_client_t *mpc = (pkgmgr_client_t *) pc;
-       retvm_if(mpc->ctype != PC_REQUEST, PKGMGR_R_EINVAL, "mpc->ctype is not PC_REQUEST");
-
-       /* 1. check argument */
-       if (descriptor_path) {
-               retvm_if(strlen(descriptor_path) >= PKG_STRING_LEN_MAX, PKGMGR_R_EINVAL, "descriptor_path over PKG_STRING_LEN_MAX");
-               retvm_if(access(descriptor_path, F_OK) != 0, PKGMGR_R_EINVAL, "descriptor_path access fail");
-       }
-
-       retvm_if(pkg_path == NULL, PKGMGR_R_EINVAL, "pkg_path is NULL");
-       retvm_if(strlen(pkg_path) >= PKG_STRING_LEN_MAX, PKGMGR_R_EINVAL, "pkg_path over PKG_STRING_LEN_MAX");
-       retvm_if(access(pkg_path, F_OK) != 0, PKGMGR_R_EINVAL, "pkg_path access fail");
-
-       if (optional_file)
-               retvm_if(strlen(optional_file) >= PKG_STRING_LEN_MAX, PKGMGR_R_EINVAL, "optional_file over PKG_STRING_LEN_MAX");
+       int req_id;
+       pkgmgr_client_t *mpc = (pkgmgr_client_t *)pc;
 
-       /* 2. get installer path using pkg_path */
-       if (pkg_type) {
-               installer_path = _get_backend_path_with_type(pkg_type);
-               pkgtype = strdup(pkg_type);
-       } else {
-               installer_path = _get_backend_path(pkg_path);
-               pkgtype = __get_type_from_path(pkg_path);
-       }
-       if (installer_path == NULL) {
-               free(pkgtype);
-               ERR("installer_path is NULL\n");
+       if (pc == NULL || pkg_type == NULL || pkg_path == NULL) {
+               ERR("invalid parameter");
                return PKGMGR_R_EINVAL;
        }
 
-       /* 3. generate req_key */
-       req_key = __get_req_key(pkg_path);
-
-       /* 4. add callback info - add callback info to pkgmgr_client */
-       req_id = _get_request_id();
-       __add_op_cbinfo(mpc, req_id, req_key, event_cb, NULL, data);
-
-       /* 5. generate argv */
-
-       /*  argv[0] installer path */
-       argv[argcnt++] = installer_path;
-       /* argv[1] */
-       argv[argcnt++] = strdup("-k");
-       /* argv[2] */
-       argv[argcnt++] = req_key;
-       /* argv[3] */
-       argv[argcnt++] = strdup("-i");
-       /* argv[(4)] if exists */
-       if (descriptor_path)
-               argv[argcnt++] = strdup(descriptor_path);
-       /* argv[4] */
-       argv[argcnt++] = strdup(pkg_path);
-       /* argv[(5)] if exists */
-       if (optional_file){
-               argv[argcnt++] = strdup("-o");
-               argv[argcnt++] = strdup(optional_file);
-       }
-       if (caller_pkgid) {
-               argv[argcnt++] = strdup("-p");
-               argv[argcnt++] = strdup(caller_pkgid);
+       if (mpc->ctype != PC_REQUEST) {
+               ERR("mpc->ctype is not PC_REQUEST");
+               return PKGMGR_R_EINVAL;
        }
 
-       /*** add quote in all string for special charactor like '\n'***   FIX */
-       for (i = 0; i < argcnt; i++) {
-               temp = g_shell_quote(argv[i]);
-               len += (strlen(temp) + 1);
-               g_free(temp);
+       result = comm_client_request(mpc->info.request.cc, "install",
+                       g_variant_new("(ss)", pkg_type, pkg_path));
+       if (result == NULL)
+               return PKGMGR_R_ECOMM;
+       g_variant_get(result, "(i&s)", &ret, &req_key);
+       if (req_key == NULL) {
+               g_variant_unref(result);
+               return PKGMGR_R_ECOMM;
        }
-
-       args = (char *)calloc(len, sizeof(char));
-       tryvm_if(args == NULL, ret = PKGMGR_R_ERROR, "calloc failed");
-
-       strncpy(args, argv[0], len - 1);
-
-       for (i = 1; i < argcnt; i++) {
-               strncat(args, " ", strlen(" "));
-               temp = g_shell_quote(argv[i]);
-               strncat(args, temp, strlen(temp));
-               g_free(temp);
+       if (ret != PKGMGR_R_OK) {
+               g_variant_unref(result);
+               return ret;
        }
-       DBG("[args] %s [len] %d\n", args, len);
-
-       /******************* end of quote ************************/
 
-       /* 6. request install */
-       ret = comm_client_request(mpc->info.request.cc, "install",
-                       g_variant_new("(ssss)", req_key, pkgtype, pkg_path, args));
-       tryvm_if(ret < 0, ret = PKGMGR_R_ECOMM, "request failed, ret=%d", ret);
-
-       ret = req_id;
-
-catch:
-       for (i = 0; i < argcnt; i++)
-               free(argv[i]);
+       req_id = _get_request_id();
+       __add_op_cbinfo(mpc, req_id, req_key, event_cb, NULL, data);
 
-       if (args)
-               free(args);
-       if (pkgtype)
-               free(pkgtype);
+       g_variant_unref(result);
 
-       return ret;
+       return req_id;
 }
 
-
-
-API int pkgmgr_client_install(pkgmgr_client * pc, const char *pkg_type,
-                             const char *descriptor_path, const char *pkg_path,
-                             const char *optional_file, pkgmgr_mode mode,
-                             pkgmgr_handler event_cb, void *data)
+API int pkgmgr_client_install(pkgmgr_client *pc, const char *pkg_type,
+               const char *descriptor_path, const char *pkg_path,
+               const char *optional_file, pkgmgr_mode mode,
+               pkgmgr_handler event_cb, void *data)
 {
-       
-
-       return pkgmgr_client_usr_install(pc, pkg_type,
-                             descriptor_path, pkg_path, optional_file, mode, event_cb,data,  GLOBAL_USER);
+       return pkgmgr_client_usr_install(pc, pkg_type, descriptor_path,
+                       pkg_path, optional_file, mode, event_cb,data,
+                       GLOBAL_USER);
 }
 
-API int pkgmgr_client_reinstall(pkgmgr_client * pc, const char *pkg_type, const char *pkgid,
-                                 const char *optional_file, pkgmgr_mode mode,
-                             pkgmgr_handler event_cb, void *data)
+API int pkgmgr_client_reinstall(pkgmgr_client *pc, const char *pkg_type,
+               const char *pkgid, const char *optional_file, pkgmgr_mode mode,
+               pkgmgr_handler event_cb, void *data)
 {
-       return pkgmgr_client_usr_reinstall(pc, pkg_type, pkgid, optional_file, mode, event_cb, data,GLOBAL_USER);
+       return pkgmgr_client_usr_reinstall(pc, pkg_type, pkgid, optional_file,
+                       mode, event_cb, data,GLOBAL_USER);
 }
 
-API int pkgmgr_client_usr_reinstall(pkgmgr_client * pc, const char *pkg_type, const char *pkgid,
-                                 const char *optional_file, pkgmgr_mode mode,
-                             pkgmgr_handler event_cb, void *data, uid_t uid)
+API int pkgmgr_client_usr_reinstall(pkgmgr_client * pc, const char *pkg_type,
+               const char *pkgid, const char *optional_file, pkgmgr_mode mode,
+               pkgmgr_handler event_cb, void *data, uid_t uid)
 {
-       char *pkgtype = NULL;
-       char *installer_path = NULL;
+       GVariant *result;
+       int ret = PKGMGR_R_ECOMM;
        char *req_key = NULL;
-       int req_id = 0;
-       int i = 0;
-       char *argv[PKG_ARGC_MAX] = { NULL, };
-       char *args = NULL;
-       int argcnt = 0;
-       int len = 0;
-       char *temp = NULL;
-       int ret = 0;
-
-       /* Check for NULL value of pc */
-       retvm_if(pc == NULL, PKGMGR_R_EINVAL, "package manager client handle is NULL\n");
-
-       pkgmgr_client_t *mpc = (pkgmgr_client_t *) pc;
-
-       /* 0. check the pc type */
-       retv_if(mpc->ctype != PC_REQUEST, PKGMGR_R_EINVAL);
-
+       int req_id;
+       pkgmgr_client_t *mpc = (pkgmgr_client_t *)pc;
 
-       /* 1. check argument */
-       retv_if(pkgid == NULL, PKGMGR_R_EINVAL);
-       retv_if(strlen(pkgid) >= PKG_STRING_LEN_MAX, PKGMGR_R_EINVAL);
-       if (optional_file) {
-               if (strlen(optional_file) >= PKG_STRING_LEN_MAX)
-                       return PKGMGR_R_EINVAL;
+       if (pc == NULL || pkg_type == NULL || pkgid == NULL) {
+               ERR("invalid parameter");
+               return PKGMGR_R_EINVAL;
        }
 
-       /* 2. get installer path using pkg_path */
-       installer_path = _get_backend_path_with_type(pkg_type);
-       pkgtype = strdup(pkg_type);
-       tryvm_if(installer_path == NULL, ret = PKGMGR_R_EINVAL, "installer_path is null");
-
-       /* 3. generate req_key */
-       req_key = __get_req_key(pkgid);
-
-       /* 4. add callback info - add callback info to pkgmgr_client */
-       req_id = _get_request_id();
-       __add_op_cbinfo(mpc, req_id, req_key, event_cb, NULL, data);
-
-       /* 5. generate argv */
-
-       /*  argv[0] installer path */
-       argv[argcnt++] = installer_path;
-       /* argv[1] */
-       argv[argcnt++] = strdup("-k");
-       /* argv[2] */
-       argv[argcnt++] = req_key;
-       /* argv[3] */
-       argv[argcnt++] = strdup("-r");
-       /* argv[4] */
-       argv[argcnt++] = strdup(pkgid);
-       /* argv[(5)] if exists */
-       if (optional_file){
-               argv[argcnt++] = strdup("-o");
-               argv[argcnt++] = strdup(optional_file);
+       if (mpc->ctype != PC_REQUEST) {
+               ERR("mpc->ctype is not PC_REQUEST");
+               return PKGMGR_R_EINVAL;
        }
 
-       /*** add quote in all string for special charactor like '\n'***   FIX */
-       for (i = 0; i < argcnt; i++) {
-               temp = g_shell_quote(argv[i]);
-               len += (strlen(temp) + 1);
-               g_free(temp);
+       result = comm_client_request(mpc->info.request.cc, "reinstall",
+                       g_variant_new("(ss)", pkg_type, pkgid));
+       if (result == NULL)
+               return PKGMGR_R_ECOMM;
+       g_variant_get(result, "(i&s)", &ret, &req_key);
+       if (req_key == NULL) {
+               g_variant_unref(result);
+               return PKGMGR_R_ECOMM;
        }
-
-       args = (char *)calloc(len, sizeof(char));
-       tryvm_if(args == NULL, ret = PKGMGR_R_ERROR, "calloc failed");
-
-       strncpy(args, argv[0], len - 1);
-
-       for (i = 1; i < argcnt; i++) {
-               strncat(args, " ", strlen(" "));
-               temp = g_shell_quote(argv[i]);
-               strncat(args, temp, strlen(temp));
-               g_free(temp);
+       if (ret != PKGMGR_R_OK) {
+               g_variant_unref(result);
+               return ret;
        }
-       DBG("[args] %s [len] %d\n", args, len);
 
-       /******************* end of quote ************************/
-
-       /* 6. request install */
-       ret = comm_client_request(mpc->info.request.cc, "reinstall",
-                       g_variant_new("(ssss)", req_key, pkgtype, pkgid, args));
-       tryvm_if(ret < 0, ret = PKGMGR_R_ECOMM, "request failed");
-
-       ret = req_id;
-
-catch:
-       for (i = 0; i < argcnt; i++)
-               free(argv[i]);
+       req_id = _get_request_id();
+       __add_op_cbinfo(mpc, req_id, req_key, event_cb, NULL, data);
 
-       if (args)
-               free(args);
-       if (pkgtype)
-               free(pkgtype);
+       g_variant_unref(result);
 
-       return ret;
+       return req_id;
 }
 
 API int pkgmgr_client_uninstall(pkgmgr_client *pc, const char *pkg_type,
-                               const char *pkgid, pkgmgr_mode mode,
-                               pkgmgr_handler event_cb, void *data)
+               const char *pkgid, pkgmgr_mode mode, pkgmgr_handler event_cb,
+               void *data)
 {
-       return pkgmgr_client_usr_uninstall(pc, pkg_type,pkgid, mode, event_cb,  data, GLOBAL_USER);
+       return pkgmgr_client_usr_uninstall(pc, pkg_type,pkgid, mode, event_cb,
+                       data, GLOBAL_USER);
 }
+
 API int pkgmgr_client_usr_uninstall(pkgmgr_client *pc, const char *pkg_type,
-                               const char *pkgid, pkgmgr_mode mode,
-                               pkgmgr_handler event_cb, void *data, uid_t uid)
+               const char *pkgid, pkgmgr_mode mode, pkgmgr_handler event_cb,
+               void *data, uid_t uid)
 {
-       char *pkgtype;
-       char *installer_path;
-       char *req_key;
+       GVariant *result;
+       int ret = PKGMGR_R_ECOMM;
+       char *req_key = NULL;
        int req_id;
-       int i = 0;
-       char *argv[PKG_ARGC_MAX] = { NULL, };
-       char *args = NULL;
-       int argcnt = 0;
-       int len = 0;
-       char *temp = NULL;
-       int ret = -1;
-       bool removable = false;
-       char *caller_pkgid = NULL;
+       pkgmgr_client_t *mpc = (pkgmgr_client_t *)pc;
+       char *pkgtype;
+       pkgmgrinfo_pkginfo_h handle;
 
-       caller_pkgid = __get_caller_pkgid(uid);
-       if (caller_pkgid == NULL)
-               DBG("caller dont have pkgid..\n");
+       if (pc == NULL || pkgid == NULL) {
+               ERR("invalid parameter");
+               return PKGMGR_R_EINVAL;
+       }
 
-       /* Check for NULL value of pc */
-       retvm_if(pc == NULL, PKGMGR_R_EINVAL, "package manager client handle is NULL\n");
+       if (mpc->ctype != PC_REQUEST) {
+               ERR("mpc->ctype is not PC_REQUEST");
+               return PKGMGR_R_EINVAL;
+       }
 
-       pkgmgr_client_t *mpc = (pkgmgr_client_t *) pc;
+       ret = pkgmgrinfo_pkginfo_get_usr_pkginfo(pkgid, uid, &handle);
+       if (ret < 0)
+               return PKGMGR_R_ERROR;
 
-       /* 0. check the pc type */
-       retv_if(mpc->ctype != PC_REQUEST, PKGMGR_R_EINVAL);
+       ret = pkgmgrinfo_pkginfo_get_type(handle, &pkgtype);
+       if (ret < 0) {
+               pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
+               return PKGMGR_R_ERROR;
+       }
 
-       /* 1. check argument */
-       retv_if(pkgid == NULL, PKGMGR_R_EINVAL);
+       /* TODO: check removable ? */
 
-       pkgmgrinfo_pkginfo_h handle = NULL;
-       ret = pkgmgrinfo_pkginfo_get_usr_pkginfo(pkgid, uid, &handle); 
-
-       /*check package id      */
-       tryvm_if(ret < 0, ret = PKGMGR_R_EINVAL, "pkgmgrinfo_pkginfo_get_pkginfo fail");
-       tryvm_if(handle == NULL, ret = PKGMGR_R_EINVAL, "Pkgid(%s) can not find in installed pkg DB! \n", pkgid);
-
-       /*check type    */
-       ret = pkgmgrinfo_pkginfo_get_type(handle, &pkgtype);
-       tryvm_if(ret < 0, ret = PKGMGR_R_EINVAL, "pkgmgrinfo_pkginfo_get_type fail");
-       tryvm_if(pkgtype == NULL, ret = PKGMGR_R_ERROR, "pkgtype is NULL");
-
-       /*check removable, execpt "rpm" type    */
-       if (strcmp(pkgtype, "rpm")) {
-               pkgmgrinfo_pkginfo_is_removable(handle, &removable);
-               tryvm_if(removable == false, ret = PKGMGR_R_ERROR, "Pkgid(%s) can not be removed, This is non-removalbe package...\n", pkgid);
-       }
-
-       /*check pkgid length    */
-       tryvm_if(strlen(pkgid) >= PKG_STRING_LEN_MAX, ret = PKGMGR_R_EINVAL, "pkgid is too long");
-
-       /* 2. get installer path using pkgtype */
-       installer_path = _get_backend_path_with_type(pkgtype);
-       tryvm_if(installer_path == NULL, ret = PKGMGR_R_EINVAL, "installer_path fail");
-
-       /* 3. generate req_key */
-       req_key = __get_req_key(pkgid);
-
-       /* 4. add callback info - add callback info to pkgmgr_client */
-       req_id = _get_request_id();
-       __add_op_cbinfo(mpc, req_id, req_key, event_cb, NULL, data);
-
-       /* 5. generate argv */
-
-       /* argv[0] installer path */
-       argv[argcnt++] = installer_path;
-       /* argv[1] */
-       argv[argcnt++] = strdup("-k");
-       /* argv[2] */
-       argv[argcnt++] = req_key;
-       /* argv[3] */
-       argv[argcnt++] = strdup("-d");
-       /* argv[4] */
-       argv[argcnt++] = strdup(pkgid);
-       if (caller_pkgid) {
-               argv[argcnt++] = strdup("-p");
-               argv[argcnt++] = caller_pkgid;
+       result = comm_client_request(mpc->info.request.cc, "uninstall",
+                       g_variant_new("(ss)", pkgtype, pkgid));
+       if (result == NULL) {
+               pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
+               return PKGMGR_R_ECOMM;
        }
-
-       /*** add quote in all string for special charactor like '\n'***   FIX */
-       for (i = 0; i < argcnt; i++) {
-               temp = g_shell_quote(argv[i]);
-               len += (strlen(temp) + 1);
-               g_free(temp);
+       g_variant_get(result, "(i&s)", &ret, &req_key);
+       if (req_key == NULL) {
+               g_variant_unref(result);
+               pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
+               return PKGMGR_R_ECOMM;
        }
-
-       args = (char *)calloc(len, sizeof(char));
-       tryvm_if(args == NULL, ret = PKGMGR_R_ERROR, "calloc failed");
-
-       strncpy(args, argv[0], len - 1);
-
-       for (i = 1; i < argcnt; i++) {
-               strncat(args, " ", strlen(" "));
-               temp = g_shell_quote(argv[i]);
-               strncat(args, temp, strlen(temp));
-               g_free(temp);
+       if (ret != PKGMGR_R_OK) {
+               g_variant_unref(result);
+               pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
+               return ret;
        }
-       DBG("[args] %s [len] %d\n", args, len);
-
-       /******************* end of quote ************************/
 
-       /* 6. request install */
-       ret = comm_client_request(mpc->info.request.cc, "uninstall",
-                       g_variant_new("(ssss)", req_key, pkgtype, pkgid, args));
-       tryvm_if(ret < 0, ret = PKGMGR_R_ECOMM, "calloc failed");
-
-       ret = req_id;
-
-catch:
-       for (i = 0; i < argcnt; i++)
-               free(argv[i]);
+       req_id = _get_request_id();
+       __add_op_cbinfo(mpc, req_id, req_key, event_cb, NULL, data);
 
-       if(args)
-               free(args);
+       g_variant_unref(result);
+       pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
 
-       if (handle)
-               pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
-       return ret;
+       return req_id;
 }
 
 API int pkgmgr_client_move(pkgmgr_client *pc, const char *pkg_type,
-                               const char *pkgid, pkgmgr_move_type move_type, pkgmgr_mode mode)
+               const char *pkgid, pkgmgr_move_type move_type, pkgmgr_mode mode)
 {
-       return pkgmgr_client_usr_move( pc,pkg_type, pkgid, move_type, mode, GLOBAL_USER);
+       return pkgmgr_client_usr_move(pc, pkg_type, pkgid, move_type, mode,
+                       GLOBAL_USER);
 }
 API int pkgmgr_client_usr_move(pkgmgr_client *pc, const char *pkg_type,
-                               const char *pkgid, pkgmgr_move_type move_type, pkgmgr_mode mode, uid_t uid)
+               const char *pkgid, pkgmgr_move_type move_type,
+               pkgmgr_mode mode, uid_t uid)
 {
-       const char *pkgtype = NULL;
-       char *installer_path = NULL;
-       char *req_key = NULL;
-       int i = 0;
-       char *argv[PKG_ARGC_MAX] = { NULL, };
-       char *args = NULL;
-       int argcnt = 0;
-       int len = 0;
-       char *temp = NULL;
-       int ret = 0;
-       int req_id = 0;
-       char buf[128] = {'\0'};
+       GVariant *result;
+       int ret = PKGMGR_R_ECOMM;
+       pkgmgr_client_t *mpc = (pkgmgr_client_t *)pc;
 
-       /* Check for NULL value of pc */
-       if (pc == NULL) {
-               DBG("package manager client handle is NULL\n");
+       if (pc == NULL || pkg_type == NULL || pkgid == NULL) {
+               ERR("invalid parameter");
                return PKGMGR_R_EINVAL;
        }
-       pkgmgr_client_t *mpc = (pkgmgr_client_t *) pc;
-       /*check the pc type */
-       if (mpc->ctype != PC_REQUEST)
-               return PKGMGR_R_EINVAL;
-
-       /*check argument */
-       if (pkgid == NULL)
-               return PKGMGR_R_EINVAL;
-
-       if (pkg_type == NULL) {
-               pkgtype = _get_pkg_type(pkgid, uid);
-               if (pkgtype == NULL)
-                       return PKGMGR_R_EINVAL;
-       } else
-               pkgtype = pkg_type;
-
-       if (strlen(pkgid) >= PKG_STRING_LEN_MAX)
-               return PKGMGR_R_EINVAL;
 
        if ((move_type < PM_MOVE_TO_INTERNAL) || (move_type > PM_MOVE_TO_SDCARD))
                return PKGMGR_R_EINVAL;
 
-       /* get installer path using pkg_path */
-       installer_path = _get_backend_path_with_type(pkgtype);
-       if (installer_path == NULL)
+       if (mpc->ctype != PC_REQUEST) {
+               ERR("mpc->ctype is not PC_REQUEST");
                return PKGMGR_R_EINVAL;
-
-       /* generate req_key */
-       req_key = __get_req_key(pkgid);
-       req_id = _get_request_id();
-
-       /* generate argv */
-       snprintf(buf, 128, "%d", move_type);
-       /* argv[0] installer path */
-       argv[argcnt++] = installer_path;
-       /* argv[1] */
-       argv[argcnt++] = strdup("-k");
-       /* argv[2] */
-       argv[argcnt++] = req_key;
-       /* argv[3] */
-       argv[argcnt++] = strdup("-m");
-       /* argv[4] */
-       argv[argcnt++] = strdup(pkgid);
-       /* argv[5] */
-       argv[argcnt++] = strdup("-t");
-       /* argv[6] */
-       argv[argcnt++] = strdup(buf);
-
-       /*** add quote in all string for special charactor like '\n'***   FIX */
-       for (i = 0; i < argcnt; i++) {
-               temp = g_shell_quote(argv[i]);
-               len += (strlen(temp) + 1);
-               g_free(temp);
-       }
-
-       args = (char *)calloc(len, sizeof(char));
-       if (args == NULL) {
-               DBG("calloc failed");
-
-               for (i = 0; i < argcnt; i++)
-                       free(argv[i]);
-
-               return PKGMGR_R_ERROR;
-       }
-       strncpy(args, argv[0], len - 1);
-
-       for (i = 1; i < argcnt; i++) {
-               strncat(args, " ", strlen(" "));
-               temp = g_shell_quote(argv[i]);
-               strncat(args, temp, strlen(temp));
-               g_free(temp);
        }
-       DBG("[args] %s [len] %d\n", args, len);
-       /******************* end of quote ************************/
 
-       /* 6. request install */
-       ret = comm_client_request(mpc->info.request.cc, "move",
-                       g_variant_new("(ssss)", req_key, pkgtype, pkgid, args));
-       if (ret < 0) {
-               ERR("request failed, ret=%d\n", ret);
-
-               for (i = 0; i < argcnt; i++)
-                       free(argv[i]);
-
-               free(args);
+       result = comm_client_request(mpc->info.request.cc, "move",
+                       g_variant_new("(ss)", pkg_type, pkgid));
+       if (result == NULL)
                return PKGMGR_R_ECOMM;
-       }
-
-       for (i = 0; i < argcnt; i++)
-               free(argv[i]);
-
-       if (args)
-               free(args);
-
-       return req_id;
-}
-
-API int pkgmgr_client_move_usr_pkg(pkgmgr_client *pc, const char *pkg_type,
-                               const char *pkgid, uid_t uid, pkgmgr_move_type move_type, pkgmgr_mode mode,
-                               pkgmgr_handler event_cb, void *data)
-{
-       char *pkgtype;
-       char *installer_path;
-       char *req_key;
-       int req_id;
-       int i = 0;
-       char *argv[PKG_ARGC_MAX] = { NULL, };
-       char *args = NULL;
-       int argcnt = 0;
-       int len = 0;
-       char *temp = NULL;
-       int ret = -1;
-       char buf[128] = {'\0'};
-
-       /* Check for NULL value of pc */
-       retvm_if(pc == NULL, PKGMGR_R_EINVAL, "package manager client handle is NULL\n");
-
-       pkgmgr_client_t *mpc = (pkgmgr_client_t *) pc;
-
-       /* 0. check the pc type */
-       retv_if(mpc->ctype != PC_REQUEST, PKGMGR_R_EINVAL);
-
-       /* 1. check argument */
-       retv_if(pkgid == NULL, PKGMGR_R_EINVAL);
-
-       pkgmgrinfo_pkginfo_h handle = NULL;
-  if (uid != GLOBAL_USER)
-         ret = pkgmgrinfo_pkginfo_get_usr_pkginfo(pkgid, uid, &handle);
-  else
-         ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &handle);
-
-       /*check package id      */
-       tryvm_if(ret < 0, ret = PKGMGR_R_EINVAL, "pkgmgrinfo_pkginfo_get_pkginfo fail");
-       tryvm_if(handle == NULL, ret = PKGMGR_R_EINVAL, "Pkgid(%s) can not find in installed pkg DB! \n", pkgid);
-
-       /*check type    */
-       ret = pkgmgrinfo_pkginfo_get_type(handle, &pkgtype);
-       tryvm_if(ret < 0, ret = PKGMGR_R_EINVAL, "pkgmgrinfo_pkginfo_get_type fail");
-       tryvm_if(pkgtype == NULL, ret = PKGMGR_R_ERROR, "pkgtype is NULL");
-
-       /*check pkgid length    */
-       tryvm_if(strlen(pkgid) >= PKG_STRING_LEN_MAX, ret = PKGMGR_R_EINVAL, "pkgid is too long");
-
-       /*check move_type       */
-       tryvm_if((move_type < PM_MOVE_TO_INTERNAL) || (move_type > PM_MOVE_TO_SDCARD), ret = PKGMGR_R_EINVAL, "move_type is not supported");
-
-       /* 2. get installer path using pkgtype */
-       installer_path = _get_backend_path_with_type(pkgtype);
-       tryvm_if(installer_path == NULL, ret = PKGMGR_R_EINVAL, "installer_path fail");
-
-       /* 3. generate req_key */
-       req_key = __get_req_key(pkgid);
-
-       /* 4. add callback info - add callback info to pkgmgr_client */
-       req_id = _get_request_id();
-       __add_op_cbinfo(mpc, req_id, req_key, event_cb, NULL, data);
-
-       /* 5. generate argv */
-       snprintf(buf, 128, "%d", move_type);
-       /* argv[0] installer path */
-       argv[argcnt++] = installer_path;
-       /* argv[1] */
-       argv[argcnt++] = strdup("-k");
-       /* argv[2] */
-       argv[argcnt++] = req_key;
-       /* argv[3] */
-       argv[argcnt++] = strdup("-m");
-       /* argv[4] */
-       argv[argcnt++] = strdup(pkgid);
-       /* argv[5] */
-       argv[argcnt++] = strdup("-t");
-       /* argv[6] */
-       argv[argcnt++] = strdup(buf);
-
-       /*** add quote in all string for special charactor like '\n'***   FIX */
-       for (i = 0; i < argcnt; i++) {
-               temp = g_shell_quote(argv[i]);
-               len += (strlen(temp) + 1);
-               g_free(temp);
-       }
-
-       args = (char *)calloc(len, sizeof(char));
-       tryvm_if(args == NULL, ret = PKGMGR_R_ERROR, "calloc failed");
-
-       strncpy(args, argv[0], len - 1);
+       g_variant_get(result, "(i)", &ret);
+       g_variant_unref(result);
 
-       for (i = 1; i < argcnt; i++) {
-               strncat(args, " ", strlen(" "));
-               temp = g_shell_quote(argv[i]);
-               strncat(args, temp, strlen(temp));
-               g_free(temp);
-       }
-       DBG("[args] %s [len] %d\n", args, len);
-
-       /******************* end of quote ************************/
-
-       /* 6. request install */
-       ret = comm_client_request(mpc->info.request.cc, "move",
-                       g_variant_new("(ssss)", req_key, pkgtype, pkgid, args));
-       tryvm_if(ret < 0, ret = PKGMGR_R_ECOMM, "calloc failed");
-
-       ret = req_id;
-
-catch:
-       for (i = 0; i < argcnt; i++)
-               free(argv[i]);
-
-       if(args)
-               free(args);
-
-       if (handle)
-               pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
        return ret;
 }
 
-API int pkgmgr_client_move_pkg(pkgmgr_client *pc, const char *pkg_type,
-                               const char *pkgid, pkgmgr_move_type move_type, pkgmgr_mode mode,
-                               pkgmgr_handler event_cb, void *data)
+API int pkgmgr_client_usr_activate(pkgmgr_client *pc, const char *pkg_type,
+               const char *pkgid, uid_t uid)
 {
-       return pkgmgr_client_move_usr_pkg(pc, pkg_type, pkgid, GLOBAL_USER, move_type, mode, event_cb, data);
-}
-
-API int pkgmgr_client_usr_activate(pkgmgr_client * pc, const char *pkg_type,
-                              const char *pkgid, uid_t uid)
-{
-       const char *pkgtype;
-       char *req_key;
-       int ret;
-       /* Check for NULL value of pc */
-       retvm_if(pc == NULL, PKGMGR_R_EINVAL, "package manager client handle is NULL\n");
-
-       pkgmgr_client_t *mpc = (pkgmgr_client_t *) pc;
-
-       /* 0. check the pc type */
-       retvm_if(mpc->ctype != PC_REQUEST, PKGMGR_R_EINVAL, "mpc->ctype is not PC_REQUEST");
-
-       /* 1. check argument */
-       retvm_if(pkgid == NULL, PKGMGR_R_EINVAL, "pkgid is NULL");
-       retvm_if(strlen(pkgid) >= PKG_STRING_LEN_MAX, PKGMGR_R_EINVAL, "pkgid length over PKG_STRING_LEN_MAX ");
-
-       if (pkg_type == NULL) {
-               pkgtype = _get_pkg_type(pkgid, uid);
-               retvm_if(pkgtype == NULL, PKGMGR_R_EINVAL, "pkgtype is NULL");
-       } else
-               pkgtype = pkg_type;
-
-       /* 2. generate req_key */
-       req_key = __get_req_key(pkgid);
-       retvm_if(req_key == NULL, PKGMGR_R_EINVAL, "req_key is NULL");
+       GVariant *result;
+       int ret = PKGMGR_R_ECOMM;
+       pkgmgr_client_t *mpc = (pkgmgr_client_t *)pc;
 
-       /* 3. request activate */
-       ret = comm_client_request(mpc->info.request.cc, "activate",
-                       g_variant_new("(ssss)", req_key, pkgtype, pkgid, "1 PKG"));
-       tryvm_if(ret < 0, ret = PKGMGR_R_ECOMM, "request failed, ret=%d", ret);
+       if (pc == NULL || pkgid == NULL) {
+               ERR("invalid parameter");
+               return PKGMGR_R_EINVAL;
+       }
 
-       ret = PKGMGR_R_OK;
+       result = comm_client_request(mpc->info.request.cc, "enable_pkg",
+                       g_variant_new("(s)", pkgid));
+       if (result == NULL)
+               return PKGMGR_R_ECOMM;
+       g_variant_get(result, "(i)", &ret);
+       g_variant_unref(result);
 
-catch:
-       free(req_key);
        return ret;
 }
 
-API int pkgmgr_client_activate(pkgmgr_client * pc, const char *pkg_type,
-                              const char *pkgid)
+API int pkgmgr_client_activate(pkgmgr_client *pc, const char *pkg_type,
+               const char *pkgid)
 {
        return pkgmgr_client_usr_activate(pc, pkg_type, pkgid, GLOBAL_USER);
 }
@@ -1886,41 +1104,22 @@ API int pkgmgr_client_activate(pkgmgr_client * pc, const char *pkg_type,
 API int pkgmgr_client_usr_deactivate(pkgmgr_client *pc, const char *pkg_type,
                                 const char *pkgid, uid_t uid)
 {
-       const char *pkgtype;
-       char *req_key;
-       int ret;
-       /* Check for NULL value of pc */
-       retvm_if(pc == NULL, PKGMGR_R_EINVAL, "package manager client handle is NULL\n");
-
-       pkgmgr_client_t *mpc = (pkgmgr_client_t *) pc;
-
-       /* 0. check the pc type */
-       retvm_if(mpc->ctype != PC_REQUEST, PKGMGR_R_EINVAL, "mpc->ctype is not PC_REQUEST");
-
-       /* 1. check argument */
-       retvm_if(pkgid == NULL, PKGMGR_R_EINVAL, "pkgid is NULL");
-       retvm_if(strlen(pkgid) >= PKG_STRING_LEN_MAX, PKGMGR_R_EINVAL, "pkgid length over PKG_STRING_LEN_MAX ");
-
-       if (pkg_type == NULL) {
-               pkgtype = _get_pkg_type(pkgid, uid);
-               if (pkgtype == NULL)
-                       return PKGMGR_R_EINVAL;
-       } else
-               pkgtype = pkg_type;
-
-       /* 2. generate req_key */
-       req_key = __get_req_key(pkgid);
-       retvm_if(req_key == NULL, PKGMGR_R_EINVAL, "req_key is NULL");
+       GVariant *result;
+       int ret = PKGMGR_R_ECOMM;
+       pkgmgr_client_t *mpc = (pkgmgr_client_t *)pc;
 
-       /* 3. request activate */
-       ret = comm_client_request(mpc->info.request.cc, "deactivate",
-                       g_variant_new("(ssss)", req_key, pkgtype, pkgid, "0 PKG"));
-       tryvm_if(ret < 0, ret = PKGMGR_R_ECOMM, "request failed, ret=%d", ret);
+       if (pc == NULL || pkgid == NULL) {
+               ERR("invalid parameter");
+               return PKGMGR_R_EINVAL;
+       }
 
-       ret = PKGMGR_R_OK;
+       result = comm_client_request(mpc->info.request.cc, "disable_pkg",
+                       g_variant_new("(s)", pkgid));
+       if (result == NULL)
+               return PKGMGR_R_ECOMM;
+       g_variant_get(result, "(i)", &ret);
+       g_variant_unref(result);
 
-catch:
-       free(req_key);
        return ret;
 }
 
@@ -1930,166 +1129,65 @@ API int pkgmgr_client_deactivate(pkgmgr_client *pc, const char *pkg_type,
        return pkgmgr_client_usr_deactivate(pc, pkg_type, pkgid, GLOBAL_USER);
 }
 
-API int pkgmgr_client_usr_activate_app(pkgmgr_client * pc, const char *appid, uid_t uid)
+API int pkgmgr_client_usr_activate_app(pkgmgr_client *pc, const char *appid,
+               uid_t uid)
 {
-       const char *pkgtype;
-       char *req_key;
-       int ret;
-       /* Check for NULL value of pc */
-       retvm_if(pc == NULL, PKGMGR_R_EINVAL, "package manager client handle is NULL\n");
-
-       pkgmgr_client_t *mpc = (pkgmgr_client_t *) pc;
-
-       /* 0. check the pc type */
-       retvm_if(mpc->ctype != PC_REQUEST, PKGMGR_R_EINVAL, "mpc->ctype is not PC_REQUEST");
-
-       /* 1. check argument */
-       retvm_if(appid == NULL, PKGMGR_R_EINVAL, "pkgid is NULL");
-       retvm_if(strlen(appid) >= PKG_STRING_LEN_MAX, PKGMGR_R_EINVAL, "pkgid length over PKG_STRING_LEN_MAX ");
-
-       pkgtype = _get_pkg_type(appid, uid);
-       retvm_if(pkgtype == NULL, PKGMGR_R_EINVAL, "pkgtype is NULL");
-
-       /* 2. generate req_key */
-       req_key = __get_req_key(appid);
-       retvm_if(req_key == NULL, PKGMGR_R_EINVAL, "req_key is NULL");
+       GVariant *result;
+       int ret = PKGMGR_R_ECOMM;
+       pkgmgr_client_t *mpc = (pkgmgr_client_t *)pc;
 
-       /* 3. request activate */
-       ret = comm_client_request(mpc->info.request.cc, "activate",
-                       g_variant_new("(ssss)", req_key, pkgtype, appid, "1 APP"));
-       tryvm_if(ret < 0, ret = PKGMGR_R_ECOMM, "request failed, ret=%d", ret);
+       if (pc == NULL || appid == NULL) {
+               ERR("invalid parameter");
+               return PKGMGR_R_EINVAL;
+       }
 
-       ret = PKGMGR_R_OK;
+       result = comm_client_request(mpc->info.request.cc, "enable_app",
+                       g_variant_new("(s)", appid));
+       if (result == NULL)
+               return PKGMGR_R_ECOMM;
+       g_variant_get(result, "(i)", &ret);
+       g_variant_unref(result);
 
-catch:
-       free(req_key);
        return ret;
 }
 
 API int pkgmgr_client_activate_app(pkgmgr_client * pc, const char *appid)
 {
-       return pkgmgr_client_usr_activate_app(pc,appid, GLOBAL_USER);
+       return pkgmgr_client_usr_activate_app(pc, appid, GLOBAL_USER);
 }
 
-API int pkgmgr_client_usr_activate_appv(pkgmgr_client * pc, const char *appid, char *const argv[], uid_t uid)
+/* TODO: deprecate? */
+API int pkgmgr_client_usr_activate_appv(pkgmgr_client *pc, const char *appid,
+               char *const argv[], uid_t uid)
 {
-       const char *pkgtype;
-       char *req_key;
-       int ret;
-       int i = 0;
-       char *temp = NULL;
-       int len = 0;
-       int argcnt = 0;
-       char *args = NULL;
-       char *argsr = NULL;
-       /* Check for NULL value of pc */
-       retvm_if(pc == NULL, PKGMGR_R_EINVAL, "package manager client handle is NULL\n");
-
-       pkgmgr_client_t *mpc = (pkgmgr_client_t *) pc;
-
-       /* 0. check the pc type */
-       retvm_if(mpc->ctype != PC_REQUEST, PKGMGR_R_EINVAL, "mpc->ctype is not PC_REQUEST");
-
-       /* 1. check argument */
-       retvm_if(appid == NULL, PKGMGR_R_EINVAL, "pkgid is NULL");
-       retvm_if(strlen(appid) >= PKG_STRING_LEN_MAX, PKGMGR_R_EINVAL, "pkgid length over PKG_STRING_LEN_MAX ");
-
-       pkgtype = _get_pkg_type(appid, uid);
-       retvm_if(pkgtype == NULL, PKGMGR_R_EINVAL, "pkgtype is NULL");
-
-       /* 2. generate req_key */
-       req_key = __get_req_key(appid);
-       retvm_if(req_key == NULL, PKGMGR_R_EINVAL, "req_key is NULL");
-
-       /*** add quote in all string for special charactor like '\n'***   FIX */
-       if (argv) {
-               for (i = 0; argv[i]; i++) {
-                       temp = g_shell_quote(argv[i]);
-                       len += (strlen(temp) + 1);
-                       g_free(temp);
-                       argcnt++;
-               }
-
-               if (argcnt) {
-                       args = (char *)calloc(len, sizeof(char));
-                       tryvm_if(args == NULL, ret = PKGMGR_R_ERROR, "calloc failed");
-                       strncpy(args, argv[0], len - 1);
-
-                       for (i = 1; i < argcnt; i++) {
-                               strncat(args, " ", strlen(" "));
-                               temp = g_shell_quote(argv[i]);
-                               strncat(args, temp, strlen(temp));
-                               g_free(temp);
-                       }
-               }
-       }
-
-       argsr = (char *)calloc(strlen("1 APP")+2+len, sizeof(char));
-       tryvm_if(argsr == NULL, ret = PKGMGR_R_ERROR, "calloc failed");
-
-       strncpy(argsr, "1 APP", strlen("1 APP"));
-       if (argcnt) {
-               strncat(argsr, " ", strlen(" "));
-               strncat(argsr, args, strlen(args));
-       }
-
-       DBG("argsr [%s]\n", argsr);
-       /******************* end of quote ************************/
-
-       /* 3. request activate */
-       ret = comm_client_request(mpc->info.request.cc, "activate",
-                       g_variant_new("(ssss)", req_key, pkgtype, appid, argsr));
-       tryvm_if(ret < 0, ret = PKGMGR_R_ECOMM, "request failed, ret=%d", ret);
-
-       ret = PKGMGR_R_OK;
-
-catch:
-
-       free(req_key);
-       free(args);
-       free(argsr);
-
-       return ret;
+       return pkgmgr_client_usr_activate_app(pc, appid, uid);
 }
 
-API int pkgmgr_client_activate_appv(pkgmgr_client * pc, const char *appid, char *const argv[])
+API int pkgmgr_client_activate_appv(pkgmgr_client *pc, const char *appid,
+               char *const argv[])
 {
-       return pkgmgr_client_usr_activate_appv(pc, appid,  argv, GLOBAL_USER);
+       return pkgmgr_client_usr_activate_app(pc, appid, GLOBAL_USER);
 }
 
-API int pkgmgr_client_usr_deactivate_app(pkgmgr_client *pc, const char *appid, uid_t uid)
+API int pkgmgr_client_usr_deactivate_app(pkgmgr_client *pc, const char *appid,
+               uid_t uid)
 {
-       const char *pkgtype;
-       char *req_key;
-       int ret;
-       /* Check for NULL value of pc */
-       retvm_if(pc == NULL, PKGMGR_R_EINVAL, "package manager client handle is NULL\n");
-
-       pkgmgr_client_t *mpc = (pkgmgr_client_t *) pc;
-
-       /* 0. check the pc type */
-       retvm_if(mpc->ctype != PC_REQUEST, PKGMGR_R_EINVAL, "mpc->ctype is not PC_REQUEST");
-
-       /* 1. check argument */
-       retvm_if(appid == NULL, PKGMGR_R_EINVAL, "pkgid is NULL");
-       retvm_if(strlen(appid) >= PKG_STRING_LEN_MAX, PKGMGR_R_EINVAL, "pkgid length over PKG_STRING_LEN_MAX ");
-
-       pkgtype = _get_pkg_type(appid, uid);
-       retvm_if(pkgtype == NULL, PKGMGR_R_EINVAL, "pkgtype is NULL");
-
-       /* 2. generate req_key */
-       req_key = __get_req_key(appid);
-       retvm_if(req_key == NULL, PKGMGR_R_EINVAL, "req_key is NULL");
+       GVariant *result;
+       int ret = PKGMGR_R_ECOMM;
+       pkgmgr_client_t *mpc = (pkgmgr_client_t *)pc;
 
-       /* 3. request activate */
-       ret = comm_client_request(mpc->info.request.cc, "deactivate",
-                       g_variant_new("(ssss)", req_key, pkgtype, appid, "0 APP"));
-       tryvm_if(ret < 0, ret = PKGMGR_R_ECOMM, "request failed, ret=%d", ret);
+       if (pc == NULL || appid == NULL) {
+               ERR("invalid parameter");
+               return PKGMGR_R_EINVAL;
+       }
 
-       ret = PKGMGR_R_OK;
+       result = comm_client_request(mpc->info.request.cc, "disable_app",
+                       g_variant_new("(s)", appid));
+       if (result == NULL)
+               return PKGMGR_R_ECOMM;
+       g_variant_get(result, "(i)", &ret);
+       g_variant_unref(result);
 
-catch:
-       free(req_key);
        return ret;
 }
 
@@ -2098,119 +1196,40 @@ API int pkgmgr_client_deactivate_app(pkgmgr_client *pc, const char *appid)
        return pkgmgr_client_usr_deactivate_app(pc, appid, GLOBAL_USER);
 }
 
-API int pkgmgr_client_usr_clear_user_data(pkgmgr_client *pc, const char *pkg_type,
-                                     const char *appid, pkgmgr_mode mode, uid_t uid)
+API int pkgmgr_client_usr_clear_user_data(pkgmgr_client *pc,
+               const char *pkg_type, const char *appid, pkgmgr_mode mode,
+               uid_t uid)
 {
-       const char *pkgtype;
-       char *installer_path;
-       char *req_key;
-       int i = 0;
-       char *argv[PKG_ARGC_MAX] = { NULL, };
-       char *args = NULL;
-       int argcnt = 0;
-       int len = 0;
-       char *temp = NULL;
-       int ret;
+       GVariant *result;
+       int ret = PKGMGR_R_ECOMM;
+       pkgmgr_client_t *mpc = (pkgmgr_client_t *)pc;
 
-       /* Check for NULL value of pc */
-       if (pc == NULL) {
-               DBG("package manager client handle is NULL\n");
+       if (pc == NULL || pkg_type == NULL || appid == NULL) {
+               ERR("invalid parameter");
                return PKGMGR_R_EINVAL;
        }
-       pkgmgr_client_t *mpc = (pkgmgr_client_t *) pc;
-
-       /* 0. check the pc type */
-       if (mpc->ctype != PC_REQUEST)
-               return PKGMGR_R_EINVAL;
-
-       /* 1. check argument */
-       if (appid == NULL)
-               return PKGMGR_R_EINVAL;
-
-
-       if (pkg_type == NULL) {
-               pkgtype = _get_pkg_type(appid, uid);
-               if (pkgtype == NULL)
-                       return PKGMGR_R_EINVAL;
-       } else
-               pkgtype = pkg_type;
-
-       if (strlen(appid) >= PKG_STRING_LEN_MAX)
-               return PKGMGR_R_EINVAL;
 
-       /* 2. get installer path using pkg_path */
-       installer_path = _get_backend_path_with_type(pkgtype);
-       if (installer_path == NULL)
+       if (mpc->ctype != PC_REQUEST) {
+               ERR("mpc->ctype is not PC_REQUEST");
                return PKGMGR_R_EINVAL;
-
-       /* 3. generate req_key */
-       req_key = __get_req_key(appid);
-
-       /* 4. generate argv */
-
-       /* argv[0] installer path */
-       argv[argcnt++] = installer_path;
-       /* argv[1] */
-       argv[argcnt++] = strdup("-k");
-       /* argv[2] */
-       argv[argcnt++] = req_key;
-       /* argv[3] */
-       argv[argcnt++] = strdup("-c");
-       /* argv[4] */
-       argv[argcnt++] = strdup(appid);
-
-       /*** add quote in all string for special charactor like '\n'***   FIX */
-       for (i = 0; i < argcnt; i++) {
-               temp = g_shell_quote(argv[i]);
-               len += (strlen(temp) + 1);
-               g_free(temp);
-       }
-
-       args = (char *)calloc(len, sizeof(char));
-       if (args == NULL) {
-               DBG("calloc failed");
-
-               for (i = 0; i < argcnt; i++)
-                       free(argv[i]);
-
-               return PKGMGR_R_ERROR;
        }
-       strncpy(args, argv[0], len - 1);
-
-       for (i = 1; i < argcnt; i++) {
-               strncat(args, " ", strlen(" "));
-               temp = g_shell_quote(argv[i]);
-               strncat(args, temp, strlen(temp));
-               g_free(temp);
-       }
-       DBG("[args] %s [len] %d\n", args, len);
-       /******************* end of quote ************************/
-
-       /* 6. request clear */
-       ret = comm_client_request(mpc->info.request.cc, "cleardata",
-                       g_variant_new("(ssss)", req_key, pkgtype, appid, args));
-       if (ret < 0) {
-               ERR("request failed, ret=%d\n", ret);
-
-               for (i = 0; i < argcnt; i++)
-                       free(argv[i]);
 
-               free(args);
+       result = comm_client_request(mpc->info.request.cc, "cleardata",
+                       g_variant_new("(ss)", pkg_type, appid));
+       if (result == NULL)
                return PKGMGR_R_ECOMM;
-       }
-
-       for (i = 0; i < argcnt; i++)
-               free(argv[i]);
 
-       free(args);
+       g_variant_get(result, "(i)", &ret);
+       g_variant_unref(result);
 
-       return PKGMGR_R_OK;
+       return ret;
 }
 
 API int pkgmgr_client_clear_user_data(pkgmgr_client *pc, const char *pkg_type,
-                                     const char *appid, pkgmgr_mode mode)
+               const char *appid, pkgmgr_mode mode)
 {
-       return pkgmgr_client_usr_clear_user_data(pc, pkg_type, appid,mode, GLOBAL_USER);
+       return pkgmgr_client_usr_clear_user_data(pc, pkg_type, appid, mode,
+                       GLOBAL_USER);
 }
 
 API int pkgmgr_client_set_status_type(pkgmgr_client *pc, int status_type)
@@ -2333,7 +1352,7 @@ API int pkgmgr_client_usr_request_service(pkgmgr_request_service_type service_ty
                tryvm_if(pc == NULL, ret = PKGMGR_R_EINVAL, "pc is NULL\n");
                tryvm_if((service_mode < PM_MOVE_TO_INTERNAL) || (service_mode > PM_MOVE_TO_SDCARD), ret = PKGMGR_R_EINVAL, "service_mode is wrong\n");
 
-               ret = __move_pkg_process(pc, pkgid, uid, (pkgmgr_move_type)service_mode, event_cb, data);
+               ret = __move_pkg_process(pc, pkgid, pkg_type, uid, (pkgmgr_move_type)service_mode, event_cb, data);
                break;
 
        case PM_REQUEST_GET_SIZE:
@@ -2393,46 +1412,27 @@ API int pkgmgr_client_request_size_info(void) // get all package size (data, tot
 
 API int pkgmgr_client_usr_clear_cache_dir(const char *pkgid, uid_t uid)
 {
-       retvm_if(pkgid == NULL, PKGMGR_R_EINVAL, "package id is null\n");
-
-       int ret = 0;
-       pkgmgr_client_t *pc = NULL;
-       char *pkg_type = NULL;
-       int is_type_malloced = 0;
+       GVariant *result;
+       int ret = PKGMGR_R_ECOMM;
+       pkgmgr_client_t *pc;
 
-       pkgmgrinfo_pkginfo_h handle = NULL;
+       if (pkgid == NULL) {
+               ERR("invalid parameter");
+               return PMINFO_R_EINVAL;
+       }
 
        pc = pkgmgr_client_new(PC_REQUEST);
-       retvm_if(pc == NULL, PKGMGR_R_ESYSTEM, "request pc is null\n");
-
-       if (strcmp(pkgid, PKG_CLEAR_ALL_CACHE) != 0)
-       {
-               ret = pkgmgrinfo_pkginfo_get_usr_pkginfo(pkgid, uid, &handle);
-               tryvm_if(ret < 0, ret = PKGMGR_R_ENOPKG, "pkgmgrinfo_pkginfo_get_pkginfo failed");
-
-               ret = pkgmgrinfo_pkginfo_get_type(handle, &pkg_type);
-               tryvm_if(ret < 0, ret = PKGMGR_R_ESYSTEM, "pkgmgrinfo_pkginfo_get_type failed");
-       }
-       else
-       {
-               pkg_type = (char *)malloc(strlen("rpm") + 1);
-               strcpy(pkg_type, "rpm");
-               is_type_malloced = 1;
+       if (pc == NULL) {
+               ERR("out of memory");
+               return PKGMGR_R_ESYSTEM;
        }
 
-       ret = comm_client_request(pc->info.request.cc, "clearcache",
-                       g_variant_new("(sss)", "reqkey", pkg_type, pkgid));
-       tryvm_if(ret < 0, ret = PKGMGR_R_ERROR, "COMM_REQ_CLEAR_CACHE_DIR failed, ret=%d\n", ret);
-
-       ret = PKGMGR_R_OK;
-catch:
-       if (pc)
-               pkgmgr_client_free(pc);
-
-       if(is_type_malloced)
-               free(pkg_type);
-
-       pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
+       result = comm_client_request(pc->info.request.cc, "clearcache",
+                       g_variant_new("(s)", pkgid));
+       if (result == NULL)
+               return PKGMGR_R_ECOMM;
+       g_variant_get(result, "(i)", &ret);
+       g_variant_unref(result);
 
        return ret;
 }
@@ -2449,123 +1449,118 @@ API int pkgmgr_client_clear_usr_all_cache_dir(uid_t uid)
 
 API int pkgmgr_client_clear_all_cache_dir(void)
 {
-       int ret = 0;
-       ret = pkgmgr_client_usr_clear_cache_dir(PKG_CLEAR_ALL_CACHE, GLOBAL_USER);
-       return ret;
+       return pkgmgr_client_usr_clear_cache_dir(PKG_CLEAR_ALL_CACHE, GLOBAL_USER);
 }
 
-API int pkgmgr_client_get_size(pkgmgr_client * pc, const char *pkgid, pkgmgr_getsize_type get_type, pkgmgr_handler event_cb, void *data)
+API int pkgmgr_client_get_size(pkgmgr_client * pc, const char *pkgid,
+               pkgmgr_getsize_type get_type, pkgmgr_handler event_cb,
+               void *data)
 {
-       return pkgmgr_client_usr_get_size(pc, pkgid, get_type, event_cb, data, GLOBAL_USER);
+       return pkgmgr_client_usr_get_size(pc, pkgid, get_type, event_cb, data,
+                       GLOBAL_USER);
 }
 
-API int pkgmgr_client_usr_get_size(pkgmgr_client * pc, const char *pkgid, pkgmgr_getsize_type get_type, pkgmgr_handler event_cb, void *data, uid_t uid)
+API int pkgmgr_client_usr_get_size(pkgmgr_client * pc, const char *pkgid,
+               pkgmgr_getsize_type get_type, pkgmgr_handler event_cb,
+               void *data, uid_t uid)
 {
+       GVariant *result;
+       int ret = PKGMGR_R_ECOMM;
        char *req_key = NULL;
-       int ret =0;
-       char *pkgtype = "rpm";
-       char *argv[PKG_ARGC_MAX] = { NULL, };
-       char *args = NULL;
-       int argcnt = 0;
-       int len = 0;
-       char *temp = NULL;
-       int i = 0;
-       char buf[128] = {'\0'};
-       int req_id = 0;
-
-       pkgmgr_client_t *mpc = (pkgmgr_client_t *) pc;
-       retvm_if(mpc->ctype != PC_REQUEST, PKGMGR_R_EINVAL, "mpc->ctype is not PC_REQUEST\n");
-       retvm_if(event_cb == NULL, PKGMGR_R_EINVAL, "event_cb is NULL\n");
-       retvm_if(pkgid == NULL, PKGMGR_R_EINVAL, "pkgid is NULL\n");
-
-       req_key = __get_req_key(pkgid);
-       retvm_if(req_key == NULL, PKGMGR_R_EINVAL, "req_key is NULL");
-
-       req_id = _get_request_id();
-       __add_op_cbinfo(mpc, req_id, req_key, event_cb, NULL, data);
-
-       snprintf(buf, 128, "%d", get_type);
-       argv[argcnt++] = strdup(pkgid);
-       argv[argcnt++] = strdup(buf);
-       argv[argcnt++] = strdup("-k");
-       argv[argcnt++] = req_key;
+       int req_id;
+       pkgmgr_client_t *mpc = (pkgmgr_client_t *)pc;
 
-       /*** add quote in all string for special charactor like '\n'***   FIX */
-       for (i = 0; i < argcnt; i++) {
-               temp = g_shell_quote(argv[i]);
-               len += (strlen(temp) + 1);
-               g_free(temp);
+       if (pc == NULL || pkgid == NULL || event_cb == NULL) {
+               ERR("invalid parameter");
+               return PKGMGR_R_EINVAL;
        }
 
-       args = (char *)calloc(len, sizeof(char));
-       tryvm_if(args == NULL, ret = PKGMGR_R_EINVAL, "installer_path fail");
+       if (mpc->ctype != PC_REQUEST) {
+               ERR("mpc->ctype is not PC_REQUEST");
+               return PKGMGR_R_EINVAL;
+       }
 
-       strncpy(args, argv[0], len - 1);
+       /* FIXME */
+       if (strcmp(pkgid, PKG_SIZE_INFO_TOTAL) == 0)
+               get_type = PM_GET_TOTAL_PKG_SIZE_INFO;
+       else
+               get_type = PM_GET_PKG_SIZE_INFO;
+       result = comm_client_request(mpc->info.request.cc, "getsize",
+                       g_variant_new("(si)", pkgid, get_type));
+       if (result == NULL)
+               return PKGMGR_R_ECOMM;
 
-       for (i = 1; i < argcnt; i++) {
-               strncat(args, " ", strlen(" "));
-               temp = g_shell_quote(argv[i]);
-               strncat(args, temp, strlen(temp));
-               g_free(temp);
+       g_variant_get(result, "(i&s)", &ret, &req_key);
+       if (req_key == NULL) {
+               g_variant_unref(result);
+               return PKGMGR_R_ECOMM;
+       }
+       if (ret != PKGMGR_R_OK) {
+               g_variant_unref(result);
+               return ret;
        }
-       DBG("[args] %s [len] %d\n", args, len);
-
-       /* request */
-       ret = comm_client_request(mpc->info.request.cc, "getsize",
-                       g_variant_new("(ssss)", req_key, pkgtype, pkgid, args));
-       if (ret < 0)
-               ERR("comm_client_request failed, ret=%d\n", ret);
 
-catch:
-       for (i = 0; i < argcnt; i++)
-               free(argv[i]);
+       req_id = _get_request_id();
+       __add_op_cbinfo(mpc, req_id, req_key, event_cb, NULL, data);
 
-       if(args)
-               free(args);
+       g_variant_unref(result);
 
-       return ret;
+       return req_id;
 }
 
-API int pkgmgr_client_usr_get_package_size_info(pkgmgr_client *pc, const char *pkgid, pkgmgr_pkg_size_info_receive_cb event_cb, void *user_data, uid_t uid)
+API int pkgmgr_client_usr_get_package_size_info(pkgmgr_client *pc,
+               const char *pkgid, pkgmgr_pkg_size_info_receive_cb event_cb,
+               void *user_data, uid_t uid)
 {
-       pkgmgrinfo_pkginfo_h pkginfo = NULL;
+       GVariant *result;
+       int ret = PKGMGR_R_ECOMM;
        char *req_key = NULL;
-       int req_id = 0;
-       int res = 0;
-       int type = PM_GET_PKG_SIZE_INFO;
-
-       retvm_if(pc == NULL, PKGMGR_R_EINVAL, "The specified pc is NULL.");
-       retvm_if(pkgid == NULL, PKGMGR_R_EINVAL, "The package id is NULL.");
+       int req_id;
+       int get_type;
+       pkgmgr_client_t *mpc = (pkgmgr_client_t *)pc;
 
-       if (strcmp(pkgid, PKG_SIZE_INFO_TOTAL) == 0)
-       {       // total package size info
-               type = PM_GET_TOTAL_PKG_SIZE_INFO;
+       if (pc == NULL || pkgid == NULL || event_cb == NULL) {
+               ERR("invalid parameter");
+               return PKGMGR_R_EINVAL;
        }
-       else
-       {
-               res = pkgmgrinfo_pkginfo_get_usr_pkginfo(pkgid, uid, &pkginfo);
-               retvm_if(res != 0, PKGMGR_R_ENOPKG, "The package id is not installed.");
 
-               if (pkginfo) {
-                       pkgmgrinfo_pkginfo_destroy_pkginfo(pkginfo);
-               }
+       if (mpc->ctype != PC_REQUEST) {
+               ERR("mpc->ctype is not PC_REQUEST");
+               return PKGMGR_R_EINVAL;
        }
 
-       pkgmgr_client_t *mpc = (pkgmgr_client_t *)pc;
-       retvm_if(mpc->ctype != PC_REQUEST, PKGMGR_R_EINVAL, "mpc->ctype is not PC_REQUEST");
+       /* FIXME */
+       if (__change_op_cb_for_getsize(mpc) < 0) {
+               ERR("__change_op_cb_for_getsize failed");
+               return PKGMGR_R_ESYSTEM;
+       }
 
-       res = __change_op_cb_for_getsize(mpc);
-       retvm_if(res < 0 , PKGMGR_R_ESYSTEM, "__change_op_cb_for_getsize is fail");
+       if (strcmp(pkgid, PKG_SIZE_INFO_TOTAL) == 0)
+               get_type = PM_GET_TOTAL_PKG_SIZE_INFO;
+       else
+               get_type = PM_GET_PKG_SIZE_INFO;
+       result = comm_client_request(mpc->info.request.cc, "getsize",
+                       g_variant_new("(si)", pkgid, get_type));
+       if (result == NULL)
+               return PKGMGR_R_ECOMM;
 
-       req_key = __get_req_key(pkgid);
-       retvm_if(req_key == NULL, PKGMGR_R_ESYSTEM, "req_key is NULL");
+       g_variant_get(result, "(i&s)", &ret, &req_key);
+       if (req_key == NULL) {
+               g_variant_unref(result);
+               return PKGMGR_R_ECOMM;
+       }
+       if (ret != PKGMGR_R_OK) {
+               g_variant_unref(result);
+               return ret;
+       }
 
        req_id = _get_request_id();
-       __add_op_cbinfo(mpc, req_id, req_key, __get_pkg_size_info_cb, event_cb, user_data);
+       __add_op_cbinfo(mpc, req_id, req_key, __get_pkg_size_info_cb, event_cb,
+                       user_data);
 
-       res = __get_package_size_info(mpc, req_key, pkgid, type, uid);
+       g_variant_unref(result);
 
-       return res;
+       return req_id;
 }
 
 API int pkgmgr_client_get_package_size_info(pkgmgr_client *pc, const char *pkgid, pkgmgr_pkg_size_info_receive_cb event_cb, void *user_data)
index 731baec..1782e9e 100644 (file)
@@ -42,7 +42,7 @@ typedef void (*status_cb) (void *cb_data, uid_t target_uid, const char *req_id,
 API comm_client *comm_client_new(void);
 API int comm_client_free(comm_client *cc);
 
-API int comm_client_request(comm_client *cc, const char *method, GVariant *params);
+API GVariant *comm_client_request(comm_client *cc, const char *method, GVariant *params);
 
 API int comm_client_set_status_callback(int comm_status_type, comm_client *cc, status_cb cb, void *cb_data);
 #endif                         /* __COMM_CLIENT_H__ */
index e53dbc7..5e4c164 100644 (file)
@@ -103,7 +103,7 @@ void _on_signal_handle_filter(GDBusConnection *conn,
        int status_type;
        /* Values to be received by signal */
        uid_t target_uid;
-       char *req_id = NULL;
+       char *req_id;
        char *pkg_type = NULL;
        char *pkgid = NULL;
        char *key = NULL;
@@ -219,11 +219,9 @@ int comm_client_free(comm_client *cc)
 /**
  * Request a message
  */
-int
-comm_client_request(comm_client *cc, const char *method, GVariant *params)
+GVariant *comm_client_request(comm_client *cc, const char *method, GVariant *params)
 {
        GError *error = NULL;
-       gint rc = -1;
        GDBusProxy *proxy;
        GVariant *result = NULL;
        int retry_cnt = 0;
@@ -254,16 +252,7 @@ comm_client_request(comm_client *cc, const char *method, GVariant *params)
                retry_cnt++;
        } while (retry_cnt <= COMM_CLIENT_RETRY_MAX);
 
-       if (result == NULL)
-               return -1;
-
-       g_variant_get(result, "(i)", &rc);
-       g_variant_unref(result);
-
-       if (rc != 0)
-               ERR("request return code: %d", rc);
-
-       return rc == 0 ? COMM_RET_OK : COMM_RET_ERROR;
+       return result;
 }
 
 /**
index 517b5b2..69cca87 100644 (file)
 #define MAX_PKG_ARGS_LEN 4096
 #define DESKTOP_FILE_DIRS_NUM 1024
 
+enum request_type {
+       PKGMGR_REQUEST_TYPE_INSTALL,
+       PKGMGR_REQUEST_TYPE_REINSTALL,
+       PKGMGR_REQUEST_TYPE_UNINSTALL,
+       PKGMGR_REQUEST_TYPE_MOVE,
+       PKGMGR_REQUEST_TYPE_ENABLE,
+       PKGMGR_REQUEST_TYPE_DISABLE,
+       PKGMGR_REQUEST_TYPE_GETSIZE,
+       PKGMGR_REQUEST_TYPE_CLEARDATA,
+       PKGMGR_REQUEST_TYPE_CLEARCACHE,
+       PKGMGR_REQUEST_TYPE_KILL,
+       PKGMGR_REQUEST_TYPE_CHECK,
+};
+
 typedef struct {
        char req_id[MAX_REQ_ID_LEN];
        int req_type;
@@ -60,16 +74,7 @@ typedef struct backend_info_t {
        char args[MAX_PKG_ARGS_LEN];
 } backend_info;
 
-struct pm_inotify_paths_t {
-       int wd;
-       char *path;
-};
-typedef struct pm_inotify_paths_t pm_inotify_paths;
-
 char *_get_backend_cmd(char *type);
-void _pm_desktop_file_monitor_init();
-void _pm_desktop_file_monitor_fini();
-int _pm_desktop_file_dir_search(pm_inotify_paths *paths, int number);
 
 gboolean queue_job(void *data);
 int __init_request_handler(void);
index b2592f1..fac45d5 100644 (file)
@@ -47,9 +47,8 @@ typedef struct queue_info_map_t {
 #define MAX_QUEUE_NUM 128
 
 int _pm_queue_init(void);
-pm_dbus_msg *_pm_queue_create_item(uid_t uid, const char *req_id, int req_type,
-               const char *pkg_type, const char *pkgid, const char *args);
-int _pm_queue_push(pm_dbus_msg *item);
+int _pm_queue_push(uid_t uid, const char *req_id, int req_type,
+               const char *pkg_type, const char *pkgid, const char *argv);
 /*position specifies the queue from which to pop request*/
 pm_dbus_msg *_pm_queue_pop(int position);
 void _pm_queue_final();
index 3f0f4a5..f5b9c23 100644 (file)
@@ -715,13 +715,173 @@ static void __exec_with_arg_vector(const char *cmd, char **argv, uid_t uid)
        }
 }
 
+static void __process_install(pm_dbus_msg *item)
+{
+       char *backend_cmd;
+       char **args_vector;
+       char args[MAX_PKG_ARGS_LEN];
+
+       backend_cmd = _get_backend_cmd(item->pkg_type);
+       if (backend_cmd == NULL)
+               return;
+
+       snprintf(args, sizeof(args), "%s -k %s -i %s", backend_cmd,
+                       item->req_id, item->pkgid);
+       args_vector = __generate_argv(args);
+       args_vector[0] = backend_cmd;
+
+       __exec_with_arg_vector(backend_cmd, args_vector, item->uid);
+}
+
+static void __process_reinstall(pm_dbus_msg *item)
+{
+       char *backend_cmd;
+       char **args_vector;
+       char args[MAX_PKG_ARGS_LEN];
+
+       backend_cmd = _get_backend_cmd(item->pkg_type);
+       if (backend_cmd == NULL)
+               return;
+
+       snprintf(args, sizeof(args), "%s -k %s -r %s", backend_cmd,
+                       item->req_id, item->pkgid);
+       args_vector = __generate_argv(args);
+       args_vector[0] = backend_cmd;
+
+       __exec_with_arg_vector(backend_cmd, args_vector, item->uid);
+}
+
+static void __process_uninstall(pm_dbus_msg *item)
+{
+       char *backend_cmd;
+       char **args_vector;
+       char args[MAX_PKG_ARGS_LEN];
+
+       backend_cmd = _get_backend_cmd(item->pkg_type);
+       if (backend_cmd == NULL)
+               return;
+
+       snprintf(args, sizeof(args), "%s -k %s -d %s", backend_cmd,
+                       item->req_id, item->pkgid);
+       args_vector = __generate_argv(args);
+       args_vector[0] = backend_cmd;
+
+       __exec_with_arg_vector(backend_cmd, args_vector, item->uid);
+}
+
+static void __process_move(pm_dbus_msg *item)
+{
+       char *backend_cmd;
+       char **args_vector;
+       char args[MAX_PKG_ARGS_LEN];
+
+       backend_cmd = _get_backend_cmd(item->pkg_type);
+       if (backend_cmd == NULL)
+               return;
+
+       /* TODO: set movetype */
+       snprintf(args, sizeof(args), "%s -k %s -m %s -t %s", backend_cmd,
+                       item->req_id, item->pkgid, item->args);
+       args_vector = __generate_argv(args);
+       args_vector[0] = backend_cmd;
+
+       __exec_with_arg_vector(backend_cmd, args_vector, item->uid);
+}
+
+static void __process_enable(pm_dbus_msg *item)
+{
+       /* TODO */
+}
+
+static void __process_disable(pm_dbus_msg *item)
+{
+       /* TODO */
+}
+
+static void __process_getsize(pm_dbus_msg *item)
+{
+       char **args_vector;
+       char args[MAX_PKG_ARGS_LEN];
+
+       snprintf(args, sizeof(args), "%s %s -k %s", item->pkgid, item->args,
+                       item->req_id);
+       args_vector = __generate_argv(args);
+       __exec_with_arg_vector("/usr/bin/pkg_getsize", args_vector, item->uid);
+}
+
+static void __process_cleardata(pm_dbus_msg *item)
+{
+       char *backend_cmd;
+       char **args_vector;
+       char args[MAX_PKG_ARGS_LEN];
+
+       backend_cmd = _get_backend_cmd(item->pkg_type);
+       if (backend_cmd == NULL)
+               return;
+
+       /* TODO: set movetype */
+       snprintf(args, sizeof(args), "%s -k %s -c %s", backend_cmd,
+                       item->req_id, item->pkgid);
+       args_vector = __generate_argv(args);
+       args_vector[0] = backend_cmd;
+
+       __exec_with_arg_vector(backend_cmd, args_vector, item->uid);
+}
+
+static void __process_clearcache(pm_dbus_msg *item)
+{
+       char **args_vector;
+       char args[MAX_PKG_ARGS_LEN];
+
+       snprintf(args, sizeof(args), "%s", item->pkgid);
+       args_vector = __generate_argv(args);
+       __exec_with_arg_vector("/usr/bin/pkg_clearcache", args_vector,
+                       item->uid);
+}
+
+static void __process_kill(pm_dbus_msg *item)
+{
+       int ret;
+       pkgmgrinfo_pkginfo_h handle;
+
+       ret = pkgmgrinfo_pkginfo_get_usr_pkginfo(item->pkgid, item->uid,
+                       &handle);
+       if (ret < 0) {
+               ERR("Failed to get handle");
+               return;
+       }
+
+       ret = pkgmgrinfo_appinfo_get_usr_list(handle, PMINFO_ALL_APP,
+                       __pkgcmd_app_cb, "kill", item->uid);
+       if (ret < 0)
+               ERR("pkgmgrinfo_appinfo_get_list() failed");
+       pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
+}
+
+static void __process_check(pm_dbus_msg *item)
+{
+       int ret;
+       pkgmgrinfo_pkginfo_h handle;
+
+       ret = pkgmgrinfo_pkginfo_get_usr_pkginfo(item->pkgid, item->uid,
+                       &handle);
+       if (ret < 0) {
+               ERR("Failed to get handle");
+               return;
+       }
+
+       ret = pkgmgrinfo_appinfo_get_usr_list(handle, PMINFO_ALL_APP,
+                       __pkgcmd_app_cb, "check", item->uid);
+       if (ret < 0)
+               ERR("pkgmgrinfo_appinfo_get_list() failed");
+       pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
+}
+
 gboolean queue_job(void *data)
 {
        pm_dbus_msg *item = NULL;
        backend_info *ptr;
        int x;
-       int ret;
-       char *backend_cmd = NULL;
 
        /* Pop a job from queue */
        for (x = 0, ptr = begin; x < num_of_backends; x++, ptr++) {
@@ -755,179 +915,38 @@ gboolean queue_job(void *data)
        switch (ptr->pid) {
        case 0: /* child */
                switch (item->req_type) {
-               case COMM_REQ_TO_INSTALLER:
-                       DBG("before run _get_backend_cmd()");
-                       /*Check for efl-tpk app*/
-                       backend_cmd = _get_backend_cmd(item->pkg_type);
-                       if (backend_cmd == NULL)
-                               break;
-
-                       DBG("Try to exec [%s][%s]", item->pkg_type, backend_cmd);
-                       fprintf(stdout, "Try to exec [%s][%s]\n", item->pkg_type, backend_cmd);
-
-                       char **args_vector = __generate_argv(item->args);
-                       args_vector[0] = backend_cmd;
-
-                       /* Execute backend !!! */
-                       __exec_with_arg_vector(backend_cmd, args_vector, item->uid);
-                       free(backend_cmd);
+               case PKGMGR_REQUEST_TYPE_INSTALL:
+                       __process_install(item);
                        break;
-               case COMM_REQ_TO_ACTIVATOR:
-                       DBG("activator start");
-                       int val = 0;
-                       if (item->args[0] == '1')       /* activate */
-                               val = 1;
-                       else if (item->args[0] == '0')  /* deactivate */
-                               val = 0;
-                       else {
-                               DBG("error in args parameter:[%c]\n",
-                                   item->args[0]);
-                               exit(1);
-                       }
-
-                       DBG("activated val %d", val);
-
-                       gboolean ret_parse;
-                       gint argcp;
-                       gchar **argvp;
-                       GError *gerr = NULL;
-                       char *label = NULL;
-                       user_ctx* user_context = get_user_context(item->uid);
-                       if(!user_context) {
-                               DBG("Failed to getenv for the user : %d", item->uid);
-                               exit(1);
-                       }
-                       if(set_environement(user_context)){
-                               DBG("Failed to set env for the user : %d", item->uid);
-                               exit(1);
-                       }
-                       free_user_context(user_context);
-
-                       ret_parse = g_shell_parse_argv(item->args,
-                                                      &argcp, &argvp, &gerr);
-                       if (FALSE == ret_parse) {
-                               DBG("Failed to split args: %s", item->args);
-                               DBG("messsage: %s", gerr->message);
-                               exit(1);
-                       }
-
-                       if (!strcmp(argvp[1], "APP")) { /* in case of application */
-                               DBG("(De)activate APP");
-                               int opt;
-                               while ((opt = getopt(argcp, argvp, "l:")) != -1) {
-                                       switch (opt) {
-                                       case 'l':
-                                               label = strdup(optarg);
-                                               DBG("activated label %s", label);
-                                               break;
-                                       default: /* '?' */
-                                               ERR("Incorrect argument %s\n", item->args);
-                                               exit(1);
-                                       }
-                               }
-
-                               ret = pkgmgrinfo_appinfo_set_usr_state_enabled(item->pkgid, val, item->uid);
-                               if (ret != PMINFO_R_OK) {
-                                       perror("fail to activate/deactivte package");
-                                       exit(1);
-                               }
-
-                               if (label) {
-                                       ret = pkgmgrinfo_appinfo_set_usr_default_label(item->pkgid, label, item->uid);
-                                       if (ret != PMINFO_R_OK) {
-                                               perror("fail to activate/deactivte package");
-                                               exit(1);
-                                       }
-                                       free(label);
-                               }
-                       } else { /* in case of package */
-                               ERR("(De)activate PKG[pkgid=%s, val=%d]", item->pkgid, val);
-                               char *manifest = NULL;
-                               manifest = pkgmgr_parser_get_manifest_file(item->pkgid);
-                               if (manifest == NULL) {
-                                       ERR("Failed to fetch package manifest file\n");
-                                       exit(1);
-                               }
-                               ERR("manifest : %s\n", manifest);
-
-                               if (val) {
-                                       pkgmgrinfo_pkginfo_h handle;
-                                       ret = pkgmgrinfo_pkginfo_get_usr_pkginfo(item->pkgid, item->uid, &handle);
-                                       if (ret < 0) {
-                                               ret = pkgmgr_parser_parse_usr_manifest_for_installation(manifest,item->uid, NULL);
-                                               if (ret < 0) {
-                                                       ERR("insert in db failed\n");
-                                               }
-                                       } else {
-                                               pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
-                                       }
-
-                                       ret = pkgmgrinfo_appinfo_set_usr_state_enabled(item->pkgid, val, item->uid);
-                                       if (ret != PMINFO_R_OK) {
-                                               perror("fail to activate/deactivte package");
-                                               exit(1);
-                                       }
-                               }
-                               else
-                                       ret = pkgmgr_parser_parse_usr_manifest_for_uninstallation(manifest, item->uid, NULL);
-
-                               if (ret < 0) {
-                                       ERR("insert in db failed\n");
-                                       exit(1);
-                               }
-                       }
+               case PKGMGR_REQUEST_TYPE_REINSTALL:
+                       __process_reinstall(item);
                        break;
-               case COMM_REQ_TO_MOVER:
-               case COMM_REQ_TO_CLEARER:
-                       DBG("cleaner start");
-                       DBG("before run _get_backend_cmd()");
-                       backend_cmd = _get_backend_cmd(item->pkg_type);
-                       if (NULL == backend_cmd)
-                               break;
-
-                       DBG("Try to exec [%s][%s]", item->pkg_type, backend_cmd);
-                       fprintf(stdout, "Try to exec [%s][%s]\n", item->pkg_type, backend_cmd);
-
-                       char **args_vectors = __generate_argv(item->args);
-                       args_vectors[0] = backend_cmd;
-
-                       /* Execute backend !!! */
-                       __exec_with_arg_vector(backend_cmd, args_vectors, item->uid);
-                       free(backend_cmd);
+               case PKGMGR_REQUEST_TYPE_UNINSTALL:
+                       __process_uninstall(item);
                        break;
-               case COMM_REQ_GET_SIZE:
-                       DBG("before run _get_backend_cmd()");
-                       __exec_with_arg_vector("/usr/bin/pkg_getsize", __generate_argv(item->args), item->uid);
+               case PKGMGR_REQUEST_TYPE_MOVE:
+                       __process_move(item);
                        break;
-               case COMM_REQ_KILL_APP:
-               case COMM_REQ_CHECK_APP:
-                       DBG("COMM_REQ_CHECK_APP start");
-                       pkgmgrinfo_pkginfo_h handle;
-                       ret = pkgmgrinfo_pkginfo_get_usr_pkginfo(item->pkgid, item->uid, &handle);
-                       if (ret < 0) {
-                               DBG("Failed to get handle\n");
-                               exit(1);
-                       }
-
-                       if (item->req_type == COMM_REQ_KILL_APP) {
-                               ret = pkgmgrinfo_appinfo_get_usr_list(handle, PMINFO_ALL_APP, __pkgcmd_app_cb, "kill", item->uid);
-                               if (ret < 0) {
-                                       DBG("pkgmgrinfo_appinfo_get_list() failed\n");
-                                       pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
-                                       exit(1);
-                               }
-                       } else if (item->req_type == COMM_REQ_CHECK_APP) {
-                               ret = pkgmgrinfo_appinfo_get_usr_list(handle, PMINFO_ALL_APP, __pkgcmd_app_cb, "check", item->uid);
-                               if (ret < 0) {
-                                       DBG("pkgmgrinfo_appinfo_get_list() failed\n");
-                                       pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
-                                       exit(1);
-                               }
-                       }
-                       pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
+               case PKGMGR_REQUEST_TYPE_ENABLE:
+                       __process_enable(item);
+                       break;
+               case PKGMGR_REQUEST_TYPE_DISABLE:
+                       __process_disable(item);
+                       break;
+               case PKGMGR_REQUEST_TYPE_GETSIZE:
+                       __process_getsize(item);
+                       break;
+               case PKGMGR_REQUEST_TYPE_CLEARDATA:
+                       __process_cleardata(item);
+                       break;
+               case PKGMGR_REQUEST_TYPE_CLEARCACHE:
+                       __process_clearcache(item);
+                       break;
+               case PKGMGR_REQUEST_TYPE_KILL:
+                       __process_kill(item);
                        break;
-               case COMM_REQ_CLEAR_CACHE_DIR:
-                       __exec_with_arg_vector("/usr/bin/pkg_clearcache", __generate_argv(item->args), item->uid);
+               case PKGMGR_REQUEST_TYPE_CHECK:
+                       __process_check(item);
                        break;
                }
                /* exit child */
index 9addbcd..495f82e 100644 (file)
 
 #define BACKEND_INFO_DIR       "/etc/package-manager/backend"
 
-static pm_queue_data *__get_head_from_pkgtype(pm_dbus_msg *item);
+static pm_queue_data *__get_head_from_pkgtype(const char *pkg_type);
 static void __update_head_from_pkgtype(pm_queue_data *data);
 static int __entry_exist(char *backend);
-static int __is_pkg_supported(char *pkgtype);
+static int __is_pkg_supported(const char *pkgtype);
 
 queue_info_map *start = NULL;
 int entries = 0;
@@ -48,7 +48,7 @@ is supported or not. It parses the queue info map
 to get the information.
 It will prevent the accidental hanging of server.
 Returns 1 if found.*/
-static int __is_pkg_supported(char *pkgtype)
+static int __is_pkg_supported(const char *pkgtype)
 {
        queue_info_map *ptr = NULL;
        ptr = start;
@@ -118,14 +118,14 @@ static void __update_head_from_pkgtype(pm_queue_data *data)
 }
 
 /*Gets the queue head based on pkg type*/
-static pm_queue_data *__get_head_from_pkgtype(pm_dbus_msg *item)
+static pm_queue_data *__get_head_from_pkgtype(const char *pkg_type)
 {
        queue_info_map *ptr = NULL;
        ptr = start;
        int i = 0;
        for(i = 0; i < entries; i++)
        {
-               if (!strncmp(ptr->pkgtype, item->pkg_type, MAX_PKG_TYPE_LEN))
+               if (!strncmp(ptr->pkgtype, pkg_type, MAX_PKG_TYPE_LEN))
                        return ptr->head;
                else {
                        ptr++;
@@ -257,53 +257,33 @@ int _pm_queue_init(void)
        return 0;
 }
 
-pm_dbus_msg *_pm_queue_create_item(uid_t uid, const char *req_id,
-               int req_type, const char *pkg_type, const char *pkgid,
-               const char *args)
-{
-       pm_dbus_msg *item;
-
-       item = calloc(1, sizeof(pm_dbus_msg));
-       if (item == NULL) {
-               ERR("Fail to allocate memory");
-               return NULL;
-       }
-
-       item->uid = uid;
-       snprintf(item->req_id, sizeof(item->req_id), "%s", req_id);
-       item->req_type = req_type;
-       snprintf(item->pkg_type, sizeof(item->pkg_type), "%s", pkg_type);
-       snprintf(item->pkgid, sizeof(item->pkgid), "%s", pkgid);
-       snprintf(item->args, sizeof(item->args), "%s", args);
-
-       return item;
-}
-
-int _pm_queue_push(pm_dbus_msg *item)
+int _pm_queue_push(uid_t uid, const char *req_id, int req_type,
+               const char *pkg_type, const char *pkgid, const char *args)
 {
        pm_queue_data *data = NULL;
        pm_queue_data *cur = NULL;
        pm_queue_data *tmp = NULL;
        int ret = 0;
-       ret = __is_pkg_supported(item->pkg_type);
+       ret = __is_pkg_supported(pkg_type);
        if (ret == 0)
                return -1;
 
-       cur = __get_head_from_pkgtype(item);
+       cur = __get_head_from_pkgtype(pkg_type);
        tmp = cur;
 
+       /* TODO: use glist */
        data = _add_node();
        if (!data) { /* fail to allocate mem */
                ERR("Fail to allocate memory\n");
                return -1;
        }
 
-       strncpy(data->msg->req_id, item->req_id, strlen(item->req_id));
-       data->msg->req_type = item->req_type;
-       data->msg->uid = item->uid;
-       strncpy(data->msg->pkg_type, item->pkg_type, strlen(item->pkg_type));
-       strncpy(data->msg->pkgid, item->pkgid, strlen(item->pkgid));
-       strncpy(data->msg->args, item->args, strlen(item->args));
+       strncpy(data->msg->req_id, req_id, strlen(req_id));
+       data->msg->req_type = req_type;
+       data->msg->uid = uid;
+       strncpy(data->msg->pkg_type, pkg_type, strlen(pkg_type));
+       strncpy(data->msg->pkgid, pkgid, strlen(pkgid));
+       strncpy(data->msg->args, args, strlen(args));
 
        data->next = NULL;
 
@@ -470,7 +450,7 @@ void _pm_queue_delete(pm_dbus_msg *item)
        /* Assume that pacakge name is unique */
        pm_queue_data *cur = NULL;
        pm_queue_data *prev = NULL;
-       cur = __get_head_from_pkgtype(item);
+       cur = __get_head_from_pkgtype(item->pkg_type);
        prev = cur;
        if (cur) {
                while (cur->next) {
index 5f94498..c8cce3a 100644 (file)
@@ -1,4 +1,5 @@
 #include <sys/types.h>
+#include <sys/time.h>
 
 #include <glib.h>
 #include <gio/gio.h>
@@ -6,82 +7,73 @@
 #include "comm_config.h"
 #include "pm-queue.h"
 #include "pkgmgr-server.h"
+#include "package-manager.h"
 #include "package-manager-debug.h"
 
 static const char instropection_xml[] =
        "<node>"
        "  <interface name='org.tizen.pkgmgr'>"
        "    <method name='install'>"
-       "      <arg type='s' name='reqid' direction='in'/>"
        "      <arg type='s' name='pkgtype' direction='in'/>"
        "      <arg type='s' name='pkgpath' direction='in'/>"
-       "      <arg type='s' name='args' direction='in'/>"
        "      <arg type='i' name='ret' direction='out'/>"
+       "      <arg type='s' name='reqkey' direction='out'/>"
        "    </method>"
        "    <method name='reinstall'>"
-       "      <arg type='s' name='reqid' direction='in'/>"
        "      <arg type='s' name='pkgtype' direction='in'/>"
        "      <arg type='s' name='pkgid' direction='in'/>"
-       "      <arg type='s' name='args' direction='in'/>"
        "      <arg type='i' name='ret' direction='out'/>"
+       "      <arg type='s' name='reqkey' direction='out'/>"
        "    </method>"
        "    <method name='uninstall'>"
-       "      <arg type='s' name='reqid' direction='in'/>"
        "      <arg type='s' name='pkgtype' direction='in'/>"
        "      <arg type='s' name='pkgid' direction='in'/>"
-       "      <arg type='s' name='args' direction='in'/>"
        "      <arg type='i' name='ret' direction='out'/>"
+       "      <arg type='s' name='reqkey' direction='out'/>"
        "    </method>"
-       "    <method name='cleardata'>"
-       "      <arg type='s' name='reqid' direction='in'/>"
+       "    <method name='move'>"
        "      <arg type='s' name='pkgtype' direction='in'/>"
        "      <arg type='s' name='pkgid' direction='in'/>"
-       "      <arg type='s' name='args' direction='in'/>"
        "      <arg type='i' name='ret' direction='out'/>"
+       "      <arg type='s' name='reqkey' direction='out'/>"
        "    </method>"
-       "    <method name='move'>"
-       "      <arg type='s' name='reqid' direction='in'/>"
-       "      <arg type='s' name='pkgtype' direction='in'/>"
+       "    <method name='enable_pkg'>"
        "      <arg type='s' name='pkgid' direction='in'/>"
-       "      <arg type='s' name='args' direction='in'/>"
        "      <arg type='i' name='ret' direction='out'/>"
        "    </method>"
-       "    <method name='activate'>"
-       "      <arg type='s' name='reqid' direction='in'/>"
-       "      <arg type='s' name='pkgtype' direction='in'/>"
+       "    <method name='disable_pkg'>"
        "      <arg type='s' name='pkgid' direction='in'/>"
-       "      <arg type='s' name='args' direction='in'/>"
        "      <arg type='i' name='ret' direction='out'/>"
        "    </method>"
-       "    <method name='deactivate'>"
-       "      <arg type='s' name='reqid' direction='in'/>"
-       "      <arg type='s' name='pkgtype' direction='in'/>"
-       "      <arg type='s' name='pkgid' direction='in'/>"
-       "      <arg type='s' name='args' direction='in'/>"
+       "    <method name='enable_app'>"
+       "      <arg type='s' name='appid' direction='in'/>"
+       "      <arg type='i' name='ret' direction='out'/>"
+       "    </method>"
+       "    <method name='disable_app'>"
+       "      <arg type='s' name='appid' direction='in'/>"
        "      <arg type='i' name='ret' direction='out'/>"
        "    </method>"
        "    <method name='getsize'>"
-       "      <arg type='s' name='reqid' direction='in'/>"
+       "      <arg type='s' name='pkgid' direction='in'/>"
+       "      <arg type='i' name='get_type' direction='in'/>"
+       "      <arg type='i' name='ret' direction='out'/>"
+       "      <arg type='s' name='reqkey' direction='out'/>"
+       "    </method>"
+       "    <method name='cleardata'>"
        "      <arg type='s' name='pkgtype' direction='in'/>"
        "      <arg type='s' name='pkgid' direction='in'/>"
-       "      <arg type='s' name='args' direction='in'/>"
        "      <arg type='i' name='ret' direction='out'/>"
        "    </method>"
        "    <method name='clearcache'>"
-       "      <arg type='s' name='reqid' direction='in'/>"
        "      <arg type='s' name='pkgtype' direction='in'/>"
        "      <arg type='s' name='pkgid' direction='in'/>"
        "      <arg type='i' name='ret' direction='out'/>"
        "    </method>"
        "    <method name='kill'>"
-       "      <arg type='s' name='reqid' direction='in'/>"
-       "      <arg type='s' name='pkgtype' direction='in'/>"
        "      <arg type='s' name='pkgid' direction='in'/>"
        "      <arg type='i' name='ret' direction='out'/>"
        "    </method>"
        "    <method name='check'>"
-       "      <arg type='s' name='reqid' direction='in'/>"
-       "      <arg type='s' name='pkgtype' direction='in'/>"
        "      <arg type='s' name='pkgid' direction='in'/>"
        "      <arg type='i' name='ret' direction='out'/>"
        "    </method>"
@@ -91,238 +83,329 @@ static GDBusNodeInfo *instropection_data;
 static guint reg_id;
 static guint owner_id;
 
-static int __handle_request_install(uid_t uid, GVariant *parameters)
+static char *__generate_reqkey(const char *pkgid)
+{
+       struct timeval tv;
+       long curtime;
+       char timestr[MAX_PKG_ARGS_LEN];
+       char *str_req_key;
+       int size;
+
+       gettimeofday(&tv, NULL);
+       curtime = tv.tv_sec * 1000000 + tv.tv_usec;
+       snprintf(timestr, sizeof(timestr), "%ld", curtime);
+
+       size = strlen(pkgid) + strlen(timestr) + 2;
+       str_req_key = (char *)calloc(size, sizeof(char));
+       if (str_req_key == NULL) {
+               DBG("calloc failed");
+               return NULL;
+       }
+       snprintf(str_req_key, size, "%s_%s", pkgid, timestr);
+
+       return str_req_key;
+}
+
+static int __handle_request_install(uid_t uid,
+               GDBusMethodInvocation *invocation, GVariant *parameters)
 {
-       gchar *reqid;
-       gchar *pkgtype;
-       gchar *pkgpath;
-       gchar *args;
-       pm_dbus_msg *item;
-
-       g_variant_get(parameters, "(&s&s&s&s)", &reqid, &pkgtype, &pkgpath,
-                       &args);
-
-       item = _pm_queue_create_item(uid, reqid, COMM_REQ_TO_INSTALLER,
-                       pkgtype, pkgpath, args);
-       if (item == NULL)
+       char *pkgtype = NULL;
+       char *pkgpath = NULL;
+       char *reqkey;
+
+       g_variant_get(parameters, "(&s&s)", &pkgtype, &pkgpath);
+       if (pkgtype == NULL || pkgpath == NULL) {
+               g_dbus_method_invocation_return_value(invocation,
+                               g_variant_new("(is)", PKGMGR_R_ECOMM, ""));
                return -1;
+       }
 
-       if (_pm_queue_push(item))
+       reqkey = __generate_reqkey(pkgpath);
+       if (_pm_queue_push(uid, reqkey, PKGMGR_REQUEST_TYPE_INSTALL, pkgtype,
+                               pkgpath, "")) {
+               g_dbus_method_invocation_return_value(invocation,
+                               g_variant_new("(is)", PKGMGR_R_ESYSTEM, ""));
+               free(reqkey);
                return -1;
+       }
+
+       g_dbus_method_invocation_return_value(invocation,
+                       g_variant_new("(is)", PKGMGR_R_OK, reqkey));
+       free(reqkey);
 
        return 0;
 }
 
-static int __handle_request_reinstall(uid_t uid, GVariant *parameters)
+static int __handle_request_reinstall(uid_t uid,
+               GDBusMethodInvocation *invocation, GVariant *parameters)
 {
-       gchar *reqid;
-       gchar *pkgtype;
-       gchar *pkgid;
-       gchar *args;
-       pm_dbus_msg *item;
-
-       g_variant_get(parameters, "(&s&s&s&s)", &reqid, &pkgtype, &pkgid,
-                       &args);
-
-       item = _pm_queue_create_item(uid, reqid, COMM_REQ_TO_INSTALLER,
-                       pkgtype, pkgid, args);
-       if (item == NULL)
+       char *pkgtype = NULL;
+       char *pkgid = NULL;
+       char *reqkey;
+
+       g_variant_get(parameters, "(&s&s)", &pkgtype, &pkgid);
+       if (pkgtype == NULL || pkgid == NULL) {
+               g_dbus_method_invocation_return_value(invocation,
+                               g_variant_new("(is)", PKGMGR_R_ECOMM, ""));
                return -1;
+       }
 
-       if (_pm_queue_push(item))
+       reqkey = __generate_reqkey(pkgid);
+       if (_pm_queue_push(uid, reqkey, PKGMGR_REQUEST_TYPE_REINSTALL, pkgtype,
+                               pkgid, "")) {
+               g_dbus_method_invocation_return_value(invocation,
+                               g_variant_new("(is)", PKGMGR_R_ESYSTEM, ""));
+               free(reqkey);
                return -1;
+       }
+
+       g_dbus_method_invocation_return_value(invocation,
+                       g_variant_new("(is)", PKGMGR_R_OK, reqkey));
+       free(reqkey);
 
        return 0;
 }
 
-static int __handle_request_uninstall(uid_t uid, GVariant *parameters)
+static int __handle_request_uninstall(uid_t uid,
+               GDBusMethodInvocation *invocation, GVariant *parameters)
 {
-       gchar *reqid;
-       gchar *pkgtype;
-       gchar *pkgid;
-       gchar *args;
-       pm_dbus_msg *item;
-
-       g_variant_get(parameters, "(&s&s&s&s)", &reqid, &pkgtype, &pkgid,
-                       &args);
-
-       item = _pm_queue_create_item(uid, reqid, COMM_REQ_TO_INSTALLER,
-                       pkgtype, pkgid, args);
-       if (item == NULL)
+       char *pkgtype = NULL;
+       char *pkgid = NULL;
+       char *reqkey;
+
+       g_variant_get(parameters, "(&s&s)", &pkgtype, &pkgid);
+       if (pkgtype == NULL || pkgid == NULL) {
+               g_dbus_method_invocation_return_value(invocation,
+                               g_variant_new("(is)", PKGMGR_R_ECOMM, ""));
                return -1;
+       }
 
-       if (_pm_queue_push(item))
+       reqkey = __generate_reqkey(pkgid);
+       if (_pm_queue_push(uid, reqkey, PKGMGR_REQUEST_TYPE_UNINSTALL, pkgtype,
+                               pkgid, "")) {
+               g_dbus_method_invocation_return_value(invocation,
+                               g_variant_new("(is)", PKGMGR_R_ESYSTEM, ""));
+               free(reqkey);
                return -1;
+       }
+
+       g_dbus_method_invocation_return_value(invocation,
+                       g_variant_new("(is)", PKGMGR_R_OK, reqkey));
+       free(reqkey);
 
        return 0;
 }
 
-static int __handle_request_cleardata(uid_t uid, GVariant *parameters)
+static int __handle_request_move(uid_t uid,
+               GDBusMethodInvocation *invocation, GVariant *parameters)
 {
-       gchar *reqid;
-       gchar *pkgtype;
-       gchar *pkgid;
-       gchar *args;
-       pm_dbus_msg *item;
-
-       g_variant_get(parameters, "(&s&s&s&s)", &reqid, &pkgtype, &pkgid,
-                       &args);
-
-       item = _pm_queue_create_item(uid, reqid, COMM_REQ_TO_CLEARER,
-                       pkgtype, pkgid, args);
-       if (item == NULL)
+       char *pkgtype = NULL;
+       char *pkgid = NULL;
+       char *reqkey;
+
+       g_variant_get(parameters, "(&s&s)", &pkgtype, &pkgid);
+       if (pkgtype == NULL || pkgid == NULL) {
+               g_dbus_method_invocation_return_value(invocation,
+                               g_variant_new("(is)", PKGMGR_R_ECOMM, ""));
                return -1;
+       }
 
-       if (_pm_queue_push(item))
+       reqkey = __generate_reqkey(pkgid);
+       if (_pm_queue_push(uid, reqkey, PKGMGR_REQUEST_TYPE_MOVE, pkgtype,
+                               pkgid, "")) {
+               g_dbus_method_invocation_return_value(invocation,
+                               g_variant_new("(is)", PKGMGR_R_ESYSTEM, ""));
+               free(reqkey);
                return -1;
+       }
+
+       g_dbus_method_invocation_return_value(invocation,
+                       g_variant_new("(is)", PKGMGR_R_OK, reqkey));
+       free(reqkey);
 
        return 0;
 }
 
-static int __handle_request_move(uid_t uid, GVariant *parameters)
+static int __handle_request_enable(uid_t uid,
+               GDBusMethodInvocation *invocation, GVariant *parameters)
 {
-       gchar *reqid;
-       gchar *pkgtype;
-       gchar *pkgid;
-       gchar *args;
-       pm_dbus_msg *item;
-
-       g_variant_get(parameters, "(&s&s&s&s)", &reqid, &pkgtype, &pkgid,
-                       &args);
-
-       item = _pm_queue_create_item(uid, reqid, COMM_REQ_TO_MOVER,
-                       pkgtype, pkgid, args);
-       if (item == NULL)
+       char *pkgid = NULL;
+
+       g_variant_get(parameters, "(&s)", &pkgid);
+       if (pkgid == NULL) {
+               g_dbus_method_invocation_return_value(invocation,
+                               g_variant_new("(i)", PKGMGR_R_ECOMM));
                return -1;
+       }
 
-       if (_pm_queue_push(item))
+       if (_pm_queue_push(uid, "", PKGMGR_REQUEST_TYPE_ENABLE, "pkg",
+                               pkgid, "")) {
+               g_dbus_method_invocation_return_value(invocation,
+                               g_variant_new("(i)", PKGMGR_R_ESYSTEM));
                return -1;
+       }
+
+       g_dbus_method_invocation_return_value(invocation,
+                       g_variant_new("(i)", PKGMGR_R_OK));
 
        return 0;
 }
 
-static int __handle_request_activate(uid_t uid, GVariant *parameters)
+static int __handle_request_disable(uid_t uid,
+               GDBusMethodInvocation *invocation, GVariant *parameters)
 {
-       gchar *reqid;
-       gchar *pkgtype;
-       gchar *pkgid;
-       gchar *args;
-       pm_dbus_msg *item;
-
-       g_variant_get(parameters, "(&s&s&s&s)", &reqid, &pkgtype, &pkgid,
-                       &args);
-
-       item = _pm_queue_create_item(uid, reqid, COMM_REQ_TO_ACTIVATOR,
-                       pkgtype, pkgid, args);
-       if (item == NULL)
+       char *pkgid = NULL;
+
+       g_variant_get(parameters, "(&s)", &pkgid);
+       if (pkgid == NULL) {
+               g_dbus_method_invocation_return_value(invocation,
+                               g_variant_new("(i)", PKGMGR_R_ECOMM));
                return -1;
+       }
 
-       if (_pm_queue_push(item))
+       if (_pm_queue_push(uid, "", PKGMGR_REQUEST_TYPE_DISABLE, "pkg",
+                               pkgid, "")) {
+               g_dbus_method_invocation_return_value(invocation,
+                               g_variant_new("(i)", PKGMGR_R_ESYSTEM));
                return -1;
+       }
+
+       g_dbus_method_invocation_return_value(invocation,
+                       g_variant_new("(i)", PKGMGR_R_OK));
 
        return 0;
 }
 
-static int __handle_request_deactivate(uid_t uid, GVariant *parameters)
+static int __handle_request_getsize(uid_t uid,
+               GDBusMethodInvocation *invocation, GVariant *parameters)
 {
-       gchar *reqid;
-       gchar *pkgtype;
-       gchar *pkgid;
-       gchar *args;
-       pm_dbus_msg *item;
-
-       g_variant_get(parameters, "(&s&s&s&s)", &reqid, &pkgtype, &pkgid,
-                       &args);
-
-       item = _pm_queue_create_item(uid, reqid, COMM_REQ_TO_ACTIVATOR,
-                       pkgtype, pkgid, args);
-       if (item == NULL)
+       char *pkgid = NULL;
+       int get_type = -1;
+       char *reqkey;
+       char buf[4];
+
+       g_variant_get(parameters, "(&si)", &pkgid, &get_type);
+       if (pkgid == NULL || get_type == -1) {
+               g_dbus_method_invocation_return_value(invocation,
+                               g_variant_new("(is)", PKGMGR_R_ECOMM, ""));
                return -1;
+       }
 
-       if (_pm_queue_push(item))
+       reqkey = __generate_reqkey(pkgid);
+       snprintf(buf, sizeof(buf), "%d", get_type);
+       if (_pm_queue_push(uid, reqkey, PKGMGR_REQUEST_TYPE_GETSIZE, "getsize",
+                               pkgid, buf)) {
+               g_dbus_method_invocation_return_value(invocation,
+                               g_variant_new("(is)", PKGMGR_R_ESYSTEM, ""));
+               free(reqkey);
                return -1;
+       }
+
+       g_dbus_method_invocation_return_value(invocation,
+                       g_variant_new("(is)", PKGMGR_R_OK, reqkey));
+       free(reqkey);
 
        return 0;
 }
 
-static int __handle_request_getsize(uid_t uid, GVariant *parameters)
+static int __handle_request_cleardata(uid_t uid,
+               GDBusMethodInvocation *invocation, GVariant *parameters)
 {
-       gchar *reqid;
-       gchar *pkgtype;
-       gchar *pkgid;
-       gchar *args;
-       pm_dbus_msg *item;
-
-       g_variant_get(parameters, "(&s&s&s&s)", &reqid, &pkgtype, &pkgid,
-                       &args);
-
-       item = _pm_queue_create_item(uid, reqid, COMM_REQ_GET_SIZE,
-                       pkgtype, pkgid, args);
-       if (item == NULL)
+       char *pkgtype = NULL;
+       char *pkgid = NULL;
+
+       g_variant_get(parameters, "(&s&s)", &pkgtype, &pkgid);
+       if (pkgtype == NULL || pkgid == NULL) {
+               g_dbus_method_invocation_return_value(invocation,
+                               g_variant_new("(i)", PKGMGR_R_ECOMM));
                return -1;
+       }
 
-       if (_pm_queue_push(item))
+       if (_pm_queue_push(uid, "", PKGMGR_REQUEST_TYPE_CLEARDATA, pkgtype,
+                               pkgid, "")) {
+               g_dbus_method_invocation_return_value(invocation,
+                               g_variant_new("(i)", PKGMGR_R_ESYSTEM));
                return -1;
+       }
+
+       g_dbus_method_invocation_return_value(invocation,
+                       g_variant_new("(i)", PKGMGR_R_OK));
 
        return 0;
 }
 
-static int __handle_request_clearcache(uid_t uid, GVariant *parameters)
+static int __handle_request_clearcache(uid_t uid,
+               GDBusMethodInvocation *invocation, GVariant *parameters)
 {
-       gchar *reqid;
-       gchar *pkgtype;
-       gchar *pkgid;
-       pm_dbus_msg *item;
-
-       g_variant_get(parameters, "(&s&s&s)", &reqid, &pkgtype, &pkgid);
+       char *pkgtype;
+       char *pkgid;
 
-       item = _pm_queue_create_item(uid, reqid, COMM_REQ_CLEAR_CACHE_DIR,
-                       pkgtype, pkgid, NULL);
-       if (item == NULL)
+       g_variant_get(parameters, "(&s&s)", &pkgtype, &pkgid);
+       if (pkgtype == NULL || pkgid == NULL) {
+               g_dbus_method_invocation_return_value(invocation,
+                               g_variant_new("(i)", PKGMGR_R_ECOMM));
                return -1;
+       }
 
-       if (_pm_queue_push(item))
+       if (_pm_queue_push(uid, "", PKGMGR_REQUEST_TYPE_CLEARCACHE, pkgtype,
+                               pkgid, "")) {
+               g_dbus_method_invocation_return_value(invocation,
+                               g_variant_new("(i)", PKGMGR_R_ESYSTEM));
                return -1;
+       }
+
+       g_dbus_method_invocation_return_value(invocation,
+                       g_variant_new("(i)", PKGMGR_R_OK));
 
        return 0;
 }
 
-static int __handle_request_kill(uid_t uid, GVariant *parameters)
+static int __handle_request_kill(uid_t uid,
+               GDBusMethodInvocation *invocation, GVariant *parameters)
 {
-       gchar *reqid;
-       gchar *pkgtype;
-       gchar *pkgid;
-       pm_dbus_msg *item;
-
-       g_variant_get(parameters, "(&s&s&s)", &reqid, &pkgtype, &pkgid);
+       char *pkgid;
 
-       item = _pm_queue_create_item(uid, reqid, COMM_REQ_KILL_APP,
-                       pkgtype, pkgid, NULL);
-       if (item == NULL)
+       g_variant_get(parameters, "(&s)", &pkgid);
+       if (pkgid == NULL) {
+               g_dbus_method_invocation_return_value(invocation,
+                               g_variant_new("(i)", PKGMGR_R_ECOMM));
                return -1;
+       }
 
-       if (_pm_queue_push(item))
+       if (_pm_queue_push(uid, "", PKGMGR_REQUEST_TYPE_KILL, "pkg",
+                               pkgid, "")) {
+               g_dbus_method_invocation_return_value(invocation,
+                               g_variant_new("(i)", PKGMGR_R_ESYSTEM));
                return -1;
+       }
+
+       g_dbus_method_invocation_return_value(invocation,
+                       g_variant_new("(i)", PKGMGR_R_OK));
 
        return 0;
 }
 
-static int __handle_request_check(uid_t uid, GVariant *parameters)
+static int __handle_request_check(uid_t uid,
+               GDBusMethodInvocation *invocation, GVariant *parameters)
 {
-       gchar *reqid;
-       gchar *pkgtype;
-       gchar *pkgid;
-       pm_dbus_msg *item;
-
-       g_variant_get(parameters, "(&s&s&s)", &reqid, &pkgtype, &pkgid);
+       char *pkgid;
 
-       item = _pm_queue_create_item(uid, reqid, COMM_REQ_CHECK_APP,
-                       pkgtype, pkgid, NULL);
-       if (item == NULL)
+       g_variant_get(parameters, "(&s)", &pkgid);
+       if (pkgid == NULL) {
+               g_dbus_method_invocation_return_value(invocation,
+                               g_variant_new("(i)", PKGMGR_R_ECOMM));
                return -1;
+       }
 
-       if (_pm_queue_push(item))
+       if (_pm_queue_push(uid, "", PKGMGR_REQUEST_TYPE_CHECK, "pkg",
+                               pkgid, "")) {
+               g_dbus_method_invocation_return_value(invocation,
+                               g_variant_new("(i)", PKGMGR_R_ESYSTEM));
                return -1;
+       }
+
+       g_dbus_method_invocation_return_value(invocation,
+                       g_variant_new("(i)", PKGMGR_R_OK));
 
        return 0;
 }
@@ -364,33 +447,30 @@ static void __handle_method_call(GDBusConnection *connection,
                return;
 
        if (g_strcmp0(method_name, "install") == 0)
-               ret = __handle_request_install(uid, parameters);
+               ret = __handle_request_install(uid, invocation, parameters);
        else if (g_strcmp0(method_name, "reinstall") == 0)
-               ret = __handle_request_reinstall(uid, parameters);
+               ret = __handle_request_reinstall(uid, invocation, parameters);
        else if (g_strcmp0(method_name, "uninstall") == 0)
-               ret = __handle_request_uninstall(uid, parameters);
+               ret = __handle_request_uninstall(uid, invocation, parameters);
        else if (g_strcmp0(method_name, "cleardata") == 0)
-               ret = __handle_request_cleardata(uid, parameters);
+               ret = __handle_request_cleardata(uid, invocation, parameters);
        else if (g_strcmp0(method_name, "move") == 0)
-               ret = __handle_request_move(uid, parameters);
-       else if (g_strcmp0(method_name, "activate") == 0)
-               ret = __handle_request_activate(uid, parameters);
-       else if (g_strcmp0(method_name, "deactivate") == 0)
-               ret = __handle_request_deactivate(uid, parameters);
+               ret = __handle_request_move(uid, invocation, parameters);
+       else if (g_strcmp0(method_name, "enable") == 0)
+               ret = __handle_request_enable(uid, invocation, parameters);
+       else if (g_strcmp0(method_name, "disable") == 0)
+               ret = __handle_request_disable(uid, invocation, parameters);
        else if (g_strcmp0(method_name, "getsize") == 0)
-               ret = __handle_request_getsize(uid, parameters);
+               ret = __handle_request_getsize(uid, invocation, parameters);
        else if (g_strcmp0(method_name, "clearcache") == 0)
-               ret = __handle_request_clearcache(uid, parameters);
+               ret = __handle_request_clearcache(uid, invocation, parameters);
        else if (g_strcmp0(method_name, "kill") == 0)
-               ret = __handle_request_kill(uid, parameters);
+               ret = __handle_request_kill(uid, invocation, parameters);
        else if (g_strcmp0(method_name, "check") == 0)
-               ret = __handle_request_check(uid, parameters);
+               ret = __handle_request_check(uid, invocation, parameters);
        else
                ret = -1;
 
-       g_dbus_method_invocation_return_value(invocation,
-                       g_variant_new("(i)", ret));
-
        if (ret == 0)
                g_idle_add(queue_job, NULL);
 }