diff --git a/tests/umb_echo_server.cpp b/tests/umb_echo_server.cpp index 767aa8d..8800072 100644 --- a/tests/umb_echo_server.cpp +++ b/tests/umb_echo_server.cpp @@ -22,8 +22,9 @@ * */ -#include #include +#include +#include #include #include @@ -51,6 +52,7 @@ awaitable echo(tcp::socket socket) { try { + std::shared_ptr msg; std::array data{}; std::array msg_buf{}; @@ -77,7 +79,48 @@ awaitable echo(tcp::socket socket) const auto type = static_cast( data[2] | (data[3] << 8)); - std::cout << std::format("type: {}\n", testmessages::umb::meta::to_string(type)); + const auto mt_str = testmessages::umb::meta::to_string(type); + std::cout << std::format("type: {}\n", mt_str); + + const auto payload = std::span{data.data(), size}; + + switch (type) + { + case testmessages::umb::MessageType::GetSomeStuff: + msg = std::make_shared(); + msg->from_bytes(payload); + break; + case testmessages::umb::MessageType::BoolPackingMessage: + msg = std::make_shared(); + msg->from_bytes(payload); + break; + case testmessages::umb::MessageType::testmsg: + msg = std::make_shared(); + msg->from_bytes(payload); + break; + case testmessages::umb::MessageType::JustAnotherTestMessage: + msg = std::make_shared(); + msg->from_bytes(payload); + break; + case testmessages::umb::MessageType::DualStringMessage: + msg = std::make_shared(); + msg->from_bytes(payload); + break; + case testmessages::umb::MessageType::MultiStringMessage: + msg = std::make_shared(); + msg->from_bytes(payload); + break; + case testmessages::umb::MessageType::STATIC_BoolPackingMessage: + msg = std::make_shared(); + msg->from_bytes(payload); + break; + + case testmessages::umb::MessageType::None: + default: + throw std::runtime_error( + std::format("invalid MessageType: {}", + std::to_string(static_cast(type)))); + } co_await async_write(socket, boost::asio::buffer(data, n), use_awaitable); }