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