aboutsummaryrefslogtreecommitdiff
path: root/src/commander.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/commander.cpp')
-rw-r--r--src/commander.cpp46
1 files changed, 46 insertions, 0 deletions
diff --git a/src/commander.cpp b/src/commander.cpp
new file mode 100644
index 0000000..79294ac
--- /dev/null
+++ b/src/commander.cpp
@@ -0,0 +1,46 @@
+#include "commander.hpp"
+
+#include <iostream>
+
+namespace wanda
+{
+commander::commander(boost::asio::io_service &service, std::filesystem::path socket)
+ : m_endpoint{socket.string()},
+ m_socket{service}
+{
+}
+
+void commander::start()
+{
+ std::clog << "[commander::start] Starting commander on socket '" << m_endpoint.path() << "'\n";
+ m_socket.async_connect(m_endpoint, [&](auto const &error) {
+ if (error)
+ {
+ std::cerr << "[commander::start] error occured: " << error.message() << '\n';
+ }
+ else
+ {
+ std::clog << "[commander::start] Control connection established\n";
+ m_connection = wanda::make_control_connection(std::move(m_socket));
+ m_connection->start();
+ send("C:HELLO:1.0.0\n");
+ m_connection->close();
+ }
+ });
+}
+
+void commander::send(std::string message)
+{
+ if (m_connection)
+ {
+ std::clog << "[commander::send] sending message: " << message;
+ m_connection->send(std::move(message));
+ }
+}
+
+void commander::on_error(wanda::control_connection::pointer connection, boost::system::error_code error)
+{
+ std::cerr << "[commander::on_error] error occured: " << error.message() << '\n';
+}
+
+} // namespace wanda \ No newline at end of file