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_TOOLS_QUIC_QUIC_DEFAULT_PACKET_WRITER_H_ 6#define NET_TOOLS_QUIC_QUIC_DEFAULT_PACKET_WRITER_H_ 7 8#include "base/basictypes.h" 9#include "net/base/ip_endpoint.h" 10#include "net/quic/quic_packet_writer.h" 11 12namespace net { 13 14struct WriteResult; 15 16namespace tools { 17 18// Default packet writer which wraps QuicSocketUtils WritePacket. 19class QuicDefaultPacketWriter : public QuicPacketWriter { 20 public: 21 explicit QuicDefaultPacketWriter(int fd); 22 virtual ~QuicDefaultPacketWriter(); 23 24 // QuicPacketWriter 25 virtual WriteResult WritePacket(const char* buffer, 26 size_t buf_len, 27 const IPAddressNumber& self_address, 28 const IPEndPoint& peer_address) OVERRIDE; 29 virtual bool IsWriteBlockedDataBuffered() const OVERRIDE; 30 virtual bool IsWriteBlocked() const OVERRIDE; 31 virtual void SetWritable() OVERRIDE; 32 33 void set_fd(int fd) { fd_ = fd; } 34 35 protected: 36 void set_write_blocked(bool is_blocked) { 37 write_blocked_ = is_blocked; 38 } 39 int fd() { return fd_; } 40 41 private: 42 int fd_; 43 bool write_blocked_; 44 45 DISALLOW_COPY_AND_ASSIGN(QuicDefaultPacketWriter); 46}; 47 48} // namespace tools 49} // namespace net 50 51#endif // NET_TOOLS_QUIC_QUIC_DEFAULT_PACKET_WRITER_H_ 52