quic/dsr/frontend/Scheduler.h (25 lines of code) (raw):

/* * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ #pragma once #include <quic/dsr/frontend/PacketBuilder.h> #include <quic/server/state/ServerStateMachine.h> #include <quic/state/StateData.h> namespace quic { class DSRStreamFrameScheduler { public: explicit DSRStreamFrameScheduler(QuicServerConnectionState& conn); FOLLY_NODISCARD bool hasPendingData() const; struct SchedulingResult { bool writeSuccess{false}; DSRPacketizationRequestSender* sender{nullptr}; explicit SchedulingResult( bool written, DSRPacketizationRequestSender* senderIn) : writeSuccess(written), sender(senderIn) {} SchedulingResult() : writeSuccess(false), sender(nullptr) {} }; // Write a single stream's data into builder. SchedulingResult writeStream(DSRPacketBuilderBase& builder); private: void enrichInstruction(SendInstruction::Builder& builder); private: QuicServerConnectionState& conn_; }; } // namespace quic