blob: c040c91042da63d3dd694b8037dea8e400222d9e [file] [log] [blame]
// Copyright 2014 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 "quiche/quic/core/quic_packet_writer_wrapper.h"
#include "quiche/quic/core/quic_types.h"
namespace quic {
QuicPacketWriterWrapper::QuicPacketWriterWrapper() = default;
QuicPacketWriterWrapper::~QuicPacketWriterWrapper() { unset_writer(); }
WriteResult QuicPacketWriterWrapper::WritePacket(
const char* buffer, size_t buf_len, const QuicIpAddress& self_address,
const QuicSocketAddress& peer_address, PerPacketOptions* options) {
return writer_->WritePacket(buffer, buf_len, self_address, peer_address,
options);
}
bool QuicPacketWriterWrapper::IsWriteBlocked() const {
return writer_->IsWriteBlocked();
}
void QuicPacketWriterWrapper::SetWritable() { writer_->SetWritable(); }
absl::optional<int> QuicPacketWriterWrapper::MessageTooBigErrorCode() const {
return writer_->MessageTooBigErrorCode();
}
QuicByteCount QuicPacketWriterWrapper::GetMaxPacketSize(
const QuicSocketAddress& peer_address) const {
return writer_->GetMaxPacketSize(peer_address);
}
bool QuicPacketWriterWrapper::SupportsReleaseTime() const {
return writer_->SupportsReleaseTime();
}
bool QuicPacketWriterWrapper::IsBatchMode() const {
return writer_->IsBatchMode();
}
QuicPacketBuffer QuicPacketWriterWrapper::GetNextWriteLocation(
const QuicIpAddress& self_address, const QuicSocketAddress& peer_address) {
return writer_->GetNextWriteLocation(self_address, peer_address);
}
WriteResult QuicPacketWriterWrapper::Flush() { return writer_->Flush(); }
void QuicPacketWriterWrapper::set_writer(QuicPacketWriter* writer) {
unset_writer();
writer_ = writer;
owns_writer_ = true;
}
void QuicPacketWriterWrapper::set_non_owning_writer(QuicPacketWriter* writer) {
unset_writer();
writer_ = writer;
owns_writer_ = false;
}
void QuicPacketWriterWrapper::unset_writer() {
if (owns_writer_) {
delete writer_;
}
owns_writer_ = false;
writer_ = nullptr;
}
} // namespace quic