diff options
-rw-r--r-- | src/Network.cpp | 3 | ||||
-rw-r--r-- | src/Stream.cpp | 9 | ||||
-rw-r--r-- | src/Stream.hpp | 3 |
3 files changed, 12 insertions, 3 deletions
diff --git a/src/Network.cpp b/src/Network.cpp index bb92e7f..4280b50 100644 --- a/src/Network.cpp +++ b/src/Network.cpp @@ -98,7 +98,8 @@ void Network::SendPacket(Packet &packet, int compressionThreshold) { stream->WriteVarInt(packetSize.GetCountedSize()); stream->WriteVarInt(packet.GetPacketId()); packet.ToStream(stream.get()); - } + } + stream->Flush(); } std::shared_ptr<Packet> Network::ReceivePacketByPacketId(int packetId, ConnectionState state, StreamInput &stream) { diff --git a/src/Stream.cpp b/src/Stream.cpp index efe37d2..5c99724 100644 --- a/src/Stream.cpp +++ b/src/Stream.cpp @@ -360,9 +360,14 @@ void StreamSocket::ReadData(unsigned char *buffPtr, size_t buffLen) { } void StreamSocket::WriteData(unsigned char *buffPtr, size_t buffLen) { - socket->Write(buffPtr, buffLen); + std::copy(buffPtr, buffPtr + buffLen, std::back_inserter(buffer)); } StreamSocket::StreamSocket(Socket *socketPtr) : socket(socketPtr) { -}
\ No newline at end of file +} + +void StreamSocket::Flush() { + socket->Write(buffer.data(), buffer.size()); + buffer.clear(); +} diff --git a/src/Stream.hpp b/src/Stream.hpp index a7c161b..9b6e5ff 100644 --- a/src/Stream.hpp +++ b/src/Stream.hpp @@ -100,9 +100,12 @@ public: class StreamSocket : public StreamInput, public StreamOutput { Socket *socket; + std::vector<unsigned char> buffer; void ReadData(unsigned char *buffPtr, size_t buffLen) override; void WriteData(unsigned char *buffPtr, size_t buffLen) override; public: StreamSocket(Socket *socketPtr); ~StreamSocket() = default; + + void Flush(); };
\ No newline at end of file |