Move ArrayView, Buffer and related to webrtc namespace

Bug: webrtc:42232595
Change-Id: Idcd603d534eda6a5c1eea36d2c1c1e80c19fa0ca
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/376561
Reviewed-by: Tomas Gunnarsson <tommi@webrtc.org>
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Commit-Queue: Evan Shrubsole <eshr@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#43863}
This commit is contained in:
Evan Shrubsole 2025-02-07 13:24:05 +00:00 committed by WebRTC LUCI CQ
parent e42988ec0e
commit fe5bdd75e0
13 changed files with 68 additions and 37 deletions

View File

@ -20,7 +20,7 @@
#include "rtc_base/checks.h"
#include "rtc_base/type_traits.h"
namespace rtc {
namespace webrtc {
// tl;dr: rtc::ArrayView is the same thing as gsl::span from the Guideline
// Support Library.
@ -330,6 +330,16 @@ inline ArrayView<U, Size> reinterpret_array_view(ArrayView<T, Size> view) {
return ArrayView<U, Size>(reinterpret_cast<U*>(view.data()), view.size());
}
} // namespace webrtc
// Re-export symbols from the webrtc namespace for backwards compatibility.
// TODO(bugs.webrtc.org/4222596): Remove once all references are updated.
namespace rtc {
template <typename T,
std::ptrdiff_t Size = webrtc::array_view_internal::kArrayViewVarSize>
using ArrayView = ::webrtc::ArrayView<T, Size>;
using ::webrtc::MakeArrayView;
using ::webrtc::reinterpret_array_view;
} // namespace rtc
#endif // API_ARRAY_VIEW_H_

View File

@ -23,7 +23,7 @@
#include "test/gmock.h"
#include "test/gtest.h"
namespace rtc {
namespace webrtc {
namespace {
@ -300,11 +300,11 @@ TEST(ArrayViewTest, TestStdArray) {
constexpr size_t size = 5;
std::array<float, size> arr{};
// Fixed size view.
rtc::ArrayView<float, size> arr_view_fixed(arr);
ArrayView<float, size> arr_view_fixed(arr);
EXPECT_EQ(arr.data(), arr_view_fixed.data());
static_assert(size == arr_view_fixed.size(), "");
// Variable size view.
rtc::ArrayView<float> arr_view(arr);
ArrayView<float> arr_view(arr);
EXPECT_EQ(arr.data(), arr_view.data());
EXPECT_EQ(size, arr_view.size());
}
@ -313,17 +313,17 @@ TEST(ArrayViewTest, TestConstStdArray) {
constexpr size_t size = 5;
constexpr std::array<float, size> constexpr_arr{};
rtc::ArrayView<const float, size> constexpr_arr_view(constexpr_arr);
ArrayView<const float, size> constexpr_arr_view(constexpr_arr);
EXPECT_EQ(constexpr_arr.data(), constexpr_arr_view.data());
static_assert(constexpr_arr.size() == constexpr_arr_view.size(), "");
const std::array<float, size> const_arr{};
rtc::ArrayView<const float, size> const_arr_view(const_arr);
ArrayView<const float, size> const_arr_view(const_arr);
EXPECT_EQ(const_arr.data(), const_arr_view.data());
static_assert(const_arr.size() == const_arr_view.size(), "");
std::array<float, size> non_const_arr{};
rtc::ArrayView<const float, size> non_const_arr_view(non_const_arr);
ArrayView<const float, size> non_const_arr_view(non_const_arr);
EXPECT_EQ(non_const_arr.data(), non_const_arr_view.data());
static_assert(non_const_arr.size() == non_const_arr_view.size(), "");
}
@ -629,4 +629,4 @@ TEST(ArrayViewTest, TestReinterpretCastVariableSize) {
EXPECT_EQ(uint8_av[1], 2);
EXPECT_EQ(uint8_av[2], 3);
}
} // namespace rtc
} // namespace webrtc

View File

@ -35,7 +35,6 @@
namespace rtc {
class CopyOnWriteBuffer;
struct PacketOptions;
class PacketTransportInternal;
@ -43,6 +42,8 @@ class PacketTransportInternal;
namespace webrtc {
class CopyOnWriteBuffer;
class RtpTransport : public RtpTransportInternal {
public:
RtpTransport(const RtpTransport&) = delete;

View File

@ -22,12 +22,13 @@
#include "rtc_base/ssl_stream_adapter.h"
namespace rtc {
class CopyOnWriteBuffer;
struct PacketOptions;
} // namespace rtc
namespace webrtc {
class CopyOnWriteBuffer;
// This class is an internal interface; it is not accessible to API consumers
// but is accessible to internal classes in order to send and receive RTP and
// RTCP packets belonging to a single RTP session. Additional convenience and

View File

@ -22,11 +22,8 @@
#include "rtc_base/copy_on_write_buffer.h"
#include "rtc_base/ssl_stream_adapter.h" // For SSLRole
namespace rtc {
class CopyOnWriteBuffer;
} // namespace rtc
namespace webrtc {
class CopyOnWriteBuffer;
struct DataChannelInit;
// Wraps the `uint16_t` sctp data channel stream id value and does range

View File

@ -25,7 +25,7 @@
#include "rtc_base/type_traits.h"
#include "rtc_base/zero_memory.h"
namespace rtc {
namespace webrtc {
namespace internal {
@ -447,6 +447,16 @@ using Buffer = BufferT<uint8_t>;
template <typename T>
using ZeroOnFreeBuffer = BufferT<T, true>;
} // namespace webrtc
// Re-export symbols from the webrtc namespace for backwards compatibility.
// TODO(bugs.webrtc.org/4222596): Remove once all references are updated.
namespace rtc {
template <typename T, bool ZeroOnFree = false>
using BufferT = ::webrtc::BufferT<T, ZeroOnFree>;
using ::webrtc::Buffer;
template <typename T>
using ZeroOnFreeBuffer = ::webrtc::ZeroOnFreeBuffer<T>;
} // namespace rtc
#endif // RTC_BASE_BUFFER_H_

View File

@ -18,7 +18,7 @@
#include "test/gmock.h"
#include "test/gtest.h"
namespace rtc {
namespace webrtc {
namespace {
@ -102,7 +102,7 @@ TEST(BufferTest, TestAppendData) {
EXPECT_EQ(buf, Buffer(exp));
Buffer buf2;
buf2.AppendData(buf);
buf2.AppendData(rtc::ArrayView<uint8_t>(buf));
buf2.AppendData(ArrayView<uint8_t>(buf));
const int8_t exp2[] = {0x4, 0x5, 0x6, 0xa, 0xb, 0x4, 0x5, 0x6, 0xa, 0xb};
EXPECT_EQ(buf2, Buffer(exp2));
}
@ -242,7 +242,7 @@ TEST(BufferTest, TestClear) {
}
TEST(BufferTest, TestLambdaSetAppend) {
auto setter = [](rtc::ArrayView<uint8_t> av) {
auto setter = [](ArrayView<uint8_t> av) {
for (int i = 0; i != 15; ++i)
av[i] = kTestData[i];
return 15;
@ -262,7 +262,7 @@ TEST(BufferTest, TestLambdaSetAppend) {
}
TEST(BufferTest, TestLambdaSetAppendSigned) {
auto setter = [](rtc::ArrayView<int8_t> av) {
auto setter = [](ArrayView<int8_t> av) {
for (int i = 0; i != 15; ++i)
av[i] = kTestData[i];
return 15;
@ -282,7 +282,7 @@ TEST(BufferTest, TestLambdaSetAppendSigned) {
}
TEST(BufferTest, TestLambdaAppendEmpty) {
auto setter = [](rtc::ArrayView<uint8_t> av) {
auto setter = [](ArrayView<uint8_t> av) {
for (int i = 0; i != 15; ++i)
av[i] = kTestData[i];
return 15;
@ -300,7 +300,7 @@ TEST(BufferTest, TestLambdaAppendEmpty) {
}
TEST(BufferTest, TestLambdaAppendPartial) {
auto setter = [](rtc::ArrayView<uint8_t> av) {
auto setter = [](ArrayView<uint8_t> av) {
for (int i = 0; i != 7; ++i)
av[i] = kTestData[i];
return 7;
@ -316,7 +316,7 @@ TEST(BufferTest, TestLambdaAppendPartial) {
TEST(BufferTest, TestMutableLambdaSetAppend) {
uint8_t magic_number = 17;
auto setter = [magic_number](rtc::ArrayView<uint8_t> av) mutable {
auto setter = [magic_number](ArrayView<uint8_t> av) mutable {
for (int i = 0; i != 15; ++i) {
av[i] = magic_number;
++magic_number;
@ -489,7 +489,7 @@ TEST(ZeroOnFreeBufferTest, TestZeroOnSetData) {
TEST(ZeroOnFreeBufferTest, TestZeroOnSetDataFromSetter) {
static constexpr size_t offset = 1;
const auto setter = [](rtc::ArrayView<uint8_t> av) {
const auto setter = [](ArrayView<uint8_t> av) {
for (int i = 0; i != 2; ++i)
av[i] = kTestData[offset + i];
return 2;
@ -545,4 +545,4 @@ TEST(ZeroOnFreeBufferTest, TestZeroOnClear) {
}
}
} // namespace rtc
} // namespace webrtc

View File

@ -14,7 +14,7 @@
#include "absl/strings/string_view.h"
namespace rtc {
namespace webrtc {
CopyOnWriteBuffer::CopyOnWriteBuffer() : offset_(0), size_(0) {
RTC_DCHECK(IsConsistent());
@ -124,4 +124,4 @@ void CopyOnWriteBuffer::UnshareAndEnsureCapacity(size_t new_capacity) {
RTC_DCHECK(IsConsistent());
}
} // namespace rtc
} // namespace webrtc

View File

@ -27,7 +27,7 @@
#include "rtc_base/system/rtc_export.h"
#include "rtc_base/type_traits.h"
namespace rtc {
namespace webrtc {
class RTC_EXPORT CopyOnWriteBuffer {
public:
@ -316,6 +316,12 @@ class RTC_EXPORT CopyOnWriteBuffer {
// Should be 0 if the buffer_ is empty.
};
} // namespace webrtc
// Re-export symbols from the webrtc namespace for backwards compatibility.
// TODO(bugs.webrtc.org/4222596): Remove once all references are updated.
namespace rtc {
using ::webrtc::CopyOnWriteBuffer;
} // namespace rtc
#endif // RTC_BASE_COPY_ON_WRITE_BUFFER_H_

View File

@ -14,7 +14,7 @@
#include "test/gtest.h"
namespace rtc {
namespace webrtc {
namespace {
@ -370,8 +370,8 @@ TEST(CopyOnWriteBufferTest, SlicesAreIndependent) {
TEST(CopyOnWriteBufferTest, AcceptsVectorLikeTypes) {
std::vector<uint8_t> a = {1, 2};
std::vector<int8_t> b = {3, 4};
rtc::ArrayView<uint8_t> c(a);
rtc::ArrayView<const int8_t> d(b);
ArrayView<uint8_t> c(a);
ArrayView<const int8_t> d(b);
CopyOnWriteBuffer a_buf(a);
CopyOnWriteBuffer b_buf(b);
@ -387,4 +387,4 @@ TEST(CopyOnWriteBufferTest, AcceptsVectorLikeTypes) {
EXPECT_EQ(all.size(), 8U);
}
} // namespace rtc
} // namespace webrtc

View File

@ -17,7 +17,7 @@
#include "rtc_base/checks.h"
#include "rtc_base/zero_memory.h"
namespace rtc {
namespace webrtc {
// Code and comment taken from "OPENSSL_cleanse" of BoringSSL.
void ExplicitZeroMemory(void* ptr, size_t len) {
@ -35,4 +35,4 @@ void ExplicitZeroMemory(void* ptr, size_t len) {
#endif // !WEBRTC_WIN
}
} // namespace rtc
} // namespace webrtc

View File

@ -17,7 +17,7 @@
#include "api/array_view.h"
namespace rtc {
namespace webrtc {
// Fill memory with zeros in a way that the compiler doesn't optimize it away
// even if the pointer is not used afterwards.
@ -30,6 +30,12 @@ void ExplicitZeroMemory(rtc::ArrayView<T> a) {
ExplicitZeroMemory(a.data(), a.size());
}
} // namespace webrtc
// Re-export symbols from the webrtc namespace for backwards compatibility.
// TODO(bugs.webrtc.org/4222596): Remove once all references are updated.
namespace rtc {
using ::webrtc::ExplicitZeroMemory;
} // namespace rtc
#endif // RTC_BASE_ZERO_MEMORY_H_

View File

@ -15,7 +15,7 @@
#include "api/array_view.h"
#include "test/gtest.h"
namespace rtc {
namespace webrtc {
TEST(ZeroMemoryTest, TestZeroMemory) {
static const size_t kBufferSize = 32;
@ -35,7 +35,7 @@ TEST(ZeroMemoryTest, TestZeroArrayView) {
for (size_t i = 0; i < kBufferSize; i++) {
buffer[i] = static_cast<uint8_t>(i + 1);
}
ExplicitZeroMemory(rtc::ArrayView<uint8_t>(buffer, sizeof(buffer)));
ExplicitZeroMemory(ArrayView<uint8_t>(buffer, sizeof(buffer)));
for (size_t i = 0; i < kBufferSize; i++) {
EXPECT_EQ(buffer[i], 0);
}
@ -50,4 +50,4 @@ TEST(ZeroMemoryTest, TestZeroMemoryUnused) {
ExplicitZeroMemory(buffer, sizeof(buffer));
}
} // namespace rtc
} // namespace webrtc