From 2e0ce8fa25bb2a4074c164d89cd45710aa7f6dfd Mon Sep 17 00:00:00 2001 From: rohit singh Date: Mon, 7 Jun 2021 17:30:57 +0530 Subject: [PATCH] Modify ua_service_foreach_users This patch modifies ua_service_foreach_users based on service->user->device hierarchy. Change-Id: I31ac658cc553ffa3e98ab26f57ab5c8b08ca2ed1 Signed-off-by: rohit.singh --- ua-daemon/src/ua-manager-core.c | 49 ++++++++++++++++++++++------------------- 1 file changed, 26 insertions(+), 23 deletions(-) diff --git a/ua-daemon/src/ua-manager-core.c b/ua-daemon/src/ua-manager-core.c index 22ea76b..7a58c30 100755 --- a/ua-daemon/src/ua-manager-core.c +++ b/ua-daemon/src/ua-manager-core.c @@ -4669,25 +4669,24 @@ int _uam_core_get_service_devices(const char *svc_name, } static void __get_service_user_list( - uam_db_service_info_t* service, uam_user_info_s **user_list, int *count) + const char* svc_name, uam_user_info_s **user_list, int *count, const int app_num) { FUNC_ENTRY; - GSList *l; + GSList *l, *ll; int indx = 0; GSList *svc_user_list = NULL; *count = 0; /* Calculate number of users */ - for (l = service->dev_techs; NULL != l; l = g_slist_next(l)) { - uam_db_tech_info_t *tech = l->data; - if (!tech || !tech->addresses) + for (l = svc_users; NULL != l; l = g_slist_next(l)) { + uam_svc_user_info_t *svc_user = l->data; + if (!svc_user || !svc_user->svc_name || !svc_user->account) continue; - GSList *l1; - uam_db_user_info_t *db_info = tech->device->user; - l1 = g_slist_find_custom(svc_user_list , db_info->account, __compare_user_account); - if (NULL == l1) - svc_user_list = g_slist_append(svc_user_list, db_info); + if (g_strcmp0(svc_user->svc_name, svc_name) == 0) + if (svc_user->app_num == app_num) + svc_user_list = g_slist_append(svc_user_list, svc_user); + } *count = g_slist_length(svc_user_list); @@ -4695,16 +4694,26 @@ static void __get_service_user_list( /* Copy users */ for (l = svc_user_list; l; l = g_slist_next(l)) { - uam_db_user_info_t *db_info = l->data; + uam_svc_user_info_t *svc_user = l->data; + uam_db_user_info_t *user; - if (!db_info || !db_info->account) + if (!svc_user || !svc_user->svc_name || !svc_user->account) + continue; + + /* Retrieve user from list */ + ll = __search_user(svc_user->account, app_num); + if (NULL == ll) continue; + user = ll->data; + g_strlcpy((*user_list)[indx].account, - db_info->account, UAM_USER_ACCOUNT_MAX_STRING_LEN); - if (db_info->name) - g_strlcpy((*user_list)[indx].name, - db_info->name, UAM_USER_NAME_MAX_STRING_LEN); + svc_user->account, UAM_USER_ACCOUNT_MAX_STRING_LEN); + + g_strlcpy((*user_list)[indx].name, + user->name, UAM_USER_NAME_MAX_STRING_LEN); + + (*user_list)[indx].app_num = app_num; indx += 1; } @@ -4717,14 +4726,8 @@ int _uam_core_get_service_users(const char *svc_name, int *count, uam_user_info_s **user_list, const int app_num) { FUNC_ENTRY; - uam_db_service_info_t *service; - GSList *l; - - l = g_slist_find_custom(services, svc_name, __compare_svc_name); - retv_if(NULL == l, UAM_ERROR_INVALID_PARAMETER); - service = l->data; - __get_service_user_list(service, user_list, count); + __get_service_user_list(svc_name, user_list, count, app_num); FUNC_EXIT; return UAM_ERROR_NONE; -- 2.7.4