| // Copyright 2013 The Chromium Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style license that can be | |
| // found in the LICENSE file. | |
| #include "net/third_party/quiche/src/quic/core/quic_default_packet_writer.h" | |
| #include "net/quic/platform/impl/quic_socket_utils.h" | |
| namespace quic { | |
| QuicDefaultPacketWriter::QuicDefaultPacketWriter(int fd) | |
| : fd_(fd), write_blocked_(false) {} | |
| QuicDefaultPacketWriter::~QuicDefaultPacketWriter() = default; | |
| WriteResult QuicDefaultPacketWriter::WritePacket( | |
| const char* buffer, | |
| size_t buf_len, | |
| const QuicIpAddress& self_address, | |
| const QuicSocketAddress& peer_address, | |
| PerPacketOptions* options) { | |
| DCHECK(!write_blocked_); | |
| DCHECK(nullptr == options) | |
| << "QuicDefaultPacketWriter does not accept any options."; | |
| WriteResult result = QuicSocketUtils::WritePacket(fd_, buffer, buf_len, | |
| self_address, peer_address); | |
| if (IsWriteBlockedStatus(result.status)) { | |
| write_blocked_ = true; | |
| } | |
| return result; | |
| } | |
| bool QuicDefaultPacketWriter::IsWriteBlocked() const { | |
| return write_blocked_; | |
| } | |
| void QuicDefaultPacketWriter::SetWritable() { | |
| write_blocked_ = false; | |
| } | |
| QuicByteCount QuicDefaultPacketWriter::GetMaxPacketSize( | |
| const QuicSocketAddress& /*peer_address*/) const { | |
| return kMaxOutgoingPacketSize; | |
| } | |
| bool QuicDefaultPacketWriter::SupportsReleaseTime() const { | |
| return false; | |
| } | |
| bool QuicDefaultPacketWriter::IsBatchMode() const { | |
| return false; | |
| } | |
| char* QuicDefaultPacketWriter::GetNextWriteLocation( | |
| const QuicIpAddress& /*self_address*/, | |
| const QuicSocketAddress& /*peer_address*/) { | |
| return nullptr; | |
| } | |
| WriteResult QuicDefaultPacketWriter::Flush() { | |
| return WriteResult(WRITE_STATUS_OK, 0); | |
| } | |
| void QuicDefaultPacketWriter::set_write_blocked(bool is_blocked) { | |
| write_blocked_ = is_blocked; | |
| } | |
| } // namespace quic |