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#include "net/tools/quic/quic_default_packet_writer.h"
6
7#include "net/tools/quic/quic_socket_utils.h"
8
9namespace net {
10namespace tools {
11
12QuicDefaultPacketWriter::QuicDefaultPacketWriter(int fd)
13    : fd_(fd),
14      write_blocked_(false) {}
15
16QuicDefaultPacketWriter::~QuicDefaultPacketWriter() {}
17
18WriteResult QuicDefaultPacketWriter::WritePacket(
19    const char* buffer,
20    size_t buf_len,
21    const IPAddressNumber& self_address,
22    const IPEndPoint& peer_address) {
23  DCHECK(!IsWriteBlocked());
24  WriteResult result = QuicSocketUtils::WritePacket(
25      fd_, buffer, buf_len, self_address, peer_address);
26  if (result.status == WRITE_STATUS_BLOCKED) {
27    write_blocked_ = true;
28  }
29  return result;
30}
31
32bool QuicDefaultPacketWriter::IsWriteBlockedDataBuffered() const {
33  return false;
34}
35
36bool QuicDefaultPacketWriter::IsWriteBlocked() const {
37  return write_blocked_;
38}
39
40void QuicDefaultPacketWriter::SetWritable() {
41  write_blocked_ = false;
42}
43
44}  // namespace tools
45}  // namespace net
46