]> git.stg.codes - stg.git/blobdiff - projects/stargazer/plugins/other/smux/tables.h
Move projects back into subfolder.
[stg.git] / projects / stargazer / plugins / other / smux / tables.h
diff --git a/projects/stargazer/plugins/other/smux/tables.h b/projects/stargazer/plugins/other/smux/tables.h
new file mode 100644 (file)
index 0000000..edfe437
--- /dev/null
@@ -0,0 +1,47 @@
+#ifndef __TABLES_H__
+#define __TABLES_H__
+
+#include <string>
+#include <map>
+
+#include "sensors.h"
+
+namespace STG
+{
+struct Tariffs;
+struct Users;
+}
+
+class TableSensor {
+    public:
+        explicit TableSensor(const std::string & p) : prefix(p) {}
+        virtual ~TableSensor() {}
+
+        const std::string & GetPrefix() const { return prefix; }
+        virtual void UpdateSensors(Sensors & sensors) const = 0;
+
+    protected:
+        std::string prefix;
+};
+
+class TariffUsersTable : public TableSensor {
+    public:
+        TariffUsersTable(const std::string & p,
+                         STG::Tariffs & t,
+                         STG::Users & u)
+            : TableSensor(p),
+              tariffs(t),
+              users(u)
+        {}
+        virtual ~TariffUsersTable() {}
+
+        void UpdateSensors(Sensors & sensors) const;
+
+    private:
+        STG::Tariffs & tariffs;
+        STG::Users & users;
+};
+
+typedef std::map<std::string, TableSensor *> Tables;
+
+#endif