103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)// found in the LICENSE file.
403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)
503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#include "net/tools/quic/quic_per_connection_packet_writer.h"
603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)
703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)namespace net {
803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)
903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)namespace tools {
1003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)
1103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)QuicPerConnectionPacketWriter::QuicPerConnectionPacketWriter(
1203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)    QuicPacketWriter* shared_writer,
1303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)    QuicConnection* connection)
1403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)    : shared_writer_(shared_writer),
1503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)      connection_(connection) {
1603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)}
1703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)
1803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)QuicPerConnectionPacketWriter::~QuicPerConnectionPacketWriter() {
1903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)}
2003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)
2103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)WriteResult QuicPerConnectionPacketWriter::WritePacket(
2203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)    const char* buffer,
2303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)    size_t buf_len,
2403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)    const IPAddressNumber& self_address,
2503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)    const IPEndPoint& peer_address) {
2603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  return shared_writer_->WritePacket(buffer,
2703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)                                     buf_len,
2803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)                                     self_address,
2903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)                                     peer_address);
3003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)}
3103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)
3203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)bool QuicPerConnectionPacketWriter::IsWriteBlockedDataBuffered() const {
3303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  return shared_writer_->IsWriteBlockedDataBuffered();
3403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)}
3503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)
3603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)bool QuicPerConnectionPacketWriter::IsWriteBlocked() const {
3703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  return shared_writer_->IsWriteBlocked();
3803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)}
3903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)
4003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)void QuicPerConnectionPacketWriter::SetWritable() {
4103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  shared_writer_->SetWritable();
4203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)}
4303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)
4403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)}  // namespace tools
4503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)
4603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)}  // namespace net
47