Remove stream pointer from QuicSession::WritevData.
The session only uses the pointer to access stream_bytes_written. It could simply be replaced by a |is_retransmission| boolean. This change makes the boundary of streams and sessions clearer.
gfe-relnote: no behavior change, not protected.
PiperOrigin-RevId: 296504335
Change-Id: I349bdadadd923e9dcb5b03231ce351e4f1a25c96
diff --git a/quic/test_tools/quic_test_utils.cc b/quic/test_tools/quic_test_utils.cc
index 4a9bac5..6ba98de 100644
--- a/quic/test_tools/quic_test_utils.cc
+++ b/quic/test_tools/quic_test_utils.cc
@@ -22,6 +22,7 @@
#include "net/third_party/quiche/src/quic/core/quic_framer.h"
#include "net/third_party/quiche/src/quic/core/quic_packet_creator.h"
#include "net/third_party/quiche/src/quic/core/quic_simple_buffer_allocator.h"
+#include "net/third_party/quiche/src/quic/core/quic_types.h"
#include "net/third_party/quiche/src/quic/core/quic_utils.h"
#include "net/third_party/quiche/src/quic/platform/api/quic_flags.h"
#include "net/third_party/quiche/src/quic/platform/api/quic_logging.h"
@@ -576,14 +577,15 @@
crypto_stream_.reset(crypto_stream);
}
-// static
-QuicConsumedData MockQuicSession::ConsumeData(QuicStream* stream,
- QuicStreamId /*id*/,
+QuicConsumedData MockQuicSession::ConsumeData(QuicStreamId id,
size_t write_length,
QuicStreamOffset offset,
- StreamSendingState state) {
+ StreamSendingState state,
+ bool /*is_retransmission*/) {
if (write_length > 0) {
auto buf = std::make_unique<char[]>(write_length);
+ QuicStream* stream = GetOrCreateStream(id);
+ DCHECK(stream);
QuicDataWriter writer(write_length, buf.get(), quiche::HOST_BYTE_ORDER);
stream->WriteStreamData(offset, write_length, &writer);
} else {
@@ -647,6 +649,23 @@
crypto_stream_.reset(crypto_stream);
}
+QuicConsumedData MockQuicSpdySession::ConsumeData(QuicStreamId id,
+ size_t write_length,
+ QuicStreamOffset offset,
+ StreamSendingState state,
+ bool /*is_retransmission*/) {
+ if (write_length > 0) {
+ auto buf = std::make_unique<char[]>(write_length);
+ QuicStream* stream = GetOrCreateStream(id);
+ DCHECK(stream);
+ QuicDataWriter writer(write_length, buf.get(), quiche::HOST_BYTE_ORDER);
+ stream->WriteStreamData(offset, write_length, &writer);
+ } else {
+ DCHECK(state != NO_FIN);
+ }
+ return QuicConsumedData(write_length, state != NO_FIN);
+}
+
TestQuicSpdyServerSession::TestQuicSpdyServerSession(
QuicConnection* connection,
const QuicConfig& config,
diff --git a/quic/test_tools/quic_test_utils.h b/quic/test_tools/quic_test_utils.h
index 035e15b..7a95250 100644
--- a/quic/test_tools/quic_test_utils.h
+++ b/quic/test_tools/quic_test_utils.h
@@ -22,6 +22,7 @@
#include "net/third_party/quiche/src/quic/core/quic_packet_writer.h"
#include "net/third_party/quiche/src/quic/core/quic_sent_packet_manager.h"
#include "net/third_party/quiche/src/quic/core/quic_simple_buffer_allocator.h"
+#include "net/third_party/quiche/src/quic/core/quic_types.h"
#include "net/third_party/quiche/src/quic/platform/api/quic_mem_slice_storage.h"
#include "net/third_party/quiche/src/quic/platform/api/quic_test.h"
#include "net/third_party/quiche/src/quic/test_tools/mock_clock.h"
@@ -633,11 +634,11 @@
MOCK_METHOD0(ShouldCreateOutgoingBidirectionalStream, bool());
MOCK_METHOD0(ShouldCreateOutgoingUnidirectionalStream, bool());
MOCK_METHOD5(WritevData,
- QuicConsumedData(QuicStream* stream,
- QuicStreamId id,
+ QuicConsumedData(QuicStreamId id,
size_t write_length,
QuicStreamOffset offset,
- StreamSendingState state));
+ StreamSendingState state,
+ bool is_retransmission));
MOCK_METHOD3(SendRstStream,
void(QuicStreamId stream_id,
@@ -663,11 +664,11 @@
// Returns a QuicConsumedData that indicates all of |write_length| (and |fin|
// if set) has been consumed.
- static QuicConsumedData ConsumeData(QuicStream* stream,
- QuicStreamId id,
- size_t write_length,
- QuicStreamOffset offset,
- StreamSendingState state);
+ QuicConsumedData ConsumeData(QuicStreamId id,
+ size_t write_length,
+ QuicStreamOffset offset,
+ StreamSendingState state,
+ bool is_retransmission);
void ReallySendRstStream(QuicStreamId id,
QuicRstStreamErrorCode error,
@@ -732,11 +733,11 @@
MOCK_METHOD0(ShouldCreateOutgoingBidirectionalStream, bool());
MOCK_METHOD0(ShouldCreateOutgoingUnidirectionalStream, bool());
MOCK_METHOD5(WritevData,
- QuicConsumedData(QuicStream* stream,
- QuicStreamId id,
+ QuicConsumedData(QuicStreamId id,
size_t write_length,
QuicStreamOffset offset,
- StreamSendingState state));
+ StreamSendingState state,
+ bool is_retransmission));
MOCK_METHOD3(SendRstStream,
void(QuicStreamId stream_id,
@@ -777,6 +778,14 @@
OnStreamFrameData,
void(QuicStreamId stream_id, const char* data, size_t len, bool fin));
+ // Returns a QuicConsumedData that indicates all of |write_length| (and |fin|
+ // if set) has been consumed.
+ QuicConsumedData ConsumeData(QuicStreamId id,
+ size_t write_length,
+ QuicStreamOffset offset,
+ StreamSendingState state,
+ bool is_retransmission);
+
using QuicSession::ActivateStream;
private: