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:
committed by
Facebook GitHub Bot
parent
7d52f280f8
commit
e5f26c960e
@@ -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(),
|
||||||
|
@@ -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;
|
||||||
|
@@ -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 {
|
||||||
|
@@ -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(
|
||||||
|
Reference in New Issue
Block a user