blob: 1b010ebce91e2c749c41a665378870799181400a [file] [log] [blame]
// Copyright (c) 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.
#include "net/third_party/quiche/src/quic/test_tools/simple_data_producer.h"
#include "net/third_party/quiche/src/quic/platform/api/quic_flags.h"
#include "net/third_party/quiche/src/quic/platform/api/quic_map_util.h"
#include "net/third_party/quiche/src/quic/platform/api/quic_ptr_util.h"
namespace quic {
namespace test {
SimpleDataProducer::SimpleDataProducer() {}
SimpleDataProducer::~SimpleDataProducer() {}
void SimpleDataProducer::SaveStreamData(QuicStreamId id,
const struct iovec* iov,
int iov_count,
size_t iov_offset,
QuicStreamOffset offset,
QuicByteCount data_length) {
if (data_length == 0) {
return;
}
if (!QuicContainsKey(send_buffer_map_, id)) {
send_buffer_map_[id] = QuicMakeUnique<QuicStreamSendBuffer>(&allocator_);
}
send_buffer_map_[id]->SaveStreamData(iov, iov_count, iov_offset, data_length);
}
WriteStreamDataResult SimpleDataProducer::WriteStreamData(
QuicStreamId id,
QuicStreamOffset offset,
QuicByteCount data_length,
QuicDataWriter* writer) {
auto iter = send_buffer_map_.find(id);
if (iter == send_buffer_map_.end()) {
return STREAM_MISSING;
}
if (iter->second->WriteStreamData(offset, data_length, writer)) {
return WRITE_SUCCESS;
}
return WRITE_FAILED;
}
} // namespace test
} // namespace quic