api: Move generic fields to the top of subsession_event_info 08/275908/4
authorKarol Lewandowski <k.lewandowsk@samsung.com>
Mon, 6 Jun 2022 10:25:27 +0000 (12:25 +0200)
committerKarol Lewandowski <k.lewandowsk@samsung.com>
Tue, 7 Jun 2022 13:56:03 +0000 (15:56 +0200)
Also happens to fix some functions referencing the wrong union member.

Changes in:
  - public interface header (libsessiond.h) authored by Karol Lewandowski
  - the rest implemented by Michal Bloch

Change-Id: I5dde2519a85c2e0ab3fc9621324eb140b0825743

libsessiond/include/sessiond.h
libsessiond/src/lib.c
libsessiond/target_test/test_api_adduserwait.cpp
libsessiond/target_test/test_api_event_wait_done_err.cpp
libsessiond/target_test/test_api_reg_unreg_add_user_wait.cpp
libsessiond/target_test/test_api_removeuserwait.cpp
libsessiond/target_test/test_api_switch_user_completion.cpp
libsessiond/target_test/test_api_switch_user_wait.cpp

index de45306..700ccdf 100644 (file)
@@ -52,26 +52,26 @@ typedef enum {
        SUBSESSION_EVENT_ALL                       = ~0,
 } subsession_event_type_e;
 
