Modify ua_service_foreach_users 14/259414/2
authorrohit singh <rohit.singh@samsung.com>
Mon, 7 Jun 2021 12:00:57 +0000 (17:30 +0530)
committerrohit singh <rohit.singh@samsung.com>
Tue, 8 Jun 2021 05:09:44 +0000 (10:39 +0530)
This patch modifies ua_service_foreach_users based on
service->user->device hierarchy.

Change-Id: I31ac658cc553ffa3e98ab26f57ab5c8b08ca2ed1
Signed-off-by: rohit.singh <rohit.singh@samsung.com>
ua-daemon/src/ua-manager-core.c

index 22ea76b..7a58c30 100755 (executable)
@@ -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;