Получение пакетов клиентом

This commit is contained in:
2025-02-09 23:52:04 +06:00
parent 871b03632e
commit cea3a0ca28
26 changed files with 927 additions and 269 deletions

View File

@@ -1,6 +1,7 @@
#include "Net.hpp"
#include <TOSLib.hpp>
#include <boost/asio/buffer.hpp>
#include <boost/asio/socket_base.hpp>
namespace LV::Net {
@@ -17,15 +18,14 @@ bool Server::isStopped() {
void Server::stop() {
NeedClose = true;
NeedClose.notify_all();
if(Acceptor.is_open())
Acceptor.close();
}
void Server::wait() {
if(!IsAlive)
return;
Lock.wait();
while(bool val = IsAlive)
IsAlive.wait(val);
}
coro<void> Server::async_wait() {
@@ -45,6 +45,7 @@ coro<void> Server::run() {
}
IsAlive.store(false);
IsAlive.notify_all();
Lock.cancel();
}
@@ -56,6 +57,7 @@ AsyncSocket::~AsyncSocket() {
SendPackets.Context->NeedShutdown = true;
SendPackets.SenderGuard.cancel();
WorkDeadline.cancel();
}
void AsyncSocket::pushPackets(std::vector<Packet> *simplePackets, std::vector<SmartPacket> *smartPackets) {
@@ -135,6 +137,10 @@ coro<> AsyncSocket::read(std::byte *data, uint32_t size) {
}
}
void AsyncSocket::closeRead() {
Socket.shutdown(boost::asio::socket_base::shutdown_receive);
}
coro<> AsyncSocket::waitForSend() {
asio::deadline_timer waiter(IOC);
@@ -249,8 +255,7 @@ coro<tcp::socket> asyncConnectTo(const std::string address, std::function<void(c
if(!re) {
re = Str::match(address, "([-_\\.\\w\\d]+)(?:\\:(\\d+))?");
if(!re) {
addLog("Не удалось разобрать адрес");
co_return nullptr;
MAKE_ERROR("Не удалось разобрать адрес");
}
tcp::resolver resv{ioc};
@@ -288,8 +293,7 @@ coro<tcp::socket> asyncConnectTo(const std::string address, std::function<void(c
}
}
addLog("Не удалось подключится к серверу");
MAKE_ERROR(progress);
MAKE_ERROR("Не удалось подключится к серверу");
}
}