This commit is contained in:
2025-03-11 19:37:36 +06:00
parent e190c79d00
commit 1710eb974d
10 changed files with 178 additions and 64 deletions

View File

@@ -3,28 +3,33 @@
#include "Common/Net.hpp"
#include "Server/Abstract.hpp"
#include <boost/asio/error.hpp>
#include <boost/chrono/duration.hpp>
#include <boost/system/system_error.hpp>
#include <exception>
#include <unordered_map>
#include <unordered_set>
#include "World.hpp"
#include "boost/asio/steady_timer.hpp"
#include <Common/Packets.hpp>
namespace LV::Server {
RemoteClient::~RemoteClient() {
coro<> RemoteClient::asyncDestructor() {
shutdown(EnumDisconnect::ByInterface, "~RemoteClient()");
if(Socket.isAlive()) {
Socket.closeRead();
}
UseLock.wait_no_use();
asio::steady_timer deadline(IOC);
deadline.expires_after(std::chrono::seconds(1));
Socket.closeRead();
co_await (deadline.async_wait(asio::use_awaitable) || RunCoro.async_wait());
Socket.close();
co_await deadline.async_wait();
}
coro<> RemoteClient::run() {
auto useLock = UseLock.lock();
RemoteClient::~RemoteClient() = default;
coro<> RemoteClient::run() {
try {
while(!IsGoingShutdown && IsConnected) {
co_await readPacket(Socket);