Let session methods that write data take argument of TransmissionType so that it's clear at which transmission type the data is written.
gfe-relnote: no behavior change. not protected.
PiperOrigin-RevId: 298673372
Change-Id: Ibe1e680be7bce0e6310f8b6db50f7f86c4c8a206
diff --git a/quic/core/quic_crypto_stream.cc b/quic/core/quic_crypto_stream.cc
index 81d8547..da5d15f 100644
--- a/quic/core/quic_crypto_stream.cc
+++ b/quic/core/quic_crypto_stream.cc
@@ -173,8 +173,8 @@
return;
}
- size_t bytes_consumed =
- stream_delegate()->WriteCryptoData(level, data.length(), offset);
+ size_t bytes_consumed = stream_delegate()->WriteCryptoData(
+ level, data.length(), offset, NOT_RETRANSMISSION);
send_buffer->OnStreamDataConsumed(bytes_consumed);
}
@@ -249,7 +249,7 @@
while (send_buffer->HasPendingRetransmission()) {
auto pending = send_buffer->NextPendingRetransmission();
size_t bytes_consumed = stream_delegate()->WriteCryptoData(
- level, pending.length, pending.offset);
+ level, pending.length, pending.offset, HANDSHAKE_RETRANSMISSION);
send_buffer->OnStreamDataRetransmitted(pending.offset, bytes_consumed);
if (bytes_consumed < pending.length) {
break;
@@ -287,7 +287,7 @@
retransmission_encryption_level);
consumed = stream_delegate()->WritevData(
id(), pending.length, pending.offset, NO_FIN,
- /*is_retransmission*/ true, QuicheNullOpt);
+ HANDSHAKE_RETRANSMISSION, QuicheNullOpt);
QUIC_DVLOG(1) << ENDPOINT << "stream " << id()
<< " tries to retransmit stream data [" << pending.offset
<< ", " << pending.offset + pending.length
@@ -302,7 +302,8 @@
} else {
QUIC_RELOADABLE_FLAG_COUNT_N(quic_writevdata_at_level, 1, 2);
consumed = RetransmitStreamDataAtLevel(pending.offset, pending.length,
- retransmission_encryption_level);
+ retransmission_encryption_level,
+ HANDSHAKE_RETRANSMISSION);
}
if (consumed.bytes_consumed < pending.length) {
// The connection is write blocked.
@@ -313,7 +314,9 @@
bool QuicCryptoStream::RetransmitStreamData(QuicStreamOffset offset,
QuicByteCount data_length,
- bool /*fin*/) {
+ bool /*fin*/,
+ TransmissionType type) {
+ DCHECK_EQ(HANDSHAKE_RETRANSMISSION, type);
QuicIntervalSet<QuicStreamOffset> retransmission(offset,
offset + data_length);
// Determine the encryption level to send data. This only needs to be once as
@@ -335,9 +338,9 @@
if (!writevdata_at_level_) {
// Set appropriate encryption level.
session()->connection()->SetDefaultEncryptionLevel(send_encryption_level);
- consumed = stream_delegate()->WritevData(
- id(), retransmission_length, retransmission_offset, NO_FIN,
- /*is_retransmission*/ true, QuicheNullOpt);
+ consumed = stream_delegate()->WritevData(id(), retransmission_length,
+ retransmission_offset, NO_FIN,
+ type, QuicheNullOpt);
QUIC_DVLOG(1) << ENDPOINT << "stream " << id()
<< " is forced to retransmit stream data ["
<< retransmission_offset << ", "
@@ -351,8 +354,9 @@
current_encryption_level);
} else {
QUIC_RELOADABLE_FLAG_COUNT_N(quic_writevdata_at_level, 2, 2);
- consumed = RetransmitStreamDataAtLevel(
- retransmission_offset, retransmission_length, send_encryption_level);
+ consumed = RetransmitStreamDataAtLevel(retransmission_offset,
+ retransmission_length,
+ send_encryption_level, type);
}
if (consumed.bytes_consumed < retransmission_length) {
// The connection is write blocked.
@@ -366,11 +370,13 @@
QuicConsumedData QuicCryptoStream::RetransmitStreamDataAtLevel(
QuicStreamOffset retransmission_offset,
QuicByteCount retransmission_length,
- EncryptionLevel encryption_level) {
+ EncryptionLevel encryption_level,
+ TransmissionType type) {
+ DCHECK_EQ(HANDSHAKE_RETRANSMISSION, type);
DCHECK(writevdata_at_level_);
const auto consumed = stream_delegate()->WritevData(
- id(), retransmission_length, retransmission_offset, NO_FIN,
- /*is_retransmission*/ true, encryption_level);
+ id(), retransmission_length, retransmission_offset, NO_FIN, type,
+ encryption_level);
QUIC_DVLOG(1) << ENDPOINT << "stream " << id()
<< " is forced to retransmit stream data ["
<< retransmission_offset << ", "
@@ -413,7 +419,8 @@
crypto_frame->offset, crypto_frame->data_length);
}
-void QuicCryptoStream::RetransmitData(QuicCryptoFrame* crypto_frame) {
+void QuicCryptoStream::RetransmitData(QuicCryptoFrame* crypto_frame,
+ TransmissionType type) {
QUIC_BUG_IF(!QuicVersionUsesCryptoFrames(session()->transport_version()))
<< "Versions less than 47 don't retransmit CRYPTO frames";
QuicIntervalSet<QuicStreamOffset> retransmission(
@@ -428,7 +435,8 @@
size_t retransmission_offset = interval.min();
size_t retransmission_length = interval.max() - interval.min();
size_t bytes_consumed = stream_delegate()->WriteCryptoData(
- crypto_frame->level, retransmission_length, retransmission_offset);
+ crypto_frame->level, retransmission_length, retransmission_offset,
+ type);
send_buffer->OnStreamDataRetransmitted(retransmission_offset,
bytes_consumed);
if (bytes_consumed < retransmission_length) {
@@ -450,7 +458,8 @@
continue;
}
size_t bytes_consumed = stream_delegate()->WriteCryptoData(
- level, data_length, send_buffer->stream_bytes_written());
+ level, data_length, send_buffer->stream_bytes_written(),
+ NOT_RETRANSMISSION);
send_buffer->OnStreamDataConsumed(bytes_consumed);
if (bytes_consumed < data_length) {
// Connection is write blocked.