diff --git a/src/libs/ice/ICEByteBuffer.cpp b/src/libs/ice/ICEByteBuffer.cpp index 4f99e8c4..ffc6d180 100644 --- a/src/libs/ice/ICEByteBuffer.cpp +++ b/src/libs/ice/ICEByteBuffer.cpp @@ -53,6 +53,10 @@ ByteBuffer::ByteBuffer(const void* packetPtr, size_t packetSize, CopyBehavior be } } +ByteBuffer::ByteBuffer(const std::span& packet, CopyBehavior behavior) + : ByteBuffer(packet.data(), packet.size(), behavior) +{} + ByteBuffer::~ByteBuffer() { if (mCopyBehavior == CopyBehavior::CopyMemory) @@ -105,6 +109,11 @@ uint8_t* ByteBuffer::mutableData() return mDataPtr; } +std::span ByteBuffer::span() +{ + return {mDataPtr, mDataSize}; +} + NetworkAddress& ByteBuffer::remoteAddress() { return mRemoteAddress; diff --git a/src/libs/ice/ICEByteBuffer.h b/src/libs/ice/ICEByteBuffer.h index ac848059..84ec1171 100644 --- a/src/libs/ice/ICEByteBuffer.h +++ b/src/libs/ice/ICEByteBuffer.h @@ -12,6 +12,7 @@ #include #include #include +#include #include "ICETypes.h" #include "ICEAddress.h" @@ -30,6 +31,8 @@ namespace ice ByteBuffer(size_t initialCapacity); ByteBuffer(const ByteBuffer& src); ByteBuffer(const void* packetPtr, size_t packetSize, CopyBehavior behavior = CopyBehavior::CopyMemory); + ByteBuffer(const std::span& packet, CopyBehavior behavior = CopyBehavior::CopyMemory); + ~ByteBuffer(); ByteBuffer& operator = (const ByteBuffer& src); @@ -39,6 +42,7 @@ namespace ice size_t size() const; const uint8_t* data() const; uint8_t* mutableData(); + std::span span(); NetworkAddress& remoteAddress(); void setRemoteAddress(const NetworkAddress& addr);