aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorFelix Morgner <felix.morgner@gmail.com>2018-11-30 18:15:57 +0100
committerFelix Morgner <felix.morgner@gmail.com>2018-11-30 18:15:57 +0100
commit1ba42445a5a97e1b09fc9671602594d3e3695063 (patch)
tree320cc08bb94620a7978ca11a948ecca40b09a6e4 /src
parent7d9300894ad1a6e2954332188fe0045e32bc459a (diff)
downloadwanda-1ba42445a5a97e1b09fc9671602594d3e3695063.tar.xz
wanda-1ba42445a5a97e1b09fc9671602594d3e3695063.zip
core: extract message constants
Diffstat (limited to 'src')
-rw-r--r--src/commander.cpp2
-rw-r--r--src/control_interface.cpp20
-rw-r--r--src/message.hpp14
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