From: hyunuktak Date: Tue, 19 Feb 2019 06:22:47 +0000 (+0900) Subject: Add to set/unset restriction list X-Git-Tag: accepted/tizen/unified/20190312.113050^0 X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fconnectivity%2Fstc-manager.git;a=commitdiff_plain;h=2fee9eb1239fb74c1fa15182391abc6328b56bb3 Add to set/unset restriction list Change-Id: I87e0278ccfac1aa10ae112494f66e75e2ef07a41 Signed-off-by: hyunuktak --- diff --git a/include/stc-restriction.h b/include/stc-restriction.h index fe25ea2..1ee0255 100755 --- a/include/stc-restriction.h +++ b/include/stc-restriction.h @@ -52,6 +52,16 @@ gboolean handle_restriction_unset(StcRestriction *object, GVariant *parameters, void *user_data); +gboolean handle_restriction_set_list(StcRestriction *object, + GDBusMethodInvocation *invocation, + GVariant *parameters, + void *user_data); + +gboolean handle_restriction_unset_list(StcRestriction *object, + GDBusMethodInvocation *invocation, + GVariant *parameters, + void *user_data); + gboolean handle_restriction_get(StcRestriction *object, GDBusMethodInvocation *invocation, const gchar *app_id, diff --git a/interfaces/stcmanager-iface-restriction.xml b/interfaces/stcmanager-iface-restriction.xml index 1fbfc3f..b8c89e0 100644 --- a/interfaces/stcmanager-iface-restriction.xml +++ b/interfaces/stcmanager-iface-restriction.xml @@ -28,6 +28,16 @@ + + + + + + + + + + diff --git a/src/stc-manager-gdbus.c b/src/stc-manager-gdbus.c index 61a81b4..7990287 100755 --- a/src/stc-manager-gdbus.c +++ b/src/stc-manager-gdbus.c @@ -140,6 +140,12 @@ static gboolean __stc_manager_gdbus_restriction_init(stc_s *stc) g_signal_connect(restriction, "handle-unset", G_CALLBACK(handle_restriction_unset), stc); + g_signal_connect(restriction, "handle-set-list", + G_CALLBACK(handle_restriction_set_list), stc); + + g_signal_connect(restriction, "handle-unset-list", + G_CALLBACK(handle_restriction_unset_list), stc); + /* Export the object (@manager takes its own reference to @object) */ g_dbus_object_manager_server_export(stc->obj_mgr, G_DBUS_OBJECT_SKELETON(object)); diff --git a/src/stc-restriction.c b/src/stc-restriction.c index 42bf9bc..d49eb42 100755 --- a/src/stc-restriction.c +++ b/src/stc-restriction.c @@ -344,6 +344,105 @@ gboolean handle_restriction_unset(StcRestriction *object, return TRUE; } +gboolean handle_restriction_set_list(StcRestriction *object, + GDBusMethodInvocation *invocation, + GVariant *parameters, + void *user_data) +{ + __STC_LOG_FUNC_ENTER__; + GVariantIter *iter = NULL; + GVariantIter *iter_row = NULL; + stc_error_e ret = STC_ERROR_NONE; + + g_variant_get(parameters, "aa{sv}", &iter); + while (g_variant_iter_next(iter, "a{sv}", &iter_row)) { + table_restrictions_info rule; + + memset(&rule, 0, sizeof(table_restrictions_info)); + __initialize_rstn_rule(&rule); + + stc_manager_gdbus_dict_foreach(iter_row, + __stc_extract_restriction_rule, &rule); + + if (__validate_rstn_rule(&rule)) { + ret = table_restrictions_update(&rule); + if (ret != STC_ERROR_NONE) { + STC_RESTRICTION_DBUS_REPLY_ERROR(invocation, ret); //LCOV_EXCL_LINE + g_variant_iter_free(iter_row); + g_variant_iter_free(iter); + __STC_LOG_FUNC_EXIT__; //LCOV_EXCL_LINE + return TRUE; + } + + ret = stc_plugin_monitor_add_rstn(&rule); + if (ret != STC_ERROR_NONE) { + STC_RESTRICTION_DBUS_REPLY_ERROR(invocation, ret); //LCOV_EXCL_LINE + g_variant_iter_free(iter_row); + g_variant_iter_free(iter); + __STC_LOG_FUNC_EXIT__; //LCOV_EXCL_LINE + return TRUE; + } + } + + g_variant_iter_free(iter_row); + } + g_variant_iter_free(iter); + + STC_DBUS_REPLY_ERROR_NONE(invocation); + __STC_LOG_FUNC_EXIT__; + return TRUE; +} + +gboolean handle_restriction_unset_list(StcRestriction *object, + GDBusMethodInvocation *invocation, + GVariant *parameters, + void *user_data) +{ + __STC_LOG_FUNC_ENTER__; + GVariantIter *iter = NULL; + GVariantIter *iter_row = NULL; + stc_error_e ret = STC_ERROR_NONE; + + g_variant_get(parameters, "aa{sv}", &iter); + while (g_variant_iter_next(iter, "a{sv}", &iter_row)) { + table_restrictions_info rule; + + memset(&rule, 0, sizeof(table_restrictions_info)); + __initialize_rstn_rule(&rule); + + stc_manager_gdbus_dict_foreach(iter_row, + __stc_extract_restriction_rule, &rule); + + if (__validate_rstn_rule(&rule)) { + ret = table_restrictions_delete(rule.app_id, rule.iftype, + rule.ifname, rule.subscriber_id, rule.roaming); + if (ret != STC_ERROR_NONE) { + STC_RESTRICTION_DBUS_REPLY_ERROR(invocation, ret); //LCOV_EXCL_LINE + g_variant_iter_free(iter_row); + g_variant_iter_free(iter); + __STC_LOG_FUNC_EXIT__; //LCOV_EXCL_LINE + return TRUE; + } + + ret = stc_plugin_monitor_remove_rstn(&rule); + if (ret != STC_ERROR_NONE) { + STC_RESTRICTION_DBUS_REPLY_ERROR(invocation, ret); //LCOV_EXCL_LINE + g_variant_iter_free(iter_row); + g_variant_iter_free(iter); + __STC_LOG_FUNC_EXIT__; //LCOV_EXCL_LINE + return TRUE; + } + } + + g_variant_iter_free(iter_row); + } + g_variant_iter_free(iter); + + STC_DBUS_REPLY_ERROR_NONE(invocation); + __STC_LOG_FUNC_EXIT__; + return TRUE; +} + gboolean handle_restriction_get(StcRestriction *object, GDBusMethodInvocation *invocation, const gchar *app_id,