]> git.stg.codes - stg.git/commitdiff
New sensor added: ActiveUsers
authorMaxim Mamontov <faust.madf@gmail.com>
Mon, 26 Dec 2011 09:04:07 +0000 (11:04 +0200)
committerMaxim Mamontov <faust.madf@gmail.com>
Mon, 26 Dec 2011 09:04:07 +0000 (11:04 +0200)
projects/stargazer/plugins/other/smux/STG-MIB.mib
projects/stargazer/plugins/other/smux/sensors.cpp
projects/stargazer/plugins/other/smux/sensors.h
projects/stargazer/plugins/other/smux/smux.cpp

index 8eaffb3db2d5f91b68f48be96f9eae8854c18d18..bccf5a28305c0cf71434380633b4927daab53e7e 100644 (file)
@@ -126,6 +126,15 @@ tariffChangeUsers OBJECT-TYPE
     DEFVAL { 0 }
     ::= { users 11 }
 
     DEFVAL { 0 }
     ::= { users 11 }
 
+activeUsers OBJECT-TYPE
+    SYNTAX      Integer32
+    MAX-ACCESS  read-only
+    STATUS      current
+    DESCRIPTION
+        "The number of online users with traffic during session"
+    DEFVAL {0}
+    ::= { users 12 }
+
 totalTariffs OBJECT-TYPE
     SYNTAX      Integer32
     MAX-ACCESS  read-only
 totalTariffs OBJECT-TYPE
     SYNTAX      Integer32
     MAX-ACCESS  read-only
index 9cfdadd074bf053e1d61b82cbb41c6246816cfb1..f52a413b7aeff6543e3a4ccf32da5e67012cc0cf 100644 (file)
@@ -46,3 +46,16 @@ x2str(count, res);
 return res;
 }
 #endif
 return res;
 }
 #endif
+
+bool ActiveUsersSensor::UserPredicate(USER_PTR userPtr) const
+{
+if (!userPtr->GetConnected())
+    return false;
+for (size_t i = 0; i < DIR_NUM; ++i)
+    {
+    if (userPtr->GetSessionUpload()[i] > 0 ||
+        userPtr->GetSessionDownload()[i] > 0)
+        return true;
+    }
+return false;
+}
index 3337323e952803f5221c419da84c4f08aef1322e..3787611f4263c3cbfe06fe10fac41f5e751b1e03 100644 (file)
@@ -163,6 +163,15 @@ class TariffChangeUsersSensor : public UsersSensor {
         { return !userPtr->GetProperty().nextTariff.ConstData().empty(); }
 };
 
         { return !userPtr->GetProperty().nextTariff.ConstData().empty(); }
 };
 
+class ActiveUsersSensor : public UsersSensor {
+    public:
+        ActiveUsersSensor(USERS & u) : UsersSensor(u) {}
+        virtual ~ActiveUsersSensor() {}
+
+    private:
+        bool UserPredicate(USER_PTR userPtr) const;
+};
+
 class TotalTariffsSensor : public Sensor {
     public:
         TotalTariffsSensor(const TARIFFS & t) : tariffs(t) {}
 class TotalTariffsSensor : public Sensor {
     public:
         TotalTariffsSensor(const TARIFFS & t) : tariffs(t) {}
index fcc0a9c2349e5afbe070072f3ee9a85beb73f001..7372948ac8108a5115c078416d8e3f38a337c2bc 100644 (file)
@@ -170,6 +170,7 @@ sensors[OID(".1.3.6.1.4.1.38313.1.1.8")] = new PassiveUsersSensor(*users);
 sensors[OID(".1.3.6.1.4.1.38313.1.1.9")] = new CreditUsersSensor(*users);
 sensors[OID(".1.3.6.1.4.1.38313.1.1.10")] = new FreeMbUsersSensor(*users);
 sensors[OID(".1.3.6.1.4.1.38313.1.1.11")] = new TariffChangeUsersSensor(*users);
 sensors[OID(".1.3.6.1.4.1.38313.1.1.9")] = new CreditUsersSensor(*users);
 sensors[OID(".1.3.6.1.4.1.38313.1.1.10")] = new FreeMbUsersSensor(*users);
 sensors[OID(".1.3.6.1.4.1.38313.1.1.11")] = new TariffChangeUsersSensor(*users);
+sensors[OID(".1.3.6.1.4.1.38313.1.1.12")] = new ActiveUsersSensor(*users);
 // Tariffs
 sensors[OID(".1.3.6.1.4.1.38313.1.2.1")] = new TotalTariffsSensor(*tariffs);
 // Admins
 // Tariffs
 sensors[OID(".1.3.6.1.4.1.38313.1.2.1")] = new TotalTariffsSensor(*tariffs);
 // Admins