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());