Update SimpleSessionNotifier for RESET_STREAM_AT frames. This is test code. PiperOrigin-RevId: 687058267
diff --git a/quiche/quic/test_tools/simple_session_notifier.cc b/quiche/quic/test_tools/simple_session_notifier.cc index 7a2e705..585c78b 100644 --- a/quiche/quic/test_tools/simple_session_notifier.cc +++ b/quiche/quic/test_tools/simple_session_notifier.cc
@@ -4,6 +4,10 @@ #include "quiche/quic/test_tools/simple_session_notifier.h" +#include "quiche/quic/core/frames/quic_frame.h" +#include "quiche/quic/core/frames/quic_reset_stream_at_frame.h" +#include "quiche/quic/core/quic_error_codes.h" +#include "quiche/quic/core/quic_types.h" #include "quiche/quic/core/quic_utils.h" #include "quiche/quic/platform/api/quic_logging.h" #include "quiche/quic/test_tools/quic_test_utils.h" @@ -113,6 +117,25 @@ WriteBufferedControlFrames(); } +void SimpleSessionNotifier::WriteOrBufferResetStreamAt( + QuicStreamId id, QuicRstStreamErrorCode error, + QuicStreamOffset bytes_written, QuicStreamOffset reliable_size) { + QUIC_DVLOG(1) << "Writing RESET_STREAM_AT_FRAME"; + const bool had_buffered_data = + HasBufferedStreamData() || HasBufferedControlFrames(); + control_frames_.emplace_back(QuicFrame(new QuicResetStreamAtFrame( + ++last_control_frame_id_, id, error, bytes_written, reliable_size))); + if (error != QUIC_STREAM_NO_ERROR) { + // Delete stream to avoid retransmissions. + stream_map_.erase(id); + } + if (had_buffered_data) { + QUIC_DLOG(WARNING) << "Connection is write blocked"; + return; + } + WriteBufferedControlFrames(); +} + void SimpleSessionNotifier::WriteOrBufferWindowUpate( QuicStreamId id, QuicStreamOffset byte_offset) { QUIC_DVLOG(1) << "Writing WINDOW_UPDATE";
diff --git a/quiche/quic/test_tools/simple_session_notifier.h b/quiche/quic/test_tools/simple_session_notifier.h index f1af586..a4175f0 100644 --- a/quiche/quic/test_tools/simple_session_notifier.h +++ b/quiche/quic/test_tools/simple_session_notifier.h
@@ -6,7 +6,9 @@ #define QUICHE_QUIC_TEST_TOOLS_SIMPLE_SESSION_NOTIFIER_H_ #include "absl/container/flat_hash_map.h" +#include "quiche/quic/core/quic_error_codes.h" #include "quiche/quic/core/quic_interval_set.h" +#include "quiche/quic/core/quic_types.h" #include "quiche/quic/core/session_notifier_interface.h" #include "quiche/quic/platform/api/quic_test.h" #include "quiche/common/quiche_circular_deque.h" @@ -36,6 +38,11 @@ void WriteOrBufferRstStream(QuicStreamId id, QuicRstStreamErrorCode error, QuicStreamOffset bytes_written); + // Tries to write RESET_STREAM_AT_FRAME. + void WriteOrBufferResetStreamAt(QuicStreamId id, QuicRstStreamErrorCode error, + QuicStreamOffset bytes_written, + QuicStreamOffset reliable_size); + // Tries to write WINDOW_UPDATE. void WriteOrBufferWindowUpate(QuicStreamId id, QuicStreamOffset byte_offset);