From 2ec7eeacfaa0e822bbb6a7c4896e90cd9f702743 Mon Sep 17 00:00:00 2001 From: Jeon Sang-Heon Date: Tue, 28 Jul 2020 16:41:08 +0000 Subject: [PATCH] Add recovery client info checker - Move old client info checker to common - Add recovery client info checker and fota info checker Change-Id: Ic28daa3af1e4ddf5ef8b67efed623b3d33f4649d Signed-off-by: Jeon Sang-Heon --- update-manager/client-controller.c | 2 +- .../common-client-info-checker.c} | 49 ++++++++----------- update-manager/fota-controller.c | 2 +- .../fota/fota-client-info-checker.c | 42 ++++++++++++++++ update-manager/main.c | 8 +-- .../recovery/recovery-client-info-checker.c | 43 ++++++++++++++++ update-manager/recovery/recovery-manager.h | 4 ++ update-manager/update-manager.h | 13 +++-- 8 files changed, 123 insertions(+), 40 deletions(-) rename update-manager/{client-info-checker.c => common/common-client-info-checker.c} (62%) create mode 100644 update-manager/fota/fota-client-info-checker.c create mode 100644 update-manager/recovery/recovery-client-info-checker.c diff --git a/update-manager/client-controller.c b/update-manager/client-controller.c index c95200f..a7cbbc6 100644 --- a/update-manager/client-controller.c +++ b/update-manager/client-controller.c @@ -13,7 +13,7 @@ int client_controller_process_launch_request() char *appid = NULL; bundle *bundle_data = NULL; - appid = client_info_get_appid(); + appid = fota_client_info_get_appid(); if (appid == NULL) { _I("Failed to launch client, client app id not found, current top : %d", top); goto request_destroy; diff --git a/update-manager/client-info-checker.c b/update-manager/common/common-client-info-checker.c similarity index 62% rename from update-manager/client-info-checker.c rename to update-manager/common/common-client-info-checker.c index 9bb2cc7..3eb2c46 100644 --- a/update-manager/client-info-checker.c +++ b/update-manager/common/common-client-info-checker.c @@ -1,19 +1,18 @@ -#include "update-manager.h" +#include "../update-manager.h" -static char *client_app_id = NULL; - -char *client_info_get_appid() -{ - return client_app_id; -} - -int client_info_checker_callback(pkgmgrinfo_appinfo_h handle, void *user_data) +int common_client_info_checker_callback(pkgmgrinfo_appinfo_h handle, char **app_id) { int ret = 0, status = 0; pkgmgrinfo_appinfo_h appinfo_h = NULL; - if (client_app_id != NULL) { - _E("Client app id already exists : %s", client_app_id); + if (app_id == NULL) { + _E("invalid params, app_id is should be address"); + status = -1; + goto callback_destroy; + } + + if (*app_id != NULL) { + _E("client app id already exists : %s", *app_id); status = -1; goto callback_destroy; } @@ -25,24 +24,24 @@ int client_info_checker_callback(pkgmgrinfo_appinfo_h handle, void *user_data) goto callback_destroy; } - ret = pkgmgrinfo_appinfo_get_appid(appinfo_h, &client_app_id); + ret = pkgmgrinfo_appinfo_get_appid(appinfo_h, app_id); if (ret != PMINFO_R_OK) { _E("app_info_get_app_id failed : %d", ret); status = -1; goto callback_destroy; } - client_app_id = strndup(client_app_id, strlen(client_app_id)); - if (client_app_id == NULL) { + *app_id = strndup(*app_id, strlen(*app_id)); + if (*app_id == NULL) { _E("Failed strndup : %m"); status = -1; goto callback_destroy; } - _I("Success to find client id : %s", client_app_id); + _I("Success to find client id : %s", *app_id); ret = client_controller_process_launch_request(); if (ret < 0) - _E("Failed to process launch client : %d", ret); + _E("Failed to process launch fota_client : %d", ret); callback_destroy: if (appinfo_h) { @@ -54,12 +53,12 @@ callback_destroy: return status; } -int client_info_checker_init() +int common_client_info_checker_init(const char* key, const char* value, pkgmgrinfo_app_list_cb cb) { int ret = 0, status = 0; pkgmgrinfo_appinfo_metadata_filter_h filter_h = NULL; - _I("Start process to get client app information"); + _I("Start process to get fota_client app information"); ret = pkgmgrinfo_appinfo_metadata_filter_create(&filter_h); if (ret != PMINFO_R_OK) { _E("pkgmgrinfo_appinfo_metadata_filter_create failed : %d", ret); @@ -67,14 +66,14 @@ int client_info_checker_init() goto init_destroy; } - ret = pkgmgrinfo_appinfo_metadata_filter_add(filter_h, CLIENT_METADATA_KEY, CLIENT_METADATA_VALUE); + ret = pkgmgrinfo_appinfo_metadata_filter_add(filter_h, key, value); if (ret != PMINFO_R_OK) { _E("pkgmgrinfo_appinfo_metadata_filter_add failed : %d", ret); status = -1; goto init_destroy; } - ret = pkgmgrinfo_appinfo_metadata_filter_foreach(filter_h, client_info_checker_callback, NULL); + ret = pkgmgrinfo_appinfo_metadata_filter_foreach(filter_h, cb, NULL); if (ret != PMINFO_R_OK) { _E("pkgmgrinfo_appinfo_usr_metadata_filter_foreach failed : %d", ret); status = -1; @@ -89,12 +88,4 @@ init_destroy: } return status; -} - -int client_info_checker_fini() -{ - if (client_app_id) - free(client_app_id); - - return 0; -} +} \ No newline at end of file diff --git a/update-manager/fota-controller.c b/update-manager/fota-controller.c index 3585eaf..6d1b1cc 100644 --- a/update-manager/fota-controller.c +++ b/update-manager/fota-controller.c @@ -62,7 +62,7 @@ int fota_controller_setup_delta() goto delta_destroy; } - appid = client_info_get_appid(); + appid = fota_client_info_get_appid(); if (appid == NULL) { _I("Failed to get client app id"); status = -1; diff --git a/update-manager/fota/fota-client-info-checker.c b/update-manager/fota/fota-client-info-checker.c new file mode 100644 index 0000000..ec59746 --- /dev/null +++ b/update-manager/fota/fota-client-info-checker.c @@ -0,0 +1,42 @@ +#include "../update-manager.h" + +static char *fota_client_app_id = NULL; + +char *fota_client_info_get_appid() +{ + return fota_client_app_id; +} + +int fota_client_info_checker_callback(pkgmgrinfo_appinfo_h handle, void *user_data) +{ + int ret = 0; + + ret = common_client_info_checker_callback(handle, &fota_client_app_id); + if (ret < 0) { + _E("Common client info checker callback failed at recovery"); + return -1; + } + + return 0; +} + +int fota_client_info_checker_init() +{ + int ret = 0; + + ret = common_client_info_checker_init(FOTA_CLIENT_METADATA_KEY, FOTA_CLIENT_METADATA_VALUE, fota_client_info_checker_callback); + if (ret < 0) { + _E("Common client info checker failed, key : %s, value : %s", FOTA_CLIENT_METADATA_KEY, FOTA_CLIENT_METADATA_VALUE); + return -1; + } + + return 0; +} + +int fota_client_info_checker_fini() +{ + if (fota_client_app_id) + free(fota_client_app_id); + + return 0; +} diff --git a/update-manager/main.c b/update-manager/main.c index e78311c..36b1e01 100644 --- a/update-manager/main.c +++ b/update-manager/main.c @@ -13,9 +13,9 @@ int main(int argc, char *argv[]) } /* Client */ - ret = client_info_checker_init(); + ret = fota_client_info_checker_init(); if (ret < 0) { - _E("Failed to initialize client info checker : %d", ret); + _E("Failed to initialize fota client info checker : %d", ret); goto main_destroy; } @@ -56,9 +56,9 @@ int main(int argc, char *argv[]) main_destroy: /* Client */ - ret = client_info_checker_fini(); + ret = fota_client_info_checker_fini(); if (ret < 0) - _W("Failed to finalize client info checker : %d", ret); + _W("Failed to finalize fota client info checker : %d", ret); ret = client_status_checker_fini(); if (ret < 0) diff --git a/update-manager/recovery/recovery-client-info-checker.c b/update-manager/recovery/recovery-client-info-checker.c new file mode 100644 index 0000000..273a3b6 --- /dev/null +++ b/update-manager/recovery/recovery-client-info-checker.c @@ -0,0 +1,43 @@ +#include "recovery-manager.h" +#include "../update-manager.h" + +static char *recovery_client_app_id = NULL; + +char *recovery_client_info_get_appid() +{ + return recovery_client_app_id; +} + +int recovery_client_info_checker_callback(pkgmgrinfo_appinfo_h handle, void *user_data) +{ + int ret = 0; + + ret = common_client_info_checker_callback(handle, &recovery_client_app_id); + if (ret < 0) { + _E("Common client info checker callback failed at recovery"); + return -1; + } + + return 0; +} + +int recovery_client_info_checker_init() +{ + int ret = 0; + + ret = common_client_info_checker_init(RECOVERY_CLIENT_METADATA_KEY, RECOVERY_CLIENT_METADATA_VALUE, recovery_client_info_checker_callback); + if (ret < 0) { + _E("Common client info checker failed, key : %s, value : %s", RECOVERY_CLIENT_METADATA_KEY, RECOVERY_CLIENT_METADATA_KEY); + return -1; + } + + return 0; +} + +int recovery_client_info_checker_fini() +{ + if (recovery_client_app_id) + free(recovery_client_app_id); + + return 0; +} diff --git a/update-manager/recovery/recovery-manager.h b/update-manager/recovery/recovery-manager.h index d043492..7958105 100644 --- a/update-manager/recovery/recovery-manager.h +++ b/update-manager/recovery/recovery-manager.h @@ -18,6 +18,10 @@ #define RECOVERY_IMAGE_FILE "tizen-recovery.img" /* Function */ +int recovery_client_info_checker_init(void); +int recovery_client_info_checker_fini(void); +char *recovery_client_info_get_appid(void); + void recovery_storage_checker_plug(int, const char *); void recovery_storage_checker_unplug(int, const char *); diff --git a/update-manager/update-manager.h b/update-manager/update-manager.h index 254f575..65e41cf 100644 --- a/update-manager/update-manager.h +++ b/update-manager/update-manager.h @@ -39,8 +39,8 @@ #define NODE_NAME "/org/tizen/update/manager" /* Client */ -#define CLIENT_METADATA_KEY "tizen-update-manager" -#define CLIENT_METADATA_VALUE "client" +#define FOTA_CLIENT_METADATA_KEY "tizen-update-manager" +#define FOTA_CLIENT_METADATA_VALUE "client" #define CLIENT_APP_CTRL_LOCAL_KEY "fota-local" #define CLIENT_APP_CTRL_UNPLUG_KEY "fota-unplug" #define CLIENT_APP_CTRL_REBOOT_KEY "fota-reboot" @@ -74,9 +74,9 @@ #define SHARED_DATA_DIR "shared/data" /* Function */ -int client_info_checker_init(void); -int client_info_checker_fini(void); -char *client_info_get_appid(void); +int fota_client_info_checker_init(void); +int fota_client_info_checker_fini(void); +char *fota_client_info_get_appid(void); int client_status_checker_init(void); int client_status_checker_fini(void); @@ -88,6 +88,9 @@ int client_controller_add_launch_request_with_data(const char *, const char *); int common_storage_checker_init(void); int common_storage_checker_fini(void); +int common_client_info_checker_callback(pkgmgrinfo_appinfo_h, char **); +int common_client_info_checker_init(const char*, const char*, pkgmgrinfo_app_list_cb); + int dbus_manager_init(void); int dbus_manager_fini(void); -- 2.34.1