refactor
This commit is contained in:
@@ -201,9 +201,8 @@ void packet_server::initialize(const uint16_t &port, uint8_t pool_size) {
|
||||
void packet_server::listen_for_connection(tcp::acceptor &acceptor) {
|
||||
auto conn =
|
||||
std::make_shared<packet_server::connection>(io_context_, acceptor);
|
||||
acceptor.async_accept(conn->socket, [this, conn](auto &&err) {
|
||||
on_accept(conn, std::forward<decltype(err)>(err));
|
||||
});
|
||||
acceptor.async_accept(conn->socket,
|
||||
[this, conn](auto &&err) { on_accept(conn, err); });
|
||||
}
|
||||
|
||||
void packet_server::on_accept(std::shared_ptr<connection> conn,
|
||||
@@ -219,14 +218,17 @@ void packet_server::on_accept(std::shared_ptr<connection> conn,
|
||||
|
||||
conn->socket.set_option(boost::asio::ip::tcp::no_delay(true));
|
||||
conn->socket.set_option(boost::asio::socket_base::linger(false, 0));
|
||||
conn->socket.set_option(boost::asio::socket_base::keep_alive(true));
|
||||
|
||||
if (not handshake(conn)) {
|
||||
conn->socket.close();
|
||||
return;
|
||||
}
|
||||
boost::asio::dispatch(conn->socket.get_executor(), [this, conn]() {
|
||||
if (not handshake(conn)) {
|
||||
conn->socket.close();
|
||||
return;
|
||||
}
|
||||
|
||||
packet response;
|
||||
send_response(conn, 0, response);
|
||||
packet response;
|
||||
send_response(conn, 0, response);
|
||||
});
|
||||
}
|
||||
|
||||
void packet_server::read_header(std::shared_ptr<connection> conn) {
|
||||
@@ -236,14 +238,15 @@ void packet_server::read_header(std::shared_ptr<connection> conn) {
|
||||
boost::asio::async_read(
|
||||
conn->socket,
|
||||
boost::asio::buffer(conn->buffer.data(), conn->buffer.size()),
|
||||
[this, conn](boost::system::error_code err, std::size_t) {
|
||||
[this, conn](auto &&err, auto &&) {
|
||||
if (err) {
|
||||
remove_client(*conn);
|
||||
repertory::utils::error::raise_error(function_name, err.message());
|
||||
return;
|
||||
}
|
||||
|
||||
auto to_read = *reinterpret_cast<std::uint32_t *>(conn->buffer.data());
|
||||
std::uint32_t to_read{};
|
||||
std::memcpy(&to_read, conn->buffer.data(), sizeof(to_read));
|
||||
boost::endian::big_to_native_inplace(to_read);
|
||||
read_packet(conn, to_read);
|
||||
});
|
||||
@@ -355,15 +358,15 @@ void packet_server::send_response(std::shared_ptr<connection> conn,
|
||||
response.encrypt(encryption_token_);
|
||||
response.to_buffer(conn->buffer);
|
||||
|
||||
boost::asio::async_write(
|
||||
conn->socket, boost::asio::buffer(conn->buffer),
|
||||
[this, conn](boost::system::error_code err, std::size_t /*length*/) {
|
||||
if (err) {
|
||||
remove_client(*conn);
|
||||
utils::error::raise_error(function_name, err.message());
|
||||
} else {
|
||||
read_header(conn);
|
||||
}
|
||||
});
|
||||
boost::asio::async_write(conn->socket, boost::asio::buffer(conn->buffer),
|
||||
[this, conn](auto &&err, auto &&) {
|
||||
if (err) {
|
||||
remove_client(*conn);
|
||||
utils::error::raise_error(function_name,
|
||||
err.message());
|
||||
} else {
|
||||
read_header(conn);
|
||||
}
|
||||
});
|
||||
}
|
||||
} // namespace repertory
|
||||
|
Reference in New Issue
Block a user