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.
5 #include "net/quic/quic_per_connection_packet_writer.h"
7 #include "net/quic/quic_server_packet_writer.h"
11 QuicPerConnectionPacketWriter::QuicPerConnectionPacketWriter(
12 QuicServerPacketWriter
* shared_writer
,
13 QuicConnection
* connection
)
14 : shared_writer_(shared_writer
),
15 connection_(connection
),
19 QuicPerConnectionPacketWriter::~QuicPerConnectionPacketWriter() {
22 QuicPacketWriter
* QuicPerConnectionPacketWriter::shared_writer() const {
23 return shared_writer_
;
26 WriteResult
QuicPerConnectionPacketWriter::WritePacket(
29 const IPAddressNumber
& self_address
,
30 const IPEndPoint
& peer_address
) {
31 return shared_writer_
->WritePacketWithCallback(
36 base::Bind(&QuicPerConnectionPacketWriter::OnWriteComplete
,
37 weak_factory_
.GetWeakPtr()));
40 bool QuicPerConnectionPacketWriter::IsWriteBlockedDataBuffered() const {
41 return shared_writer_
->IsWriteBlockedDataBuffered();
44 bool QuicPerConnectionPacketWriter::IsWriteBlocked() const {
45 return shared_writer_
->IsWriteBlocked();
48 void QuicPerConnectionPacketWriter::SetWritable() {
49 shared_writer_
->SetWritable();
52 void QuicPerConnectionPacketWriter::OnWriteComplete(WriteResult result
) {
53 if (result
.status
== WRITE_STATUS_ERROR
) {
54 connection_
->OnWriteError(result
.error_code
);