]> git.stg.codes - stg.git/blob - projects/stargazer/plugins/other/snmp/sensors.h
Merge branch 'master' into full-month-stats
[stg.git] / projects / stargazer / plugins / other / snmp / sensors.h
1 #ifndef __SENSORS_H__
2 #define __SENSORS_H__
3
4 #include <string>
5 #include <map>
6
7 #include "stg/users.h"
8 #include "stg/tariffs.h"
9
10 #include "asn1/ObjectSyntax.h"
11
12 class Sensor {
13     public:
14         virtual bool GetValue(ObjectSyntax_t * objectSyntax) = 0;
15 };
16
17 typedef std::map<std::string, Sensor *> Sensors;
18
19 void Int2OS(ObjectSyntax_t * dst, long src);
20
21 class TotalUsersSensor : public Sensor {
22     public:
23         TotalUsersSensor(const USERS & u)
24             : users(u)
25         {}
26         virtual ~TotalUsersSensor() {}
27
28         bool GetValue(ObjectSyntax_t * objectSyntax)
29         {
30         Int2OS(objectSyntax, users.GetUserNum());
31         return true;
32         }
33
34     private:
35         const USERS & users;
36 };
37
38 class ConnectedUsersSensor : public Sensor {
39     public:
40         ConnectedUsersSensor(USERS & u)
41             : users(u)
42         {}
43         virtual ~ConnectedUsersSensor() {}
44
45         bool GetValue(ObjectSyntax_t * objectSyntax);
46
47     private:
48         USERS & users;
49 };
50
51 class AuthorizedUsersSensor : public Sensor {
52     public:
53         AuthorizedUsersSensor(USERS & u)
54             : users(u)
55         {}
56         virtual ~AuthorizedUsersSensor() {}
57
58         bool GetValue(ObjectSyntax_t * objectSyntax);
59
60     private:
61         USERS & users;
62 };
63
64 class AlwaysOnlineUsersSensor : public Sensor {
65     public:
66         AlwaysOnlineUsersSensor(USERS & u)
67             : users(u)
68         {}
69         virtual ~AlwaysOnlineUsersSensor() {}
70
71         bool GetValue(ObjectSyntax_t * objectSyntax);
72
73     private:
74         USERS & users;
75 };
76
77 class NoCashUsersSensor : public Sensor {
78     public:
79         NoCashUsersSensor(USERS & u)
80             : users(u)
81         {}
82         virtual ~NoCashUsersSensor() {}
83
84         bool GetValue(ObjectSyntax_t * objectSyntax);
85
86     private:
87         USERS & users;
88 };
89
90 class DisabledDetailStatsUsersSensor : public Sensor {
91     public:
92         DisabledDetailStatsUsersSensor(USERS & u)
93             : users(u)
94         {}
95         virtual ~DisabledDetailStatsUsersSensor() {}
96
97         bool GetValue(ObjectSyntax_t * objectSyntax);
98
99     private:
100         USERS & users;
101 };
102
103 class DisabledUsersSensor : public Sensor {
104     public:
105         DisabledUsersSensor(USERS & u)
106             : users(u)
107         {}
108         virtual ~DisabledUsersSensor() {}
109
110         bool GetValue(ObjectSyntax_t * objectSyntax);
111
112     private:
113         USERS & users;
114 };
115
116 class PassiveUsersSensor : public Sensor {
117     public:
118         PassiveUsersSensor(USERS & u)
119             : users(u)
120         {}
121         virtual ~PassiveUsersSensor() {}
122
123         bool GetValue(ObjectSyntax_t * objectSyntax);
124
125     private:
126         USERS & users;
127 };
128
129 class CreditUsersSensor : public Sensor {
130     public:
131         CreditUsersSensor(USERS & u)
132             : users(u)
133         {}
134         virtual ~CreditUsersSensor() {}
135
136         bool GetValue(ObjectSyntax_t * objectSyntax);
137
138     private:
139         USERS & users;
140 };
141
142 class FreeMbUsersSensor : public Sensor {
143     public:
144         FreeMbUsersSensor(USERS & u)
145             : users(u)
146         {}
147         virtual ~FreeMbUsersSensor() {}
148
149         bool GetValue(ObjectSyntax_t * objectSyntax);
150
151     private:
152         USERS & users;
153 };
154
155 class TotalTariffsSensor : public Sensor {
156     public:
157         TotalTariffsSensor(const TARIFFS & t)
158             : tariffs(t)
159         {}
160         virtual ~TotalTariffsSensor() {}
161
162         bool GetValue(ObjectSyntax_t * objectSyntax)
163         {
164         Int2OS(objectSyntax, tariffs.GetTariffsNum());
165         return true;
166         }
167
168     private:
169         const TARIFFS & tariffs;
170 };
171
172 #endif