xref: /aosp_15_r20/external/cronet/net/third_party/quiche/src/quiche/quic/core/quic_packet_writer_wrapper.cc (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1 // Copyright 2014 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 "quiche/quic/core/quic_packet_writer_wrapper.h"
6 
7 #include "quiche/quic/core/quic_types.h"
8 
9 namespace quic {
10 
11 QuicPacketWriterWrapper::QuicPacketWriterWrapper() = default;
12 
~QuicPacketWriterWrapper()13 QuicPacketWriterWrapper::~QuicPacketWriterWrapper() { unset_writer(); }
14 
WritePacket(const char * buffer,size_t buf_len,const QuicIpAddress & self_address,const QuicSocketAddress & peer_address,PerPacketOptions * options,const QuicPacketWriterParams & params)15 WriteResult QuicPacketWriterWrapper::WritePacket(
16     const char* buffer, size_t buf_len, const QuicIpAddress& self_address,
17     const QuicSocketAddress& peer_address, PerPacketOptions* options,
18     const QuicPacketWriterParams& params) {
19   return writer_->WritePacket(buffer, buf_len, self_address, peer_address,
20                               options, params);
21 }
22 
IsWriteBlocked() const23 bool QuicPacketWriterWrapper::IsWriteBlocked() const {
24   return writer_->IsWriteBlocked();
25 }
26 
SetWritable()27 void QuicPacketWriterWrapper::SetWritable() { writer_->SetWritable(); }
28 
MessageTooBigErrorCode() const29 std::optional<int> QuicPacketWriterWrapper::MessageTooBigErrorCode() const {
30   return writer_->MessageTooBigErrorCode();
31 }
32 
GetMaxPacketSize(const QuicSocketAddress & peer_address) const33 QuicByteCount QuicPacketWriterWrapper::GetMaxPacketSize(
34     const QuicSocketAddress& peer_address) const {
35   return writer_->GetMaxPacketSize(peer_address);
36 }
37 
SupportsReleaseTime() const38 bool QuicPacketWriterWrapper::SupportsReleaseTime() const {
39   return writer_->SupportsReleaseTime();
40 }
41 
IsBatchMode() const42 bool QuicPacketWriterWrapper::IsBatchMode() const {
43   return writer_->IsBatchMode();
44 }
45 
GetNextWriteLocation(const QuicIpAddress & self_address,const QuicSocketAddress & peer_address)46 QuicPacketBuffer QuicPacketWriterWrapper::GetNextWriteLocation(
47     const QuicIpAddress& self_address, const QuicSocketAddress& peer_address) {
48   return writer_->GetNextWriteLocation(self_address, peer_address);
49 }
50 
Flush()51 WriteResult QuicPacketWriterWrapper::Flush() { return writer_->Flush(); }
52 
set_writer(QuicPacketWriter * writer)53 void QuicPacketWriterWrapper::set_writer(QuicPacketWriter* writer) {
54   unset_writer();
55   writer_ = writer;
56   owns_writer_ = true;
57 }
58 
set_non_owning_writer(QuicPacketWriter * writer)59 void QuicPacketWriterWrapper::set_non_owning_writer(QuicPacketWriter* writer) {
60   unset_writer();
61   writer_ = writer;
62   owns_writer_ = false;
63 }
64 
unset_writer()65 void QuicPacketWriterWrapper::unset_writer() {
66   if (owns_writer_) {
67     delete writer_;
68   }
69 
70   owns_writer_ = false;
71   writer_ = nullptr;
72 }
73 
74 }  // namespace quic
75