forked from sixonionpotatoes/commons
add basic serialization functionallity
This commit is contained in:
@@ -22,24 +22,14 @@ class server {
|
||||
void do_receive() {
|
||||
spdlog::debug("do receive");
|
||||
socket_.async_receive_from(
|
||||
boost::asio::buffer(data_, max_length), sender_endpoint_,
|
||||
boost::asio::buffer(data_.data(), max_length), sender_endpoint_,
|
||||
[this](boost::system::error_code ec, std::size_t bytes_recvd) {
|
||||
if (!ec && bytes_recvd > 0) {
|
||||
std::cout << data_ << std::endl;
|
||||
|
||||
auto* msg_obj =
|
||||
reinterpret_cast<commons::protocol::generic_message_base*>(
|
||||
data_);
|
||||
spdlog::debug("Object Type: {}",
|
||||
static_cast<int>(msg_obj->get_type()));
|
||||
spdlog::debug("Object Size: {}", msg_obj->get_size());
|
||||
|
||||
auto* casted_obj =
|
||||
reinterpret_cast<commons::protocol::draw_rectangle*>(msg_obj);
|
||||
spdlog::debug("Position: X = {}, Y = {}", casted_obj->position.x,
|
||||
casted_obj->position.y);
|
||||
auto msg_obj = deserialize(data_.data(), bytes_recvd);
|
||||
msg_obj->handle_message();
|
||||
|
||||
do_send(bytes_recvd);
|
||||
spdlog::debug("leaving do receive");
|
||||
} else {
|
||||
do_receive();
|
||||
}
|
||||
@@ -47,7 +37,8 @@ class server {
|
||||
}
|
||||
|
||||
void do_send(std::size_t length) {
|
||||
socket_.async_send_to(boost::asio::buffer(data_, length), sender_endpoint_,
|
||||
socket_.async_send_to(boost::asio::buffer(data_.data(), length),
|
||||
sender_endpoint_,
|
||||
[this](boost::system::error_code /*ec*/,
|
||||
std::size_t /*bytes_sent*/) { do_receive(); });
|
||||
}
|
||||
@@ -56,7 +47,7 @@ class server {
|
||||
udp::socket socket_;
|
||||
udp::endpoint sender_endpoint_;
|
||||
enum { max_length = 1024 };
|
||||
char data_[max_length];
|
||||
std::array<char, max_length> data_;
|
||||
};
|
||||
|
||||
} // namespace commons
|
||||
|
||||
Reference in New Issue
Block a user