- support std::span in ByteBuffer

This commit is contained in:
Dmytro Bogovych 2025-07-23 08:36:41 +03:00
parent 9dc59d5ed6
commit ebc9c3220e
2 changed files with 13 additions and 0 deletions

View File

@ -53,6 +53,10 @@ ByteBuffer::ByteBuffer(const void* packetPtr, size_t packetSize, CopyBehavior be
} }
} }
ByteBuffer::ByteBuffer(const std::span<const uint8_t>& packet, CopyBehavior behavior)
: ByteBuffer(packet.data(), packet.size(), behavior)
{}
ByteBuffer::~ByteBuffer() ByteBuffer::~ByteBuffer()
{ {
if (mCopyBehavior == CopyBehavior::CopyMemory) if (mCopyBehavior == CopyBehavior::CopyMemory)
@ -105,6 +109,11 @@ uint8_t* ByteBuffer::mutableData()
return mDataPtr; return mDataPtr;
} }
std::span<const uint8_t> ByteBuffer::span()
{
return {mDataPtr, mDataSize};
}
NetworkAddress& ByteBuffer::remoteAddress() NetworkAddress& ByteBuffer::remoteAddress()
{ {
return mRemoteAddress; return mRemoteAddress;

View File

@ -12,6 +12,7 @@
#include <vector> #include <vector>
#include <string> #include <string>
#include <memory> #include <memory>
#include <span>
#include "ICETypes.h" #include "ICETypes.h"
#include "ICEAddress.h" #include "ICEAddress.h"
@ -30,6 +31,8 @@ namespace ice
ByteBuffer(size_t initialCapacity); ByteBuffer(size_t initialCapacity);
ByteBuffer(const ByteBuffer& src); ByteBuffer(const ByteBuffer& src);
ByteBuffer(const void* packetPtr, size_t packetSize, CopyBehavior behavior = CopyBehavior::CopyMemory); ByteBuffer(const void* packetPtr, size_t packetSize, CopyBehavior behavior = CopyBehavior::CopyMemory);
ByteBuffer(const std::span<const uint8_t>& packet, CopyBehavior behavior = CopyBehavior::CopyMemory);
~ByteBuffer(); ~ByteBuffer();
ByteBuffer& operator = (const ByteBuffer& src); ByteBuffer& operator = (const ByteBuffer& src);
@ -39,6 +42,7 @@ namespace ice
size_t size() const; size_t size() const;
const uint8_t* data() const; const uint8_t* data() const;
uint8_t* mutableData(); uint8_t* mutableData();
std::span<const uint8_t> span();
NetworkAddress& remoteAddress(); NetworkAddress& remoteAddress();
void setRemoteAddress(const NetworkAddress& addr); void setRemoteAddress(const NetworkAddress& addr);