diff options
Diffstat (limited to 'src')
| -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 |
