Add SupportsEcn() interface to QuicPacketWriter. A follow-on will use this interface in QuicConnection. PiperOrigin-RevId: 534582526
diff --git a/quiche/quic/core/batch_writer/quic_batch_writer_base.h b/quiche/quic/core/batch_writer/quic_batch_writer_base.h index a33b8e2..9f9f226 100644 --- a/quiche/quic/core/batch_writer/quic_batch_writer_base.h +++ b/quiche/quic/core/batch_writer/quic_batch_writer_base.h
@@ -52,6 +52,8 @@ bool IsBatchMode() const final { return true; } + bool SupportsEcn() const override { return false; } + QuicPacketBuffer GetNextWriteLocation( const QuicIpAddress& /*self_address*/, const QuicSocketAddress& /*peer_address*/) final {
diff --git a/quiche/quic/core/quic_default_packet_writer.h b/quiche/quic/core/quic_default_packet_writer.h index c513362..1235e49 100644 --- a/quiche/quic/core/quic_default_packet_writer.h +++ b/quiche/quic/core/quic_default_packet_writer.h
@@ -37,6 +37,7 @@ const QuicSocketAddress& peer_address) const override; bool SupportsReleaseTime() const override; bool IsBatchMode() const override; + bool SupportsEcn() const override { return true; } QuicPacketBuffer GetNextWriteLocation( const QuicIpAddress& self_address, const QuicSocketAddress& peer_address) override;
diff --git a/quiche/quic/core/quic_packet_writer.h b/quiche/quic/core/quic_packet_writer.h index c3b3fab..c684656 100644 --- a/quiche/quic/core/quic_packet_writer.h +++ b/quiche/quic/core/quic_packet_writer.h
@@ -141,6 +141,9 @@ // True=Batch mode. False=PassThrough mode. virtual bool IsBatchMode() const = 0; + // Returns true if the writer will mark ECN on packets it writes. + virtual bool SupportsEcn() const = 0; + // PassThrough mode: Return {nullptr, nullptr} // // Batch mode:
diff --git a/quiche/quic/core/quic_packet_writer_wrapper.h b/quiche/quic/core/quic_packet_writer_wrapper.h index 7d43fdc..6bbf7fe 100644 --- a/quiche/quic/core/quic_packet_writer_wrapper.h +++ b/quiche/quic/core/quic_packet_writer_wrapper.h
@@ -36,6 +36,7 @@ const QuicSocketAddress& peer_address) const override; bool SupportsReleaseTime() const override; bool IsBatchMode() const override; + bool SupportsEcn() const override { return writer_->SupportsEcn(); } QuicPacketBuffer GetNextWriteLocation( const QuicIpAddress& self_address, const QuicSocketAddress& peer_address) override;
diff --git a/quiche/quic/masque/masque_encapsulated_client.cc b/quiche/quic/masque/masque_encapsulated_client.cc index 34adde4..f6bdc58 100644 --- a/quiche/quic/masque/masque_encapsulated_client.cc +++ b/quiche/quic/masque/masque_encapsulated_client.cc
@@ -199,6 +199,8 @@ bool SupportsReleaseTime() const override { return false; } bool IsBatchMode() const override { return false; } + + bool SupportsEcn() const override { return false; } QuicPacketBuffer GetNextWriteLocation( const QuicIpAddress& /*self_address*/, const QuicSocketAddress& /*peer_address*/) override {
diff --git a/quiche/quic/qbone/qbone_stream_test.cc b/quiche/quic/qbone/qbone_stream_test.cc index 16052bc..00e854f 100644 --- a/quiche/quic/qbone/qbone_stream_test.cc +++ b/quiche/quic/qbone/qbone_stream_test.cc
@@ -123,6 +123,8 @@ bool IsBatchMode() const override { return false; } + bool SupportsEcn() const override { return false; } + QuicPacketBuffer GetNextWriteLocation( const QuicIpAddress& self_address, const QuicSocketAddress& peer_address) override {
diff --git a/quiche/quic/test_tools/first_flight.h b/quiche/quic/test_tools/first_flight.h index 948511a..cd16f94 100644 --- a/quiche/quic/test_tools/first_flight.h +++ b/quiche/quic/test_tools/first_flight.h
@@ -53,6 +53,7 @@ } bool SupportsReleaseTime() const override { return false; } bool IsBatchMode() const override { return false; } + bool SupportsEcn() const override { return false; } QuicPacketBuffer GetNextWriteLocation( const QuicIpAddress& /*self_address*/, const QuicSocketAddress& /*peer_address*/) override {
diff --git a/quiche/quic/test_tools/quic_test_utils.h b/quiche/quic/test_tools/quic_test_utils.h index e368259..ab1ec88 100644 --- a/quiche/quic/test_tools/quic_test_utils.h +++ b/quiche/quic/test_tools/quic_test_utils.h
@@ -1196,6 +1196,7 @@ (const QuicSocketAddress& peer_address), (const, override)); MOCK_METHOD(bool, SupportsReleaseTime, (), (const, override)); MOCK_METHOD(bool, IsBatchMode, (), (const, override)); + MOCK_METHOD(bool, SupportsEcn, (), (const, override)); MOCK_METHOD(QuicPacketBuffer, GetNextWriteLocation, (const QuicIpAddress& self_address, const QuicSocketAddress& peer_address), @@ -1859,6 +1860,8 @@ bool IsBatchMode() const override { return is_batch_mode_; } + bool SupportsEcn() const override { return true; } + QuicPacketBuffer GetNextWriteLocation( const QuicIpAddress& /*self_address*/, const QuicSocketAddress& /*peer_address*/) override;
diff --git a/quiche/quic/test_tools/simulator/quic_endpoint_base.h b/quiche/quic/test_tools/simulator/quic_endpoint_base.h index c734b81..bb3ae10 100644 --- a/quiche/quic/test_tools/simulator/quic_endpoint_base.h +++ b/quiche/quic/test_tools/simulator/quic_endpoint_base.h
@@ -88,6 +88,7 @@ const QuicSocketAddress& peer_address) const override; bool SupportsReleaseTime() const override; bool IsBatchMode() const override; + bool SupportsEcn() const override { return false; } QuicPacketBuffer GetNextWriteLocation( const QuicIpAddress& self_address, const QuicSocketAddress& peer_address) override;