X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/82ede2a92a721d1c8f0e3fd109a2594f2096306e..e08647faf449d1e8b4b214e0e1891203e322f76a:/projects/stargazer/plugins/other/smux/smux.h?ds=sidebyside diff --git a/projects/stargazer/plugins/other/smux/smux.h b/projects/stargazer/plugins/other/smux/smux.h index 7ab603df..1b1ee96e 100644 --- a/projects/stargazer/plugins/other/smux/smux.h +++ b/projects/stargazer/plugins/other/smux/smux.h @@ -5,6 +5,7 @@ #include #include +#include #include "stg/SMUX-PDUs.h" #include "stg/ObjectSyntax.h" @@ -26,6 +27,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); @@ -51,6 +53,27 @@ private: std::string password; }; //----------------------------------------------------------------------------- +class CHG_AFTER_NOTIFIER : public PROPERTY_NOTIFIER_BASE { +public: + CHG_AFTER_NOTIFIER(SMUX & s, const USER_PTR & u) : smux(s), userPtr(u) {} + void Notify(const std::string &, const std::string &); + + USER_PTR GetUserPtr() { return userPtr; } + +private: + SMUX & smux; + USER_PTR userPtr; +}; +//----------------------------------------------------------------------------- +class ADD_DEL_USER_NOTIFIER : public NOTIFIER_BASE { +public: + ADD_DEL_USER_NOTIFIER(SMUX & s) : smux(s) {} + void Notify(const USER_PTR &); + +private: + SMUX & smux; +}; +//----------------------------------------------------------------------------- class SMUX : public PLUGIN { public: SMUX(); @@ -60,10 +83,8 @@ 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 SetTraffcounter(TRAFFCOUNTER *) {} - void SetStore(STORE *) {} - void SetStgSettings(const SETTINGS *) {} void SetSettings(const MODULE_SETTINGS & s) { settings = s; } int ParseSettings(); @@ -77,6 +98,8 @@ public: uint16_t GetStartPosition() const { return 100; } uint16_t GetStopPosition() const { return 100; } + bool UpdateTables(); + private: static void * Runner(void * d); void Run(); @@ -93,13 +116,15 @@ private: bool GetNextRequestHandler(const PDUs_t * pdus); bool SetRequestHandler(const PDUs_t * pdus); - bool UpdateTables(); + void SetNotifiers(); + void ResetNotifiers(); USERS * users; TARIFFS * tariffs; ADMINS * admins; SERVICES * services; CORPORATIONS * corporations; + TRAFFCOUNTER * traffcounter; mutable std::string errorStr; SMUX_SETTINGS smuxSettings; @@ -117,6 +142,8 @@ private: Sensors sensors; Tables tables; + std::list notifiers; + ADD_DEL_USER_NOTIFIER addDelNotifier; }; //-----------------------------------------------------------------------------