naiveproxy/net/third_party/quic/quartc/quartc_packet_writer.cc

73 lines
1.9 KiB
C++
Raw Normal View History

2018-12-10 05:59:24 +03:00
// 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/quic/quartc/quartc_packet_writer.h"
namespace quic {
QuartcPacketWriter::QuartcPacketWriter(QuartcPacketTransport* packet_transport,
QuicByteCount max_packet_size)
: packet_transport_(packet_transport), max_packet_size_(max_packet_size) {}
WriteResult QuartcPacketWriter::WritePacket(
const char* buffer,
size_t buf_len,
const QuicIpAddress& self_address,
const QuicSocketAddress& peer_address,
PerPacketOptions* options) {
DCHECK(packet_transport_);
QuartcPacketTransport::PacketInfo info;
if (connection_) {
info.packet_number = connection_->packet_generator().packet_number();
}
int bytes_written = packet_transport_->Write(buffer, buf_len, info);
if (bytes_written <= 0) {
writable_ = false;
return WriteResult(WRITE_STATUS_BLOCKED, EWOULDBLOCK);
}
return WriteResult(WRITE_STATUS_OK, bytes_written);
}
bool QuartcPacketWriter::IsWriteBlockedDataBuffered() const {
return false;
}
bool QuartcPacketWriter::IsWriteBlocked() const {
return !writable_;
}
QuicByteCount QuartcPacketWriter::GetMaxPacketSize(
const QuicSocketAddress& peer_address) const {
return max_packet_size_;
}
void QuartcPacketWriter::SetWritable() {
writable_ = true;
}
bool QuartcPacketWriter::SupportsReleaseTime() const {
return false;
}
bool QuartcPacketWriter::IsBatchMode() const {
return false;
}
char* QuartcPacketWriter::GetNextWriteLocation() const {
return nullptr;
}
WriteResult QuartcPacketWriter::Flush() {
return WriteResult(WRITE_STATUS_OK, 0);
}
void QuartcPacketWriter::SetPacketTransportDelegate(
QuartcPacketTransport::Delegate* delegate) {
packet_transport_->SetDelegate(delegate);
}
} // namespace quic