From 753c0c35b3fea2e45cd83849afde303eea5ccd24 Mon Sep 17 00:00:00 2001 From: Felix Morgner Date: Sat, 1 Dec 2018 19:22:43 +0100 Subject: core: extract command --- src/command.cpp | 33 +++++++++++++++++++++++++++++++++ src/command.hpp | 26 ++++++++++++++++++++++++++ src/commander.cpp | 27 --------------------------- src/commander.hpp | 14 +------------- src/wandac.cpp | 3 ++- 5 files changed, 62 insertions(+), 41 deletions(-) create mode 100644 src/command.cpp create mode 100644 src/command.hpp (limited to 'src') diff --git a/src/command.cpp b/src/command.cpp new file mode 100644 index 0000000..092d69d --- /dev/null +++ b/src/command.cpp @@ -0,0 +1,33 @@ +#include "command.hpp" + +namespace wanda +{ + +std::optional command::message() const +{ + using namespace std::string_literals; + auto const command = [this] { + switch (id) + { + case command_id::change: + return "CHANGE"s; + default: + return ""s; + } + }(); + + auto argument_string = std::string{}; + for (int index = 0ul; index < arguments.size(); ++index) + { + argument_string += (index) ? "," + arguments[index] : arguments[index]; + } + + if (command.empty()) + { + return std::nullopt; + } + + return wanda::message{"C", command, argument_string}; +} + +} // namespace wanda \ No newline at end of file diff --git a/src/command.hpp b/src/command.hpp new file mode 100644 index 0000000..f4d7b31 --- /dev/null +++ b/src/command.hpp @@ -0,0 +1,26 @@ +#ifndef WANDA_COMMAND_HPP +#define WANDA_COMMAND_HPP + +#include "message.hpp" + +#include +#include +#include + +namespace wanda +{ +enum struct command_id : char +{ + change, +}; + +struct command +{ + command_id const id; + std::vector const arguments; + + std::optional message() const; +}; +} // namespace wanda + +#endif \ No newline at end of file diff --git a/src/commander.cpp b/src/commander.cpp index 21bf4f5..83f3943 100644 --- a/src/commander.cpp +++ b/src/commander.cpp @@ -7,33 +7,6 @@ namespace wanda { -std::optional commander::command::message() const -{ - using namespace std::string_literals; - auto const command = [this] { - switch (id) - { - case command_id::change: - return "CHANGE"s; - default: - return ""s; - } - }(); - - auto argument_string = std::string{}; - for(int index = 0ul; index < arguments.size(); ++index) - { - argument_string += (index) ? "," + arguments[index] : arguments[index]; - } - - if(command.empty()) - { - return std::nullopt; - } - - return wanda::message{"C", command, argument_string}; -} - commander::commander(asio::io_service &service, std::filesystem::path socket, listener &listener, std::shared_ptr logger) : m_service{service}, m_endpoint{socket.string()}, diff --git a/src/commander.hpp b/src/commander.hpp index abc7643..57041a0 100644 --- a/src/commander.hpp +++ b/src/commander.hpp @@ -1,6 +1,7 @@ #ifndef WANDA_COMMANDER_HPP #define WANDA_COMMANDER_HPP +#include "command.hpp" #include "control_connection.hpp" #include "message.hpp" @@ -18,19 +19,6 @@ namespace wanda struct commander : wanda::control_connection::listener { - enum struct command_id : char - { - change, - }; - - struct command - { - command_id const id; - std::vector const arguments; - - std::optional message() const; - }; - struct listener { virtual void on_connected(commander & commander) { }; diff --git a/src/wandac.cpp b/src/wandac.cpp index dee86f0..e2da2a1 100644 --- a/src/wandac.cpp +++ b/src/wandac.cpp @@ -1,3 +1,4 @@ +#include "command.hpp" #include "commander.hpp" #include "environment.hpp" #include "xdg.hpp" @@ -59,7 +60,7 @@ struct listener : wanda::commander::listener { if (m_cli.command == "change") { - commander.send({wanda::commander::command_id::change}); + commander.send({wanda::command_id::change}); } } -- cgit v1.2.3