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);