Change argument type for "alarm_get_list_of_ids" 54/246154/1
authorInkyun Kil <inkyun.kil@samsung.com>
Mon, 26 Oct 2020 05:31:59 +0000 (14:31 +0900)
committerInkyun Kil <inkyun.kil@samsung.com>
Mon, 26 Oct 2020 05:56:48 +0000 (14:56 +0900)
Change-Id: I7a6c0ae9c2db7684e433701996ed763b9a03608c
Signed-off-by: Inkyun Kil <inkyun.kil@samsung.com>
include/alarm-internal.h
lib/alarm-lib-dbus.c
lib/alarm-lib.c
server/alarm-manager-dbus.c
server/alarm-manager.c

index b9c6180..de5d5d5 100644 (file)
@@ -186,7 +186,8 @@ int alarm_manager_alarm_delete(GVariant *parameters, uid_t uid, pid_t pid);
 int alarm_manager_alarm_delete_all(GVariant *parameters, uid_t uid, pid_t pid);
 int alarm_manager_alarm_update(GVariant *parameters, uid_t uid, pid_t pid);
 int alarm_manager_alarm_get_number_of_ids(uid_t uid, pid_t pid, int *num_of_ids);
-int alarm_manager_alarm_get_list_of_ids(GVariant *parameters, uid_t uid, pid_t pid, GVariant **alarm_array, int *num_of_alarm);
+int alarm_manager_alarm_get_list_of_ids(GVariant *parameters, uid_t uid, pid_t pid,
+               GVariantBuilder *alarm_array, int *num_of_alarm);
 int alarm_manager_alarm_get_appsvc_info(GVariant *parameters, uid_t uid, gchar **b_data);
 int alarm_manager_alarm_get_noti_info(GVariant *parameters, uid_t uid, gchar **noti_data);
 int alarm_manager_alarm_get_info(GVariant *parameters, uid_t uid, base_info_t *base_info);
