aboutsummaryrefslogtreecommitdiff
path: root/src/control_interface.hpp
diff options
context:
space:
mode:
authorFelix Morgner <felix.morgner@gmail.com>2018-12-01 19:59:51 +0100
committerFelix Morgner <felix.morgner@gmail.com>2018-12-01 19:59:51 +0100
commit63ec195c36dc331cd77df721d45449a642e8a546 (patch)
treef9fc76c1965b35258825959935b1112f34077918 /src/control_interface.hpp
parent56e57082a7e543155fcf583d146f4e130456ca73 (diff)
downloadwanda-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.hpp13
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