1
0
mirror of https://github.com/facebookincubator/mvfst.git synced 2025-11-24 04:01:07 +03:00

Store less metadata for padding frames.

Summary:
Padding frames by definition have no semantics. There also can be quite a large number of them, which makes their storage expensive.

Optimize for this by effectively coalescing multiple contiguous padding frames into a single frame.

(Note: this ignores all push blocking failures!)

Reviewed By: kvtsoy

Differential Revision: D44636497

fbshipit-source-id: 4c1cd88123c4fdf40ec9c553885f46669f7326da
This commit is contained in:
Matt Joras
2023-04-18 11:47:11 -07:00
committed by Facebook GitHub Bot
parent cc22cfa124
commit bc1277caa0
10 changed files with 63 additions and 19 deletions

View File

@@ -98,6 +98,15 @@ void setupCommonExpects(MockQuicPacketBuilder& pktBuilder) {
.WillRepeatedly(WithArgs<0>(
Invoke([&](auto frame) { pktBuilder.frames_.push_back(frame); })));
EXPECT_CALL(pktBuilder, appendPaddingFrame()).WillRepeatedly(Invoke([&]() {
if (!pktBuilder.frames_.empty() &&
pktBuilder.frames_.back().asPaddingFrame()) {
pktBuilder.frames_.back().asPaddingFrame()->numFrames++;
} else {
pktBuilder.frames_.push_back(PaddingFrame());
}
}));
EXPECT_CALL(pktBuilder, _insert(_))
.WillRepeatedly(WithArgs<0>(Invoke([&](Buf& buf) {
pktBuilder.remaining_ -= buf->computeChainDataLength();