blob: 187ef7ab03a4157c339e3d378df75d9cc81edcc4 [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 "net/third_party/quic/core/quic_packet_writer_wrapper.h"
#include "net/third_party/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();
}
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();
}
char* 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