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

Replace RegularQuicPacketBuilder with PacketBuilderInterface in the frame

Summary: as title

Reviewed By: mjoras

Differential Revision: D20899342

fbshipit-source-id: 3af89de5350f171c575fe4e7385f3014b95357a5
This commit is contained in:
Yang Chi
2020-04-10 09:13:15 -07:00
committed by Facebook GitHub Bot
parent 7d52f280f8
commit e5f26c960e
4 changed files with 12 additions and 14 deletions

View File

@@ -115,7 +115,7 @@ FrameScheduler FrameScheduler::Builder::build() && {
FrameScheduler::FrameScheduler(std::string name) : name_(std::move(name)) {}
SchedulingResult FrameScheduler::scheduleFramesForPacket(
RegularQuicPacketBuilder&& builder,
PacketBuilderInterface&& builder,
uint32_t writableBytes) {
// We need to keep track of writable bytes after writing header.
writableBytes = writableBytes > builder.getHeaderBytes()
@@ -495,7 +495,7 @@ bool CryptoStreamScheduler::hasData() const {
}
SchedulingResult CryptoStreamScheduler::scheduleFramesForPacket(
RegularQuicPacketBuilder&& builder,
PacketBuilderInterface&& builder,
uint32_t writableBytes) {
// We need to keep track of writable bytes after writing header.
writableBytes = writableBytes > builder.getHeaderBytes()
@@ -527,7 +527,7 @@ bool CloningScheduler::hasData() const {
}
SchedulingResult CloningScheduler::scheduleFramesForPacket(
RegularQuicPacketBuilder&& builder,
PacketBuilderInterface&& builder,
uint32_t writableBytes) {
// The writableBytes in this function shouldn't be limited by cwnd, since
// we only use CloningScheduler for the cases that we want to bypass cwnd for
@@ -554,6 +554,7 @@ SchedulingResult CloningScheduler::scheduleFramesForPacket(
// independent header builder.
auto builderPnSpace = builder.getPacketHeader().getPacketNumberSpace();
CHECK_EQ(builderPnSpace, PacketNumberSpace::AppData);
// TODO: This needs to be provided from outside now
RegularQuicPacketBuilder regularBuilder(
conn_.udpSendPacketLen,
builder.getPacketHeader(),

View File

@@ -46,7 +46,7 @@ class QuicPacketScheduler {
* a clone and the associated PacketEvent for both origin and clone.
*/
virtual SchedulingResult scheduleFramesForPacket(
RegularQuicPacketBuilder&& builder,
PacketBuilderInterface&& builder,
uint32_t writableBytes) = 0;
/**
@@ -298,7 +298,7 @@ class CryptoStreamScheduler {
* of CryptoStreamScheduler, this will always return folly::none.
*/
SchedulingResult scheduleFramesForPacket(
RegularQuicPacketBuilder&& builder,
PacketBuilderInterface&& builder,
uint32_t writableBytes);
bool hasData() const;
@@ -355,7 +355,7 @@ class FrameScheduler : public QuicPacketScheduler {
explicit FrameScheduler(std::string name);
SchedulingResult scheduleFramesForPacket(
RegularQuicPacketBuilder&& builder,
PacketBuilderInterface&& builder,
uint32_t writableBytes) override;
// If any scheduler, including AckScheduler, has pending data to send
@@ -406,7 +406,7 @@ class CloningScheduler : public QuicPacketScheduler {
* clone and the associated PacketEvent for both origin and clone.
*/
SchedulingResult scheduleFramesForPacket(
RegularQuicPacketBuilder&& builder,
PacketBuilderInterface&& builder,
uint32_t writableBytes) override;
std::string name() const override;

View File

@@ -29,17 +29,15 @@ class MockFrameScheduler : public FrameScheduler {
// override methods accepting rvalue ref since gmock doesn't support it
SchedulingResult scheduleFramesForPacket(
RegularQuicPacketBuilder&& builderIn,
PacketBuilderInterface&& builderIn,
uint32_t writableBytes) override {
auto builder =
std::make_unique<RegularQuicPacketBuilder>(std::move(builderIn));
return _scheduleFramesForPacket(builder, writableBytes);
return _scheduleFramesForPacket(&builderIn, writableBytes);
}
GMOCK_METHOD0_(, const, , hasData, bool());
MOCK_METHOD2(
_scheduleFramesForPacket,
SchedulingResult(std::unique_ptr<RegularQuicPacketBuilder>&, uint32_t));
SchedulingResult(PacketBuilderInterface*, uint32_t));
};
class MockReadCallback : public QuicSocket::ReadCallback {

View File

@@ -500,8 +500,7 @@ TEST_F(QuicPacketSchedulerTest, CloneSchedulerUseNormalSchedulerFirst) {
EXPECT_CALL(mockScheduler, _scheduleFramesForPacket(_, _))
.Times(1)
.WillOnce(Invoke(
[&, headerCopy = header](
std::unique_ptr<RegularQuicPacketBuilder>&, uint32_t) mutable {
[&, headerCopy = header](PacketBuilderInterface*, uint32_t) mutable {
RegularQuicWritePacket packet(std::move(headerCopy));
packet.frames.push_back(MaxDataFrame(2832));
RegularQuicPacketBuilder::Packet builtPacket(