* @param[in] pkg_type package type
* @param[in] pkgids array of package ids
* @param[in] n_pkgs size of array
+ * @param[in] event_cb user callback
+ * @param[in] data user data
* @return request_id (>0) if success, error code(<0) if fail\n
* @retval PKGMGR_R_OK success
* @retval PKGMGR_R_EINVAL invalid argument
* @retval PKGMGR_R_ECOMM communication error
*/
int pkgmgr_client_activate_packages(pkgmgr_client *pc, const char *pkg_type,
- const char **pkgids, int n_pkgs);
+ const char **pkgids, int n_pkgs,
+ pkgmgr_handler event_cb, void *data);
int pkgmgr_client_usr_activate_packages(pkgmgr_client *pc, const char *pkg_type,
- const char **pkgids, int n_pkgs, uid_t uid);
+ const char **pkgids, int n_pkgs,
+ pkgmgr_handler event_cb, void *data, uid_t uid);
/**
* @brief This API deactivates package.
* @param[in] pkg_type package type
* @param[in] pkgids array of package ids
* @param[in] n_pkgs size of array
+ * @param[in] event_cb user callback
+ * @param[in] data user data
* @return request_id (>0) if success, error code(<0) if fail\n
* @retval PKGMGR_R_OK success
* @retval PKGMGR_R_EINVAL invalid argument
* @retval PKGMGR_R_ECOMM communication error
*/
int pkgmgr_client_deactivate_packages(pkgmgr_client *pc, const char *pkg_type,
- const char **pkgids, int n_pkgs);
+ const char **pkgids, int n_pkgs,
+ pkgmgr_handler event_cb, void *data);
int pkgmgr_client_usr_deactivate_packages(pkgmgr_client *pc, const char *pkg_type,
- const char **pkgids, int n_pkgs, uid_t uid);
+ const char **pkgids, int n_pkgs,
+ pkgmgr_handler event_cb, void *data, uid_t uid);
/**
* @brief This API deactivates app.
return ret;
}
- g_variant_get(result, "(i)", &ret);
+ g_variant_get(result, "(is)", &ret, NULL);
g_variant_unref(result);
return ret;
API int pkgmgr_client_usr_activate_packages(pkgmgr_client *pc,
const char *pkg_type, const char **pkgids, int n_pkgs,
- uid_t uid)
+ pkgmgr_handler event_cb, void *data, uid_t uid)
{
GVariant *result;
GVariantBuilder *builder;
int ret = PKGMGR_R_ECOMM;
+ char *req_key = NULL;
struct pkgmgr_client_t *client = (struct pkgmgr_client_t *)pc;
+ struct cb_info *cb_info;
int i;
if (pc == NULL || pkgids == NULL || pkg_type == NULL || n_pkgs < 1) {
return PKGMGR_R_EINVAL;
}
+ if (client->pc_type != PC_REQUEST) {
+ ERR("client type is not PC_REQUEST");
+ return PKGMGR_R_EINVAL;
+ }
+
builder = g_variant_builder_new(G_VARIANT_TYPE("as"));
for (i = 0; i < n_pkgs; i++)
g_variant_builder_add(builder, "s", pkgids[i]);
return ret;
}
- g_variant_get(result, "(i)", &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;
+ }
+
+ cb_info = __create_event_cb_info(client, event_cb, data, req_key);
+ if (cb_info == NULL) {
+ g_variant_unref(result);
+ return PKGMGR_R_ERROR;
+ }
g_variant_unref(result);
+ ret = pkgmgr_client_connection_set_callback(client, cb_info);
+ if (ret != PKGMGR_R_OK) {
+ __free_cb_info(cb_info);
+ return ret;
+ }
+ client->cb_info_list = g_list_append(client->cb_info_list, cb_info);
- return ret;
+ return cb_info->req_id;
}
API int pkgmgr_client_activate_packages(pkgmgr_client *pc,
- const char *pkg_type, const char **pkgids, int n_pkgs)
+ const char *pkg_type, const char **pkgids, int n_pkgs,
+ pkgmgr_handler event_cb, void *data)
{
return pkgmgr_client_usr_activate_packages(pc, pkg_type,
- pkgids, n_pkgs, _getuid());
+ pkgids, n_pkgs, event_cb, data, _getuid());
}
API int pkgmgr_client_usr_deactivate(pkgmgr_client *pc, const char *pkg_type,
return ret;
}
- g_variant_get(result, "(i)", &ret);
+ g_variant_get(result, "(is)", &ret, NULL);
g_variant_unref(result);
return ret;
API int pkgmgr_client_usr_deactivate_packages(pkgmgr_client *pc,
const char *pkg_type, const char **pkgids, int n_pkgs,
- uid_t uid)
+ pkgmgr_handler event_cb, void *data, uid_t uid)
{
GVariant *result;
GVariantBuilder *builder;
int ret = PKGMGR_R_ECOMM;
+ char *req_key = NULL;
struct pkgmgr_client_t *client = (struct pkgmgr_client_t *)pc;
+ struct cb_info *cb_info;
int i;
if (pc == NULL || pkgids == NULL || pkg_type == NULL || n_pkgs < 1) {
return PKGMGR_R_EINVAL;
}
+ if (client->pc_type != PC_REQUEST) {
+ ERR("client type is not PC_REQUEST");
+ return PKGMGR_R_EINVAL;
+ }
+
builder = g_variant_builder_new(G_VARIANT_TYPE("as"));
for (i = 0; i < n_pkgs; i++)
g_variant_builder_add(builder, "s", pkgids[i]);
ret = pkgmgr_client_connection_send_request(client, "disable_pkgs",
- g_variant_new("(us@as)", uid, pkg_type, builder), &result);
+ g_variant_new("(usas)", uid, pkg_type, builder), &result);
g_variant_builder_unref(builder);
if (ret != PKGMGR_R_OK) {
ERR("request failed: %d", ret);
return ret;
}
- g_variant_get(result, "(i)", &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;
+ }
+
+ cb_info = __create_event_cb_info(client, event_cb, data, req_key);
+ if (cb_info == NULL) {
+ g_variant_unref(result);
+ return PKGMGR_R_ERROR;
+ }
g_variant_unref(result);
+ ret = pkgmgr_client_connection_set_callback(client, cb_info);
+ if (ret != PKGMGR_R_OK) {
+ __free_cb_info(cb_info);
+ return ret;
+ }
+ client->cb_info_list = g_list_append(client->cb_info_list, cb_info);
- return ret;
+ return cb_info->req_id;
}
API int pkgmgr_client_deactivate_packages(pkgmgr_client *pc,
- const char *pkg_type, const char **pkgids, int n_pkgs)
+ const char *pkg_type, const char **pkgids, int n_pkgs,
+ pkgmgr_handler event_cb, void *data)
{
return pkgmgr_client_usr_deactivate_packages(pc, pkg_type,
- pkgids, n_pkgs, _getuid());
+ pkgids, n_pkgs, event_cb, data, _getuid());
}
API int pkgmgr_client_usr_activate_app(pkgmgr_client *pc, const char *appid,