From 6f161f655942f2ca0091a75cdab8e3260e31bb5f Mon Sep 17 00:00:00 2001 From: Rubidium Date: Sun, 18 Apr 2021 10:49:12 +0200 Subject: Codechange: encapsulate the logic about how many bytes can be sent from a buffer in to a Packet --- src/network/core/packet.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'src/network/core/packet.cpp') diff --git a/src/network/core/packet.cpp b/src/network/core/packet.cpp index 6e6bb51c0..c033aec98 100644 --- a/src/network/core/packet.cpp +++ b/src/network/core/packet.cpp @@ -175,6 +175,21 @@ void Packet::Send_string(const char *data) while ((this->buffer[this->size++] = *data++) != '\0') {} } +/** + * Send as many of the bytes as possible in the packet. This can mean + * that it is possible that not all bytes are sent. To cope with this + * the function returns the amount of bytes that were actually sent. + * @param begin The begin of the buffer to send. + * @param end The end of the buffer to send. + * @return The number of bytes that were added to this packet. + */ +size_t Packet::Send_bytes(const byte *begin, const byte *end) +{ + size_t amount = std::min(end - begin, SEND_MTU - this->size); + memcpy(this->buffer + this->size, begin, amount); + this->size += static_cast(amount); + return amount; +} /* * Receiving commands -- cgit v1.2.3-70-g09d2