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#ifndef NET_TOOLS_QUIC_QUIC_PER_CONNECTION_PACKET_WRITER_H_ 6#define NET_TOOLS_QUIC_QUIC_PER_CONNECTION_PACKET_WRITER_H_ 7 8#include "net/quic/quic_connection.h" 9#include "net/quic/quic_packet_writer.h" 10 11namespace net { 12 13namespace tools { 14 15// A connection-specific packet writer that wraps a shared writer and keeps a 16// reference to the connection. 17class QuicPerConnectionPacketWriter : public QuicPacketWriter { 18 public: 19 // Does not take ownership of |shared_writer| or |connection|. 20 QuicPerConnectionPacketWriter(QuicPacketWriter* shared_writer, 21 QuicConnection* connection); 22 virtual ~QuicPerConnectionPacketWriter(); 23 24 QuicPacketWriter* shared_writer() const { return shared_writer_; } 25 QuicConnection* connection() const { return connection_; } 26 27 // Default implementation of the QuicPacketWriter interface: Passes everything 28 // to |shared_writer_|. 29 virtual WriteResult WritePacket(const char* buffer, 30 size_t buf_len, 31 const IPAddressNumber& self_address, 32 const IPEndPoint& peer_address) OVERRIDE; 33 virtual bool IsWriteBlockedDataBuffered() const OVERRIDE; 34 virtual bool IsWriteBlocked() const OVERRIDE; 35 virtual void SetWritable() OVERRIDE; 36 37 private: 38 QuicPacketWriter* shared_writer_; // Not owned. 39 QuicConnection* connection_; // Not owned. 40 41 DISALLOW_COPY_AND_ASSIGN(QuicPerConnectionPacketWriter); 42}; 43 44} // namespace tools 45 46} // namespace net 47 48#endif // NET_TOOLS_QUIC_QUIC_PER_CONNECTION_PACKET_WRITER_H_ 49