Introduce QuicUtils::InvertPerspective and refactor code to use it
gfe-relnote: quic perspective refactor, no behavior change
PiperOrigin-RevId: 255318447
Change-Id: I10a7cb3478382f851d3f5a1293a248918ec95844
diff --git a/quic/core/http/quic_receive_control_stream_test.cc b/quic/core/http/quic_receive_control_stream_test.cc
index 94456a9..9af2678 100644
--- a/quic/core/http/quic_receive_control_stream_test.cc
+++ b/quic/core/http/quic_receive_control_stream_test.cc
@@ -58,8 +58,7 @@
auto pending = QuicMakeUnique<PendingStream>(
QuicUtils::GetFirstUnidirectionalStreamId(
GetParam().version.transport_version,
- perspective() == Perspective::IS_CLIENT ? Perspective::IS_SERVER
- : Perspective::IS_CLIENT),
+ QuicUtils::InvertPerspective(perspective())),
&session_);
receive_control_stream_ =
QuicMakeUnique<QuicReceiveControlStream>(pending.get());
diff --git a/quic/core/qpack/qpack_receive_stream_test.cc b/quic/core/qpack/qpack_receive_stream_test.cc
index d324a0f..121043f 100644
--- a/quic/core/qpack/qpack_receive_stream_test.cc
+++ b/quic/core/qpack/qpack_receive_stream_test.cc
@@ -55,12 +55,11 @@
SupportedVersions(GetParam().version))),
session_(connection_) {
session_.Initialize();
- PendingStream* pending = new PendingStream(
- QuicUtils::GetFirstUnidirectionalStreamId(
- GetParam().version.transport_version,
- perspective() == Perspective::IS_CLIENT ? Perspective::IS_SERVER
- : Perspective::IS_CLIENT),
- &session_);
+ PendingStream* pending =
+ new PendingStream(QuicUtils::GetFirstUnidirectionalStreamId(
+ GetParam().version.transport_version,
+ QuicUtils::InvertPerspective(perspective())),
+ &session_);
qpack_receive_stream_ = QuicMakeUnique<QpackReceiveStream>(pending);
delete pending;
}
diff --git a/quic/core/quic_connection_test.cc b/quic/core/quic_connection_test.cc
index b51ca45..749b3b6 100644
--- a/quic/core/quic_connection_test.cc
+++ b/quic/core/quic_connection_test.cc
@@ -85,11 +85,6 @@
QuicSocketAddress(QuicIpAddress::Loopback6(),
/*port=*/443);
-Perspective InvertPerspective(Perspective perspective) {
- return perspective == Perspective::IS_CLIENT ? Perspective::IS_SERVER
- : Perspective::IS_CLIENT;
-}
-
QuicStreamId GetNthClientInitiatedStreamId(int n,
QuicTransportVersion version) {
return QuicUtils::GetFirstBidirectionalStreamId(version,
@@ -533,7 +528,7 @@
// We invert perspective here, because the framer needs to parse packets
// we send.
QuicFramerPeer::SetPerspective(framer_.framer(),
- InvertPerspective(perspective));
+ QuicUtils::InvertPerspective(perspective));
}
// final_bytes_of_last_packet_ returns the last four bytes of the previous
@@ -1539,7 +1534,7 @@
connection_.set_can_truncate_connection_ids(true);
}
QuicFramerPeer::SetPerspective(&peer_framer_,
- InvertPerspective(perspective));
+ QuicUtils::InvertPerspective(perspective));
}
void set_packets_between_probes_base(
diff --git a/quic/core/quic_stream_id_manager.cc b/quic/core/quic_stream_id_manager.cc
index 793ee6c..8b8ff90 100644
--- a/quic/core/quic_stream_id_manager.cc
+++ b/quic/core/quic_stream_id_manager.cc
@@ -402,8 +402,7 @@
}
Perspective QuicStreamIdManager::peer_perspective() const {
- return (perspective() == Perspective::IS_SERVER) ? Perspective::IS_CLIENT
- : Perspective::IS_SERVER;
+ return QuicUtils::InvertPerspective(perspective());
}
QuicTransportVersion QuicStreamIdManager::transport_version() const {
diff --git a/quic/core/quic_utils.h b/quic/core/quic_utils.h
index bac025e..294f52f 100644
--- a/quic/core/quic_utils.h
+++ b/quic/core/quic_utils.h
@@ -85,6 +85,12 @@
// Creates an iovec pointing to the same data as |data|.
static struct iovec MakeIovec(QuicStringPiece data);
+ // Returns the opposite Perspective of the |perspective| passed in.
+ static constexpr Perspective InvertPerspective(Perspective perspective) {
+ return perspective == Perspective::IS_CLIENT ? Perspective::IS_SERVER
+ : Perspective::IS_CLIENT;
+ }
+
// Returns true if a packet is ackable. A packet is unackable if it can never
// be acked. Occurs when a packet is never sent, after it is acknowledged
// once, or if it's a crypto packet we never expect to receive an ack for.
diff --git a/quic/core/uber_quic_stream_id_manager_test.cc b/quic/core/uber_quic_stream_id_manager_test.cc
index 291f63b..203dbb8 100644
--- a/quic/core/uber_quic_stream_id_manager_test.cc
+++ b/quic/core/uber_quic_stream_id_manager_test.cc
@@ -275,16 +275,10 @@
EXPECT_CALL(*connection_, CloseConnection(_, _, _)).Times(0);
EXPECT_TRUE(manager_->MaybeIncreaseLargestPeerStreamId(StreamCountToId(
manager_->actual_max_allowed_incoming_bidirectional_streams(),
- /* Perspective=*/GetParam() == Perspective::IS_SERVER
- ? Perspective::IS_CLIENT
- : Perspective::IS_SERVER,
- /* bidirectional=*/true)));
+ QuicUtils::InvertPerspective(GetParam()), /* bidirectional=*/true)));
EXPECT_TRUE(manager_->MaybeIncreaseLargestPeerStreamId(StreamCountToId(
manager_->actual_max_allowed_incoming_bidirectional_streams(),
- /* Perspective=*/GetParam() == Perspective::IS_SERVER
- ? Perspective::IS_CLIENT
- : Perspective::IS_SERVER,
- /* bidirectional=*/false)));
+ QuicUtils::InvertPerspective(GetParam()), /* bidirectional=*/false)));
std::string error_details =
GetParam() == Perspective::IS_SERVER
@@ -295,10 +289,7 @@
CloseConnection(QUIC_INVALID_STREAM_ID, error_details, _));
EXPECT_FALSE(manager_->MaybeIncreaseLargestPeerStreamId(StreamCountToId(
manager_->actual_max_allowed_incoming_bidirectional_streams() + 1,
- /* Perspective=*/GetParam() == Perspective::IS_SERVER
- ? Perspective::IS_CLIENT
- : Perspective::IS_SERVER,
- /* bidirectional=*/true)));
+ QuicUtils::InvertPerspective(GetParam()), /* bidirectional=*/true)));
error_details = GetParam() == Perspective::IS_SERVER
? "Stream id 402 would exceed stream count limit 100"
: "Stream id 403 would exceed stream count limit 100";
@@ -306,10 +297,7 @@
CloseConnection(QUIC_INVALID_STREAM_ID, error_details, _));
EXPECT_FALSE(manager_->MaybeIncreaseLargestPeerStreamId(StreamCountToId(
manager_->actual_max_allowed_incoming_bidirectional_streams() + 1,
- /* Perspective=*/GetParam() == Perspective::IS_SERVER
- ? Perspective::IS_CLIENT
- : Perspective::IS_SERVER,
- /* bidirectional=*/false)));
+ QuicUtils::InvertPerspective(GetParam()), /* bidirectional=*/false)));
}
TEST_P(UberQuicStreamIdManagerTest, OnMaxStreamsFrame) {