// Copyright 2021 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.

#include "common/quiche_mem_slice_storage.h"

#include "quic/core/quic_utils.h"

namespace quiche {

QuicheMemSliceStorage::QuicheMemSliceStorage(
    const struct iovec* iov, int iov_count, QuicheBufferAllocator* allocator,
    const quic::QuicByteCount max_slice_len) {
  if (iov == nullptr) {
    return;
  }
  quic::QuicByteCount write_len = 0;
  for (int i = 0; i < iov_count; ++i) {
    write_len += iov[i].iov_len;
  }
  QUICHE_DCHECK_LT(0u, write_len);

  size_t io_offset = 0;
  while (write_len > 0) {
    size_t slice_len = std::min(write_len, max_slice_len);
    QuicheBuffer buffer(allocator, slice_len);
    quic::QuicUtils::CopyToBuffer(iov, iov_count, io_offset, slice_len,
                                  buffer.data());
    storage_.push_back(QuicheMemSlice(std::move(buffer)));
    write_len -= slice_len;
    io_offset += slice_len;
  }
}

}  // namespace quiche
