diff options
| author | Felix Morgner <felix.morgner@gmail.com> | 2018-12-01 19:22:43 +0100 |
|---|---|---|
| committer | Felix Morgner <felix.morgner@gmail.com> | 2018-12-01 19:22:43 +0100 |
| commit | 753c0c35b3fea2e45cd83849afde303eea5ccd24 (patch) | |
| tree | b5ca02a3fc8b980ec16c994295e1a897751cde0c | |
| parent | 2be129ac64d2540dc42f89bac85d24d4557aa59f (diff) | |
| download | wanda-753c0c35b3fea2e45cd83849afde303eea5ccd24.tar.xz wanda-753c0c35b3fea2e45cd83849afde303eea5ccd24.zip | |
core: extract command
| -rw-r--r-- | CMakeLists.txt | 2 | ||||
| -rw-r--r-- | src/command.cpp | 33 | ||||
| -rw-r--r-- | src/command.hpp | 26 | ||||
| -rw-r--r-- | src/commander.cpp | 27 | ||||
| -rw-r--r-- | src/commander.hpp | 14 | ||||
| -rw-r--r-- | src/wandac.cpp | 3 |
6 files changed, 64 insertions, 41 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index b36e4ad..0f764d3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -22,6 +22,7 @@ include("SystemDependencies") ##### Wanda CORE ##### set(WANDA_CORE_SOURCES + "src/command.cpp" "src/control_connection.cpp" "src/environment.cpp" "src/message.cpp" @@ -29,6 +30,7 @@ set(WANDA_CORE_SOURCES ) set(WANDA_CORE_HEADERS + "src/command.hpp" "src/control_connection.hpp" "src/deferred_failure.hpp" "src/environment.hpp" 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<message> 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 <optional> +#include <string> +#include <vector> + +namespace wanda +{ +enum struct command_id : char +{ + change, +}; + +struct command +{ + command_id const id; + std::vector<std::string> const arguments; + + std::optional<wanda::message> 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<message> 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<spdlog::logger> 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<std::string> const arguments; - - std::optional<wanda::message> 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}); } } |
