Client example: error handling fixes 09/276609/2
authorMichal Bloch <m.bloch@samsung.com>
Tue, 21 Jun 2022 17:19:56 +0000 (19:19 +0200)
committerMichal Bloch <m.bloch@samsung.com>
Wed, 22 Jun 2022 13:05:37 +0000 (15:05 +0200)
 * start handling errors from event (un-)registration and getting user list

 * use SUBSESSION_ERROR constants supplied by the lib instead of magic

 * reword error messages to better reflect what happens

Change-Id: Id282c12433aca44acabd03d4e2b1daaa86adac44
Signed-off-by: Michal Bloch <m.bloch@samsung.com>
clientExample/app/main.cpp

index 6471c56..537513d 100644 (file)
@@ -101,7 +101,6 @@ void test_reply_switchuser_callback(int result, void *cb_data)
 
 int switch_user_test(int user_id)
 {
-       int new_user = -1 ;
        test_user_data test_switch_ud;
        test_switch_ud.callback_result = -1;
 
@@ -115,7 +114,10 @@ int switch_user_test(int user_id)
        }
        g_mutex_lock(&mutex);
 
-       subsession_get_current_user(SESSION_UID, &new_user);
+       int new_user;
+       int r = subsession_get_current_user(SESSION_UID, &new_user);
+       if (r != SUBSESSION_ERROR_NONE)
+               return -1;
        return new_user;
 }
 
@@ -152,7 +154,7 @@ int main(int argc, char *argv[])
                int add_user_res = subsession_add_user(SESSION_UID, i,
                        test_reply_adduser_callback, (void *)&userD[i]);
 
-               if (add_user_res != 0)
+               if (add_user_res != SUBSESSION_ERROR_NONE)
                {
                        printf("Error: subsession_add_user result is %d\n", add_user_res);
                        return EXIT_FAILURE;
@@ -164,13 +166,18 @@ int main(int argc, char *argv[])
        int registered_users;
        int *userlist;
        ///===================================///
-       subsession_get_user_list(SESSION_UID, (int **)&userlist, &registered_users);
+       int r = subsession_get_user_list(SESSION_UID, (int **)&userlist, &registered_users);
+       if (r != SUBSESSION_ERROR_NONE) {
+               printf("Error getting user list: %d\n", r);
+               return EXIT_FAILURE;
+       }
+
        printf("No of registered users [%d/%d]...", registered_users, noOfUsers);
        if (noOfUsers == registered_users)
                green_print("ok");
        else
        {
-               printf("Register event callback error\n");
+               printf("Failed to register some users (%d expected, got %d)\n", noOfUsers, registered_users);
                return EXIT_FAILURE;
        }
 
@@ -187,8 +194,12 @@ int main(int argc, char *argv[])
        callbackCount = 0;
 
        test_user_data_cb_t data;
-       subsession_register_event_callback(SESSION_UID, SUBSESSION_SWITCH_USER_COMPLETION,
+       r = subsession_register_event_callback(SESSION_UID, SUBSESSION_SWITCH_USER_COMPLETION,
                test_subsession_switch_user_completion_callback, (void *)&data);
+       if (r != SUBSESSION_ERROR_NONE) {
+               printf("Error registering switch user completion callback: %d\n", r);
+               return EXIT_FAILURE;
+       }
 
        for (int i = firstUser; i < registered_users + firstUser; ++i)
        {
@@ -202,20 +213,25 @@ int main(int argc, char *argv[])
 
        green_print("done");
 
-       printf("Register event callback test [%d/%d]...",
-               g_atomic_int_get(&callbackCount), registered_users);
-       if (g_atomic_int_get(&callbackCount) == registered_users)
+       printf("Register event callback test... ");
+       int cc = g_atomic_int_get(&callbackCount);
+       if (cc == registered_users)
                green_print("ok");
        else
        {
-               printf("Register event callback error\n");
+               printf("Failed to call all callbacks (%d expected, got %d)\n", registered_users, cc);
                return EXIT_FAILURE;
        }
        ///===================================///
        printf("Subsession unregister event callback test...");
 
        callbackCount = 0;
-       subsession_unregister_event_callback(SESSION_UID, SUBSESSION_SWITCH_USER_COMPLETION);
+       r = subsession_unregister_event_callback(SESSION_UID, SUBSESSION_SWITCH_USER_COMPLETION);
+       if (r != SUBSESSION_ERROR_NONE) {
+               printf("Error unregistering switch user completion callback: %d\n", r);
+               return EXIT_FAILURE;
+       }
+
        for (int i = firstUser; i < registered_users + firstUser; ++i)
        {
                int res = switch_user_test(i);
@@ -226,13 +242,16 @@ int main(int argc, char *argv[])
                }
 
        }
-       if (g_atomic_int_get(&callbackCount) == 0)
+
+       cc = g_atomic_int_get(&callbackCount);
+       if (cc == 0)
                green_print("done");
        else
        {
-               printf("Register event callback error\n");
+               printf("Failed to unregister all callbacks (%d went through)\n", cc);
                return EXIT_FAILURE;
        }
+
        ///======================================///
        printf("Removing users...");
        int end_res = switch_user_test(0);
@@ -247,7 +266,7 @@ int main(int argc, char *argv[])
                test_remove_ud.callback_result = -1;
                int remove_user_res = subsession_remove_user(SESSION_UID, i,
                        test_reply_removeuser_callback, (void *)&test_remove_ud);
-               if (remove_user_res != 0)
+               if (remove_user_res != SUBSESSION_ERROR_NONE)
                {
                        printf("removing user %d failed code: %d\n", i,remove_user_res);
                        return EXIT_FAILURE;