From 4ff5e5217647a2bf37df960f0fe66f480d621e7e Mon Sep 17 00:00:00 2001 From: Nishant Chaprana Date: Tue, 25 Jul 2017 19:06:13 +0530 Subject: [PATCH] Fix: Fetching granularized data usage issue. 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 --- packaging/capi-network-stc.spec | 2 +- src/stc-statistics.c | 30 +++++++++++++++++------------- 2 files changed, 18 insertions(+), 14 deletions(-) diff --git a/packaging/capi-network-stc.spec b/packaging/capi-network-stc.spec index 85e5952..cdf219d 100755 --- a/packaging/capi-network-stc.spec +++ b/packaging/capi-network-stc.spec @@ -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 diff --git a/src/stc-statistics.c b/src/stc-statistics.c index f97d8e5..2e20cd0 100755 --- a/src/stc-statistics.c +++ b/src/stc-statistics.c @@ -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; -- 2.34.1