diff options
| author | Felix Morgner <felix.morgner@gmail.com> | 2018-12-01 19:59:51 +0100 |
|---|---|---|
| committer | Felix Morgner <felix.morgner@gmail.com> | 2018-12-01 19:59:51 +0100 |
| commit | 63ec195c36dc331cd77df721d45449a642e8a546 (patch) | |
| tree | f9fc76c1965b35258825959935b1112f34077918 /src/control_interface.hpp | |
| parent | 56e57082a7e543155fcf583d146f4e130456ca73 (diff) | |
| download | wanda-63ec195c36dc331cd77df721d45449a642e8a546.tar.xz wanda-63ec195c36dc331cd77df721d45449a642e8a546.zip | |
wandad: implement command handler for change
Diffstat (limited to 'src/control_interface.hpp')
| -rw-r--r-- | src/control_interface.hpp | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/src/control_interface.hpp b/src/control_interface.hpp index 35f7f4f..2ac32be 100644 --- a/src/control_interface.hpp +++ b/src/control_interface.hpp @@ -1,6 +1,7 @@ #ifndef WANDA_CONTROL_INTERFACE_HPP #define WANDA_CONTROL_INTERFACE_HPP +#include "command.hpp" #include "control_connection.hpp" #include "keyed.hpp" @@ -32,7 +33,12 @@ struct control_interface : control_connection::listener, keyed<control_interface using protocol = asio::local::stream_protocol; using pointer = std::shared_ptr<control_interface>; - control_interface(key, asio::io_service &service, protocol::endpoint endpoint, std::shared_ptr<spdlog::logger> logger); + struct listener + { + virtual void on_received(control_interface & interface, command command) { }; + }; + + control_interface(key, asio::io_service &service, protocol::endpoint endpoint, listener & listener, std::shared_ptr<spdlog::logger> logger); std::error_code start(); std::error_code shutdown(); @@ -43,18 +49,19 @@ struct control_interface : control_connection::listener, keyed<control_interface private: void perform_accept(); - friend pointer make_interface(asio::io_service &service, std::filesystem::path file, std::shared_ptr<spdlog::logger> logger); + friend pointer make_interface(asio::io_service &service, std::filesystem::path file, control_interface::listener & listener, std::shared_ptr<spdlog::logger> logger); asio::io_service &m_service; protocol::endpoint m_endpoint; protocol::socket m_socket; protocol::acceptor m_acceptor; + listener & m_listener; socket_deleter m_deleter{m_endpoint.path()}; std::set<control_connection::pointer> m_connections; std::shared_ptr<spdlog::logger> m_logger; }; -control_interface::pointer make_interface(asio::io_service &service, std::filesystem::path file, std::shared_ptr<spdlog::logger> logger); +control_interface::pointer make_interface(asio::io_service &service, std::filesystem::path file, control_interface::listener & listener, std::shared_ptr<spdlog::logger> logger); } // namespace wanda |
