Added RestrictionThresholdCrossed signal on restriction interface. 92/130492/1
authorNishant Chaprana <n.chaprana@samsung.com>
Mon, 22 May 2017 11:31:09 +0000 (17:01 +0530)
committerNishant Chaprana <n.chaprana@samsung.com>
Mon, 22 May 2017 11:31:09 +0000 (17:01 +0530)
Change-Id: Id061a20270d6859a946ed1cba07d3abf512e884a
Signed-off-by: Nishant Chaprana <n.chaprana@samsung.com>
interfaces/stcmanager-iface-restriction.xml
packaging/stc-manager.spec
src/monitor/include/stc-monitor.h
src/monitor/stc-monitor.c

index 6dba33d..4524fba 100644 (file)
@@ -42,5 +42,9 @@
                <signal name='WarnThresholdCrossed'>
                        <arg type='s' name='app_id'/>
                </signal>
+
+               <signal name='RestrictionThresholdCrossed'>
+                       <arg type='s' name='app_id'/>
+               </signal>
        </interface>
 </node>
index c50f783..a9ec908 100644 (file)
@@ -1,6 +1,6 @@
 Name:       stc-manager
 Summary:    STC(Smart Traffic Control) manager
-Version:    0.0.10
+Version:    0.0.11
 Release:    0
 Group:      Network & Connectivity/Other
 License:    Apache-2.0
index eaf3530..385c9fb 100644 (file)
@@ -87,6 +87,7 @@ typedef struct {
        gboolean in_limit_reached;
        gboolean out_limit_reached;
        gboolean warn_limit_crossed_notified;
+       gboolean rstn_limit_crossed_notified;
 } stc_rstn_value_s;
 
 /**
index ff5803a..b12920e 100755 (executable)
@@ -570,7 +570,20 @@ static gboolean __rstn_counter_update_foreach_classid(gpointer key,
                        __del_iptables_in(context->counter);
                        __add_iptables_in(context->counter);
                        rstn_value->in_limit_reached = TRUE;
-                       //context->in_limit_reached = TRUE;
+
+                       if (rstn_value->rstn_limit_crossed_notified == FALSE) {
+                               gboolean rv = FALSE;
+                               stc_s *stc = (stc_s *)stc_get_manager();
+                               ret_value_msg_if(stc == NULL, FALSE, "failed to get stc data");
+
+                               rv = stc_manager_dbus_emit_signal(stc->connection,
+                                                                 STC_DBUS_SERVICE_RESTRICTION_PATH,
+                                                                 STC_DBUS_INTERFACE_RESTRICTION,
+                                                                 "RestrictionThresholdCrossed",
+                                                                 g_variant_new("(s)", rstn_key->app_id));
+                               if (rv == TRUE)
+                                       rstn_value->rstn_limit_crossed_notified = TRUE;
+                       }
                }
 
                g_system->rstns_tree_updated = TRUE;
@@ -599,7 +612,20 @@ static gboolean __rstn_counter_update_foreach_classid(gpointer key,
                        __del_iptables_out(context->counter);
                        __add_iptables_out(context->counter);
                        rstn_value->out_limit_reached = TRUE;
-                       //context->out_limit_reached = TRUE;
+
+                       if (rstn_value->rstn_limit_crossed_notified == FALSE) {
+                               gboolean rv = FALSE;
+                               stc_s *stc = (stc_s *)stc_get_manager();
+                               ret_value_msg_if(stc == NULL, FALSE, "failed to get stc data");
+
+                               rv = stc_manager_dbus_emit_signal(stc->connection,
+                                                                 STC_DBUS_SERVICE_RESTRICTION_PATH,
+                                                                 STC_DBUS_INTERFACE_RESTRICTION,
+                                                                 "RestrictionThresholdCrossed",
+                                                                 g_variant_new("(s)", rstn_key->app_id));
+                               if (rv == TRUE)
+                                       rstn_value->rstn_limit_crossed_notified = TRUE;
+                       }
                }
 
                g_system->rstns_tree_updated = TRUE;
@@ -1038,6 +1064,7 @@ static stc_error_e __rstn_tree_add(stc_rstn_key_s *key,
        rstn_value->counter.in_bytes = 0;
        rstn_value->counter.out_bytes = 0;
        rstn_value->warn_limit_crossed_notified = FALSE;
+       rstn_value->rstn_limit_crossed_notified = FALSE;
 
        if (debug == TRUE)
                __add_restriction_debug(key, rstn_value, NULL);