blob: a9147c074421f8e6671dbe8c7eb5d3b6444306db [file] [log] [blame]
QUICHE teama6ef0a62019-03-07 20:34:33 -05001// 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/third_party/quiche/src/quic/core/quic_default_packet_writer.h"
6
7#include "net/quic/platform/impl/quic_socket_utils.h"
8
9namespace quic {
10
11QuicDefaultPacketWriter::QuicDefaultPacketWriter(int fd)
12 : fd_(fd), write_blocked_(false) {}
13
14QuicDefaultPacketWriter::~QuicDefaultPacketWriter() = default;
15
16WriteResult QuicDefaultPacketWriter::WritePacket(
17 const char* buffer,
18 size_t buf_len,
19 const QuicIpAddress& self_address,
20 const QuicSocketAddress& peer_address,
21 PerPacketOptions* options) {
22 DCHECK(!write_blocked_);
23 DCHECK(nullptr == options)
24 << "QuicDefaultPacketWriter does not accept any options.";
25 WriteResult result = QuicSocketUtils::WritePacket(fd_, buffer, buf_len,
26 self_address, peer_address);
27 if (IsWriteBlockedStatus(result.status)) {
28 write_blocked_ = true;
29 }
30 return result;
31}
32
33bool QuicDefaultPacketWriter::IsWriteBlocked() const {
34 return write_blocked_;
35}
36
37void QuicDefaultPacketWriter::SetWritable() {
38 write_blocked_ = false;
39}
40
41QuicByteCount QuicDefaultPacketWriter::GetMaxPacketSize(
42 const QuicSocketAddress& peer_address) const {
dschinazi66dea072019-04-09 11:41:06 -070043 return kMaxOutgoingPacketSize;
QUICHE teama6ef0a62019-03-07 20:34:33 -050044}
45
46bool QuicDefaultPacketWriter::SupportsReleaseTime() const {
47 return false;
48}
49
50bool QuicDefaultPacketWriter::IsBatchMode() const {
51 return false;
52}
53
54char* QuicDefaultPacketWriter::GetNextWriteLocation(
55 const QuicIpAddress& self_address,
56 const QuicSocketAddress& peer_address) {
57 return nullptr;
58}
59
60WriteResult QuicDefaultPacketWriter::Flush() {
61 return WriteResult(WRITE_STATUS_OK, 0);
62}
63
64void QuicDefaultPacketWriter::set_write_blocked(bool is_blocked) {
65 write_blocked_ = is_blocked;
66}
67
68} // namespace quic