From bb2bb2ee5836dd3d681a15a822a0ef843786d102 Mon Sep 17 00:00:00 2001 From: Ilho Kim Date: Wed, 18 Aug 2021 11:20:16 +0900 Subject: [PATCH] Add api for listen status for resource copy Change-Id: Ifa46499326a2b690d7a15b7090fee26590c15dec Signed-off-by: Ilho Kim --- client/include/package-manager.h | 19 ++++++++++++++++ client/src/pkgmgr.c | 31 +++++++++++++++++++++++++++ client/src/pkgmgr_client_connection.c | 5 +++++ 3 files changed, 55 insertions(+) diff --git a/client/include/package-manager.h b/client/include/package-manager.h index bb53f47..152edc8 100644 --- a/client/include/package-manager.h +++ b/client/include/package-manager.h @@ -115,6 +115,9 @@ extern "C" { #define PKGMGR_CLIENT_STATUS_ENABLE_APP_SPLASH_SCREEN 0x0200 #define PKGMGR_CLIENT_STATUS_DISABLE_APP_SPLASH_SCREEN 0x0400 #define PKGMGR_CLIENT_STATUS_CLEAR_CACHE 0x0800 +#define PKGMGR_CLIENT_STATUS_RES_COPY 0x1000 +#define PKGMGR_CLIENT_STATUS_RES_REMOVE 0x2000 +#define PKGMGR_CLIENT_STATUS_RES_UNINSTALL 0x4000 /** @} */ @@ -784,6 +787,22 @@ int pkgmgr_client_listen_status(pkgmgr_client *pc, pkgmgr_handler event_cb, int pkgmgr_client_listen_app_status(pkgmgr_client *pc, pkgmgr_app_handler event_cb, void *data); +/** + * @brief This API request to listen the pkgmgr's broadcasting about resource copy + * + * This API is for package-manager client application.\n + * + * @param[in] pc pkgmgr_client + * @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_ENOMEM out of memory +*/ +int pkgmgr_client_listen_res_copy_status(pkgmgr_client *pc, + pkgmgr_res_copy_handler event_cb, void *data); + /** * @brief This API request to stop listen the pkgmgr's broadcasting * diff --git a/client/src/pkgmgr.c b/client/src/pkgmgr.c index 68ad27d..fa8d444 100644 --- a/client/src/pkgmgr.c +++ b/client/src/pkgmgr.c @@ -1880,6 +1880,37 @@ API int pkgmgr_client_listen_app_status(pkgmgr_client *pc, return cb_info->req_id; } +API int pkgmgr_client_listen_res_copy_status(pkgmgr_client *pc, + pkgmgr_res_copy_handler event_cb, void *data) +{ + int ret; + struct pkgmgr_client_t *client = (struct pkgmgr_client_t *)pc; + struct cb_info *cb_info; + + if (pc == NULL || event_cb == NULL) { + ERR("invalid parameter"); + return PKGMGR_R_EINVAL; + } + + if (client->pc_type != PC_LISTENING) { + ERR("client->pc_type is not PC_LISTENING"); + return PKGMGR_R_EINVAL; + } + + cb_info = __create_res_copy_event_cb_info(client, event_cb, data, NULL); + if (cb_info == NULL) + return PKGMGR_R_ENOMEM; + cb_info->status_type = client->status_type; + 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 cb_info->req_id; +} + API int pkgmgr_client_remove_listen_status(pkgmgr_client *pc) { struct pkgmgr_client_t *client = (struct pkgmgr_client_t *)pc; diff --git a/client/src/pkgmgr_client_connection.c b/client/src/pkgmgr_client_connection.c index af172eb..be882bc 100644 --- a/client/src/pkgmgr_client_connection.c +++ b/client/src/pkgmgr_client_connection.c @@ -103,6 +103,11 @@ struct signal_map map[] = { PKGMGR_CLIENT_STATUS_ENABLE_APP_SPLASH_SCREEN}, {PKGMGR_INSTALLER_APP_DISABLE_SPLASH_SCREEN_EVENT_STR, PKGMGR_CLIENT_STATUS_DISABLE_APP_SPLASH_SCREEN}, + {PKGMGR_INSTALLER_RES_COPY_EVENT_STR, PKGMGR_CLIENT_STATUS_RES_COPY}, + {PKGMGR_INSTALLER_RES_REMOVE_EVENT_STR, + PKGMGR_CLIENT_STATUS_RES_REMOVE}, + {PKGMGR_INSTALLER_RES_UNINSTALL_EVENT_STR, + PKGMGR_CLIENT_STATUS_RES_UNINSTALL}, {NULL, -1} }; -- 2.34.1