1
0
mirror of https://github.com/facebookincubator/mvfst.git synced 2025-08-06 22:22:38 +03:00

Introduce OptionalIntegral and OptionalMicros

Summary: We have a lot of optionals that are either integral values or std::chrono::microseconds. These end up wasting memory, where we can instead store sentinel values to encode whether the value is there or not. This reduces the effective range of the type by one value, but that is an acceptable tradeoff.

Reviewed By: kvtsoy

Differential Revision: D57684368

fbshipit-source-id: b406b86011f9b8169b6e5e925265f4829928cc63
This commit is contained in:
Matt Joras
2024-06-11 11:02:02 -07:00
committed by Facebook GitHub Bot
parent 466a0649a1
commit e903f277da
45 changed files with 211 additions and 173 deletions

View File

@@ -1750,7 +1750,7 @@ TEST_F(QuicTransportFunctionsTest, StreamDetailsSingleStream) {
testing::Field(&PacketStreamDetails::newStreamBytesSent, frameLen),
testing::Field(
&PacketStreamDetails::maybeFirstNewStreamByteOffset,
Optional<uint64_t>(frameOffset)),
OptionalIntegral<uint64_t>(frameOffset)),
testing::Field(
&PacketStreamDetails::streamIntervals,
testing::ElementsAre(Interval<uint64_t>(
@@ -1792,7 +1792,7 @@ TEST_F(QuicTransportFunctionsTest, StreamDetailsSingleStreamMultipleFrames) {
testing::Field(&PacketStreamDetails::newStreamBytesSent, 15),
testing::Field(
&PacketStreamDetails::maybeFirstNewStreamByteOffset,
Optional<uint64_t>(0)),
OptionalIntegral<uint64_t>(0)),
testing::Field(
&PacketStreamDetails::streamIntervals,
testing::ElementsAre(Interval<uint64_t>(0, 14)))));
@@ -1836,7 +1836,7 @@ TEST_F(QuicTransportFunctionsTest, StreamDetailsSingleStreamRetransmit) {
testing::Field(&PacketStreamDetails::newStreamBytesSent, frame1Len),
testing::Field(
&PacketStreamDetails::maybeFirstNewStreamByteOffset,
Optional<uint64_t>(frame1Offset)),
OptionalIntegral<uint64_t>(frame1Offset)),
testing::Field(
&PacketStreamDetails::streamIntervals,
testing::ElementsAre(Interval<uint64_t>(
@@ -1873,7 +1873,7 @@ TEST_F(QuicTransportFunctionsTest, StreamDetailsSingleStreamRetransmit) {
testing::Field(&PacketStreamDetails::newStreamBytesSent, 0),
testing::Field(
&PacketStreamDetails::maybeFirstNewStreamByteOffset,
Optional<uint64_t>(/* empty */)),
OptionalIntegral<uint64_t>(/* empty */)),
testing::Field(
&PacketStreamDetails::streamIntervals,
testing::ElementsAre(Interval<uint64_t>(
@@ -1917,7 +1917,7 @@ TEST_F(QuicTransportFunctionsTest, StreamDetailsSingleStreamRetransmit) {
testing::Field(&PacketStreamDetails::newStreamBytesSent, frame2Len),
testing::Field(
&PacketStreamDetails::maybeFirstNewStreamByteOffset,
Optional<uint64_t>(frame2Offset)),
OptionalIntegral<uint64_t>(frame2Offset)),
testing::Field(
&PacketStreamDetails::streamIntervals,
testing::ElementsAre(Interval<uint64_t>(
@@ -1956,7 +1956,7 @@ TEST_F(QuicTransportFunctionsTest, StreamDetailsSingleStreamRetransmit) {
testing::Field(&PacketStreamDetails::newStreamBytesSent, 0),
testing::Field(
&PacketStreamDetails::maybeFirstNewStreamByteOffset,
Optional<uint64_t>(/* empty */)),
OptionalIntegral<uint64_t>(/* empty */)),
testing::Field(
&PacketStreamDetails::streamIntervals,
testing::ElementsAre(Interval<uint64_t>(
@@ -2019,7 +2019,7 @@ TEST_F(QuicTransportFunctionsTest, StreamDetailsSingleStreamFinWithRetransmit) {
&PacketStreamDetails::newStreamBytesSent, frameLen),
testing::Field(
&PacketStreamDetails::maybeFirstNewStreamByteOffset,
Optional<uint64_t>(frameOffset)),
OptionalIntegral<uint64_t>(frameOffset)),
testing::Field(
&PacketStreamDetails::streamIntervals,
testing::ElementsAre(Interval<uint64_t>(
@@ -2069,7 +2069,7 @@ TEST_F(QuicTransportFunctionsTest, StreamDetailsSingleStreamFinWithRetransmit) {
testing::Field(&PacketStreamDetails::newStreamBytesSent, 0),
testing::Field(
&PacketStreamDetails::maybeFirstNewStreamByteOffset,
Optional<uint64_t>(/* empty */)),
OptionalIntegral<uint64_t>(/* empty */)),
testing::Field(
&PacketStreamDetails::streamIntervals,
// contains frame1 and frame2
@@ -2151,7 +2151,7 @@ TEST_F(
&PacketStreamDetails::newStreamBytesSent, frameLen),
testing::Field(
&PacketStreamDetails::maybeFirstNewStreamByteOffset,
Optional<uint64_t>(frameOffset)),
OptionalIntegral<uint64_t>(frameOffset)),
testing::Field(
&PacketStreamDetails::streamIntervals,
testing::ElementsAre(Interval<uint64_t>(
@@ -2208,7 +2208,7 @@ TEST_F(
testing::Field(&PacketStreamDetails::newStreamBytesSent, 0),
testing::Field(
&PacketStreamDetails::maybeFirstNewStreamByteOffset,
Optional<uint64_t>(/* empty */)),
OptionalIntegral<uint64_t>(/* empty */)),
testing::Field(
&PacketStreamDetails::streamIntervals,
// contains frame1 and frame 3
@@ -2295,7 +2295,7 @@ TEST_F(
&PacketStreamDetails::newStreamBytesSent, frameLen),
testing::Field(
&PacketStreamDetails::maybeFirstNewStreamByteOffset,
Optional<uint64_t>(frameOffset)),
OptionalIntegral<uint64_t>(frameOffset)),
testing::Field(
&PacketStreamDetails::streamIntervals,
testing::ElementsAre(Interval<uint64_t>(
@@ -2352,7 +2352,7 @@ TEST_F(
testing::Field(&PacketStreamDetails::newStreamBytesSent, 0),
testing::Field(
&PacketStreamDetails::maybeFirstNewStreamByteOffset,
Optional<uint64_t>(/* empty */)),
OptionalIntegral<uint64_t>(/* empty */)),
testing::Field(
&PacketStreamDetails::streamIntervals,
// contains frame1 and frame 3
@@ -2429,7 +2429,7 @@ TEST_F(QuicTransportFunctionsTest, StreamDetailsMultipleStreams) {
&PacketStreamDetails::newStreamBytesSent, stream1Len),
testing::Field(
&PacketStreamDetails::maybeFirstNewStreamByteOffset,
Optional<uint64_t>(stream1Offset)),
OptionalIntegral<uint64_t>(stream1Offset)),
testing::Field(
&PacketStreamDetails::streamIntervals,
testing::ElementsAre(Interval<uint64_t>(
@@ -2443,7 +2443,7 @@ TEST_F(QuicTransportFunctionsTest, StreamDetailsMultipleStreams) {
&PacketStreamDetails::newStreamBytesSent, stream2Len),
testing::Field(
&PacketStreamDetails::maybeFirstNewStreamByteOffset,
Optional<uint64_t>(stream2Offset)),
OptionalIntegral<uint64_t>(stream2Offset)),
testing::Field(
&PacketStreamDetails::streamIntervals,
testing::ElementsAre(Interval<uint64_t>(
@@ -2456,7 +2456,7 @@ TEST_F(QuicTransportFunctionsTest, StreamDetailsMultipleStreams) {
&PacketStreamDetails::newStreamBytesSent, stream3Len),
testing::Field(
&PacketStreamDetails::maybeFirstNewStreamByteOffset,
Optional<uint64_t>(stream3Offset)),
OptionalIntegral<uint64_t>(stream3Offset)),
testing::Field(
&PacketStreamDetails::streamIntervals,
testing::ElementsAre(Interval<uint64_t>(
@@ -2499,7 +2499,7 @@ TEST_F(QuicTransportFunctionsTest, StreamDetailsMultipleStreams) {
testing::Field(&PacketStreamDetails::newStreamBytesSent, 0),
testing::Field(
&PacketStreamDetails::maybeFirstNewStreamByteOffset,
Optional<uint64_t>(/* empty */)),
OptionalIntegral<uint64_t>(/* empty */)),
testing::Field(
&PacketStreamDetails::streamIntervals,
testing::ElementsAre(Interval<uint64_t>(
@@ -2511,7 +2511,7 @@ TEST_F(QuicTransportFunctionsTest, StreamDetailsMultipleStreams) {
testing::Field(&PacketStreamDetails::newStreamBytesSent, 0),
testing::Field(
&PacketStreamDetails::maybeFirstNewStreamByteOffset,
Optional<uint64_t>(/* empty */)),
OptionalIntegral<uint64_t>(/* empty */)),
testing::Field(
&PacketStreamDetails::streamIntervals,
testing::ElementsAre(Interval<uint64_t>(
@@ -2523,7 +2523,7 @@ TEST_F(QuicTransportFunctionsTest, StreamDetailsMultipleStreams) {
testing::Field(&PacketStreamDetails::newStreamBytesSent, 0),
testing::Field(
&PacketStreamDetails::maybeFirstNewStreamByteOffset,
Optional<uint64_t>(/* empty */)),
OptionalIntegral<uint64_t>(/* empty */)),
testing::Field(
&PacketStreamDetails::streamIntervals,
testing::ElementsAre(Interval<uint64_t>(