diff options
| author | Felix Morgner <felix.morgner@gmail.com> | 2018-11-30 18:15:57 +0100 |
|---|---|---|
| committer | Felix Morgner <felix.morgner@gmail.com> | 2018-11-30 18:15:57 +0100 |
| commit | 1ba42445a5a97e1b09fc9671602594d3e3695063 (patch) | |
| tree | 320cc08bb94620a7978ca11a948ecca40b09a6e4 | |
| parent | 7d9300894ad1a6e2954332188fe0045e32bc459a (diff) | |
| download | wanda-1ba42445a5a97e1b09fc9671602594d3e3695063.tar.xz wanda-1ba42445a5a97e1b09fc9671602594d3e3695063.zip | |
core: extract message constants
| -rw-r--r-- | src/commander.cpp | 2 | ||||
| -rw-r--r-- | src/control_interface.cpp | 20 | ||||
| -rw-r--r-- | src/message.hpp | 14 |
3 files changed, 26 insertions, 10 deletions
diff --git a/src/commander.cpp b/src/commander.cpp index 98fc0d0..5c15ef9 100644 --- a/src/commander.cpp +++ b/src/commander.cpp @@ -25,7 +25,7 @@ void commander::start() m_connection = wanda::make_control_connection(std::move(m_socket)); m_connection->add(this); m_connection->start(); - m_connection->send({"C", "HELLO", "1.0.0"}); + m_connection->send({message_source_controller, message_command_hello, message_argument_hello}); } }); } diff --git a/src/control_interface.cpp b/src/control_interface.cpp index 92d5def..85d1dca 100644 --- a/src/control_interface.cpp +++ b/src/control_interface.cpp @@ -100,14 +100,20 @@ void control_interface::on_received(control_connection::pointer connection, mess return; } - switch (connection->current_state()) + if (message.source != message_source_controller) { - case control_connection::state::fresh: - if (message.command == "HELLO") - { - connection->send({"D", "HELLO", "1.0.0"}); - connection->update(control_connection::state::established); - } + // TODO: Handle illegal message source + return; + } + + if (auto state = connection->current_state(); message.command == message_command_hello && state == control_connection::state::fresh) + { + connection->send({message_source_daemon, message_command_hello, message_argument_hello}); + connection->update(control_connection::state::established); + } + else + { + // TODO: Handle unexpected message } } diff --git a/src/message.hpp b/src/message.hpp index f34d19c..a834b15 100644 --- a/src/message.hpp +++ b/src/message.hpp @@ -9,6 +9,16 @@ namespace wanda { +inline namespace v1 +{ +auto constexpr message_argument_hello = "1.0.0"; +} + +auto constexpr message_source_controller = "C"; +auto constexpr message_source_daemon = "D"; + +auto constexpr message_command_hello = "HELLO"; + struct message { explicit operator std::string() const; @@ -20,8 +30,8 @@ struct message std::optional<std::string> argument; }; -std::istream & operator>>(std::istream & in, message & message); -std::ostream & operator<<(std::ostream & out, message const & message); +std::istream &operator>>(std::istream &in, message &message); +std::ostream &operator<<(std::ostream &out, message const &message); } // namespace wanda |
