]> git.stg.codes - stg.git/commitdiff
Rules counter added to the SMUX plugin
authorMaxim Mamontov <faust.madf@gmail.com>
Wed, 31 Aug 2011 10:04:17 +0000 (13:04 +0300)
committerMaxim Mamontov <faust.madf@gmail.com>
Wed, 31 Aug 2011 10:04:17 +0000 (13:04 +0300)
projects/stargazer/plugins/other/smux/sensors.h
projects/stargazer/plugins/other/smux/smux.cpp
projects/stargazer/plugins/other/smux/smux.h

index 55780987169eb89e844098d13f213e5d81285843..7c11751eca9551e5ee75f93910fcca8c773daf40 100644 (file)
@@ -8,6 +8,7 @@
 #include "stg/admins.h"
 #include "stg/services.h"
 #include "stg/corporations.h"
+#include "stg/traffcounter.h"
 #include "stg/user_property.h"
 
 #include "stg/ObjectSyntax.h"
@@ -241,6 +242,26 @@ class TotalCorporationsSensor : public Sensor {
         const CORPORATIONS & corporations;
 };
 
+class TotalRulesSensor : public Sensor {
+    public:
+        TotalRulesSensor(const TRAFFCOUNTER & t) : traffcounter(t) {}
+        virtual ~TotalRulesSensor() {}
+
+        bool GetValue(ObjectSyntax_t * objectSyntax) const
+        {
+        ValueToOS(traffcounter.RulesCount(), objectSyntax);
+        return true;
+        }
+
+#ifdef DEBUG
+        std::string ToString() const
+        { std::string res; x2str(traffcounter.RulesCount(), res); return res; }
+#endif
+
+    private:
+        const TRAFFCOUNTER & traffcounter;
+};
+
 template <typename T>
 class ConstSensor : public Sensor {
     public:
index 1300452f5cc4f5f3a5d8835da0ff097ba3c4bafa..d3f5bbdb547241d549141418218cd98fe8b4582e 100644 (file)
 
 #include "stg/common.h"
 #include "stg/plugin_creator.h"
-#include "stg/users.h"
+/*#include "stg/users.h"
 #include "stg/tariffs.h"
 #include "stg/admins.h"
 #include "stg/services.h"
 #include "stg/corporations.h"
+#include "stg/traffcounter.h"*/
 
 #include "smux.h"
 #include "utils.h"
@@ -98,6 +99,7 @@ SMUX::SMUX()
       admins(NULL),
       services(NULL),
       corporations(NULL),
+      traffcounter(NULL),
       running(false),
       stopped(true),
       sock(-1)
@@ -137,11 +139,12 @@ return smuxSettings.ParseSettings(settings);
 
 int SMUX::Start()
 {
-assert(users != NULL && "users not NULL");
-assert(tariffs != NULL && "tariffs not NULL");
-assert(admins != NULL && "admins not NULL");
-assert(services != NULL && "services not NULL");
-assert(corporations != NULL && "corporations not NULL");
+assert(users != NULL && "users must not be NULL");
+assert(tariffs != NULL && "tariffs must not be NULL");
+assert(admins != NULL && "admins must not be NULL");
+assert(services != NULL && "services must not be NULL");
+assert(corporations != NULL && "corporations must not be NULL");
+assert(traffcounter != NULL && "traffcounter must not be NULL");
 
 if (PrepareNet())
     return -1;
@@ -166,6 +169,8 @@ sensors[OID(".1.3.6.1.4.1.38313.1.3.1")] = new TotalAdminsSensor(*admins);
 sensors[OID(".1.3.6.1.4.1.38313.1.4.1")] = new TotalServicesSensor(*services);
 // Corporations
 sensors[OID(".1.3.6.1.4.1.38313.1.5.1")] = new TotalCorporationsSensor(*corporations);
+// Traffcounter
+sensors[OID(".1.3.6.1.4.1.38313.1.6.1")] = new TotalRulesSensor(*traffcounter);
 
 // Table data
 tables[".1.3.6.1.4.1.38313.1.1.6"] = new TariffUsersTable(".1.3.6.1.4.1.38313.1.1.6", *users);
index 5230a85cd3c02f6b78fb72e339bc31d6dda012cb..03d3d3b63225910aeaa142ca5eee4e1c0c336e08 100644 (file)
@@ -26,6 +26,7 @@ class USERS;
 class TARIFFS;
 class SERVICES;
 class CORPORATIONS;
+class TRAFFCOUNTER;
 
 typedef bool (SMUX::*SMUXPacketHandler)(const SMUX_PDUs_t * pdus);
 typedef bool (SMUX::*PDUsHandler)(const PDUs_t * pdus);
@@ -60,6 +61,7 @@ public:
     void SetTariffs(TARIFFS * t) { tariffs = t; }
     void SetAdmins(ADMINS * a) { admins = a; }
     void SetServices(SERVICES * s) { services = s; }
+    void SetTraffcounter(TRAFFCOUNTER * tc) { traffcounter = tc; }
     void SetCorporations(CORPORATIONS * c) { corporations = c; }
     void SetSettings(const MODULE_SETTINGS & s) { settings = s; }
     int ParseSettings();
@@ -97,6 +99,7 @@ private:
     ADMINS * admins;
     SERVICES * services;
     CORPORATIONS * corporations;
+    TRAFFCOUNTER * traffcounter;
 
     mutable std::string errorStr;
     SMUX_SETTINGS smuxSettings;