7 #include "stg/tariffs.h"
8 #include "stg/admins.h"
9 #include "stg/services.h"
10 #include "stg/corporations.h"
11 #include "stg/traffcounter.h"
12 #include "stg/user_property.h"
14 #include "stg/ObjectSyntax.h"
22 virtual bool GetValue(ObjectSyntax_t * objectSyntax) const = 0;
24 virtual std::string ToString() const = 0;
28 typedef std::map<OID, Sensor *> Sensors;
30 class TotalUsersSensor : public Sensor {
32 explicit TotalUsersSensor(const USERS & u) : users(u) {}
33 virtual ~TotalUsersSensor() {}
35 bool GetValue(ObjectSyntax_t * objectSyntax) const
37 ValueToOS(users.Count(), objectSyntax);
42 std::string ToString() const
43 { std::string res; std::to_string(users.Count(), res); return res; }
50 class UsersSensor : public Sensor {
52 explicit UsersSensor(USERS & u) : users(u) {}
53 virtual ~UsersSensor() {}
55 bool GetValue(ObjectSyntax_t * objectSyntax) const;
57 std::string ToString() const;
63 virtual bool UserPredicate(USER_PTR userPtr) const = 0;
66 class ConnectedUsersSensor : public UsersSensor {
68 explicit ConnectedUsersSensor(USERS & u) : UsersSensor(u) {}
69 virtual ~ConnectedUsersSensor() {}
72 bool UserPredicate(USER_PTR userPtr) const
73 { return userPtr->GetConnected(); }
76 class AuthorizedUsersSensor : public UsersSensor {
78 explicit AuthorizedUsersSensor(USERS & u) : UsersSensor(u) {}
79 virtual ~AuthorizedUsersSensor() {}
82 bool UserPredicate(USER_PTR userPtr) const
83 { return userPtr->GetAuthorized(); }
86 class AlwaysOnlineUsersSensor : public UsersSensor {
88 explicit AlwaysOnlineUsersSensor(USERS & u) : UsersSensor(u) {}
89 virtual ~AlwaysOnlineUsersSensor() {}
92 bool UserPredicate(USER_PTR userPtr) const
93 { return userPtr->GetProperty().alwaysOnline; }
96 class NoCashUsersSensor : public UsersSensor {
98 explicit NoCashUsersSensor(USERS & u) : UsersSensor(u) {}
99 virtual ~NoCashUsersSensor() {}
102 bool UserPredicate(USER_PTR userPtr) const
103 { return userPtr->GetProperty().cash < 0; }
106 class DisabledDetailStatsUsersSensor : public UsersSensor {
108 explicit DisabledDetailStatsUsersSensor(USERS & u) : UsersSensor(u) {}
109 virtual ~DisabledDetailStatsUsersSensor() {}
112 bool UserPredicate(USER_PTR userPtr) const
113 { return userPtr->GetProperty().disabledDetailStat; }
116 class DisabledUsersSensor : public UsersSensor {
118 explicit DisabledUsersSensor(USERS & u) : UsersSensor(u) {}
119 virtual ~DisabledUsersSensor() {}
122 bool UserPredicate(USER_PTR userPtr) const
123 { return userPtr->GetProperty().disabled; }
126 class PassiveUsersSensor : public UsersSensor {
128 explicit PassiveUsersSensor(USERS & u) : UsersSensor(u) {}
129 virtual ~PassiveUsersSensor() {}
132 bool UserPredicate(USER_PTR userPtr) const
133 { return userPtr->GetProperty().passive; }
136 class CreditUsersSensor : public UsersSensor {
138 explicit CreditUsersSensor(USERS & u) : UsersSensor(u) {}
139 virtual ~CreditUsersSensor() {}
142 bool UserPredicate(USER_PTR userPtr) const
143 { return userPtr->GetProperty().credit > 0; }
146 class FreeMbUsersSensor : public UsersSensor {
148 explicit FreeMbUsersSensor(USERS & u) : UsersSensor(u) {}
149 virtual ~FreeMbUsersSensor() {}
152 bool UserPredicate(USER_PTR userPtr) const
153 { return userPtr->GetProperty().freeMb > 0; }
156 class TariffChangeUsersSensor : public UsersSensor {
158 explicit TariffChangeUsersSensor(USERS & u) : UsersSensor(u) {}
159 virtual ~TariffChangeUsersSensor() {}
162 bool UserPredicate(USER_PTR userPtr) const
163 { return !userPtr->GetProperty().nextTariff.ConstData().empty(); }
166 class ActiveUsersSensor : public UsersSensor {
168 explicit ActiveUsersSensor(USERS & u) : UsersSensor(u) {}
169 virtual ~ActiveUsersSensor() {}
172 bool UserPredicate(USER_PTR userPtr) const;
175 class TotalTariffsSensor : public Sensor {
177 explicit TotalTariffsSensor(const TARIFFS & t) : tariffs(t) {}
178 virtual ~TotalTariffsSensor() {}
180 bool GetValue(ObjectSyntax_t * objectSyntax) const
182 ValueToOS(tariffs.Count(), objectSyntax);
187 std::string ToString() const
188 { std::string res; std::to_string(tariffs.Count(), res); return res; }
192 const TARIFFS & tariffs;
195 class TotalAdminsSensor : public Sensor {
197 explicit TotalAdminsSensor(const ADMINS & a) : admins(a) {}
198 virtual ~TotalAdminsSensor() {}
200 bool GetValue(ObjectSyntax_t * objectSyntax) const
202 ValueToOS(admins.Count(), objectSyntax);
207 std::string ToString() const
208 { std::string res; std::to_string(admins.Count(), res); return res; }
212 const ADMINS & admins;
215 class TotalServicesSensor : public Sensor {
217 explicit TotalServicesSensor(const SERVICES & s) : services(s) {}
218 virtual ~TotalServicesSensor() {}
220 bool GetValue(ObjectSyntax_t * objectSyntax) const
222 ValueToOS(services.Count(), objectSyntax);
227 std::string ToString() const
228 { std::string res; std::to_string(services.Count(), res); return res; }
232 const SERVICES & services;
235 class TotalCorporationsSensor : public Sensor {
237 explicit TotalCorporationsSensor(const CORPORATIONS & c) : corporations(c) {}
238 virtual ~TotalCorporationsSensor() {}
240 bool GetValue(ObjectSyntax_t * objectSyntax) const
242 ValueToOS(corporations.Count(), objectSyntax);
247 std::string ToString() const
248 { std::string res; std::to_string(corporations.Count(), res); return res; }
252 const CORPORATIONS & corporations;
255 class TotalRulesSensor : public Sensor {
257 explicit TotalRulesSensor(const TRAFFCOUNTER & t) : traffcounter(t) {}
258 virtual ~TotalRulesSensor() {}
260 bool GetValue(ObjectSyntax_t * objectSyntax) const
262 ValueToOS(traffcounter.RulesCount(), objectSyntax);
267 std::string ToString() const
268 { std::string res; std::to_string(traffcounter.RulesCount(), res); return res; }
272 const TRAFFCOUNTER & traffcounter;
275 template <typename T>
276 class ConstSensor : public Sensor {
278 explicit ConstSensor(const T & v) : value(v) {}
279 virtual ~ConstSensor() {}
281 bool GetValue(ObjectSyntax * objectSyntax) const
282 { return ValueToOS(value, objectSyntax); }
285 std::string ToString() const
286 { std::string res; std::to_string(value, res); return res; }
296 std::string ConstSensor<std::string>::ToString() const