gfe-relnote: (n/a) Remove some unnecessary dynamic_casts from QUIC. No behavior change, not protected. PiperOrigin-RevId: 241741824 Change-Id: Icb921e0f4e51a05da88a3149713683729b67afdd
diff --git a/quic/core/http/quic_spdy_session_test.cc b/quic/core/http/quic_spdy_session_test.cc index 980ef82..190c0ed 100644 --- a/quic/core/http/quic_spdy_session_test.cc +++ b/quic/core/http/quic_spdy_session_test.cc
@@ -498,28 +498,24 @@ // Get the max allowed stream ID, this should succeed. EXPECT_NE(nullptr, session_.GetOrCreateDynamicStream( - QuicSessionPeer::v99_streamid_manager( - dynamic_cast<QuicSession*>(&session_)) + QuicSessionPeer::v99_streamid_manager(&session_) ->actual_max_allowed_incoming_bidirectional_stream_id())); EXPECT_NE( nullptr, session_.GetOrCreateDynamicStream( - QuicSessionPeer::v99_streamid_manager( - dynamic_cast<QuicSession*>(&session_)) + QuicSessionPeer::v99_streamid_manager(&session_) ->actual_max_allowed_incoming_unidirectional_stream_id())); EXPECT_CALL(*connection_, CloseConnection(_, _, _)).Times(1); // Get the (max allowed stream ID)++, this should fail. EXPECT_EQ(nullptr, session_.GetOrCreateDynamicStream( - QuicSessionPeer::v99_streamid_manager( - dynamic_cast<QuicSession*>(&session_)) + QuicSessionPeer::v99_streamid_manager(&session_) ->actual_max_allowed_incoming_bidirectional_stream_id() + IdDelta())); EXPECT_CALL(*connection_, CloseConnection(_, _, _)).Times(1); EXPECT_EQ(nullptr, session_.GetOrCreateDynamicStream( - QuicSessionPeer::v99_streamid_manager( - dynamic_cast<QuicSession*>(&session_)) + QuicSessionPeer::v99_streamid_manager(&session_) ->actual_max_allowed_incoming_unidirectional_stream_id() + IdDelta())); } else {
diff --git a/quic/core/quic_sent_packet_manager.cc b/quic/core/quic_sent_packet_manager.cc index 89757de..f227190 100644 --- a/quic/core/quic_sent_packet_manager.cc +++ b/quic/core/quic_sent_packet_manager.cc
@@ -84,11 +84,7 @@ debug_delegate_(nullptr), network_change_visitor_(nullptr), initial_congestion_window_(kInitialCongestionWindow), - loss_algorithm_( - unacked_packets_.use_uber_loss_algorithm() - ? dynamic_cast<LossDetectionInterface*>(&uber_loss_algorithm_) - : dynamic_cast<LossDetectionInterface*>( - &general_loss_algorithm_)), + loss_algorithm_(GetInitialLossAlgorithm()), general_loss_algorithm_(loss_type), uber_loss_algorithm_(loss_type), consecutive_rto_count_(0), @@ -120,6 +116,13 @@ SetSendAlgorithm(congestion_control_type); } +LossDetectionInterface* QuicSentPacketManager::GetInitialLossAlgorithm() { + if (unacked_packets_.use_uber_loss_algorithm()) { + return &uber_loss_algorithm_; + } + return &general_loss_algorithm_; +} + QuicSentPacketManager::~QuicSentPacketManager() {} void QuicSentPacketManager::SetFromConfig(const QuicConfig& config) {
diff --git a/quic/core/quic_sent_packet_manager.h b/quic/core/quic_sent_packet_manager.h index c3c227e..c892126 100644 --- a/quic/core/quic_sent_packet_manager.h +++ b/quic/core/quic_sent_packet_manager.h
@@ -502,6 +502,9 @@ // Sets the initial RTT of the connection. void SetInitialRtt(QuicTime::Delta rtt); + // Should only be called from constructor. + LossDetectionInterface* GetInitialLossAlgorithm(); + // Called when handshake is confirmed to remove the retransmittable frames // from all packets of HANDSHAKE_DATA packet number space to ensure they don't // get retransmitted and will eventually be removed from unacked packets map.