1// Copyright 2014 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include "net/quic/quic_per_connection_packet_writer.h" 6 7#include "net/quic/quic_server_packet_writer.h" 8 9namespace net { 10 11QuicPerConnectionPacketWriter::QuicPerConnectionPacketWriter( 12 QuicServerPacketWriter* shared_writer, 13 QuicConnection* connection) 14 : shared_writer_(shared_writer), 15 connection_(connection), 16 weak_factory_(this){ 17} 18 19QuicPerConnectionPacketWriter::~QuicPerConnectionPacketWriter() { 20} 21 22QuicPacketWriter* QuicPerConnectionPacketWriter::shared_writer() const { 23 return shared_writer_; 24} 25 26WriteResult QuicPerConnectionPacketWriter::WritePacket( 27 const char* buffer, 28 size_t buf_len, 29 const IPAddressNumber& self_address, 30 const IPEndPoint& peer_address) { 31 return shared_writer_->WritePacketWithCallback( 32 buffer, 33 buf_len, 34 self_address, 35 peer_address, 36 base::Bind(&QuicPerConnectionPacketWriter::OnWriteComplete, 37 weak_factory_.GetWeakPtr())); 38} 39 40bool QuicPerConnectionPacketWriter::IsWriteBlockedDataBuffered() const { 41 return shared_writer_->IsWriteBlockedDataBuffered(); 42} 43 44bool QuicPerConnectionPacketWriter::IsWriteBlocked() const { 45 return shared_writer_->IsWriteBlocked(); 46} 47 48void QuicPerConnectionPacketWriter::SetWritable() { 49 shared_writer_->SetWritable(); 50} 51 52void QuicPerConnectionPacketWriter::OnWriteComplete(WriteResult result) { 53 if (result.status == WRITE_STATUS_ERROR) { 54 connection_->OnWriteError(result.error_code); 55 } 56} 57 58} // namespace net 59