Project import generated by Copybara. PiperOrigin-RevId: 237361882 Change-Id: I109a68f44db867b20f8c6a7732b0ce657133e52a
diff --git a/quic/platform/api/quic_mem_slice_storage.h b/quic/platform/api/quic_mem_slice_storage.h new file mode 100644 index 0000000..dc48a43 --- /dev/null +++ b/quic/platform/api/quic_mem_slice_storage.h
@@ -0,0 +1,39 @@ +// 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_QUIC_PLATFORM_API_QUIC_MEM_SLICE_STORAGE_H_ +#define QUICHE_QUIC_PLATFORM_API_QUIC_MEM_SLICE_STORAGE_H_ + +#include "net/third_party/quiche/src/quic/platform/api/quic_export.h" +#include "net/quic/platform/impl/quic_mem_slice_storage_impl.h" + +namespace quic { + +// QuicMemSliceStorage is a container class that store QuicMemSlices for further +// use cases such as turning into QuicMemSliceSpan. +class QUIC_EXPORT_PRIVATE QuicMemSliceStorage { + public: + QuicMemSliceStorage(const struct iovec* iov, + int iov_count, + QuicBufferAllocator* allocator, + const QuicByteCount max_slice_len) + : impl_(iov, iov_count, allocator, max_slice_len) {} + + QuicMemSliceStorage(const QuicMemSliceStorage& other) = default; + QuicMemSliceStorage& operator=(const QuicMemSliceStorage& other) = default; + QuicMemSliceStorage(QuicMemSliceStorage&& other) = default; + QuicMemSliceStorage& operator=(QuicMemSliceStorage&& other) = default; + + ~QuicMemSliceStorage() = default; + + // Return a QuicMemSliceSpan form of the storage. + QuicMemSliceSpan ToSpan() { return impl_.ToSpan(); } + + private: + QuicMemSliceStorageImpl impl_; +}; + +} // namespace quic + +#endif // QUICHE_QUIC_PLATFORM_API_QUIC_MEM_SLICE_STORAGE_H_