Refactor ExpansionOnNewFrameWithLastFrame out from ExpansionOnNewFrame. This new function will be used later. PiperOrigin-RevId: 318464492 Change-Id: I37a7d4aa77350f277def804a1675e3b33d5568e4
diff --git a/quic/core/quic_packet_creator.cc b/quic/core/quic_packet_creator.cc index 07be112..a31b179 100644 --- a/quic/core/quic_packet_creator.cc +++ b/quic/core/quic_packet_creator.cc
@@ -704,22 +704,23 @@ size_t QuicPacketCreator::ExpansionOnNewFrame() const { // If the last frame in the packet is a message frame, then it will expand to // include the varint message length when a new frame is added. - const bool has_trailing_message_frame = - !queued_frames_.empty() && queued_frames_.back().type == MESSAGE_FRAME; - if (has_trailing_message_frame) { - return QuicDataWriter::GetVarInt62Len( - queued_frames_.back().message_frame->message_length); + if (queued_frames_.empty()) { + return 0; } - // If the last frame in the packet is a stream frame, then it will expand to - // include the stream_length field when a new frame is added. - const bool has_trailing_stream_frame = - !queued_frames_.empty() && queued_frames_.back().type == STREAM_FRAME; - if (!has_trailing_stream_frame) { + return ExpansionOnNewFrameWithLastFrame(queued_frames_.back()); +} + +size_t QuicPacketCreator::ExpansionOnNewFrameWithLastFrame( + const QuicFrame& last_frame) const { + if (last_frame.type == MESSAGE_FRAME) { + return QuicDataWriter::GetVarInt62Len( + last_frame.message_frame->message_length); + } + if (last_frame.type != STREAM_FRAME) { return 0; } if (VersionHasIetfQuicFrames(framer_->transport_version())) { - return QuicDataWriter::GetVarInt62Len( - queued_frames_.back().stream_frame.data_length); + return QuicDataWriter::GetVarInt62Len(last_frame.stream_frame.data_length); } return kQuicStreamPayloadLengthSize; }
diff --git a/quic/core/quic_packet_creator.h b/quic/core/quic_packet_creator.h index 76d6557..ddc5e2d 100644 --- a/quic/core/quic_packet_creator.h +++ b/quic/core/quic_packet_creator.h
@@ -190,6 +190,10 @@ // amount of expected expansion. size_t ExpansionOnNewFrame() const; + // Returns the number of bytes that the packet will expand by when a new frame + // is going to be added. |last_frame| is the last frame of the packet. + size_t ExpansionOnNewFrameWithLastFrame(const QuicFrame& last_frame) const; + // Returns the number of bytes in the current packet, including the header, // if serialized with the current frames. Adding a frame to the packet // may change the serialized length of existing frames, as per the comment