From e47821416ab829cfaf4e5f4da83fc49ce4321a94 Mon Sep 17 00:00:00 2001 From: Anonymous-275 Date: Wed, 31 Mar 2021 01:11:22 +0300 Subject: [PATCH] Queue packets in SendAll --- include/Client.h | 2 +- src/Client.cpp | 2 +- src/TNetwork.cpp | 17 +++++++++++++---- 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/include/Client.h b/include/Client.h index f00f079..10ba839 100644 --- a/include/Client.h +++ b/include/Client.h @@ -56,7 +56,7 @@ public: void SetIsGuest(bool NewIsGuest) { mIsGuest = NewIsGuest; } void SetIsSynced(bool NewIsSynced) { mIsSynced = NewIsSynced; } void SetIsSyncing(bool NewIsSyncing) { mIsSyncing = NewIsSyncing; } - void EnqueueMissedPacketDuringSyncing(const std::string& Packet); + void EnqueuePacket(const std::string& Packet); [[nodiscard]] std::queue& MissedPacketQueue() { return mMissedPacketsDuringSyncing; } [[nodiscard]] const std::queue& MissedPacketQueue() const { return mMissedPacketsDuringSyncing; } [[nodiscard]] size_t MissedPacketQueueSize() const { return mMissedPacketsDuringSyncing.size(); } diff --git a/src/Client.cpp b/src/Client.cpp index d66de5a..ae0f325 100644 --- a/src/Client.cpp +++ b/src/Client.cpp @@ -69,7 +69,7 @@ TServer& TClient::Server() const { return mServer; } -void TClient::EnqueueMissedPacketDuringSyncing(const std::string& Packet) { +void TClient::EnqueuePacket(const std::string& Packet) { std::unique_lock Lock(mMissedPacketsMutex); mMissedPacketsDuringSyncing.push(Packet); } diff --git a/src/TNetwork.cpp b/src/TNetwork.cpp index a2b9e57..8c6aab9 100644 --- a/src/TNetwork.cpp +++ b/src/TNetwork.cpp @@ -357,12 +357,12 @@ bool TNetwork::TCPSend(TClient& c, const std::string& Data, bool IsSync) { //std::unique_lock Lock(c.MissedPacketQueueMutex()); if(!Data.empty()) { if (Data.at(0) == 'O' || Data.at(0) == 'A' || Data.at(0) == 'C' || Data.at(0) == 'E') { - c.EnqueueMissedPacketDuringSyncing(Data); + c.EnqueuePacket(Data); } } return true; } else if (!c.IsSyncing() && c.IsSynced() && c.MissedPacketQueueSize() != 0) { - debug("sending " + std::to_string(c.MissedPacketQueueSize()) + " missed packets"); + debug("sending " + std::to_string(c.MissedPacketQueueSize()) + " queued packets"); while (c.MissedPacketQueueSize() > 0) { std::string QData {}; { // locked context @@ -389,6 +389,8 @@ bool TNetwork::TCPSend(TClient& c, const std::string& Data, bool IsSync) { } } } + + int32_t Size, Sent; std::string Send(4, 0); Size = int32_t(Data.size()); @@ -860,9 +862,16 @@ void TNetwork::SendToAll(TClient* c, const std::string& Data, bool Self, bool Re if (Client->IsSynced() || Client->IsSyncing()) { if (Rel || C == 'W' || C == 'Y' || C == 'V' || C == 'E') { if (C == 'O' || C == 'T' || Data.length() > 1000) { - ret = SendLarge(*Client, Data); + if (Data.length() > 400) { + std::string CMP(Comp(Data)); + Client->EnqueuePacket("ABG:" + CMP); + }else{ + Client->EnqueuePacket(Data); + } + //ret = SendLarge(*Client, Data); } else { - ret = TCPSend(*Client, Data); + Client->EnqueuePacket(Data); + //ret = TCPSend(*Client, Data); } } else { ret = UDPSend(*Client, Data);