TOSAsync
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user