Moves QuicheMemSlice from the QUICHE platform directory to //third_party/quiche/common. This library does not need to provide a platform-dependent implementation. A vestigial header file and library target are left behind to ease migration. Protected by refactoring, no functional change; not protected. PiperOrigin-RevId: 758736172
diff --git a/build/source_list.bzl b/build/source_list.bzl index ffe837a..e61db38 100644 --- a/build/source_list.bzl +++ b/build/source_list.bzl
@@ -52,6 +52,7 @@ "common/quiche_ip_address.h", "common/quiche_ip_address_family.h", "common/quiche_linked_hash_map.h", + "common/quiche_mem_slice.h", "common/quiche_mem_slice_storage.h", "common/quiche_protocol_flags_list.h", "common/quiche_random.h", @@ -418,13 +419,13 @@ "common/masque/connect_ip_datagram_payload.cc", "common/masque/connect_udp_datagram_payload.cc", "common/platform/api/quiche_hostname_utils.cc", - "common/platform/api/quiche_mem_slice.cc", "common/quiche_buffer_allocator.cc", "common/quiche_crypto_logging.cc", "common/quiche_data_reader.cc", "common/quiche_data_writer.cc", "common/quiche_ip_address.cc", "common/quiche_ip_address_family.cc", + "common/quiche_mem_slice.cc", "common/quiche_mem_slice_storage.cc", "common/quiche_random.cc", "common/quiche_simple_arena.cc", @@ -1101,7 +1102,6 @@ "common/platform/api/quiche_file_utils_test.cc", "common/platform/api/quiche_hostname_utils_test.cc", "common/platform/api/quiche_lower_case_string_test.cc", - "common/platform/api/quiche_mem_slice_test.cc", "common/platform/api/quiche_reference_counted_test.cc", "common/platform/api/quiche_stack_trace_test.cc", "common/platform/api/quiche_time_utils_test.cc", @@ -1117,6 +1117,7 @@ "common/quiche_ip_address_test.cc", "common/quiche_linked_hash_map_test.cc", "common/quiche_mem_slice_storage_test.cc", + "common/quiche_mem_slice_test.cc", "common/quiche_random_test.cc", "common/quiche_simple_arena_test.cc", "common/quiche_socket_address_test.cc",
diff --git a/build/source_list.gni b/build/source_list.gni index c10fcd7..2fee7ac 100644 --- a/build/source_list.gni +++ b/build/source_list.gni
@@ -52,6 +52,7 @@ "src/quiche/common/quiche_ip_address.h", "src/quiche/common/quiche_ip_address_family.h", "src/quiche/common/quiche_linked_hash_map.h", + "src/quiche/common/quiche_mem_slice.h", "src/quiche/common/quiche_mem_slice_storage.h", "src/quiche/common/quiche_protocol_flags_list.h", "src/quiche/common/quiche_random.h", @@ -418,13 +419,13 @@ "src/quiche/common/masque/connect_ip_datagram_payload.cc", "src/quiche/common/masque/connect_udp_datagram_payload.cc", "src/quiche/common/platform/api/quiche_hostname_utils.cc", - "src/quiche/common/platform/api/quiche_mem_slice.cc", "src/quiche/common/quiche_buffer_allocator.cc", "src/quiche/common/quiche_crypto_logging.cc", "src/quiche/common/quiche_data_reader.cc", "src/quiche/common/quiche_data_writer.cc", "src/quiche/common/quiche_ip_address.cc", "src/quiche/common/quiche_ip_address_family.cc", + "src/quiche/common/quiche_mem_slice.cc", "src/quiche/common/quiche_mem_slice_storage.cc", "src/quiche/common/quiche_random.cc", "src/quiche/common/quiche_simple_arena.cc", @@ -1102,7 +1103,6 @@ "src/quiche/common/platform/api/quiche_file_utils_test.cc", "src/quiche/common/platform/api/quiche_hostname_utils_test.cc", "src/quiche/common/platform/api/quiche_lower_case_string_test.cc", - "src/quiche/common/platform/api/quiche_mem_slice_test.cc", "src/quiche/common/platform/api/quiche_reference_counted_test.cc", "src/quiche/common/platform/api/quiche_stack_trace_test.cc", "src/quiche/common/platform/api/quiche_time_utils_test.cc", @@ -1118,6 +1118,7 @@ "src/quiche/common/quiche_ip_address_test.cc", "src/quiche/common/quiche_linked_hash_map_test.cc", "src/quiche/common/quiche_mem_slice_storage_test.cc", + "src/quiche/common/quiche_mem_slice_test.cc", "src/quiche/common/quiche_random_test.cc", "src/quiche/common/quiche_simple_arena_test.cc", "src/quiche/common/quiche_socket_address_test.cc",
diff --git a/build/source_list.json b/build/source_list.json index 54476e6..d51f52c 100644 --- a/build/source_list.json +++ b/build/source_list.json
@@ -51,6 +51,7 @@ "quiche/common/quiche_ip_address.h", "quiche/common/quiche_ip_address_family.h", "quiche/common/quiche_linked_hash_map.h", + "quiche/common/quiche_mem_slice.h", "quiche/common/quiche_mem_slice_storage.h", "quiche/common/quiche_protocol_flags_list.h", "quiche/common/quiche_random.h", @@ -417,13 +418,13 @@ "quiche/common/masque/connect_ip_datagram_payload.cc", "quiche/common/masque/connect_udp_datagram_payload.cc", "quiche/common/platform/api/quiche_hostname_utils.cc", - "quiche/common/platform/api/quiche_mem_slice.cc", "quiche/common/quiche_buffer_allocator.cc", "quiche/common/quiche_crypto_logging.cc", "quiche/common/quiche_data_reader.cc", "quiche/common/quiche_data_writer.cc", "quiche/common/quiche_ip_address.cc", "quiche/common/quiche_ip_address_family.cc", + "quiche/common/quiche_mem_slice.cc", "quiche/common/quiche_mem_slice_storage.cc", "quiche/common/quiche_random.cc", "quiche/common/quiche_simple_arena.cc", @@ -1101,7 +1102,6 @@ "quiche/common/platform/api/quiche_file_utils_test.cc", "quiche/common/platform/api/quiche_hostname_utils_test.cc", "quiche/common/platform/api/quiche_lower_case_string_test.cc", - "quiche/common/platform/api/quiche_mem_slice_test.cc", "quiche/common/platform/api/quiche_reference_counted_test.cc", "quiche/common/platform/api/quiche_stack_trace_test.cc", "quiche/common/platform/api/quiche_time_utils_test.cc", @@ -1117,6 +1117,7 @@ "quiche/common/quiche_ip_address_test.cc", "quiche/common/quiche_linked_hash_map_test.cc", "quiche/common/quiche_mem_slice_storage_test.cc", + "quiche/common/quiche_mem_slice_test.cc", "quiche/common/quiche_random_test.cc", "quiche/common/quiche_simple_arena_test.cc", "quiche/common/quiche_socket_address_test.cc",
diff --git a/quiche/common/platform/api/quiche_mem_slice.h b/quiche/common/platform/api/quiche_mem_slice.h index 0cc2e0b..e08c738 100644 --- a/quiche/common/platform/api/quiche_mem_slice.h +++ b/quiche/common/platform/api/quiche_mem_slice.h
@@ -1,76 +1,6 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - #ifndef QUICHE_COMMON_PLATFORM_API_QUICHE_MEM_SLICE_H_ #define QUICHE_COMMON_PLATFORM_API_QUICHE_MEM_SLICE_H_ -#include <cstddef> -#include <memory> - -#include "absl/strings/string_view.h" -#include "quiche/common/platform/api/quiche_export.h" -#include "quiche/common/quiche_buffer_allocator.h" -#include "quiche/common/quiche_callbacks.h" - -namespace quiche { - -// QuicheMemSlice is a memory buffer with a type-erased deleter callback. -class QUICHE_EXPORT QuicheMemSlice { - public: - using ReleaseCallback = SingleUseCallback<void(absl::string_view)>; - - // Creates a QuicheMemSlice by allocating memory on heap and copying the - // specified bytes. - static QuicheMemSlice Copy(absl::string_view data); - - // Constructs a empty QuicheMemSlice with no underlying data. - QuicheMemSlice() = default; - - // Constructs a QuicheMemSlice that takes ownership of |buffer|. The length - // of the |buffer| must not be zero. To construct an empty QuicheMemSlice, - // use the zero-argument constructor instead. - explicit QuicheMemSlice(QuicheBuffer buffer); - - // Constructs a QuicheMemSlice that takes ownership of |buffer| allocated on - // heap. |length| must not be zero. - QuicheMemSlice(std::unique_ptr<char[]> buffer, size_t length); - - // Constructs a QuicheMemSlice with a custom deleter callback. - QuicheMemSlice(const char* buffer, size_t length, - ReleaseCallback done_callback); - - QuicheMemSlice(const QuicheMemSlice& other) = delete; - QuicheMemSlice& operator=(const QuicheMemSlice& other) = delete; - - // Move constructors. |other| will not hold a reference to the data buffer - // after this call completes. - QuicheMemSlice(QuicheMemSlice&& other); - QuicheMemSlice& operator=(QuicheMemSlice&& other); - - ~QuicheMemSlice(); - - // Release the underlying reference. Further access the memory will result in - // undefined behavior. - void Reset(); - - // Returns a const char pointer to underlying data buffer. - const char* data() const { return data_; } - // Returns the length of underlying data buffer. - size_t length() const { return size_; } - // Returns the representation of the underlying data as a string view. - absl::string_view AsStringView() const { - return absl::string_view(data_, size_); - } - - bool empty() const { return size_ == 0; } - - private: - const char* data_ = nullptr; - size_t size_ = 0; - ReleaseCallback done_callback_ = nullptr; -}; - -} // namespace quiche +#include "quiche/common/quiche_mem_slice.h" #endif // QUICHE_COMMON_PLATFORM_API_QUICHE_MEM_SLICE_H_
diff --git a/quiche/common/platform/api/quiche_mem_slice.cc b/quiche/common/quiche_mem_slice.cc similarity index 97% rename from quiche/common/platform/api/quiche_mem_slice.cc rename to quiche/common/quiche_mem_slice.cc index 59f891f..84d1214 100644 --- a/quiche/common/platform/api/quiche_mem_slice.cc +++ b/quiche/common/quiche_mem_slice.cc
@@ -1,4 +1,4 @@ -#include "quiche/common/platform/api/quiche_mem_slice.h" +#include "quiche/common/quiche_mem_slice.h" #include <cstddef> #include <cstdlib>
diff --git a/quiche/common/quiche_mem_slice.h b/quiche/common/quiche_mem_slice.h new file mode 100644 index 0000000..cf2d173 --- /dev/null +++ b/quiche/common/quiche_mem_slice.h
@@ -0,0 +1,76 @@ +// Copyright 2017 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef QUICHE_COMMON_QUICHE_MEM_SLICE_H_ +#define QUICHE_COMMON_QUICHE_MEM_SLICE_H_ + +#include <cstddef> +#include <memory> + +#include "absl/strings/string_view.h" +#include "quiche/common/platform/api/quiche_export.h" +#include "quiche/common/quiche_buffer_allocator.h" +#include "quiche/common/quiche_callbacks.h" + +namespace quiche { + +// QuicheMemSlice is a memory buffer with a type-erased deleter callback. +class QUICHE_EXPORT QuicheMemSlice { + public: + using ReleaseCallback = SingleUseCallback<void(absl::string_view)>; + + // Creates a QuicheMemSlice by allocating memory on heap and copying the + // specified bytes. + static QuicheMemSlice Copy(absl::string_view data); + + // Constructs a empty QuicheMemSlice with no underlying data. + QuicheMemSlice() = default; + + // Constructs a QuicheMemSlice that takes ownership of |buffer|. The length + // of the |buffer| must not be zero. To construct an empty QuicheMemSlice, + // use the zero-argument constructor instead. + explicit QuicheMemSlice(QuicheBuffer buffer); + + // Constructs a QuicheMemSlice that takes ownership of |buffer| allocated on + // heap. |length| must not be zero. + QuicheMemSlice(std::unique_ptr<char[]> buffer, size_t length); + + // Constructs a QuicheMemSlice with a custom deleter callback. + QuicheMemSlice(const char* buffer, size_t length, + ReleaseCallback done_callback); + + QuicheMemSlice(const QuicheMemSlice& other) = delete; + QuicheMemSlice& operator=(const QuicheMemSlice& other) = delete; + + // Move constructors. |other| will not hold a reference to the data buffer + // after this call completes. + QuicheMemSlice(QuicheMemSlice&& other); + QuicheMemSlice& operator=(QuicheMemSlice&& other); + + ~QuicheMemSlice(); + + // Release the underlying reference. Further access the memory will result in + // undefined behavior. + void Reset(); + + // Returns a const char pointer to underlying data buffer. + const char* data() const { return data_; } + // Returns the length of underlying data buffer. + size_t length() const { return size_; } + // Returns the representation of the underlying data as a string view. + absl::string_view AsStringView() const { + return absl::string_view(data_, size_); + } + + bool empty() const { return size_ == 0; } + + private: + const char* data_ = nullptr; + size_t size_ = 0; + ReleaseCallback done_callback_ = nullptr; +}; + +} // namespace quiche + +#endif // QUICHE_COMMON_QUICHE_MEM_SLICE_H_
diff --git a/quiche/common/quiche_mem_slice_storage.h b/quiche/common/quiche_mem_slice_storage.h index 1439d63..f3b0285 100644 --- a/quiche/common/quiche_mem_slice_storage.h +++ b/quiche/common/quiche_mem_slice_storage.h
@@ -11,8 +11,8 @@ #include "quiche/quic/core/quic_types.h" #include "quiche/common/platform/api/quiche_export.h" #include "quiche/common/platform/api/quiche_iovec.h" -#include "quiche/common/platform/api/quiche_mem_slice.h" #include "quiche/common/quiche_buffer_allocator.h" +#include "quiche/common/quiche_mem_slice.h" namespace quiche {
diff --git a/quiche/common/platform/api/quiche_mem_slice_test.cc b/quiche/common/quiche_mem_slice_test.cc similarity index 98% rename from quiche/common/platform/api/quiche_mem_slice_test.cc rename to quiche/common/quiche_mem_slice_test.cc index c4a5ab5..e891195 100644 --- a/quiche/common/platform/api/quiche_mem_slice_test.cc +++ b/quiche/common/quiche_mem_slice_test.cc
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "quiche/common/platform/api/quiche_mem_slice.h" +#include "quiche/common/quiche_mem_slice.h" #include <cstring> #include <memory>