#include "stc-util.h"
#include "stc-event.h"
#include "stc-signal.h"
+#include "stc-restriction.h"
/*****************************************************************************
* Macros and Typedefs
if (info_data != NULL) {
for (data = info_data; data; data = data->next) {
stc_restriction_rule_h rule = data->data;
+ _stc_restriction_add_to_list(rule);
ret = handle->restriction_cb(err,
rule, handle->restriction_user_data);
+ _stc_restriction_remove_from_list(rule);
if (ret == STC_CALLBACK_CANCEL)
break;
if (info_data != NULL) {
for (data = info_data; data; data = data->next) {
stc_restriction_rule_h rule = data->data;
+ _stc_restriction_add_to_list(rule);
ret = handle->restriction_all_cb(err,
rule, handle->restriction_all_user_data);
+ _stc_restriction_remove_from_list(rule);
if (ret == STC_CALLBACK_CANCEL)
break;
stc_handle_s *handle = (stc_handle_s *)list->data;
switch (e) {
case STC_EVENT_WARN_THRESHOLD_CROSSED_RSP:
- if (handle->warn_crossed_cb)
+ if (handle->warn_crossed_cb) {
+ _stc_restriction_add_to_list((stc_restriction_rule_h)info_data);
handle->warn_crossed_cb((stc_restriction_rule_h)info_data,
handle->warn_crossed_user_data);
+ _stc_restriction_remove_from_list((stc_restriction_rule_h)info_data);
+ }
break;
case STC_EVENT_RESTRICTION_THRESHOLD_CROSSED_RSP:
- if (handle->restriction_crossed_cb)
+ if (handle->restriction_crossed_cb) {
+ _stc_restriction_add_to_list((stc_restriction_rule_h)info_data);
handle->restriction_crossed_cb((stc_restriction_rule_h)info_data,
handle->restriction_crossed_user_data);
+ _stc_restriction_remove_from_list((stc_restriction_rule_h)info_data);
+ }
break;
default:
break;
return STC_ERROR_INVALID_PARAMETER;
}
+ if (_stc_restriction_check_validity(rule) == false) {
+ STC_LOGE("Invalid parameter");
+ return STC_ERROR_INVALID_PARAMETER;
+ }
+
ret = _stc_restriction_validate_rule(rule);
if (ret != STC_ERROR_NONE) {
STC_LOGE("Invalid restriction rule [%s]",
return STC_ERROR_INVALID_PARAMETER;
}
+ if (_stc_restriction_check_validity(rule) == false) {
+ STC_LOGE("Invalid parameter");
+ return STC_ERROR_INVALID_PARAMETER;
+ }
+
ret = _stc_restriction_validate_rule(rule);
if (ret != STC_ERROR_NONE) {
STC_LOGE("Invalid restriction rule [%s]",
return STC_ERROR_INVALID_PARAMETER;
}
+ if (_stc_restriction_check_validity(rule) == false) {
+ STC_LOGE("Invalid parameter");
+ return STC_ERROR_INVALID_PARAMETER;
+ }
+
if (rule_cb == NULL) {
STC_LOGE("Invalid parameter");
return STC_ERROR_INVALID_PARAMETER;
return STC_ERROR_INVALID_PARAMETER;
}
+ if (_stc_restriction_check_validity(rule) == false) {
+ STC_LOGE("Invalid parameter");
+ return STC_ERROR_INVALID_PARAMETER;
+ }
+
if (rule_cb == NULL) {
STC_LOGE("Invalid parameter");
return STC_ERROR_INVALID_PARAMETER;
return STC_ERROR_INVALID_PARAMETER;
}
+ if (_stc_restriction_check_validity(rule) == false) {
+ STC_LOGE("Invalid parameter");
+ return STC_ERROR_INVALID_PARAMETER;
+ }
+
ret = _stc_restriction_check_get_type_rule(rule);
if (ret != STC_ERROR_NONE) {
STC_LOGE("Invalid restriction rule [%s]",
* Global Variables
*****************************************************************************/
+static GSList *g_restriction_list = NULL;
+
/*****************************************************************************
* Local Functions Definition
*****************************************************************************/
return STC_ERROR_NONE;
}
+void _stc_restriction_add_to_list(stc_restriction_rule_h rule)
+{
+ g_restriction_list = g_slist_append(g_restriction_list, rule);
+}
+
+void _stc_restriction_remove_from_list(stc_restriction_rule_h rule)
+{
+ g_restriction_list = g_slist_remove(g_restriction_list, rule);
+}
+
+bool _stc_restriction_check_validity(stc_restriction_rule_h rule)
+{
+ if (!rule)
+ return false;
+
+ if (g_slist_find(g_restriction_list, rule))
+ return true;
+ else
+ return false;
+}
+
stc_error_e _stc_restriction_validate_rule(
stc_restriction_rule_h rule)
}
__stc_restriction_init_rule(restriction_rule);
+ _stc_restriction_add_to_list((stc_restriction_rule_h)restriction_rule);
+
*rule = (stc_restriction_rule_h)restriction_rule;
STC_LOGI("Restriction rule successfully created");
{
CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_STC);
- if (rule == NULL) {
+ if (_stc_restriction_check_validity(rule) == false) {
STC_LOGE("Invalid parameter");
return STC_ERROR_INVALID_PARAMETER;
}
+ _stc_restriction_remove_from_list(rule);
__stc_restriction_deinit_rule(rule);
+
STC_LOGI("Restriction rule successfully destroyed");
return STC_ERROR_NONE;
{
CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_STC);
- if (rule == NULL) {
+ if (_stc_restriction_check_validity(rule) == false) {
STC_LOGE("Invalid parameter");
return STC_ERROR_INVALID_PARAMETER;
}
{
CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_STC);
- if (rule == NULL) {
+ if (_stc_restriction_check_validity(rule) == false) {
STC_LOGE("Invalid parameter");
return STC_ERROR_INVALID_PARAMETER;
}
{
CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_STC);
- if (rule == NULL) {
+ if (_stc_restriction_check_validity(rule) == false) {
STC_LOGE("Invalid parameter");
return STC_ERROR_INVALID_PARAMETER;
}
{
CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_STC);
- if (rule == NULL) {
+ if (_stc_restriction_check_validity(rule) == false) {
STC_LOGE("Invalid parameter");
return STC_ERROR_INVALID_PARAMETER;
}
{
CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_STC);
- if (rule == NULL) {
+ if (_stc_restriction_check_validity(rule) == false) {
STC_LOGE("Invalid parameter");
return STC_ERROR_INVALID_PARAMETER;
}
{
CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_STC);
- if (rule == NULL) {
+ if (_stc_restriction_check_validity(rule) == false) {
STC_LOGE("Invalid parameter");
return STC_ERROR_INVALID_PARAMETER;
}
{
CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_STC);
- if (rule == NULL) {
+ if (_stc_restriction_check_validity(rule) == false) {
STC_LOGE("Invalid parameter");
return STC_ERROR_INVALID_PARAMETER;
}
{
CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_STC);
- if (rule == NULL) {
+ if (_stc_restriction_check_validity(rule) == false) {
STC_LOGE("Invalid parameter");
return STC_ERROR_INVALID_PARAMETER;
}
{
CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_STC);
- if (rule == NULL) {
+ if (_stc_restriction_check_validity(rule) == false) {
STC_LOGE("Invalid parameter");
return STC_ERROR_INVALID_PARAMETER;
}
{
CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_STC);
- if (rule == NULL) {
+ if (_stc_restriction_check_validity(rule) == false) {
STC_LOGE("Invalid parameter");
return STC_ERROR_INVALID_PARAMETER;
}
{
CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_STC);
- if (rule == NULL) {
+ if (_stc_restriction_check_validity(rule) == false) {
STC_LOGE("Invalid parameter");
return STC_ERROR_INVALID_PARAMETER;
}
{
CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_STC);
- if (rule == NULL) {
+ if (_stc_restriction_check_validity(rule) == false) {
STC_LOGE("Invalid parameter");
return STC_ERROR_INVALID_PARAMETER;
}
{
CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_STC);
- if (rule == NULL || app_id == NULL) {
+ if (_stc_restriction_check_validity(rule) == false) {
+ STC_LOGE("Invalid parameter");
+ return STC_ERROR_INVALID_PARAMETER;
+ }
+
+ if (app_id == NULL) {
STC_LOGE("Invalid parameter");
return STC_ERROR_INVALID_PARAMETER;
}
{
CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_STC);
- if (rule == NULL || iface_name == NULL) {
+ if (_stc_restriction_check_validity(rule) == false) {
+ STC_LOGE("Invalid parameter");
+ return STC_ERROR_INVALID_PARAMETER;
+ }
+
+ if (iface_name == NULL) {
STC_LOGE("Invalid parameter");
return STC_ERROR_INVALID_PARAMETER;
}
{
CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_STC);
- if (rule == NULL) {
+ if (_stc_restriction_check_validity(rule) == false) {
STC_LOGE("Invalid parameter");
return STC_ERROR_INVALID_PARAMETER;
}
{
CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_STC);
- if (rule == NULL) {
+ if (_stc_restriction_check_validity(rule) == false) {
STC_LOGE("Invalid parameter");
return STC_ERROR_INVALID_PARAMETER;
}
{
CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_STC);
- if (rule == NULL || data_limit == NULL) {
+ if (_stc_restriction_check_validity(rule) == false) {
+ STC_LOGE("Invalid parameter");
+ return STC_ERROR_INVALID_PARAMETER;
+ }
+
+ if (data_limit == NULL) {
STC_LOGE("Invalid parameter");
return STC_ERROR_INVALID_PARAMETER;
}
{
CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_STC);
- if (rule == NULL || data_warn_limit == NULL) {
+ if (_stc_restriction_check_validity(rule) == false) {
+ STC_LOGE("Invalid parameter");
+ return STC_ERROR_INVALID_PARAMETER;
+ }
+
+ if (data_warn_limit == NULL) {
STC_LOGE("Invalid parameter");
return STC_ERROR_INVALID_PARAMETER;
}
{
CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_STC);
- if (rule == NULL || limit == NULL) {
+ if (_stc_restriction_check_validity(rule) == false) {
+ STC_LOGE("Invalid parameter");
+ return STC_ERROR_INVALID_PARAMETER;
+ }
+
+ if (limit == NULL) {
STC_LOGE("Invalid parameter");
return STC_ERROR_INVALID_PARAMETER;
}
{
CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_STC);
- if (rule == NULL || limit == NULL) {
+ if (_stc_restriction_check_validity(rule) == false) {
+ STC_LOGE("Invalid parameter");
+ return STC_ERROR_INVALID_PARAMETER;
+ }
+
+ if (limit == NULL) {
STC_LOGE("Invalid parameter");
return STC_ERROR_INVALID_PARAMETER;
}
{
CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_STC);
- if (rule == NULL || limit == NULL) {
+ if (_stc_restriction_check_validity(rule) == false) {
+ STC_LOGE("Invalid parameter");
+ return STC_ERROR_INVALID_PARAMETER;
+ }
+
+ if (limit == NULL) {
STC_LOGE("Invalid parameter");
return STC_ERROR_INVALID_PARAMETER;
}
{
CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_STC);
- if (rule == NULL || date == NULL) {
+ if (_stc_restriction_check_validity(rule) == false) {
+ STC_LOGE("Invalid parameter");
+ return STC_ERROR_INVALID_PARAMETER;
+ }
+
+ if (date == NULL) {
STC_LOGE("Invalid parameter");
return STC_ERROR_INVALID_PARAMETER;
}
{
CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_STC);
- if (rule == NULL) {
+ if (_stc_restriction_check_validity(rule) == false) {
STC_LOGE("Invalid parameter");
return STC_ERROR_INVALID_PARAMETER;
}
{
CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_STC);
- if (rule == NULL || subscriber_id == NULL) {
+ if (_stc_restriction_check_validity(rule) == false) {
+ STC_LOGE("Invalid parameter");
+ return STC_ERROR_INVALID_PARAMETER;
+ }
+
+ if (subscriber_id == NULL) {
STC_LOGE("Invalid parameter");
return STC_ERROR_INVALID_PARAMETER;
}