index 0bb2c51..a220524 100644 (file)
@@ -485,7 +485,6 @@ bool _send_alarm_get_list_of_ids(alarm_context_t context, int maxnum_of_ids,
 {
        int return_code = -1;
        GVariantIter *iter_temp = NULL;
-       GVariant *arr = NULL;
        GVariant *param = NULL;
        GVariant *reply = NULL;
 
@@ -499,8 +498,7 @@ bool _send_alarm_get_list_of_ids(alarm_context_t context, int maxnum_of_ids,
                return false;
        }
 
-       g_variant_get(reply, "(@aiii)", &arr, num_of_ids, &return_code);
-       g_variant_get(arr, "ai", &iter_temp);
+       g_variant_get(reply, "(a(i)ii)", &iter_temp, num_of_ids, &return_code);
 
        LOGD("alarm_get_list_of_ids() dbus sync success. return_code[%d].",
                        return_code);
@@ -509,6 +507,7 @@ bool _send_alarm_get_list_of_ids(alarm_context_t context, int maxnum_of_ids,
                if (error_code)
                        *error_code = return_code;
 
+               g_variant_iter_free(iter_temp);
                g_variant_unref(reply);
                return false;
        }
index ed12a12..c2be7f2 100644 (file)
@@ -1487,7 +1487,7 @@ EXPORT_API int alarmmgr_enum_alarm_ids(alarm_enum_fn_t fn, void *user_param)
        if (!_send_alarm_get_list_of_ids(alarm_context, maxnum_of_ids, &iter, &num_of_ids, &return_code))
                return return_code;
 
-       while (g_variant_iter_loop(iter, "i", &alarm_id)) {
+       while (g_variant_iter_loop(iter, "(i)", &alarm_id)) {
                LOGD("alarm_id (%d)", alarm_id);
                (*fn)(alarm_id, user_param);
        }
index 42cb1f2..5224f39 100644 (file)
@@ -142,7 +142,7 @@ static const gchar introspection_xml[] =
 "    </method>"
 "    <method name='alarm_get_list_of_ids'>"
 "      <arg type='i' name='max_number_of_ids' direction='in' />"
-"      <arg type='ai' name='alarm_id' direction='out' />"
+"      <arg type='a(i)' name='alarm_id' direction='out' />"
 "      <arg type='i' name='number_of_ids' direction='out' />"
 "      <arg type='i' name='return_code' direction='out' />"
 "    </method>"
@@ -662,10 +662,12 @@ static void handle_method_call(GDBusConnection *connection,
                ret = alarm_manager_alarm_get_number_of_ids(uid, pid, &num_of_alarm);
                g_dbus_method_invocation_return_value(invoc, g_variant_new("(ii)", num_of_alarm, ret));
        } else if (g_strcmp0(method_name, "alarm_get_list_of_ids") == 0) {
-               GVariant *arr = NULL;
+               GVariantBuilder *arr = g_variant_builder_new(G_VARIANT_TYPE("a(i)"));
 
-               ret = alarm_manager_alarm_get_list_of_ids(parameters, uid, pid, &arr, &num_of_alarm);
-               g_dbus_method_invocation_return_value(invoc, g_variant_new("(@aiii)", arr, num_of_alarm, ret));
+               ret = alarm_manager_alarm_get_list_of_ids(parameters, uid, pid, arr, &num_of_alarm);
+               g_dbus_method_invocation_return_value(invoc, g_variant_new("(a(i)ii)", arr, num_of_alarm, ret));
+
+               g_variant_builder_unref(arr);
        } else if (g_strcmp0(method_name, "alarm_get_appsvc_info") == 0) {
                gchar *b_data = NULL;
 
index 0c91d96..3fefde7 100644 (file)
@@ -105,9 +105,9 @@ static void __alarm_generate_alarm_id(__alarm_info_t *__alarm_info, alarm_id_t *
 static __alarm_info_t *__alarm_update_in_list(uid_t uid, alarm_id_t alarm_id,
                base_info_t *base_info, int update_flag, int *error_code);
 static bool __alarm_remove_from_list(uid_t uid, alarm_id_t alarm_id,
-                                    int *error_code);
+               int *error_code);
 static void __alarm_set_start_and_end_time(base_info_t *base_info,
-                                          __alarm_info_t *__alarm_info);
+               __alarm_info_t *__alarm_info);
 static void __alarm_update_due_time_of_all_items_in_list(time_t new_time,double diff_time);
 static bool __alarm_create(base_info_t *base_info, alarm_id_t *alarm_id, uid_t uid,
                        int pid, periodic_method_e method, long requested_interval, int is_ref,
@@ -119,7 +119,7 @@ static bool __alarm_create_appsvc(base_info_t *base_info, alarm_id_t *alarm_id,
 
 static bool __alarm_delete(uid_t uid, alarm_id_t alarm_id, int *error_code);
 static bool __alarm_update(uid_t uid, alarm_id_t alarm_id,
-                          base_info_t *base_info, int update_flag, int *error_code);
+               base_info_t *base_info, int update_flag, int *error_code);
 static void __on_system_time_external_changed(keynode_t *node, void *data);
 static void __initialize_alarm_list();
 static void __initialize_scheduled_alarm_list();
@@ -1088,7 +1088,7 @@ static bool __alarm_create_noti(base_info_t *base_info, alarm_id_t *alarm_id,
 }
 
 static bool __alarm_update(uid_t uid, alarm_id_t alarm_id,
-                          base_info_t *base_info, int update_flag, int *error_code)
+               base_info_t *base_info, int update_flag, int *error_code)
 {
        time_t current_time;
        char due_time_r[100] = { 0 };
@@ -2747,22 +2747,19 @@ int alarm_manager_alarm_get_number_of_ids(uid_t uid, pid_t pid, int *num_of_ids)
 }
 
 int alarm_manager_alarm_get_list_of_ids(GVariant *parameters, uid_t uid,
-               pid_t pid, GVariant **alarm_array, int *num_of_alarm)
+               pid_t pid, GVariantBuilder *alarm_array, int *num_of_alarm)
 {
        GSList *gs_iter = NULL;
        char app_name[MAX_APP_ID_LEN] = { 0 };
        __alarm_info_t *entry = NULL;
        int index = 0;
        int max_number_of_ids;
-       GVariantBuilder *builder = NULL;
 
-       *alarm_array =  g_variant_new("ai", NULL);
+       *num_of_alarm = 0;
 
        g_variant_get(parameters, "(i)", &max_number_of_ids);
-
        if (max_number_of_ids <= 0) {
                SECURE_LOGE("called for uid(%d) pid(%d), but max_number_of_ids(%d) is less than 0.", uid, pid, max_number_of_ids);
-               *num_of_alarm = 0;
                return ALARMMGR_RESULT_SUCCESS;
        }
 
@@ -2770,22 +2767,19 @@ int alarm_manager_alarm_get_list_of_ids(GVariant *parameters, uid_t uid,
                return ERR_ALARM_SYSTEM_FAIL;
 
        SECURE_LOGD("Called by process (uid: %d, pid:%d, unique_name=%s).", uid, pid, app_name);
-       builder = g_variant_builder_new(G_VARIANT_TYPE("ai"));
 
        for (gs_iter = alarm_context.alarms; gs_iter != NULL; gs_iter = g_slist_next(gs_iter)) {
                entry = (__alarm_info_t*)gs_iter->data;
                if (entry->uid == uid &&
                                strncmp(app_name, (entry->app_unique_name), strlen(app_name)) == 0) {
-                       g_variant_builder_add(builder, "i", entry->alarm_id);
+                       g_variant_builder_add(alarm_array, "(i)", entry->alarm_id);
                        index++;
                        SECURE_LOGE("called for alarmid(%d), but max_number_of_ids(%d) index %d.", entry->alarm_id, max_number_of_ids, index);
                }
        }
 
-       *alarm_array = g_variant_new("ai", builder);
        *num_of_alarm = index;
 
-       g_variant_builder_unref(builder);
        SECURE_LOGE("Called by uid (%d), pid (%d), but max_number_of_ids(%d).", uid, pid, index);
 
        return ALARMMGR_RESULT_SUCCESS;