Fix: Fetching granularized data usage issue. 99/140599/1 accepted/tizen/4.0/unified/20170816.011300 accepted/tizen/4.0/unified/20170828.223713 accepted/tizen/unified/20170728.195403 submit/tizen/20170727.063916 submit/tizen_4.0/20170811.094300 submit/tizen_4.0/20170828.100002
authorNishant Chaprana <n.chaprana@samsung.com>
Tue, 25 Jul 2017 13:36:13 +0000 (19:06 +0530)
committerNishant Chaprana <n.chaprana@samsung.com>
Tue, 25 Jul 2017 13:36:13 +0000 (19:06 +0530)
Description: This patch fixes the scenario where multiple entries
are sent to upper layer because of granularity set using
stc_reset_rule_set_time_interval() API.

Change-Id: I8000bc001d86e4aa95a816aad2f0ab672c0b46b9
Signed-off-by: Nishant Chaprana <n.chaprana@samsung.com>
packaging/capi-network-stc.spec
src/stc-statistics.c

index 85e5952caebcdf8a387a559fe28a82182961204e..cdf219d16055f2f327ddac32073f5b16c8305115 100755 (executable)
@@ -1,6 +1,6 @@
 Name:       capi-network-stc
 Summary:    A Smart Traffic Control (STC) libraries in Native API
-Version:    0.0.17
+Version:    0.0.18
 Release:    1
 Group:      Network & Connectivity/API
 License:    Apache-2.0
index f97d8e5a3aa262c2854b6b14d97ac1d45451dcb1..2e20cd08f4b9d467782d8f633b1b45790fd920bb 100755 (executable)
@@ -100,7 +100,7 @@ static void __stc_stats_get_make_params(
        if (stats_rule->time_period != STC_TIME_PERIOD_UNKNOWN) {
                g_variant_builder_add(builder, "{sv}",
                        STC_STATS_RULE_TIME_PERIOD,
-                       g_variant_new_uint16(stats_rule->time_period));
+                       g_variant_new_int32(stats_rule->time_period));
        }
 
        *params = g_variant_new("(s@a{sv})",
@@ -134,7 +134,7 @@ static void __stc_stats_get_all_make_params(
        if (stats_rule->time_period != STC_TIME_PERIOD_UNKNOWN) {
                g_variant_builder_add(builder, "{sv}",
                        STC_STATS_RULE_TIME_PERIOD,
-                       g_variant_new_uint16(stats_rule->time_period));
+                       g_variant_new_int32(stats_rule->time_period));
        }
 
        *params = g_variant_new("(@a{sv})", g_variant_builder_end(builder));
@@ -167,7 +167,7 @@ static void __stc_stats_get_total_make_params(
        if (stats_rule->time_period != STC_TIME_PERIOD_UNKNOWN) {
                g_variant_builder_add(builder, "{sv}",
                        STC_STATS_RULE_TIME_PERIOD,
-                       g_variant_new_uint16(stats_rule->time_period));
+                       g_variant_new_int32(stats_rule->time_period));
        }
 
        *params = g_variant_new("(s@a{sv})",
@@ -258,10 +258,10 @@ static void __stc_stats_print_info(stc_stats_info_s *info)
                STC_LOGD("Process:  [%d]", info->process_state);
 
        if (info->interval.from > 0)
-               STC_LOGD("From:     [%llu]", info->interval.from);
+               STC_LOGD("From:     [%lu]", info->interval.from);
 
        if (info->interval.to > 0)
-               STC_LOGD("To:       [%llu]", info->interval.to);
+               STC_LOGD("To:       [%lu]", info->interval.to);
 
        STC_LOGD(STC_HR_SINGLE);
 }
@@ -274,6 +274,7 @@ static void __stc_stats_get_per_app_id_reply(
        GError *dbus_error = NULL;
        GVariant *dbus_data = NULL;
        GVariantIter *iter = NULL;
+       GVariantIter *iter_row = NULL;
        stc_error_e dbus_result = STC_ERROR_NONE;
        stc_error_e error = STC_ERROR_NONE;
        stc_stats_info_s *stats_info = NULL;
@@ -291,12 +292,12 @@ static void __stc_stats_get_per_app_id_reply(
                _stc_event_set_request_table_state(STC_REQUEST_TABLE_STATS_GET, false);
 
        if (error == STC_ERROR_NONE) {
-               g_variant_get(dbus_data, "(ia{sv})", &dbus_result, &iter);
+               g_variant_get(dbus_data, "(iaa{sv})", &dbus_result, &iter);
 
-               if (iter != NULL) {
+               while (g_variant_iter_next(iter, "a{sv}", &iter_row)) {
                        stats_info = g_try_malloc0(sizeof(stc_stats_info_s));
                        if (stats_info != NULL) {
-                               _stc_dbus_dictionary_foreach(iter,
+                               _stc_dbus_dictionary_foreach(iter_row,
                                        __stc_stats_extract_info_cb, stats_info);
 
                                __stc_stats_print_info(stats_info);
@@ -304,9 +305,10 @@ static void __stc_stats_get_per_app_id_reply(
                                stats_list = g_slist_append(stats_list,
                                        (stc_stats_info_s *)stats_info);
 
-                               g_variant_iter_free(iter);
+                               g_variant_iter_free(iter_row);
                        }
                }
+               g_variant_iter_free(iter);
 
                event_data.event = STC_EVENT_STATS_GET_RSP;
                event_data.info_data = (GSList *)stats_list;
@@ -396,6 +398,7 @@ static void __stc_stats_get_total_reply(
        GError *dbus_error = NULL;
        GVariant *dbus_data = NULL;
        GVariantIter *iter = NULL;
+       GVariantIter *iter_row = NULL;
        stc_error_e dbus_result = STC_ERROR_NONE;
        stc_error_e error = STC_ERROR_NONE;
        stc_stats_info_s *stats_info = NULL;
@@ -413,12 +416,12 @@ static void __stc_stats_get_total_reply(
                _stc_event_set_request_table_state(STC_REQUEST_TABLE_STATS_GET_TOTAL, false);
 
        if (error == STC_ERROR_NONE) {
-               g_variant_get(dbus_data, "(ia{sv})", &dbus_result, &iter);
+               g_variant_get(dbus_data, "(iaa{sv})", &dbus_result, &iter);
 
-               if (iter != NULL) {
+               while (g_variant_iter_next(iter, "a{sv}", &iter_row)) {
                        stats_info = g_try_malloc0(sizeof(stc_stats_info_s));
                        if (stats_info != NULL) {
-                               _stc_dbus_dictionary_foreach(iter,
+                               _stc_dbus_dictionary_foreach(iter_row,
                                        __stc_stats_extract_info_cb, stats_info);
 
                                __stc_stats_print_info(stats_info);
@@ -426,9 +429,10 @@ static void __stc_stats_get_total_reply(
                                stats_list = g_slist_append(stats_list,
                                        (stc_stats_info_s *)stats_info);
 
-                               g_variant_iter_free(iter);
+                               g_variant_iter_free(iter_row);
                        }
                }
+               g_variant_iter_free(iter);
 
                event_data.event = STC_EVENT_STATS_GET_TOTAL_RSP;
                event_data.info_data = (GSList *)stats_list;