#define STATISTICS_DBUS_ERROR_NAME "net.stc.statistics.Error.Failed"
-#define STC_DBUS_REPLY(invocation, parameters) \
- g_dbus_method_invocation_return_value((invocation), parameters);
-
#define STC_STATISTICS_DBUS_REPLY_ERROR(invocation, err_num) \
g_dbus_method_invocation_return_dbus_error((invocation), \
STATISTICS_DBUS_ERROR_NAME, \
"OUT_OF_MEMORY",
"INVALID_PARAMETER",
"NO_DATA",
+ "ALREADY_DATA",
"UNINITIALIZED",
+ "PERMISSION_DENIED",
"NOTIMPL"
};
table_statistics_select_rule *rule =
(table_statistics_select_rule *) user_data;
if (rule == NULL) {
- __STC_LOG_FUNC_EXIT__;
- return;
+ __STC_LOG_FUNC_EXIT__; //LCOV_EXCL_LINE
+ return; //LCOV_EXCL_LINE
}
- if (!g_strcmp0(key, "version")) {
- rule->version = g_variant_get_byte(value);
- STC_LOGD("version: [%u]", (unsigned int) rule->version);
-
- } else if (!g_strcmp0(key, "from")) {
+ if (!g_strcmp0(key, "from")) {
rule->from = g_variant_get_uint64(value);
STC_LOGD("from: [%lu]", rule->from);
rule->iftype = g_variant_get_uint16(value);
STC_LOGD("iftype: [%u]", (unsigned int) rule->iftype);
+ } else if (!g_strcmp0(key, "app_id")) {
+ gsize length = 0;
+ rule->app_id = g_variant_dup_string(value, &length);
+ STC_LOGD("app_id: [%s]", rule->app_id);
+
} else if (!g_strcmp0(key, "granularity")) {
rule->granularity = g_variant_get_int32(value);
STC_LOGD("granularity: [%d]", rule->granularity);
} else {
- STC_LOGD("Unknown select rule");
+ STC_LOGD("Unknown select rule"); //LCOV_EXCL_LINE
}
__STC_LOG_FUNC_EXIT__;
table_statistics_reset_rule *rule =
(table_statistics_reset_rule *) user_data;
if (rule == NULL) {
- __STC_LOG_FUNC_EXIT__;
- return;
+ __STC_LOG_FUNC_EXIT__; //LCOV_EXCL_LINE
+ return; //LCOV_EXCL_LINE
}
- if (!g_strcmp0(key, "version")) {
- rule->version = g_variant_get_byte(value);
- STC_LOGD("version: [%u]", (unsigned int) rule->version);
-
- } else if (!g_strcmp0(key, "app_id")) {
+ if (!g_strcmp0(key, "app_id")) {
gsize len = 0;
rule->app_id = g_variant_dup_string(value, &len);
STC_LOGD("app_id: [%s]", rule->app_id);
- } else if (!g_strcmp0(key, "imsi")) {
+ } else if (!g_strcmp0(key, "subscriber_id")) {
gsize len = 0;
- rule->imsi = g_variant_dup_string(value, &len);
- STC_LOGD("imsi: [%s]", rule->imsi);
+ rule->subscriber_id = g_variant_dup_string(value, &len);
+ STC_LOGD("subscriber_id: [%s]", rule->subscriber_id);
} else if (!g_strcmp0(key, "iftype")) {
rule->iftype = g_variant_get_uint16(value);
} else if (!g_strcmp0(key, "from")) {
if (!(rule->interval)) {
- rule->interval = MALLOC0(stc_db_tm_interval_s, 1);
- if (!(rule->interval)) {
- __STC_LOG_FUNC_EXIT__;
- return;
+ rule->interval = MALLOC0(stc_db_tm_interval_s, 1); //LCOV_EXCL_LINE
+ if (!(rule->interval)) { //LCOV_EXCL_LINE
+ __STC_LOG_FUNC_EXIT__; //LCOV_EXCL_LINE
+ return; //LCOV_EXCL_LINE
}
}
} else if (!g_strcmp0(key, "to")) {
if (!(rule->interval)) {
- rule->interval = MALLOC0(stc_db_tm_interval_s, 1);
- if (!(rule->interval)) {
- __STC_LOG_FUNC_EXIT__;
- return;
+ rule->interval = MALLOC0(stc_db_tm_interval_s, 1); //LCOV_EXCL_LINE
+ if (!(rule->interval)) { //LCOV_EXCL_LINE
+ __STC_LOG_FUNC_EXIT__; //LCOV_EXCL_LINE
+ return; //LCOV_EXCL_LINE
}
}
rule->interval->to = g_variant_get_uint64(value);
STC_LOGD("to: [%lu]", rule->interval->to);
- } else if (!g_strcmp0(key, "connection_state")) {
- rule->connection_state = g_variant_get_int32(value);
- STC_LOGD("connection_state: [%d]", rule->connection_state);
-
} else {
- STC_LOGD("Unknown reset rule");
+ STC_LOGD("Unknown reset rule"); //LCOV_EXCL_LINE
}
__STC_LOG_FUNC_EXIT__;
__STC_LOG_FUNC_ENTER__;
if (!builder || !info) {
- __STC_LOG_FUNC_EXIT__;
- return;
+ __STC_LOG_FUNC_EXIT__; //LCOV_EXCL_LINE
+ return; //LCOV_EXCL_LINE
}
- g_variant_builder_add(builder, "{sv}", "app_id",
- g_variant_new_string(info->app_id));
+ if (info->app_id)
+ g_variant_builder_add(builder, "{sv}", "app_id",
+ g_variant_new_string(info->app_id));
- g_variant_builder_add(builder, "{sv}", "ifname",
- g_variant_new_string(info->ifname));
+ if (info->ifname)
+ g_variant_builder_add(builder, "{sv}", "ifname",
+ g_variant_new_string(info->ifname));
- g_variant_builder_add(builder, "{sv}", "imsi",
- g_variant_new_string(info->imsi));
+ g_variant_builder_add(builder, "{sv}", "subscriber_id",
+ g_variant_new_string(info->subscriber_id));
g_variant_builder_add(builder, "{sv}", "iftype",
g_variant_new_uint16(info->iftype));
GVariantBuilder sub_builder;
if (!info || !builder) {
- __STC_LOG_FUNC_EXIT__;
- return STC_CANCEL;
+ __STC_LOG_FUNC_EXIT__; //LCOV_EXCL_LINE
+ return STC_CANCEL; //LCOV_EXCL_LINE
}
g_variant_builder_init(&sub_builder, G_VARIANT_TYPE("a{sv}"));
{
__STC_LOG_FUNC_ENTER__;
GVariantBuilder *builder = (GVariantBuilder *)user_data;
+ GVariantBuilder sub_builder;
if (!info || !builder) {
- __STC_LOG_FUNC_EXIT__;
- return STC_CANCEL;
+ __STC_LOG_FUNC_EXIT__; //LCOV_EXCL_LINE
+ return STC_CANCEL; //LCOV_EXCL_LINE
}
- __stc_statistics_app_info_builder_add(builder, info);
+ g_variant_builder_init(&sub_builder, G_VARIANT_TYPE("a{sv}"));
+ __stc_statistics_app_info_builder_add(&sub_builder, info);
__stc_statistics_print_app_info(info);
+ g_variant_builder_add_value(builder,
+ g_variant_builder_end(&sub_builder));
__STC_LOG_FUNC_EXIT__;
return STC_CONTINUE;
GVariant *return_parameters = NULL;
stc_error_e ret;
+ stc_set_keep_alive(TRUE);
+
/* Total statistics since epoch */
rule.from = epoch;
rule.to = cur_time;
g_variant_iter_free(iter);
}
} else {
- STC_LOGD("No selection rule, using default selection rule.");
+ STC_LOGD("No selection rule, using default selection rule."); //LCOV_EXCL_LINE
}
builder = g_variant_builder_new(G_VARIANT_TYPE("aa{sv}"));
__table_statistics_foreach_app_cb,
builder);
if (ret < STC_ERROR_NONE) {
- g_variant_builder_unref(builder);
- STC_STATISTICS_DBUS_REPLY_ERROR(invocation, ret);
- __STC_LOG_FUNC_EXIT__;
- return TRUE;
+ g_variant_builder_unref(builder); //LCOV_EXCL_LINE
+ STC_STATISTICS_DBUS_REPLY_ERROR(invocation, ret); //LCOV_EXCL_LINE
+ g_free(rule.app_id);
+ __STC_LOG_FUNC_EXIT__; //LCOV_EXCL_LINE
+ return TRUE; //LCOV_EXCL_LINE
}
return_parameters = g_variant_new("(iaa{sv})", STC_ERROR_NONE, builder);
DEBUG_GDBUS_VARIANT("Return parameters: ", return_parameters);
STC_DBUS_REPLY(invocation, return_parameters);
+ g_free(rule.app_id);
__STC_LOG_FUNC_EXIT__;
return TRUE;
}
gboolean handle_statistics_init(StcStatistics *object,
- GDBusMethodInvocation *invocation)
+ GDBusMethodInvocation *invocation)
{
__STC_LOG_FUNC_ENTER__;
+ stc_set_keep_alive(TRUE);
+
STC_LOGI("stc statistics initialized");
stc_statistics_complete_init(object, invocation);
GVariant *return_parameters = NULL;
stc_error_e ret;
+ stc_set_keep_alive(TRUE);
+
/* Total statistics since epoch */
rule.from = epoch;
rule.to = cur_time;
g_variant_iter_free(iter);
}
} else {
- STC_LOGD("No selection rule, using default selection rule.");
+ STC_LOGD("No selection rule, using default selection rule."); //LCOV_EXCL_LINE
}
- builder = g_variant_builder_new(G_VARIANT_TYPE("a{sv}"));
+ builder = g_variant_builder_new(G_VARIANT_TYPE("aa{sv}"));
ret = table_statistics_per_app(app_id, &rule,
__table_statistics_per_app_cb,
builder);
if (ret < STC_ERROR_NONE) {
- g_variant_builder_unref(builder);
- STC_STATISTICS_DBUS_REPLY_ERROR(invocation, ret);
- __STC_LOG_FUNC_EXIT__;
- return TRUE;
+ g_variant_builder_unref(builder); //LCOV_EXCL_LINE
+ STC_STATISTICS_DBUS_REPLY_ERROR(invocation, ret); //LCOV_EXCL_LINE
+ g_free(rule.app_id);
+ __STC_LOG_FUNC_EXIT__; //LCOV_EXCL_LINE
+ return TRUE; //LCOV_EXCL_LINE
}
- return_parameters = g_variant_new("(ia{sv})", STC_ERROR_NONE, builder);
+ return_parameters = g_variant_new("(iaa{sv})", STC_ERROR_NONE, builder);
g_variant_builder_unref(builder);
DEBUG_GDBUS_VARIANT("Return parameters: ", return_parameters);
STC_DBUS_REPLY(invocation, return_parameters);
+ g_free(rule.app_id);
__STC_LOG_FUNC_EXIT__;
return TRUE;
}
GVariant *return_parameters = NULL;
stc_error_e ret;
+ stc_set_keep_alive(TRUE);
+
if (reset_rule != NULL) {
DEBUG_GDBUS_VARIANT("Selection rule: ", reset_rule);
GVariantIter *iter = NULL;
g_variant_iter_free(iter);
}
} else {
- STC_LOGD("No selection rule, using default selection rule.");
+ STC_LOGD("No selection rule, using default selection rule."); //LCOV_EXCL_LINE
}
ret = table_statistics_reset(&rule);
if (ret < STC_ERROR_NONE) {
- STC_STATISTICS_DBUS_REPLY_ERROR(invocation, ret);
- goto handle_error;
+ STC_STATISTICS_DBUS_REPLY_ERROR(invocation, ret); //LCOV_EXCL_LINE
+ goto handle_error; //LCOV_EXCL_LINE
}
return_parameters = g_variant_new("(i)", STC_ERROR_NONE);
handle_error:
FREE(rule.app_id);
- FREE(rule.imsi);
+ FREE(rule.subscriber_id);
FREE(rule.interval);
__STC_LOG_FUNC_EXIT__;
return TRUE;