diff options
| author | Felix Morgner <felix.morgner@gmail.com> | 2018-12-01 19:03:33 +0100 |
|---|---|---|
| committer | Felix Morgner <felix.morgner@gmail.com> | 2018-12-01 19:03:33 +0100 |
| commit | 2be129ac64d2540dc42f89bac85d24d4557aa59f (patch) | |
| tree | 1df65973d162a1c36ab75c06b7101a81285160ea /src/commander.hpp | |
| parent | 927caf94ad0d7b98d4b2c3833da8f0f2707d4f87 (diff) | |
| download | wanda-2be129ac64d2540dc42f89bac85d24d4557aa59f.tar.xz wanda-2be129ac64d2540dc42f89bac85d24d4557aa59f.zip | |
wandac: implement very basic command line interface
Diffstat (limited to 'src/commander.hpp')
| -rw-r--r-- | src/commander.hpp | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/src/commander.hpp b/src/commander.hpp index e7d68af..abc7643 100644 --- a/src/commander.hpp +++ b/src/commander.hpp @@ -9,16 +9,39 @@ #include <filesystem> #include <memory> +#include <optional> #include <string> +#include <vector> namespace wanda { struct commander : wanda::control_connection::listener { - commander(asio::io_service &service, std::filesystem::path socket, std::shared_ptr<spdlog::logger> logger); + enum struct command_id : char + { + change, + }; + + struct command + { + command_id const id; + std::vector<std::string> const arguments; + + std::optional<wanda::message> message() const; + }; + + struct listener + { + virtual void on_connected(commander & commander) { }; + virtual void on_response(commander & commander, std::string response) { }; + virtual void on_error(commander & commander, std::string error) { }; + }; + + commander(asio::io_service &service, std::filesystem::path socket, listener & listener, std::shared_ptr<spdlog::logger> logger); void start(); + void send(command command); void on_error(control_connection::pointer connection, std::error_code error) override; void on_received(control_connection::pointer connection, message message) override; @@ -28,6 +51,7 @@ private: wanda::control_connection::protocol::endpoint m_endpoint; wanda::control_connection::protocol::socket m_socket; wanda::control_connection::pointer m_connection; + listener & m_listener; std::shared_ptr<spdlog::logger> m_logger; }; |
