// 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_STORAGE_H_
#define QUICHE_COMMON_QUICHE_MEM_SLICE_STORAGE_H_

#include <vector>

#include "absl/types/span.h"
#include "quic/core/quic_types.h"
#include "quic/platform/api/quic_iovec.h"
#include "common/platform/api/quiche_export.h"
#include "common/platform/api/quiche_mem_slice.h"
#include "common/quiche_buffer_allocator.h"

namespace quiche {

// QuicheMemSliceStorage is a container class that store QuicheMemSlices for
// further use cases such as turning into QuicheMemSliceSpan.
class QUICHE_EXPORT_PRIVATE QuicheMemSliceStorage {
 public:
  QuicheMemSliceStorage(const struct iovec* iov, int iov_count,
                        QuicheBufferAllocator* allocator,
                        const quic::QuicByteCount max_slice_len);

  QuicheMemSliceStorage(const QuicheMemSliceStorage& other) = default;
  QuicheMemSliceStorage& operator=(const QuicheMemSliceStorage& other) =
      default;
  QuicheMemSliceStorage(QuicheMemSliceStorage&& other) = default;
  QuicheMemSliceStorage& operator=(QuicheMemSliceStorage&& other) = default;

  ~QuicheMemSliceStorage() = default;

  // Return a QuicheMemSliceSpan form of the storage.
  absl::Span<QuicheMemSlice> ToSpan() { return absl::MakeSpan(storage_); }

 private:
  std::vector<QuicheMemSlice> storage_;
};

}  // namespace quiche

#endif  // QUICHE_COMMON_QUICHE_MEM_SLICE_STORAGE_H_
