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

View File

@@ -46,7 +46,7 @@ class QuicPacketScheduler {
* a clone and the associated PacketEvent for both origin and clone. * a clone and the associated PacketEvent for both origin and clone.
*/ */
virtual SchedulingResult scheduleFramesForPacket( virtual SchedulingResult scheduleFramesForPacket(
RegularQuicPacketBuilder&& builder, PacketBuilderInterface&& builder,
uint32_t writableBytes) = 0; uint32_t writableBytes) = 0;
/** /**
@@ -298,7 +298,7 @@ class CryptoStreamScheduler {
* of CryptoStreamScheduler, this will always return folly::none. * of CryptoStreamScheduler, this will always return folly::none.
*/ */
SchedulingResult scheduleFramesForPacket( SchedulingResult scheduleFramesForPacket(
RegularQuicPacketBuilder&& builder, PacketBuilderInterface&& builder,
uint32_t writableBytes); uint32_t writableBytes);
bool hasData() const; bool hasData() const;
@@ -355,7 +355,7 @@ class FrameScheduler : public QuicPacketScheduler {
explicit FrameScheduler(std::string name); explicit FrameScheduler(std::string name);
SchedulingResult scheduleFramesForPacket( SchedulingResult scheduleFramesForPacket(
RegularQuicPacketBuilder&& builder, PacketBuilderInterface&& builder,
uint32_t writableBytes) override; uint32_t writableBytes) override;
// If any scheduler, including AckScheduler, has pending data to send // 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. * clone and the associated PacketEvent for both origin and clone.
*/ */
SchedulingResult scheduleFramesForPacket( SchedulingResult scheduleFramesForPacket(
RegularQuicPacketBuilder&& builder, PacketBuilderInterface&& builder,
uint32_t writableBytes) override; uint32_t writableBytes) override;
std::string name() const 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 // override methods accepting rvalue ref since gmock doesn't support it
SchedulingResult scheduleFramesForPacket( SchedulingResult scheduleFramesForPacket(
RegularQuicPacketBuilder&& builderIn, PacketBuilderInterface&& builderIn,
uint32_t writableBytes) override { uint32_t writableBytes) override {
auto builder = return _scheduleFramesForPacket(&builderIn, writableBytes);
std::make_unique<RegularQuicPacketBuilder>(std::move(builderIn));
return _scheduleFramesForPacket(builder, writableBytes);
} }
GMOCK_METHOD0_(, const, , hasData, bool()); GMOCK_METHOD0_(, const, , hasData, bool());
MOCK_METHOD2( MOCK_METHOD2(
_scheduleFramesForPacket, _scheduleFramesForPacket,
SchedulingResult(std::unique_ptr<RegularQuicPacketBuilder>&, uint32_t)); SchedulingResult(PacketBuilderInterface*, uint32_t));
}; };
class MockReadCallback : public QuicSocket::ReadCallback { class MockReadCallback : public QuicSocket::ReadCallback {

View File

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