From c85b624d28564a6f785b25000e2b7825592a919d Mon Sep 17 00:00:00 2001 From: Joel Klinghed Date: Tue, 26 Sep 2017 20:09:31 +0200 Subject: Initial commit --- src/monitor.hh | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 src/monitor.hh (limited to 'src/monitor.hh') diff --git a/src/monitor.hh b/src/monitor.hh new file mode 100644 index 0000000..99e172b --- /dev/null +++ b/src/monitor.hh @@ -0,0 +1,62 @@ +#ifndef MONITOR_HH +#define MONITOR_HH + +#include +#include + +class Looper; + +class Monitor { +public: + enum State { + SEARCHING, + CONNECTED, + }; + + struct Machine { + std::string name; + unsigned max_jobs; + + Machine() + : max_jobs(0) { + } + }; + + class Observer { + public: + virtual ~Observer() {} + virtual void state(Monitor* monitor, State state) = 0; + virtual void added_machine(Monitor* monitor, uint32_t id) = 0; + virtual void updated_machine(Monitor* monitor, uint32_t id) = 0; + virtual void removed_machine(Monitor* monitor, uint32_t id) = 0; + virtual void added_job(Monitor* monitor, uint32_t source_id, + uint32_t target_id) = 0; + virtual void removed_job(Monitor* monitor, uint32_t source_id, + uint32_t target_id) = 0; + + protected: + Observer() {} + }; + + virtual ~Monitor() {} + + static Monitor* create(std::shared_ptr const& looper); + + virtual void connect(std::string const& netname = std::string(), + std::string const& scheduler = std::string(), + uint16_t port = 0) = 0; + virtual void disconnect() = 0; + virtual size_t machines() const = 0; + virtual uint32_t id(size_t index) const = 0; + virtual Machine machine_at(size_t index) const = 0; + virtual Machine machine(uint32_t id) const = 0; + + virtual void add_observer(Observer* observer) = 0; + +protected: + Monitor() {} + Monitor(Monitor const&) = delete; + Monitor& operator=(Monitor const&) = delete; +}; + +#endif // MONITOR_HH -- cgit v1.3