Introduce ParsedQuicVersion static constructors
These will simplify accessing individual ParsedQuicVersions, and is a step towards making ParsedQuicVersion a class.
Refactor, no behavior change, not flag protected
PiperOrigin-RevId: 313844489
Change-Id: I0406f8d149ca396dff9b444960c826aaff833822
diff --git a/quic/core/quic_versions.cc b/quic/core/quic_versions.cc
index 7e09d2f..a952368 100644
--- a/quic/core/quic_versions.cc
+++ b/quic/core/quic_versions.cc
@@ -638,12 +638,11 @@
}
ParsedQuicVersion UnsupportedQuicVersion() {
- return ParsedQuicVersion(PROTOCOL_UNSUPPORTED, QUIC_VERSION_UNSUPPORTED);
+ return ParsedQuicVersion::Unsupported();
}
ParsedQuicVersion QuicVersionReservedForNegotiation() {
- return ParsedQuicVersion(PROTOCOL_QUIC_CRYPTO,
- QUIC_VERSION_RESERVED_FOR_NEGOTIATION);
+ return ParsedQuicVersion::ReservedForNegotiation();
}
std::string AlpnForVersion(ParsedQuicVersion parsed_version) {
diff --git a/quic/core/quic_versions.h b/quic/core/quic_versions.h
index 9e6a184..7a1d73f 100644
--- a/quic/core/quic_versions.h
+++ b/quic/core/quic_versions.h
@@ -250,6 +250,51 @@
transport_version != other.transport_version;
}
+ static constexpr ParsedQuicVersion Draft28() {
+ return ParsedQuicVersion(PROTOCOL_TLS1_3, QUIC_VERSION_IETF_DRAFT_28);
+ }
+
+ static constexpr ParsedQuicVersion Draft27() {
+ return ParsedQuicVersion(PROTOCOL_TLS1_3, QUIC_VERSION_IETF_DRAFT_27);
+ }
+
+ static constexpr ParsedQuicVersion Draft25() {
+ return ParsedQuicVersion(PROTOCOL_TLS1_3, QUIC_VERSION_IETF_DRAFT_25);
+ }
+
+ static constexpr ParsedQuicVersion T050() {
+ return ParsedQuicVersion(PROTOCOL_TLS1_3, QUIC_VERSION_50);
+ }
+
+ static constexpr ParsedQuicVersion Q050() {
+ return ParsedQuicVersion(PROTOCOL_QUIC_CRYPTO, QUIC_VERSION_50);
+ }
+
+ static constexpr ParsedQuicVersion Q049() {
+ return ParsedQuicVersion(PROTOCOL_QUIC_CRYPTO, QUIC_VERSION_49);
+ }
+
+ static constexpr ParsedQuicVersion Q048() {
+ return ParsedQuicVersion(PROTOCOL_QUIC_CRYPTO, QUIC_VERSION_48);
+ }
+
+ static constexpr ParsedQuicVersion Q046() {
+ return ParsedQuicVersion(PROTOCOL_QUIC_CRYPTO, QUIC_VERSION_46);
+ }
+
+ static constexpr ParsedQuicVersion Q043() {
+ return ParsedQuicVersion(PROTOCOL_QUIC_CRYPTO, QUIC_VERSION_43);
+ }
+
+ static constexpr ParsedQuicVersion Unsupported() {
+ return ParsedQuicVersion(PROTOCOL_UNSUPPORTED, QUIC_VERSION_UNSUPPORTED);
+ }
+
+ static constexpr ParsedQuicVersion ReservedForNegotiation() {
+ return ParsedQuicVersion(PROTOCOL_QUIC_CRYPTO,
+ QUIC_VERSION_RESERVED_FOR_NEGOTIATION);
+ }
+
// Returns whether our codebase understands this version. This should only be
// called on valid versions, see ParsedQuicVersionIsValid. Assuming the
// version is valid, IsKnown returns whether the version is not
@@ -379,15 +424,11 @@
constexpr std::array<ParsedQuicVersion, 9> SupportedVersions() {
return {
- ParsedQuicVersion(PROTOCOL_TLS1_3, QUIC_VERSION_IETF_DRAFT_28),
- ParsedQuicVersion(PROTOCOL_TLS1_3, QUIC_VERSION_IETF_DRAFT_27),
- ParsedQuicVersion(PROTOCOL_TLS1_3, QUIC_VERSION_IETF_DRAFT_25),
- ParsedQuicVersion(PROTOCOL_TLS1_3, QUIC_VERSION_50),
- ParsedQuicVersion(PROTOCOL_QUIC_CRYPTO, QUIC_VERSION_50),
- ParsedQuicVersion(PROTOCOL_QUIC_CRYPTO, QUIC_VERSION_49),
- ParsedQuicVersion(PROTOCOL_QUIC_CRYPTO, QUIC_VERSION_48),
- ParsedQuicVersion(PROTOCOL_QUIC_CRYPTO, QUIC_VERSION_46),
- ParsedQuicVersion(PROTOCOL_QUIC_CRYPTO, QUIC_VERSION_43),
+ ParsedQuicVersion::Draft28(), ParsedQuicVersion::Draft27(),
+ ParsedQuicVersion::Draft25(), ParsedQuicVersion::T050(),
+ ParsedQuicVersion::Q050(), ParsedQuicVersion::Q049(),
+ ParsedQuicVersion::Q048(), ParsedQuicVersion::Q046(),
+ ParsedQuicVersion::Q043(),
};
}
diff --git a/quic/core/quic_versions_test.cc b/quic/core/quic_versions_test.cc
index 1ca9fae..ad2d334 100644
--- a/quic/core/quic_versions_test.cc
+++ b/quic/core/quic_versions_test.cc
@@ -84,10 +84,8 @@
}
TEST_F(QuicVersionsTest, Features) {
- ParsedQuicVersion parsed_version_q043 =
- ParsedQuicVersion(PROTOCOL_QUIC_CRYPTO, QUIC_VERSION_43);
- ParsedQuicVersion parsed_version_draft_27 =
- ParsedQuicVersion(PROTOCOL_TLS1_3, QUIC_VERSION_IETF_DRAFT_27);
+ ParsedQuicVersion parsed_version_q043 = ParsedQuicVersion::Q043();
+ ParsedQuicVersion parsed_version_draft_27 = ParsedQuicVersion::Draft27();
EXPECT_TRUE(parsed_version_q043.IsKnown());
EXPECT_FALSE(parsed_version_q043.KnowsWhichDecrypterToUse());