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