-typedef union subsession_event_info {
-       struct add_user {
-               subsession_event_type_e event;
-               int session_uid;
-               int user;
-       } add_user;
-
-       struct remove_user {
-               subsession_event_type_e event;
-               int session_uid;
-               int user;
-       } remove_user;
-
-       struct switch_user {
-               subsession_event_type_e event;
-               int session_uid;
-               uint64_t switch_id;
-               int prev_user;
-               int next_user;
-       } switch_user;
+typedef struct subsession_event_info {
+
+       subsession_event_type_e event;
+       int session_uid;
+
+       union {
+               struct {
+                       int user;
+               } add_user;
+
+               struct {
+                       int user;
+               } remove_user;
+
+               struct {
+                       uint64_t switch_id;
+                       int prev_user;
+                       int next_user;
+               } switch_user;
+       };
 } subsession_event_info;
 
 /**
index c17c1c1..1861e8e 100644 (file)
@@ -520,8 +520,8 @@ static void signal_add_user_started_handler(GDBusConnection *connection,
 
        subsession_event_info event_info;
 
-       event_info.add_user.event = SUBSESSION_ADD_USER_WAIT;
-       maybe_g_variant_get_void_(parameters, "(ii)", &event_info.add_user.session_uid, &event_info.add_user.user);
+       event_info.event = SUBSESSION_ADD_USER_WAIT;
+       maybe_g_variant_get_void_(parameters, "(ii)", &event_info.session_uid, &event_info.add_user.user);
 
        subsession_event_callback event_callback = signal_data->client_callback;
        event_callback(event_info, signal_data->client_callback_data);
@@ -557,8 +557,8 @@ static void signal_remove_user_started_handler(GDBusConnection *connection,
 
        subsession_event_info event_info;
 
-       event_info.remove_user.event = SUBSESSION_REMOVE_USER_WAIT;
-       maybe_g_variant_get_void_(parameters, "(ii)", &event_info.remove_user.session_uid, &event_info.remove_user.user);
+       event_info.event = SUBSESSION_REMOVE_USER_WAIT;
+       maybe_g_variant_get_void_(parameters, "(ii)", &event_info.session_uid, &event_info.remove_user.user);
 
        subsession_event_callback event_callback = signal_data->client_callback;
        event_callback(event_info, signal_data->client_callback_data);
@@ -585,9 +585,9 @@ static void signal_switch_user_started_handler(GDBusConnection *connection,
        }
        subsession_event_info event_info = {0};
 
-       event_info.switch_user.event = SUBSESSION_SWITCH_USER_WAIT;
+       event_info.event = SUBSESSION_SWITCH_USER_WAIT;
        maybe_g_variant_get_void_(parameters, "(ixii)",
-               &event_info.remove_user.session_uid,
+               &event_info.session_uid,
                &event_info.switch_user.switch_id,
                &event_info.switch_user.prev_user,
                &event_info.switch_user.next_user);
@@ -622,10 +622,10 @@ static void  signal_switch_user_completion_handler( GDBusConnection *connection,
        }
 
        subsession_event_info event_info = {0};
-       event_info.switch_user.event = SUBSESSION_SWITCH_USER_COMPLETION;
+       event_info.event = SUBSESSION_SWITCH_USER_COMPLETION;
 
        maybe_g_variant_get_void_(parameters, "(ixii)",
-               &event_info.remove_user.session_uid,
+               &event_info.session_uid,
                &event_info.switch_user.switch_id,
                &event_info.switch_user.prev_user,
                &event_info.switch_user.next_user);
index babdbd4..be203fd 100644 (file)
@@ -76,9 +76,9 @@ int test_subsession_add_user_wait_callback(subsession_event_info info, void *cb_
        if(cb_data == NULL) return -1;
 
        user_data->user_id = info.add_user.user;
-       user_data->session_uid = info.add_user.session_uid;
+       user_data->session_uid = info.session_uid;
 
-       user_data->callback_result = subsession_event_wait_done(test_subsession_uid, info.add_user.event, info);
+       user_data->callback_result = subsession_event_wait_done(test_subsession_uid, info.event, info);
        g_atomic_int_inc(&callback_adduserstarted_reference);
 
        return 0;
index c3b2903..39f3182 100644 (file)
@@ -15,11 +15,14 @@ const int test_actions = 9;
 
 TEST(subsession_event_wait_err_test, FailAtEventWaitBadMask) {
 
-       subsession_event_info e_info = { .switch_user = {.event = SUBSESSION_EVENT_ALL,
+       subsession_event_info e_info = {
+               .event = SUBSESSION_EVENT_ALL,
                .session_uid = subsession_5001::subsession_uid(),
-               .switch_id = 1,
-               .prev_user = TestUser::user_1,
-               .next_user = TestUser::user_2 },
+               .switch_user = {
+                       .switch_id = 1,
+                       .prev_user = TestUser::user_1,
+                       .next_user = TestUser::user_2
+               }
        };
 
        std::array<res_t, test_actions> results {
index aaff2cd..7ab680f 100644 (file)
@@ -69,9 +69,9 @@ int test_subsession_add_user_wait_callback(subsession_event_info info, void *cb_
        if(cb_data == NULL) return -1;
 
        user_data->user_id = info.add_user.user;
-       user_data->session_uid = info.add_user.session_uid;
+       user_data->session_uid = info.session_uid;
 
-       user_data->callback_result = subsession_event_wait_done(test_subsession_uid, info.add_user.event, info);
+       user_data->callback_result = subsession_event_wait_done(test_subsession_uid, info.event, info);
        g_atomic_int_inc(&callback_adduserstarted_reference);
 
        return 0;
index fa4edfd..caaa5f0 100644 (file)
@@ -69,11 +69,11 @@ int test_subsession_remove_user_wait_callback(subsession_event_info info, void *
        if(cb_data == NULL) return -1;
 
        user_data->user_id = info.remove_user.user;
-       user_data->session_uid = info.remove_user.session_uid;
+       user_data->session_uid = info.session_uid;
 
        user_data->callback_result = 0;
 
-       user_data->callback_result = subsession_event_wait_done(test_subsession_uid, info.remove_user.event, info);
+       user_data->callback_result = subsession_event_wait_done(test_subsession_uid, info.event, info);
 
        g_atomic_int_inc(&callback_remove_user_started_reference);
        return 0;
index 21266b1..2b78ea0 100644 (file)
@@ -25,7 +25,7 @@ int test_switch_callback(int result, void *cb_data) {
 int test_subsession_switch_user_completion_callback(subsession_event_info info, void *cb_data) {
 
        test_user_data_cb_t *user_data = (test_user_data_cb_t *)cb_data;
-       user_data->session_uid = info.switch_user.session_uid;
+       user_data->session_uid = info.session_uid;
        user_data->switch_id = info.switch_user.switch_id;
        user_data->user_id = info.switch_user.next_user;
        user_data->prev_user_id = info.switch_user.prev_user;
index bc2680f..d9b6f3e 100644 (file)
@@ -17,11 +17,11 @@ int test_subsession_switch_user_wait_callback(subsession_event_info info, void *
 
        test_user_data_cb_t *user_data = (test_user_data_cb_t *)cb_data;
 
-       user_data->session_uid = info.switch_user.session_uid;
+       user_data->session_uid = info.session_uid;
        user_data->switch_id = info.switch_user.switch_id;
        user_data->user_id = info.switch_user.next_user;
        user_data->prev_user_id = info.switch_user.prev_user;
-       user_data->callback_result = subsession_event_wait_done(test_subsession_uid, info.switch_user.event, info);
+       user_data->callback_result = subsession_event_wait_done(test_subsession_uid, info.event, info);
 
        if (user_data->user_id == TestUser::user_0 || user_data->user_id == TestUser::user_2) {
                g_atomic_int_inc(&user_data->callback_reference);