1// Copyright 2013 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_QUIC_QUIC_DEFAULT_PACKET_WRITER_H_ 6#define NET_QUIC_QUIC_DEFAULT_PACKET_WRITER_H_ 7 8#include "base/basictypes.h" 9#include "base/memory/weak_ptr.h" 10#include "net/base/ip_endpoint.h" 11#include "net/quic/quic_connection.h" 12#include "net/quic/quic_packet_writer.h" 13#include "net/quic/quic_protocol.h" 14#include "net/udp/datagram_client_socket.h" 15 16namespace net { 17 18class QuicBlockedWriterInterface; 19 20// Chrome specific packet writer which uses a DatagramClientSocket for writing 21// data. 22class NET_EXPORT_PRIVATE QuicDefaultPacketWriter : public QuicPacketWriter { 23 public: 24 QuicDefaultPacketWriter(); 25 explicit QuicDefaultPacketWriter(DatagramClientSocket* socket); 26 virtual ~QuicDefaultPacketWriter(); 27 28 // QuicPacketWriter 29 virtual WriteResult WritePacket( 30 const char* buffer, size_t buf_len, 31 const net::IPAddressNumber& self_address, 32 const net::IPEndPoint& peer_address, 33 QuicBlockedWriterInterface* blocked_writer) OVERRIDE; 34 35 virtual bool IsWriteBlockedDataBuffered() const OVERRIDE; 36 37 void OnWriteComplete(int rv); 38 void SetConnection(QuicConnection* connection) { 39 connection_ = connection; 40 } 41 42 private: 43 base::WeakPtrFactory<QuicDefaultPacketWriter> weak_factory_; 44 DatagramClientSocket* socket_; 45 QuicConnection* connection_; 46}; 47 48} // namespace net 49 50#endif // NET_QUIC_QUIC_DEFAULT_PACKET_WRITER_H_ 51