mediasoup 3.26.0 → 3.27.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +11 -0
- package/node/lib/DataConsumer.js +1 -1
- package/node/lib/Router.js +1 -1
- package/node/lib/Transport.js +15 -15
- package/node/lib/fbs/rtp-parameters/encoding-mapping.d.ts +2 -6
- package/node/lib/fbs/rtp-parameters/encoding-mapping.d.ts.map +1 -1
- package/node/lib/fbs/rtp-parameters/encoding-mapping.js +7 -19
- package/node/lib/fbs/rtp-parameters/rtp-encoding-parameters.d.ts +4 -4
- package/node/lib/fbs/rtp-parameters/rtp-encoding-parameters.js +2 -2
- package/node/lib/fbs/rtp-stream/bitrate-by-layer.d.ts +5 -5
- package/node/lib/fbs/rtp-stream/bitrate-by-layer.d.ts.map +1 -1
- package/node/lib/fbs/rtp-stream/bitrate-by-layer.js +3 -3
- package/node/lib/fbs/rtp-stream/recv-stats.d.ts +5 -5
- package/node/lib/fbs/rtp-stream/recv-stats.d.ts.map +1 -1
- package/node/lib/fbs/rtp-stream/recv-stats.js +3 -3
- package/node/lib/fbs/rtp-stream/send-stats.d.ts +5 -5
- package/node/lib/fbs/rtp-stream/send-stats.d.ts.map +1 -1
- package/node/lib/fbs/rtp-stream/send-stats.js +3 -3
- package/node/lib/fbs/transport/bwe-trace-info.d.ts +23 -23
- package/node/lib/fbs/transport/bwe-trace-info.d.ts.map +1 -1
- package/node/lib/fbs/transport/bwe-trace-info.js +15 -15
- package/node/lib/fbs/transport/options.d.ts +5 -5
- package/node/lib/fbs/transport/options.js +2 -2
- package/node/lib/fbs/transport/set-max-incoming-bitrate-request.d.ts +5 -5
- package/node/lib/fbs/transport/set-max-incoming-bitrate-request.d.ts.map +1 -1
- package/node/lib/fbs/transport/set-max-incoming-bitrate-request.js +3 -3
- package/node/lib/fbs/transport/set-max-outgoing-bitrate-request.d.ts +5 -5
- package/node/lib/fbs/transport/set-max-outgoing-bitrate-request.d.ts.map +1 -1
- package/node/lib/fbs/transport/set-max-outgoing-bitrate-request.js +3 -3
- package/node/lib/fbs/transport/set-min-outgoing-bitrate-request.d.ts +5 -5
- package/node/lib/fbs/transport/set-min-outgoing-bitrate-request.d.ts.map +1 -1
- package/node/lib/fbs/transport/set-min-outgoing-bitrate-request.js +3 -3
- package/node/lib/fbs/transport/stats.d.ts +38 -38
- package/node/lib/fbs/transport/stats.d.ts.map +1 -1
- package/node/lib/fbs/transport/stats.js +25 -25
- package/node/lib/ortc.d.ts +0 -1
- package/node/lib/ortc.d.ts.map +1 -1
- package/node/lib/ortc.js +1 -2
- package/node/lib/rtpParametersFbsUtils.d.ts.map +1 -1
- package/node/lib/rtpParametersFbsUtils.js +2 -2
- package/package.json +9 -9
- package/worker/deps/libwebrtc/libwebrtc/call/rtp_transport_controller_send.cc +10 -10
- package/worker/deps/libwebrtc/libwebrtc/mediasoup_helpers.h +6 -6
- package/worker/deps/libwebrtc/libwebrtc/modules/congestion_controller/goog_cc/alr_detector.cc +1 -1
- package/worker/deps/libwebrtc/libwebrtc/modules/pacing/paced_sender.cc +7 -7
- package/worker/deps/libwebrtc/libwebrtc/modules/remote_bitrate_estimator/include/remote_bitrate_estimator.h +1 -1
- package/worker/deps/libwebrtc/libwebrtc/modules/remote_bitrate_estimator/remote_bitrate_estimator_abs_send_time.cc +1 -1
- package/worker/fbs/rtpParameters.fbs +1 -2
- package/worker/fbs/rtpStream.fbs +3 -3
- package/worker/fbs/transport.fbs +23 -23
- package/worker/fuzzer/include/RTC/FuzzerDtlsTransport.hpp +4 -1
- package/worker/fuzzer/src/FuzzerUtils.cpp +5 -3
- package/worker/fuzzer/src/RTC/FuzzerDtlsTransport.cpp +8 -5
- package/worker/fuzzer/src/RTC/FuzzerRateCalculator.cpp +3 -3
- package/worker/fuzzer/src/RTC/FuzzerTrendCalculator.cpp +6 -6
- package/worker/fuzzer/src/RTC/RTCP/FuzzerFeedbackRtpTransport.cpp +3 -3
- package/worker/fuzzer/src/RTC/RTP/FuzzerPacket.cpp +2 -2
- package/worker/fuzzer/src/RTC/RTP/FuzzerRetransmissionBuffer.cpp +5 -5
- package/worker/fuzzer/src/RTC/RTP/FuzzerRtpStreamSend.cpp +3 -3
- package/worker/fuzzer/src/fuzzer.cpp +4 -0
- package/worker/include/Channel/ChannelNotification.hpp +3 -3
- package/worker/include/Channel/ChannelRequest.hpp +1 -1
- package/worker/include/Channel/ChannelSocket.hpp +11 -0
- package/worker/include/DepLibUV.hpp +16 -33
- package/worker/include/RTC/ActiveSpeakerObserver.hpp +11 -11
- package/worker/include/RTC/AudioLevelObserver.hpp +4 -4
- package/worker/include/RTC/BWE/AcknowledgedBitrateEstimatorInterface.hpp +55 -0
- package/worker/include/RTC/BWE/AimdRateControl.hpp +190 -0
- package/worker/include/RTC/BWE/BweTypes.hpp +211 -0
- package/worker/include/RTC/BWE/DelayBasedBwe.hpp +173 -0
- package/worker/include/RTC/BWE/FeedbackAdapter.hpp +72 -0
- package/worker/include/RTC/BWE/InterArrivalDelta.hpp +106 -0
- package/worker/include/RTC/BWE/LinkCapacityEstimator.hpp +84 -0
- package/worker/include/RTC/BWE/RobustThroughputEstimator.hpp +94 -0
- package/worker/include/RTC/BWE/SendPacketHistory.hpp +137 -0
- package/worker/include/RTC/BWE/TrendlineEstimator.hpp +101 -0
- package/worker/include/RTC/Consts.hpp +6 -6
- package/worker/include/RTC/Consumer.hpp +14 -12
- package/worker/include/RTC/DataConsumer.hpp +3 -3
- package/worker/include/RTC/DataProducer.hpp +3 -3
- package/worker/include/RTC/DtlsTransport.hpp +5 -2
- package/worker/include/RTC/ICE/IceCandidate.hpp +2 -2
- package/worker/include/RTC/ICE/IceServer.hpp +3 -3
- package/worker/include/RTC/KeyFrameRequestManager.hpp +3 -3
- package/worker/include/RTC/NEW_RTCP/packet/Packet.hpp +1 -1
- package/worker/include/RTC/NackGenerator.hpp +12 -12
- package/worker/include/RTC/PipeProducerStreamManager.hpp +3 -4
- package/worker/include/RTC/PipeTransport.hpp +18 -5
- package/worker/include/RTC/PlainTransport.hpp +18 -5
- package/worker/include/RTC/PortManager.hpp +4 -4
- package/worker/include/RTC/Producer.hpp +21 -12
- package/worker/include/RTC/ProducerStreamManager.hpp +12 -6
- package/worker/include/RTC/RTCP/Bye.hpp +2 -2
- package/worker/include/RTC/RTCP/FeedbackPsRemb.hpp +4 -4
- package/worker/include/RTC/RTCP/FeedbackRtpTmmb.hpp +3 -3
- package/worker/include/RTC/RTCP/FeedbackRtpTransport.hpp +54 -39
- package/worker/include/RTC/RTCP/Packet.hpp +3 -3
- package/worker/include/RTC/RTCP/ReceiverReport.hpp +3 -3
- package/worker/include/RTC/RTCP/Sdes.hpp +2 -2
- package/worker/include/RTC/RTCP/XR.hpp +2 -2
- package/worker/include/RTC/RTCP/XrDelaySinceLastRr.hpp +1 -1
- package/worker/include/RTC/RTP/Codecs/H264.hpp +1 -1
- package/worker/include/RTC/RTP/Codecs/Opus.hpp +2 -2
- package/worker/include/RTC/RTP/Codecs/PayloadDescriptorHandler.hpp +3 -3
- package/worker/include/RTC/RTP/Codecs/VP8.hpp +2 -2
- package/worker/include/RTC/RTP/Codecs/VP9.hpp +2 -2
- package/worker/include/RTC/RTP/HeaderExtensionIds.hpp +12 -12
- package/worker/include/RTC/RTP/Packet.hpp +13 -13
- package/worker/include/RTC/RTP/ProbationGenerator.hpp +1 -1
- package/worker/include/RTC/RTP/RetransmissionBuffer.hpp +7 -7
- package/worker/include/RTC/RTP/RtpStream.hpp +37 -51
- package/worker/include/RTC/RTP/RtpStreamRecv.hpp +59 -41
- package/worker/include/RTC/RTP/RtpStreamSend.hpp +20 -14
- package/worker/include/RTC/RTP/RtxStream.hpp +12 -13
- package/worker/include/RTC/RateCalculator.hpp +50 -44
- package/worker/include/RTC/RemoteCaptureTimeEstimator.hpp +5 -4
- package/worker/include/RTC/RemoteClockOffsetEstimator.hpp +11 -11
- package/worker/include/RTC/Router.hpp +6 -0
- package/worker/include/RTC/RtcLogger.hpp +1 -1
- package/worker/include/RTC/RtpDictionaries.hpp +10 -10
- package/worker/include/RTC/SCTP/association/Association.hpp +56 -28
- package/worker/include/RTC/SCTP/association/HeartbeatHandler.hpp +4 -4
- package/worker/include/RTC/SCTP/association/StateCookie.hpp +14 -14
- package/worker/include/RTC/SCTP/association/StreamResetHandler.hpp +2 -2
- package/worker/include/RTC/SCTP/association/TransmissionControlBlock.hpp +12 -12
- package/worker/include/RTC/SCTP/association/TransmissionControlBlockContextInterface.hpp +4 -4
- package/worker/include/RTC/SCTP/packet/TLV.hpp +1 -1
- package/worker/include/RTC/SCTP/packet/parameters/StateCookieParameter.hpp +3 -3
- package/worker/include/RTC/SCTP/public/AssociationInterface.hpp +4 -1
- package/worker/include/RTC/SCTP/public/AssociationMetrics.hpp +1 -1
- package/worker/include/RTC/SCTP/public/SctpOptions.hpp +12 -12
- package/worker/include/RTC/SCTP/public/SctpTypes.hpp +1 -1
- package/worker/include/RTC/SCTP/tx/OutstandingData.hpp +15 -16
- package/worker/include/RTC/SCTP/tx/RetransmissionQueue.hpp +7 -8
- package/worker/include/RTC/SCTP/tx/RetransmissionTimeout.hpp +20 -16
- package/worker/include/RTC/SCTP/tx/RoundRobinSendQueue.hpp +5 -6
- package/worker/include/RTC/SCTP/tx/SendQueueInterface.hpp +2 -2
- package/worker/include/RTC/SCTP/tx/StreamScheduler.hpp +5 -5
- package/worker/include/RTC/SctpDictionaries.hpp +3 -3
- package/worker/include/RTC/Serializable.hpp +1 -1
- package/worker/include/RTC/SimpleProducerStreamManager.hpp +3 -4
- package/worker/include/RTC/SimulcastProducerStreamManager.hpp +6 -7
- package/worker/include/RTC/SvcProducerStreamManager.hpp +6 -5
- package/worker/include/RTC/TcpConnection.hpp +9 -3
- package/worker/include/RTC/TcpServer.hpp +3 -0
- package/worker/include/RTC/Transport.hpp +52 -45
- package/worker/include/RTC/TransportCongestionControlClient.hpp +30 -25
- package/worker/include/RTC/TransportCongestionControlServer.hpp +17 -17
- package/worker/include/RTC/TrendCalculator.hpp +5 -5
- package/worker/include/RTC/UdpSocket.hpp +11 -2
- package/worker/include/RTC/WebRtcServer.hpp +20 -5
- package/worker/include/RTC/WebRtcTransport.hpp +35 -10
- package/worker/include/Settings.hpp +4 -2
- package/worker/include/Shared.hpp +5 -20
- package/worker/include/SharedInterface.hpp +6 -28
- package/worker/include/Utils.hpp +40 -21
- package/worker/include/common.hpp +4 -0
- package/worker/include/handles/BackoffTimerHandle.hpp +4 -4
- package/worker/include/handles/BackoffTimerHandleInterface.hpp +5 -5
- package/worker/include/handles/TcpConnectionHandle.hpp +6 -6
- package/worker/include/handles/TcpServerHandle.hpp +1 -1
- package/worker/include/handles/TimerHandle.hpp +15 -9
- package/worker/include/handles/TimerHandleInterface.hpp +10 -4
- package/worker/include/handles/UdpSocketHandle.hpp +3 -3
- package/worker/include/handles/UnixStreamSocketHandle.hpp +2 -2
- package/worker/meson.build +81 -36
- package/worker/meson_options.txt +1 -0
- package/worker/mocks/include/MockShared.hpp +24 -23
- package/worker/mocks/include/RTC/SCTP/association/MockTransmissionControlBlockContext.hpp +51 -27
- package/worker/mocks/include/RTC/SCTP/tx/MockSendQueue.hpp +11 -11
- package/worker/mocks/include/handles/MockBackoffTimerHandle.hpp +10 -10
- package/worker/mocks/include/handles/MockTimerHandle.hpp +60 -22
- package/worker/mocks/src/MockShared.cpp +51 -5
- package/worker/mocks/src/handles/MockBackoffTimerHandle.cpp +29 -15
- package/worker/mocks/src/handles/MockTimerHandle.cpp +117 -0
- package/worker/scripts/clang-scripts.mjs +2 -2
- package/worker/src/Channel/ChannelNotification.cpp +5 -6
- package/worker/src/Channel/ChannelSocket.cpp +20 -2
- package/worker/src/DepLibUV.cpp +4 -5
- package/worker/src/RTC/ActiveSpeakerObserver.cpp +59 -47
- package/worker/src/RTC/AudioLevelObserver.cpp +7 -7
- package/worker/src/RTC/BWE/AimdRateControl.cpp +468 -0
- package/worker/src/RTC/BWE/BweTypes.cpp +61 -0
- package/worker/src/RTC/BWE/DelayBasedBwe.cpp +275 -0
- package/worker/src/RTC/BWE/FeedbackAdapter.cpp +148 -0
- package/worker/src/RTC/BWE/InterArrivalDelta.cpp +181 -0
- package/worker/src/RTC/BWE/LinkCapacityEstimator.cpp +133 -0
- package/worker/src/RTC/BWE/RobustThroughputEstimator.cpp +245 -0
- package/worker/src/RTC/BWE/SendPacketHistory.cpp +184 -0
- package/worker/src/RTC/BWE/TrendlineEstimator.cpp +233 -0
- package/worker/src/RTC/Consumer.cpp +48 -35
- package/worker/src/RTC/DataConsumer.cpp +4 -4
- package/worker/src/RTC/DataProducer.cpp +3 -3
- package/worker/src/RTC/DirectTransport.cpp +2 -2
- package/worker/src/RTC/DtlsTransport.cpp +14 -11
- package/worker/src/RTC/ICE/IceServer.cpp +2 -2
- package/worker/src/RTC/KeyFrameRequestManager.cpp +16 -12
- package/worker/src/RTC/NackGenerator.cpp +12 -12
- package/worker/src/RTC/PipeProducerStreamManager.cpp +6 -6
- package/worker/src/RTC/PipeTransport.cpp +16 -13
- package/worker/src/RTC/PlainTransport.cpp +25 -16
- package/worker/src/RTC/Producer.cpp +50 -36
- package/worker/src/RTC/RTCP/FeedbackPsRemb.cpp +13 -6
- package/worker/src/RTC/RTCP/FeedbackRtpTmmb.cpp +14 -5
- package/worker/src/RTC/RTCP/FeedbackRtpTransport.cpp +76 -50
- package/worker/src/RTC/RTP/Codecs/VP8.cpp +1 -1
- package/worker/src/RTC/RTP/Codecs/VP9.cpp +4 -4
- package/worker/src/RTC/RTP/Packet.cpp +9 -10
- package/worker/src/RTC/RTP/RetransmissionBuffer.cpp +6 -6
- package/worker/src/RTC/RTP/RtpStream.cpp +19 -19
- package/worker/src/RTC/RTP/RtpStreamRecv.cpp +146 -81
- package/worker/src/RTC/RTP/RtpStreamSend.cpp +49 -44
- package/worker/src/RTC/RTP/RtxStream.cpp +7 -10
- package/worker/src/RTC/RateCalculator.cpp +99 -136
- package/worker/src/RTC/RemoteCaptureTimeEstimator.cpp +13 -13
- package/worker/src/RTC/RemoteClockOffsetEstimator.cpp +18 -17
- package/worker/src/RTC/Router.cpp +18 -1
- package/worker/src/RTC/RtpDictionaries/RtpEncodingParameters.cpp +5 -2
- package/worker/src/RTC/SCTP/association/Association.cpp +131 -102
- package/worker/src/RTC/SCTP/association/AssociationListenerDeferrer.cpp +4 -4
- package/worker/src/RTC/SCTP/association/Capabilities.cpp +1 -1
- package/worker/src/RTC/SCTP/association/HeartbeatHandler.cpp +25 -18
- package/worker/src/RTC/SCTP/association/StateCookie.cpp +7 -6
- package/worker/src/RTC/SCTP/association/StreamResetHandler.cpp +16 -13
- package/worker/src/RTC/SCTP/association/TransmissionControlBlock.cpp +28 -26
- package/worker/src/RTC/SCTP/packet/chunks/SackChunk.cpp +0 -1
- package/worker/src/RTC/SCTP/packet/parameters/StateCookieParameter.cpp +2 -2
- package/worker/src/RTC/SCTP/public/AssociationMetrics.cpp +1 -1
- package/worker/src/RTC/SCTP/public/SctpOptions.cpp +13 -13
- package/worker/src/RTC/SCTP/rx/DataTracker.cpp +1 -1
- package/worker/src/RTC/SCTP/rx/ReassemblyQueue.cpp +5 -5
- package/worker/src/RTC/SCTP/tx/OutstandingData.cpp +15 -15
- package/worker/src/RTC/SCTP/tx/RetransmissionQueue.cpp +15 -15
- package/worker/src/RTC/SCTP/tx/RetransmissionTimeout.cpp +29 -26
- package/worker/src/RTC/SCTP/tx/RoundRobinSendQueue.cpp +12 -11
- package/worker/src/RTC/SCTP/tx/StreamScheduler.cpp +4 -4
- package/worker/src/RTC/SctpDictionaries/SctpStreamParameters.cpp +2 -2
- package/worker/src/RTC/SimpleProducerStreamManager.cpp +10 -10
- package/worker/src/RTC/SimulcastProducerStreamManager.cpp +39 -37
- package/worker/src/RTC/SvcProducerStreamManager.cpp +39 -25
- package/worker/src/RTC/TcpConnection.cpp +9 -3
- package/worker/src/RTC/TcpServer.cpp +7 -2
- package/worker/src/RTC/Transport.cpp +242 -302
- package/worker/src/RTC/TransportCongestionControlClient.cpp +78 -71
- package/worker/src/RTC/TransportCongestionControlServer.cpp +38 -40
- package/worker/src/RTC/TrendCalculator.cpp +3 -3
- package/worker/src/RTC/UdpSocket.cpp +14 -3
- package/worker/src/RTC/WebRtcServer.cpp +20 -14
- package/worker/src/RTC/WebRtcTransport.cpp +35 -30
- package/worker/src/Settings.cpp +10 -0
- package/worker/src/Shared.cpp +2 -2
- package/worker/src/Utils/Crypto.cpp +2 -2
- package/worker/src/Worker.cpp +5 -1
- package/worker/src/handles/BackoffTimerHandle.cpp +24 -11
- package/worker/src/handles/TimerHandle.cpp +74 -25
- package/worker/src/lib.cpp +6 -0
- package/worker/tasks.py +171 -44
- package/worker/test/include/RTC/BWE/helpers/LinkSimulator.hpp +117 -0
- package/worker/test/src/RTC/BWE/TestAimdRateControl.cpp +400 -0
- package/worker/test/src/RTC/BWE/TestDelayBasedBwe.cpp +568 -0
- package/worker/test/src/RTC/BWE/TestFeedbackAdapter.cpp +546 -0
- package/worker/test/src/RTC/BWE/TestInterArrivalDelta.cpp +301 -0
- package/worker/test/src/RTC/BWE/TestLinkCapacityEstimator.cpp +115 -0
- package/worker/test/src/RTC/BWE/TestRobustThroughputEstimator.cpp +433 -0
- package/worker/test/src/RTC/BWE/TestSendPacketHistory.cpp +259 -0
- package/worker/test/src/RTC/BWE/TestTrendlineEstimator.cpp +137 -0
- package/worker/test/src/RTC/BWE/helpers/LinkSimulator.cpp +171 -0
- package/worker/test/src/RTC/RTCP/TestFeedbackPsRemb.cpp +1 -1
- package/worker/test/src/RTC/RTCP/TestFeedbackRtpTmmb.cpp +1 -1
- package/worker/test/src/RTC/RTCP/TestFeedbackRtpTransport.cpp +246 -208
- package/worker/test/src/RTC/RTP/TestPacket.cpp +11 -11
- package/worker/test/src/RTC/RTP/TestRetransmissionBuffer.cpp +12 -12
- package/worker/test/src/RTC/RTP/TestRtpStreamRecv.cpp +23 -16
- package/worker/test/src/RTC/RTP/TestRtpStreamSend.cpp +13 -13
- package/worker/test/src/RTC/SCTP/association/TestAssociation.cpp +27 -22
- package/worker/test/src/RTC/SCTP/association/TestHeartbeatHandler.cpp +21 -15
- package/worker/test/src/RTC/SCTP/association/TestStateCookie.cpp +6 -6
- package/worker/test/src/RTC/SCTP/association/TestStreamResetHandler.cpp +17 -13
- package/worker/test/src/RTC/SCTP/association/TestTransmissionControlBlock.cpp +3 -3
- package/worker/test/src/RTC/SCTP/packet/chunks/TestForwardTsnChunk.cpp +2 -2
- package/worker/test/src/RTC/SCTP/packet/chunks/TestIForwardTsnChunk.cpp +23 -23
- package/worker/test/src/RTC/SCTP/packet/chunks/TestInitChunk.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/chunks/TestSackChunk.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/parameters/TestIPv6AddressParameter.cpp +1 -1
- package/worker/test/src/RTC/SCTP/rx/TestDataTracker.cpp +37 -37
- package/worker/test/src/RTC/SCTP/rx/TestInterleavedReassemblyStreams.cpp +10 -10
- package/worker/test/src/RTC/SCTP/rx/TestReassemblyQueue.cpp +1 -1
- package/worker/test/src/RTC/SCTP/tx/TestOutstandingData.cpp +93 -93
- package/worker/test/src/RTC/SCTP/tx/TestRetransmissionQueue.cpp +247 -247
- package/worker/test/src/RTC/SCTP/tx/TestRetransmissionTimeout.cpp +100 -80
- package/worker/test/src/RTC/SCTP/tx/TestRoundRobinSendQueue.cpp +163 -163
- package/worker/test/src/RTC/SCTP/tx/TestStreamScheduler.cpp +76 -77
- package/worker/test/src/RTC/TestConsumer.cpp +8 -3
- package/worker/test/src/RTC/TestKeyFrameRequestManager.cpp +3 -3
- package/worker/test/src/RTC/TestNackGenerator.cpp +3 -3
- package/worker/test/src/RTC/TestPipeProducerStreamManager.cpp +5 -5
- package/worker/test/src/RTC/TestRateCalculator.cpp +110 -14
- package/worker/test/src/RTC/TestRemoteCaptureTimeEstimator.cpp +22 -17
- package/worker/test/src/RTC/TestRemoteClockOffsetEstimator.cpp +87 -85
- package/worker/test/src/RTC/TestSimpleProducerStreamManager.cpp +54 -47
- package/worker/test/src/RTC/TestSimulcastProducerStreamManager.cpp +83 -69
- package/worker/test/src/RTC/TestSvcProducerStreamManager.cpp +76 -65
- package/worker/test/src/RTC/TestTransportCongestionControlServer.cpp +72 -66
- package/worker/test/src/RTC/TestTransportTuple.cpp +19 -4
- package/worker/test/src/TestDepLibUV.cpp +19 -0
- package/worker/test/src/Utils/TestTime.cpp +57 -26
- package/worker/test/src/testHelpers.cpp +1 -1
- package/worker/test/src/tests.cpp +6 -0
- package/worker/include/RTC/SenderBandwidthEstimator.hpp +0 -118
- package/worker/src/RTC/SenderBandwidthEstimator.cpp +0 -269
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
SCENARIO("SCTP RoundRobinSendQueue", "[sctp][roundrobinsendqueue]")
|
|
11
11
|
{
|
|
12
12
|
constexpr size_t Mtu{ 1100 };
|
|
13
|
-
constexpr
|
|
13
|
+
constexpr int64_t NowUs{ 0 };
|
|
14
14
|
constexpr uint16_t StreamId{ 1 };
|
|
15
15
|
constexpr uint32_t Ppid{ 53 };
|
|
16
16
|
constexpr uint16_t DefaultPriority{ 10 };
|
|
@@ -30,7 +30,7 @@ SCENARIO("SCTP RoundRobinSendQueue", "[sctp][roundrobinsendqueue]")
|
|
|
30
30
|
TotalBufferedAmountLowThreshold);
|
|
31
31
|
|
|
32
32
|
REQUIRE(q.IsEmpty());
|
|
33
|
-
REQUIRE(q.Produce(
|
|
33
|
+
REQUIRE(q.Produce(NowUs, OneFragmentPacketLength).has_value() == false);
|
|
34
34
|
}
|
|
35
35
|
|
|
36
36
|
SECTION("add and get single chunk")
|
|
@@ -43,11 +43,11 @@ SCENARIO("SCTP RoundRobinSendQueue", "[sctp][roundrobinsendqueue]")
|
|
|
43
43
|
DefaultStreamBufferedAmountLowThreshold,
|
|
44
44
|
TotalBufferedAmountLowThreshold);
|
|
45
45
|
|
|
46
|
-
q.AddMessage(
|
|
46
|
+
q.AddMessage(NowUs, RTC::SCTP::Message(StreamId, Ppid, { 1, 2, 4, 5, 6 }));
|
|
47
47
|
|
|
48
48
|
REQUIRE(!q.IsEmpty());
|
|
49
49
|
|
|
50
|
-
const auto dataToSend = q.Produce(
|
|
50
|
+
const auto dataToSend = q.Produce(NowUs, OneFragmentPacketLength);
|
|
51
51
|
|
|
52
52
|
REQUIRE(dataToSend.has_value());
|
|
53
53
|
REQUIRE(dataToSend->data.IsBeginning());
|
|
@@ -66,27 +66,27 @@ SCENARIO("SCTP RoundRobinSendQueue", "[sctp][roundrobinsendqueue]")
|
|
|
66
66
|
|
|
67
67
|
const std::vector<uint8_t> payload(60);
|
|
68
68
|
|
|
69
|
-
q.AddMessage(
|
|
69
|
+
q.AddMessage(NowUs, RTC::SCTP::Message(StreamId, Ppid, payload));
|
|
70
70
|
|
|
71
|
-
const auto dataToSendBeg = q.Produce(
|
|
71
|
+
const auto dataToSendBeg = q.Produce(NowUs, /*maxLength*/ 20);
|
|
72
72
|
|
|
73
73
|
REQUIRE(dataToSendBeg.has_value());
|
|
74
74
|
REQUIRE(dataToSendBeg->data.IsBeginning());
|
|
75
75
|
REQUIRE(!dataToSendBeg->data.IsEnd());
|
|
76
76
|
|
|
77
|
-
const auto dataToSendMid = q.Produce(
|
|
77
|
+
const auto dataToSendMid = q.Produce(NowUs, /*maxLength*/ 20);
|
|
78
78
|
|
|
79
79
|
REQUIRE(dataToSendMid.has_value());
|
|
80
80
|
REQUIRE(!dataToSendMid->data.IsBeginning());
|
|
81
81
|
REQUIRE(!dataToSendMid->data.IsEnd());
|
|
82
82
|
|
|
83
|
-
const auto dataToSendEnd = q.Produce(
|
|
83
|
+
const auto dataToSendEnd = q.Produce(NowUs, /*maxLength*/ 20);
|
|
84
84
|
|
|
85
85
|
REQUIRE(dataToSendEnd.has_value());
|
|
86
86
|
REQUIRE(!dataToSendEnd->data.IsBeginning());
|
|
87
87
|
REQUIRE(dataToSendEnd->data.IsEnd());
|
|
88
88
|
|
|
89
|
-
REQUIRE(q.Produce(
|
|
89
|
+
REQUIRE(q.Produce(NowUs, OneFragmentPacketLength).has_value() == false);
|
|
90
90
|
}
|
|
91
91
|
|
|
92
92
|
SECTION("get chunks from two messages")
|
|
@@ -101,10 +101,10 @@ SCENARIO("SCTP RoundRobinSendQueue", "[sctp][roundrobinsendqueue]")
|
|
|
101
101
|
|
|
102
102
|
const std::vector<uint8_t> payload(60);
|
|
103
103
|
|
|
104
|
-
q.AddMessage(
|
|
105
|
-
q.AddMessage(
|
|
104
|
+
q.AddMessage(NowUs, RTC::SCTP::Message(StreamId, Ppid, payload));
|
|
105
|
+
q.AddMessage(NowUs, RTC::SCTP::Message(3, 54, payload));
|
|
106
106
|
|
|
107
|
-
const auto dataToSendOne = q.Produce(
|
|
107
|
+
const auto dataToSendOne = q.Produce(NowUs, OneFragmentPacketLength);
|
|
108
108
|
|
|
109
109
|
REQUIRE(dataToSendOne.has_value());
|
|
110
110
|
REQUIRE(dataToSendOne->data.GetStreamId() == StreamId);
|
|
@@ -112,7 +112,7 @@ SCENARIO("SCTP RoundRobinSendQueue", "[sctp][roundrobinsendqueue]")
|
|
|
112
112
|
REQUIRE(dataToSendOne->data.IsBeginning());
|
|
113
113
|
REQUIRE(dataToSendOne->data.IsEnd());
|
|
114
114
|
|
|
115
|
-
const auto dataToSendTwo = q.Produce(
|
|
115
|
+
const auto dataToSendTwo = q.Produce(NowUs, OneFragmentPacketLength);
|
|
116
116
|
|
|
117
117
|
REQUIRE(dataToSendTwo.has_value());
|
|
118
118
|
REQUIRE(dataToSendTwo->data.GetStreamId() == 3);
|
|
@@ -135,19 +135,19 @@ SCENARIO("SCTP RoundRobinSendQueue", "[sctp][roundrobinsendqueue]")
|
|
|
135
135
|
|
|
136
136
|
REQUIRE(q.GetTotalBufferedAmount() < 1000);
|
|
137
137
|
|
|
138
|
-
q.AddMessage(
|
|
138
|
+
q.AddMessage(NowUs, RTC::SCTP::Message(StreamId, Ppid, payload));
|
|
139
139
|
|
|
140
140
|
REQUIRE(q.GetTotalBufferedAmount() < 1000);
|
|
141
141
|
|
|
142
|
-
q.AddMessage(
|
|
142
|
+
q.AddMessage(NowUs, RTC::SCTP::Message(3, 54, payload));
|
|
143
143
|
|
|
144
144
|
REQUIRE(q.GetTotalBufferedAmount() >= 1000);
|
|
145
145
|
|
|
146
|
-
q.AddMessage(
|
|
146
|
+
q.AddMessage(NowUs, RTC::SCTP::Message(5, 55, payload));
|
|
147
147
|
|
|
148
148
|
REQUIRE(q.GetTotalBufferedAmount() >= 1000);
|
|
149
149
|
|
|
150
|
-
auto dataToSendOne = q.Produce(
|
|
150
|
+
auto dataToSendOne = q.Produce(NowUs, 1000);
|
|
151
151
|
|
|
152
152
|
REQUIRE(dataToSendOne.has_value());
|
|
153
153
|
REQUIRE(dataToSendOne->data.GetStreamId() == StreamId);
|
|
@@ -155,7 +155,7 @@ SCENARIO("SCTP RoundRobinSendQueue", "[sctp][roundrobinsendqueue]")
|
|
|
155
155
|
|
|
156
156
|
REQUIRE(q.GetTotalBufferedAmount() >= 1000);
|
|
157
157
|
|
|
158
|
-
auto dataToSendTwo = q.Produce(
|
|
158
|
+
auto dataToSendTwo = q.Produce(NowUs, 1000);
|
|
159
159
|
|
|
160
160
|
REQUIRE(dataToSendTwo.has_value());
|
|
161
161
|
REQUIRE(dataToSendTwo->data.GetStreamId() == 3);
|
|
@@ -164,7 +164,7 @@ SCENARIO("SCTP RoundRobinSendQueue", "[sctp][roundrobinsendqueue]")
|
|
|
164
164
|
REQUIRE(q.GetTotalBufferedAmount() < 1000);
|
|
165
165
|
REQUIRE(!q.IsEmpty());
|
|
166
166
|
|
|
167
|
-
auto dataToSendThree = q.Produce(
|
|
167
|
+
auto dataToSendThree = q.Produce(NowUs, 1000);
|
|
168
168
|
|
|
169
169
|
REQUIRE(dataToSendThree.has_value());
|
|
170
170
|
REQUIRE(dataToSendThree->data.GetStreamId() == 5);
|
|
@@ -186,9 +186,9 @@ SCENARIO("SCTP RoundRobinSendQueue", "[sctp][roundrobinsendqueue]")
|
|
|
186
186
|
|
|
187
187
|
const std::vector<uint8_t> payload(20);
|
|
188
188
|
|
|
189
|
-
q.AddMessage(
|
|
189
|
+
q.AddMessage(NowUs, RTC::SCTP::Message(StreamId, Ppid, payload));
|
|
190
190
|
|
|
191
|
-
const auto dataToSendOne = q.Produce(
|
|
191
|
+
const auto dataToSendOne = q.Produce(NowUs, OneFragmentPacketLength);
|
|
192
192
|
|
|
193
193
|
REQUIRE(dataToSendOne.has_value());
|
|
194
194
|
REQUIRE(!dataToSendOne->data.IsUnordered());
|
|
@@ -197,9 +197,9 @@ SCENARIO("SCTP RoundRobinSendQueue", "[sctp][roundrobinsendqueue]")
|
|
|
197
197
|
|
|
198
198
|
options.unordered = true;
|
|
199
199
|
|
|
200
|
-
q.AddMessage(
|
|
200
|
+
q.AddMessage(NowUs, RTC::SCTP::Message(StreamId, Ppid, payload), options);
|
|
201
201
|
|
|
202
|
-
const auto dataToSendTwo = q.Produce(
|
|
202
|
+
const auto dataToSendTwo = q.Produce(NowUs, OneFragmentPacketLength);
|
|
203
203
|
|
|
204
204
|
REQUIRE(dataToSendTwo.has_value());
|
|
205
205
|
REQUIRE(dataToSendTwo->data.IsUnordered());
|
|
@@ -217,47 +217,47 @@ SCENARIO("SCTP RoundRobinSendQueue", "[sctp][roundrobinsendqueue]")
|
|
|
217
217
|
|
|
218
218
|
const std::vector<uint8_t> payload(20);
|
|
219
219
|
|
|
220
|
-
|
|
220
|
+
int64_t nowUs = NowUs;
|
|
221
221
|
|
|
222
|
-
q.AddMessage(
|
|
222
|
+
q.AddMessage(nowUs, RTC::SCTP::Message(StreamId, Ppid, payload));
|
|
223
223
|
|
|
224
|
-
|
|
224
|
+
nowUs += 1000000 * 1000;
|
|
225
225
|
|
|
226
|
-
REQUIRE(q.Produce(
|
|
226
|
+
REQUIRE(q.Produce(nowUs, OneFragmentPacketLength).has_value());
|
|
227
227
|
|
|
228
228
|
RTC::SCTP::SendMessageOptions expires2s;
|
|
229
229
|
|
|
230
230
|
expires2s.lifetimeMs = 2000;
|
|
231
231
|
|
|
232
|
-
q.AddMessage(
|
|
232
|
+
q.AddMessage(nowUs, RTC::SCTP::Message(StreamId, Ppid, payload), expires2s);
|
|
233
233
|
|
|
234
|
-
|
|
234
|
+
nowUs += 2000 * 1000;
|
|
235
235
|
|
|
236
|
-
REQUIRE(q.Produce(
|
|
236
|
+
REQUIRE(q.Produce(nowUs, OneFragmentPacketLength).has_value());
|
|
237
237
|
|
|
238
|
-
q.AddMessage(
|
|
238
|
+
q.AddMessage(nowUs, RTC::SCTP::Message(StreamId, Ppid, payload), expires2s);
|
|
239
239
|
|
|
240
|
-
|
|
240
|
+
nowUs += 2001 * 1000;
|
|
241
241
|
|
|
242
|
-
REQUIRE(!q.Produce(
|
|
242
|
+
REQUIRE(!q.Produce(nowUs, OneFragmentPacketLength).has_value());
|
|
243
243
|
|
|
244
|
-
q.AddMessage(
|
|
244
|
+
q.AddMessage(nowUs, RTC::SCTP::Message(StreamId, Ppid, payload), expires2s);
|
|
245
245
|
|
|
246
|
-
|
|
246
|
+
nowUs += 1000000 * 1000;
|
|
247
247
|
|
|
248
|
-
REQUIRE(!q.Produce(
|
|
248
|
+
REQUIRE(!q.Produce(nowUs, OneFragmentPacketLength).has_value());
|
|
249
249
|
|
|
250
250
|
RTC::SCTP::SendMessageOptions expires4s;
|
|
251
251
|
|
|
252
252
|
expires4s.lifetimeMs = 4000;
|
|
253
253
|
|
|
254
|
-
q.AddMessage(
|
|
255
|
-
q.AddMessage(
|
|
254
|
+
q.AddMessage(nowUs, RTC::SCTP::Message(StreamId, Ppid, payload), expires2s);
|
|
255
|
+
q.AddMessage(nowUs, RTC::SCTP::Message(StreamId, Ppid, payload), expires4s);
|
|
256
256
|
|
|
257
|
-
|
|
257
|
+
nowUs += 2001 * 1000;
|
|
258
258
|
|
|
259
|
-
REQUIRE(q.Produce(
|
|
260
|
-
REQUIRE(!q.Produce(
|
|
259
|
+
REQUIRE(q.Produce(nowUs, OneFragmentPacketLength).has_value());
|
|
260
|
+
REQUIRE(!q.Produce(nowUs, OneFragmentPacketLength).has_value());
|
|
261
261
|
}
|
|
262
262
|
|
|
263
263
|
SECTION("discard partial packets")
|
|
@@ -272,10 +272,10 @@ SCENARIO("SCTP RoundRobinSendQueue", "[sctp][roundrobinsendqueue]")
|
|
|
272
272
|
|
|
273
273
|
const std::vector<uint8_t> payload(120);
|
|
274
274
|
|
|
275
|
-
q.AddMessage(
|
|
276
|
-
q.AddMessage(
|
|
275
|
+
q.AddMessage(NowUs, RTC::SCTP::Message(StreamId, Ppid, payload));
|
|
276
|
+
q.AddMessage(NowUs, RTC::SCTP::Message(2, 54, payload));
|
|
277
277
|
|
|
278
|
-
const auto dataToSendOne = q.Produce(
|
|
278
|
+
const auto dataToSendOne = q.Produce(NowUs, OneFragmentPacketLength);
|
|
279
279
|
|
|
280
280
|
REQUIRE(dataToSendOne.has_value());
|
|
281
281
|
REQUIRE(!dataToSendOne->data.IsEnd());
|
|
@@ -283,23 +283,23 @@ SCENARIO("SCTP RoundRobinSendQueue", "[sctp][roundrobinsendqueue]")
|
|
|
283
283
|
|
|
284
284
|
q.Discard(dataToSendOne->data.GetStreamId(), dataToSendOne->outgoingMessageId);
|
|
285
285
|
|
|
286
|
-
const auto dataToSendTwo = q.Produce(
|
|
286
|
+
const auto dataToSendTwo = q.Produce(NowUs, OneFragmentPacketLength);
|
|
287
287
|
|
|
288
288
|
REQUIRE(dataToSendTwo.has_value());
|
|
289
289
|
REQUIRE(!dataToSendTwo->data.IsEnd());
|
|
290
290
|
REQUIRE(dataToSendTwo->data.GetStreamId() == 2);
|
|
291
291
|
|
|
292
|
-
const auto dataToSendThree = q.Produce(
|
|
292
|
+
const auto dataToSendThree = q.Produce(NowUs, OneFragmentPacketLength);
|
|
293
293
|
|
|
294
294
|
REQUIRE(dataToSendThree.has_value());
|
|
295
295
|
REQUIRE(dataToSendThree->data.IsEnd());
|
|
296
296
|
REQUIRE(dataToSendThree->data.GetStreamId() == 2);
|
|
297
297
|
|
|
298
|
-
REQUIRE(!q.Produce(
|
|
298
|
+
REQUIRE(!q.Produce(NowUs, OneFragmentPacketLength).has_value());
|
|
299
299
|
|
|
300
300
|
q.Discard(dataToSendOne->data.GetStreamId(), dataToSendOne->outgoingMessageId);
|
|
301
301
|
|
|
302
|
-
REQUIRE(!q.Produce(
|
|
302
|
+
REQUIRE(!q.Produce(NowUs, OneFragmentPacketLength).has_value());
|
|
303
303
|
}
|
|
304
304
|
|
|
305
305
|
SECTION("prepare reset streams discards stream")
|
|
@@ -312,8 +312,8 @@ SCENARIO("SCTP RoundRobinSendQueue", "[sctp][roundrobinsendqueue]")
|
|
|
312
312
|
DefaultStreamBufferedAmountLowThreshold,
|
|
313
313
|
TotalBufferedAmountLowThreshold);
|
|
314
314
|
|
|
315
|
-
q.AddMessage(
|
|
316
|
-
q.AddMessage(
|
|
315
|
+
q.AddMessage(NowUs, RTC::SCTP::Message(StreamId, Ppid, { 1, 2, 3 }));
|
|
316
|
+
q.AddMessage(NowUs, RTC::SCTP::Message(2, 54, { 1, 2, 3, 4, 5 }));
|
|
317
317
|
|
|
318
318
|
REQUIRE(q.GetTotalBufferedAmount() == 8);
|
|
319
319
|
|
|
@@ -345,10 +345,10 @@ SCENARIO("SCTP RoundRobinSendQueue", "[sctp][roundrobinsendqueue]")
|
|
|
345
345
|
|
|
346
346
|
const std::vector<uint8_t> payload(120);
|
|
347
347
|
|
|
348
|
-
q.AddMessage(
|
|
349
|
-
q.AddMessage(
|
|
348
|
+
q.AddMessage(NowUs, RTC::SCTP::Message(StreamId, Ppid, payload));
|
|
349
|
+
q.AddMessage(NowUs, RTC::SCTP::Message(StreamId, Ppid, payload));
|
|
350
350
|
|
|
351
|
-
const auto dataToSendOne = q.Produce(
|
|
351
|
+
const auto dataToSendOne = q.Produce(NowUs, 50);
|
|
352
352
|
|
|
353
353
|
REQUIRE(dataToSendOne.has_value());
|
|
354
354
|
REQUIRE(dataToSendOne->data.GetStreamId() == StreamId);
|
|
@@ -376,11 +376,11 @@ SCENARIO("SCTP RoundRobinSendQueue", "[sctp][roundrobinsendqueue]")
|
|
|
376
376
|
|
|
377
377
|
REQUIRE(q.GetTotalBufferedAmount() == 0);
|
|
378
378
|
|
|
379
|
-
q.AddMessage(
|
|
379
|
+
q.AddMessage(NowUs, RTC::SCTP::Message(StreamId, Ppid, payload));
|
|
380
380
|
|
|
381
381
|
REQUIRE(q.GetTotalBufferedAmount() == payload.size());
|
|
382
382
|
|
|
383
|
-
REQUIRE(!q.Produce(
|
|
383
|
+
REQUIRE(!q.Produce(NowUs, OneFragmentPacketLength).has_value());
|
|
384
384
|
|
|
385
385
|
REQUIRE(q.HasStreamsReadyToBeReset());
|
|
386
386
|
|
|
@@ -389,13 +389,13 @@ SCENARIO("SCTP RoundRobinSendQueue", "[sctp][roundrobinsendqueue]")
|
|
|
389
389
|
REQUIRE(streamsReadyToBeReset.size() == 1);
|
|
390
390
|
REQUIRE(std::ranges::find(streamsReadyToBeReset, StreamId) != streamsReadyToBeReset.end());
|
|
391
391
|
|
|
392
|
-
REQUIRE(!q.Produce(
|
|
392
|
+
REQUIRE(!q.Produce(NowUs, OneFragmentPacketLength).has_value());
|
|
393
393
|
|
|
394
394
|
q.CommitResetStreams();
|
|
395
395
|
|
|
396
396
|
REQUIRE(q.GetTotalBufferedAmount() == payload.size());
|
|
397
397
|
|
|
398
|
-
const auto dataToSendOne = q.Produce(
|
|
398
|
+
const auto dataToSendOne = q.Produce(NowUs, 50);
|
|
399
399
|
|
|
400
400
|
REQUIRE(dataToSendOne.has_value());
|
|
401
401
|
REQUIRE(dataToSendOne->data.GetStreamId() == StreamId);
|
|
@@ -418,10 +418,10 @@ SCENARIO("SCTP RoundRobinSendQueue", "[sctp][roundrobinsendqueue]")
|
|
|
418
418
|
|
|
419
419
|
const std::vector<uint8_t> payload(payloadLength);
|
|
420
420
|
|
|
421
|
-
q.AddMessage(
|
|
422
|
-
q.AddMessage(
|
|
421
|
+
q.AddMessage(NowUs, RTC::SCTP::Message(StreamId, Ppid, payload));
|
|
422
|
+
q.AddMessage(NowUs, RTC::SCTP::Message(StreamId, Ppid, payload));
|
|
423
423
|
|
|
424
|
-
const auto dataToSendOne = q.Produce(
|
|
424
|
+
const auto dataToSendOne = q.Produce(NowUs, fragmentLength);
|
|
425
425
|
|
|
426
426
|
REQUIRE(dataToSendOne.has_value());
|
|
427
427
|
REQUIRE(dataToSendOne->data.GetStreamId() == StreamId);
|
|
@@ -432,14 +432,14 @@ SCENARIO("SCTP RoundRobinSendQueue", "[sctp][roundrobinsendqueue]")
|
|
|
432
432
|
|
|
433
433
|
REQUIRE(q.GetTotalBufferedAmount() == payloadLength - fragmentLength);
|
|
434
434
|
|
|
435
|
-
const auto dataToSendTwo = q.Produce(
|
|
435
|
+
const auto dataToSendTwo = q.Produce(NowUs, fragmentLength);
|
|
436
436
|
|
|
437
437
|
REQUIRE(dataToSendTwo.has_value());
|
|
438
438
|
REQUIRE(dataToSendTwo->data.GetStreamId() == StreamId);
|
|
439
439
|
|
|
440
440
|
REQUIRE(q.GetTotalBufferedAmount() == 0);
|
|
441
441
|
|
|
442
|
-
REQUIRE(!q.Produce(
|
|
442
|
+
REQUIRE(!q.Produce(NowUs, fragmentLength).has_value());
|
|
443
443
|
}
|
|
444
444
|
|
|
445
445
|
SECTION("committing resets SSN")
|
|
@@ -454,22 +454,22 @@ SCENARIO("SCTP RoundRobinSendQueue", "[sctp][roundrobinsendqueue]")
|
|
|
454
454
|
|
|
455
455
|
const std::vector<uint8_t> payload(50);
|
|
456
456
|
|
|
457
|
-
q.AddMessage(
|
|
458
|
-
q.AddMessage(
|
|
457
|
+
q.AddMessage(NowUs, RTC::SCTP::Message(StreamId, Ppid, payload));
|
|
458
|
+
q.AddMessage(NowUs, RTC::SCTP::Message(StreamId, Ppid, payload));
|
|
459
459
|
|
|
460
|
-
const auto dataToSendOne = q.Produce(
|
|
460
|
+
const auto dataToSendOne = q.Produce(NowUs, OneFragmentPacketLength);
|
|
461
461
|
|
|
462
462
|
REQUIRE(dataToSendOne.has_value());
|
|
463
463
|
REQUIRE(dataToSendOne->data.GetStreamSequenceNumber() == 0);
|
|
464
464
|
|
|
465
|
-
const auto dataToSendTwo = q.Produce(
|
|
465
|
+
const auto dataToSendTwo = q.Produce(NowUs, OneFragmentPacketLength);
|
|
466
466
|
|
|
467
467
|
REQUIRE(dataToSendTwo.has_value());
|
|
468
468
|
REQUIRE(dataToSendTwo->data.GetStreamSequenceNumber() == 1);
|
|
469
469
|
|
|
470
470
|
q.PrepareResetStream(StreamId);
|
|
471
471
|
|
|
472
|
-
q.AddMessage(
|
|
472
|
+
q.AddMessage(NowUs, RTC::SCTP::Message(StreamId, Ppid, payload));
|
|
473
473
|
|
|
474
474
|
REQUIRE(q.HasStreamsReadyToBeReset());
|
|
475
475
|
|
|
@@ -480,7 +480,7 @@ SCENARIO("SCTP RoundRobinSendQueue", "[sctp][roundrobinsendqueue]")
|
|
|
480
480
|
|
|
481
481
|
q.CommitResetStreams();
|
|
482
482
|
|
|
483
|
-
const auto dataToSendThree = q.Produce(
|
|
483
|
+
const auto dataToSendThree = q.Produce(NowUs, OneFragmentPacketLength);
|
|
484
484
|
|
|
485
485
|
REQUIRE(dataToSendThree.has_value());
|
|
486
486
|
REQUIRE(dataToSendThree->data.GetStreamSequenceNumber() == 0);
|
|
@@ -498,17 +498,17 @@ SCENARIO("SCTP RoundRobinSendQueue", "[sctp][roundrobinsendqueue]")
|
|
|
498
498
|
|
|
499
499
|
const std::vector<uint8_t> payload(50);
|
|
500
500
|
|
|
501
|
-
q.AddMessage(
|
|
501
|
+
q.AddMessage(NowUs, RTC::SCTP::Message(StreamId, Ppid, payload));
|
|
502
502
|
|
|
503
|
-
const auto dataToSendOne = q.Produce(
|
|
503
|
+
const auto dataToSendOne = q.Produce(NowUs, OneFragmentPacketLength);
|
|
504
504
|
|
|
505
505
|
REQUIRE(dataToSendOne.has_value());
|
|
506
506
|
REQUIRE(dataToSendOne->data.GetStreamSequenceNumber() == 0);
|
|
507
507
|
REQUIRE(dataToSendOne->outgoingMessageId == 0);
|
|
508
508
|
|
|
509
|
-
q.AddMessage(
|
|
509
|
+
q.AddMessage(NowUs, RTC::SCTP::Message(StreamId, Ppid, payload));
|
|
510
510
|
|
|
511
|
-
const auto dataToSendTwo = q.Produce(
|
|
511
|
+
const auto dataToSendTwo = q.Produce(NowUs, OneFragmentPacketLength);
|
|
512
512
|
|
|
513
513
|
REQUIRE(dataToSendTwo.has_value());
|
|
514
514
|
REQUIRE(dataToSendTwo->data.GetStreamSequenceNumber() == 1);
|
|
@@ -523,9 +523,9 @@ SCENARIO("SCTP RoundRobinSendQueue", "[sctp][roundrobinsendqueue]")
|
|
|
523
523
|
|
|
524
524
|
q.CommitResetStreams();
|
|
525
525
|
|
|
526
|
-
q.AddMessage(
|
|
526
|
+
q.AddMessage(NowUs, RTC::SCTP::Message(StreamId, Ppid, payload));
|
|
527
527
|
|
|
528
|
-
const auto dataToSendThree = q.Produce(
|
|
528
|
+
const auto dataToSendThree = q.Produce(NowUs, OneFragmentPacketLength);
|
|
529
529
|
|
|
530
530
|
REQUIRE(dataToSendThree.has_value());
|
|
531
531
|
REQUIRE(dataToSendThree->data.GetStreamSequenceNumber() == 0);
|
|
@@ -544,16 +544,16 @@ SCENARIO("SCTP RoundRobinSendQueue", "[sctp][roundrobinsendqueue]")
|
|
|
544
544
|
|
|
545
545
|
const std::vector<uint8_t> payload(50);
|
|
546
546
|
|
|
547
|
-
q.AddMessage(
|
|
548
|
-
q.AddMessage(
|
|
547
|
+
q.AddMessage(NowUs, RTC::SCTP::Message(1, Ppid, payload));
|
|
548
|
+
q.AddMessage(NowUs, RTC::SCTP::Message(3, Ppid, payload));
|
|
549
549
|
|
|
550
|
-
const auto dataToSendOne = q.Produce(
|
|
550
|
+
const auto dataToSendOne = q.Produce(NowUs, OneFragmentPacketLength);
|
|
551
551
|
|
|
552
552
|
REQUIRE(dataToSendOne.has_value());
|
|
553
553
|
REQUIRE(dataToSendOne->data.GetStreamId() == 1);
|
|
554
554
|
REQUIRE(dataToSendOne->data.GetStreamSequenceNumber() == 0);
|
|
555
555
|
|
|
556
|
-
const auto dataToSendTwo = q.Produce(
|
|
556
|
+
const auto dataToSendTwo = q.Produce(NowUs, OneFragmentPacketLength);
|
|
557
557
|
|
|
558
558
|
REQUIRE(dataToSendTwo.has_value());
|
|
559
559
|
REQUIRE(dataToSendTwo->data.GetStreamId() == 3);
|
|
@@ -561,8 +561,8 @@ SCENARIO("SCTP RoundRobinSendQueue", "[sctp][roundrobinsendqueue]")
|
|
|
561
561
|
|
|
562
562
|
q.PrepareResetStream(3);
|
|
563
563
|
|
|
564
|
-
q.AddMessage(
|
|
565
|
-
q.AddMessage(
|
|
564
|
+
q.AddMessage(NowUs, RTC::SCTP::Message(1, Ppid, payload));
|
|
565
|
+
q.AddMessage(NowUs, RTC::SCTP::Message(3, Ppid, payload));
|
|
566
566
|
|
|
567
567
|
const auto streamsReadyToBeReset = q.GetStreamsReadyToBeReset();
|
|
568
568
|
|
|
@@ -571,13 +571,13 @@ SCENARIO("SCTP RoundRobinSendQueue", "[sctp][roundrobinsendqueue]")
|
|
|
571
571
|
|
|
572
572
|
q.CommitResetStreams();
|
|
573
573
|
|
|
574
|
-
const auto dataToSendThree = q.Produce(
|
|
574
|
+
const auto dataToSendThree = q.Produce(NowUs, OneFragmentPacketLength);
|
|
575
575
|
|
|
576
576
|
REQUIRE(dataToSendThree.has_value());
|
|
577
577
|
REQUIRE(dataToSendThree->data.GetStreamId() == 1);
|
|
578
578
|
REQUIRE(dataToSendThree->data.GetStreamSequenceNumber() == 1);
|
|
579
579
|
|
|
580
|
-
const auto dataToSendFour = q.Produce(
|
|
580
|
+
const auto dataToSendFour = q.Produce(NowUs, OneFragmentPacketLength);
|
|
581
581
|
|
|
582
582
|
REQUIRE(dataToSendFour.has_value());
|
|
583
583
|
REQUIRE(dataToSendFour->data.GetStreamId() == 3);
|
|
@@ -596,22 +596,22 @@ SCENARIO("SCTP RoundRobinSendQueue", "[sctp][roundrobinsendqueue]")
|
|
|
596
596
|
|
|
597
597
|
const std::vector<uint8_t> payload(50);
|
|
598
598
|
|
|
599
|
-
q.AddMessage(
|
|
600
|
-
q.AddMessage(
|
|
599
|
+
q.AddMessage(NowUs, RTC::SCTP::Message(StreamId, Ppid, payload));
|
|
600
|
+
q.AddMessage(NowUs, RTC::SCTP::Message(StreamId, Ppid, payload));
|
|
601
601
|
|
|
602
|
-
const auto dataToSendOne = q.Produce(
|
|
602
|
+
const auto dataToSendOne = q.Produce(NowUs, OneFragmentPacketLength);
|
|
603
603
|
|
|
604
604
|
REQUIRE(dataToSendOne.has_value());
|
|
605
605
|
REQUIRE(dataToSendOne->data.GetStreamSequenceNumber() == 0);
|
|
606
606
|
|
|
607
|
-
const auto dataToSendTwo = q.Produce(
|
|
607
|
+
const auto dataToSendTwo = q.Produce(NowUs, OneFragmentPacketLength);
|
|
608
608
|
|
|
609
609
|
REQUIRE(dataToSendTwo.has_value());
|
|
610
610
|
REQUIRE(dataToSendTwo->data.GetStreamSequenceNumber() == 1);
|
|
611
611
|
|
|
612
612
|
q.PrepareResetStream(1);
|
|
613
613
|
|
|
614
|
-
q.AddMessage(
|
|
614
|
+
q.AddMessage(NowUs, RTC::SCTP::Message(StreamId, Ppid, payload));
|
|
615
615
|
|
|
616
616
|
const auto streamsReadyToBeReset = q.GetStreamsReadyToBeReset();
|
|
617
617
|
|
|
@@ -620,7 +620,7 @@ SCENARIO("SCTP RoundRobinSendQueue", "[sctp][roundrobinsendqueue]")
|
|
|
620
620
|
|
|
621
621
|
q.RollbackResetStreams();
|
|
622
622
|
|
|
623
|
-
const auto dataToSendThree = q.Produce(
|
|
623
|
+
const auto dataToSendThree = q.Produce(NowUs, OneFragmentPacketLength);
|
|
624
624
|
|
|
625
625
|
REQUIRE(dataToSendThree.has_value());
|
|
626
626
|
REQUIRE(dataToSendThree->data.GetStreamSequenceNumber() == 2);
|
|
@@ -638,25 +638,25 @@ SCENARIO("SCTP RoundRobinSendQueue", "[sctp][roundrobinsendqueue]")
|
|
|
638
638
|
|
|
639
639
|
const std::vector<uint8_t> payload(200);
|
|
640
640
|
|
|
641
|
-
q.AddMessage(
|
|
642
|
-
q.AddMessage(
|
|
641
|
+
q.AddMessage(NowUs, RTC::SCTP::Message(1, Ppid, payload));
|
|
642
|
+
q.AddMessage(NowUs, RTC::SCTP::Message(2, Ppid, payload));
|
|
643
643
|
|
|
644
|
-
const auto dataToSendOne = q.Produce(
|
|
644
|
+
const auto dataToSendOne = q.Produce(NowUs, OneFragmentPacketLength);
|
|
645
645
|
|
|
646
646
|
REQUIRE(dataToSendOne.has_value());
|
|
647
647
|
REQUIRE(dataToSendOne->data.GetStreamId() == 1);
|
|
648
648
|
|
|
649
|
-
const auto dataToSendTwo = q.Produce(
|
|
649
|
+
const auto dataToSendTwo = q.Produce(NowUs, OneFragmentPacketLength);
|
|
650
650
|
|
|
651
651
|
REQUIRE(dataToSendTwo.has_value());
|
|
652
652
|
REQUIRE(dataToSendTwo->data.GetStreamId() == 1);
|
|
653
653
|
|
|
654
|
-
const auto dataToSendThree = q.Produce(
|
|
654
|
+
const auto dataToSendThree = q.Produce(NowUs, OneFragmentPacketLength);
|
|
655
655
|
|
|
656
656
|
REQUIRE(dataToSendThree.has_value());
|
|
657
657
|
REQUIRE(dataToSendThree->data.GetStreamId() == 2);
|
|
658
658
|
|
|
659
|
-
const auto dataToSendFour = q.Produce(
|
|
659
|
+
const auto dataToSendFour = q.Produce(NowUs, OneFragmentPacketLength);
|
|
660
660
|
|
|
661
661
|
REQUIRE(dataToSendFour.has_value());
|
|
662
662
|
REQUIRE(dataToSendFour->data.GetStreamId() == 2);
|
|
@@ -674,29 +674,29 @@ SCENARIO("SCTP RoundRobinSendQueue", "[sctp][roundrobinsendqueue]")
|
|
|
674
674
|
|
|
675
675
|
const std::vector<uint8_t> payload(TwoFragmentPacketLength);
|
|
676
676
|
|
|
677
|
-
q.AddMessage(
|
|
678
|
-
q.AddMessage(
|
|
677
|
+
q.AddMessage(NowUs, RTC::SCTP::Message(1, Ppid, payload));
|
|
678
|
+
q.AddMessage(NowUs, RTC::SCTP::Message(2, Ppid, payload));
|
|
679
679
|
|
|
680
|
-
const auto dataToSendOne = q.Produce(
|
|
680
|
+
const auto dataToSendOne = q.Produce(NowUs, OneFragmentPacketLength);
|
|
681
681
|
|
|
682
682
|
REQUIRE(dataToSendOne.has_value());
|
|
683
683
|
REQUIRE(dataToSendOne->data.GetStreamId() == 1);
|
|
684
684
|
REQUIRE(dataToSendOne->data.GetPayloadLength() == OneFragmentPacketLength);
|
|
685
685
|
|
|
686
|
-
const auto dataToSendTwo = q.Produce(
|
|
686
|
+
const auto dataToSendTwo = q.Produce(NowUs, OneFragmentPacketLength);
|
|
687
687
|
|
|
688
688
|
REQUIRE(dataToSendTwo.has_value());
|
|
689
689
|
REQUIRE(dataToSendTwo->data.GetStreamId() == 1);
|
|
690
690
|
REQUIRE(
|
|
691
691
|
dataToSendTwo->data.GetPayloadLength() == TwoFragmentPacketLength - OneFragmentPacketLength);
|
|
692
692
|
|
|
693
|
-
const auto dataToSendThree = q.Produce(
|
|
693
|
+
const auto dataToSendThree = q.Produce(NowUs, OneFragmentPacketLength);
|
|
694
694
|
|
|
695
695
|
REQUIRE(dataToSendThree.has_value());
|
|
696
696
|
REQUIRE(dataToSendThree->data.GetStreamId() == 2);
|
|
697
697
|
REQUIRE(dataToSendThree->data.GetPayloadLength() == OneFragmentPacketLength);
|
|
698
698
|
|
|
699
|
-
const auto dataToSendFour = q.Produce(
|
|
699
|
+
const auto dataToSendFour = q.Produce(NowUs, OneFragmentPacketLength);
|
|
700
700
|
|
|
701
701
|
REQUIRE(dataToSendFour.has_value());
|
|
702
702
|
REQUIRE(dataToSendFour->data.GetStreamId() == 2);
|
|
@@ -714,58 +714,58 @@ SCENARIO("SCTP RoundRobinSendQueue", "[sctp][roundrobinsendqueue]")
|
|
|
714
714
|
DefaultStreamBufferedAmountLowThreshold,
|
|
715
715
|
TotalBufferedAmountLowThreshold);
|
|
716
716
|
|
|
717
|
-
q.AddMessage(
|
|
718
|
-
q.AddMessage(
|
|
719
|
-
q.AddMessage(
|
|
720
|
-
q.AddMessage(
|
|
721
|
-
q.AddMessage(
|
|
722
|
-
q.AddMessage(
|
|
723
|
-
q.AddMessage(
|
|
724
|
-
q.AddMessage(
|
|
717
|
+
q.AddMessage(NowUs, RTC::SCTP::Message(1, Ppid, std::vector<uint8_t>(1)));
|
|
718
|
+
q.AddMessage(NowUs, RTC::SCTP::Message(1, Ppid, std::vector<uint8_t>(2)));
|
|
719
|
+
q.AddMessage(NowUs, RTC::SCTP::Message(2, Ppid, std::vector<uint8_t>(3)));
|
|
720
|
+
q.AddMessage(NowUs, RTC::SCTP::Message(2, Ppid, std::vector<uint8_t>(4)));
|
|
721
|
+
q.AddMessage(NowUs, RTC::SCTP::Message(3, Ppid, std::vector<uint8_t>(5)));
|
|
722
|
+
q.AddMessage(NowUs, RTC::SCTP::Message(3, Ppid, std::vector<uint8_t>(6)));
|
|
723
|
+
q.AddMessage(NowUs, RTC::SCTP::Message(4, Ppid, std::vector<uint8_t>(7)));
|
|
724
|
+
q.AddMessage(NowUs, RTC::SCTP::Message(4, Ppid, std::vector<uint8_t>(8)));
|
|
725
725
|
|
|
726
|
-
const auto dataToSendOne = q.Produce(
|
|
726
|
+
const auto dataToSendOne = q.Produce(NowUs, OneFragmentPacketLength);
|
|
727
727
|
|
|
728
728
|
REQUIRE(dataToSendOne.has_value());
|
|
729
729
|
REQUIRE(dataToSendOne->data.GetStreamId() == 1);
|
|
730
730
|
REQUIRE(dataToSendOne->data.GetPayloadLength() == 1);
|
|
731
731
|
|
|
732
|
-
const auto dataToSendTwo = q.Produce(
|
|
732
|
+
const auto dataToSendTwo = q.Produce(NowUs, OneFragmentPacketLength);
|
|
733
733
|
|
|
734
734
|
REQUIRE(dataToSendTwo.has_value());
|
|
735
735
|
REQUIRE(dataToSendTwo->data.GetStreamId() == 2);
|
|
736
736
|
REQUIRE(dataToSendTwo->data.GetPayloadLength() == 3);
|
|
737
737
|
|
|
738
|
-
const auto dataToSendThree = q.Produce(
|
|
738
|
+
const auto dataToSendThree = q.Produce(NowUs, OneFragmentPacketLength);
|
|
739
739
|
|
|
740
740
|
REQUIRE(dataToSendThree.has_value());
|
|
741
741
|
REQUIRE(dataToSendThree->data.GetStreamId() == 3);
|
|
742
742
|
REQUIRE(dataToSendThree->data.GetPayloadLength() == 5);
|
|
743
743
|
|
|
744
|
-
const auto dataToSendFour = q.Produce(
|
|
744
|
+
const auto dataToSendFour = q.Produce(NowUs, OneFragmentPacketLength);
|
|
745
745
|
|
|
746
746
|
REQUIRE(dataToSendFour.has_value());
|
|
747
747
|
REQUIRE(dataToSendFour->data.GetStreamId() == 4);
|
|
748
748
|
REQUIRE(dataToSendFour->data.GetPayloadLength() == 7);
|
|
749
749
|
|
|
750
|
-
const auto dataToSendFive = q.Produce(
|
|
750
|
+
const auto dataToSendFive = q.Produce(NowUs, OneFragmentPacketLength);
|
|
751
751
|
|
|
752
752
|
REQUIRE(dataToSendFive.has_value());
|
|
753
753
|
REQUIRE(dataToSendFive->data.GetStreamId() == 1);
|
|
754
754
|
REQUIRE(dataToSendFive->data.GetPayloadLength() == 2);
|
|
755
755
|
|
|
756
|
-
const auto dataToSendSix = q.Produce(
|
|
756
|
+
const auto dataToSendSix = q.Produce(NowUs, OneFragmentPacketLength);
|
|
757
757
|
|
|
758
758
|
REQUIRE(dataToSendSix.has_value());
|
|
759
759
|
REQUIRE(dataToSendSix->data.GetStreamId() == 2);
|
|
760
760
|
REQUIRE(dataToSendSix->data.GetPayloadLength() == 4);
|
|
761
761
|
|
|
762
|
-
const auto dataToSendSeven = q.Produce(
|
|
762
|
+
const auto dataToSendSeven = q.Produce(NowUs, OneFragmentPacketLength);
|
|
763
763
|
|
|
764
764
|
REQUIRE(dataToSendSeven.has_value());
|
|
765
765
|
REQUIRE(dataToSendSeven->data.GetStreamId() == 3);
|
|
766
766
|
REQUIRE(dataToSendSeven->data.GetPayloadLength() == 6);
|
|
767
767
|
|
|
768
|
-
const auto dataToSendEight = q.Produce(
|
|
768
|
+
const auto dataToSendEight = q.Produce(NowUs, OneFragmentPacketLength);
|
|
769
769
|
|
|
770
770
|
REQUIRE(dataToSendEight.has_value());
|
|
771
771
|
REQUIRE(dataToSendEight->data.GetStreamId() == 4);
|
|
@@ -797,11 +797,11 @@ SCENARIO("SCTP RoundRobinSendQueue", "[sctp][roundrobinsendqueue]")
|
|
|
797
797
|
DefaultStreamBufferedAmountLowThreshold,
|
|
798
798
|
TotalBufferedAmountLowThreshold);
|
|
799
799
|
|
|
800
|
-
q.AddMessage(
|
|
800
|
+
q.AddMessage(NowUs, RTC::SCTP::Message(1, Ppid, std::vector<uint8_t>(1)));
|
|
801
801
|
|
|
802
802
|
REQUIRE(q.GetStreamBufferedAmount(1) == 1);
|
|
803
803
|
|
|
804
|
-
const auto dataToSendOne = q.Produce(
|
|
804
|
+
const auto dataToSendOne = q.Produce(NowUs, OneFragmentPacketLength);
|
|
805
805
|
|
|
806
806
|
REQUIRE(associationListener.HasOnStreamBufferedAmountLowBeenCalledWithStreamId(1));
|
|
807
807
|
REQUIRE(associationListener.CountOnStreamBufferedAmountLowCallsWithStreamId(1) == 1);
|
|
@@ -822,20 +822,20 @@ SCENARIO("SCTP RoundRobinSendQueue", "[sctp][roundrobinsendqueue]")
|
|
|
822
822
|
DefaultStreamBufferedAmountLowThreshold,
|
|
823
823
|
TotalBufferedAmountLowThreshold);
|
|
824
824
|
|
|
825
|
-
q.AddMessage(
|
|
825
|
+
q.AddMessage(NowUs, RTC::SCTP::Message(1, Ppid, std::vector<uint8_t>(1)));
|
|
826
826
|
|
|
827
827
|
REQUIRE(q.GetStreamBufferedAmount(1) == 1);
|
|
828
828
|
|
|
829
|
-
const auto dataToSendOne = q.Produce(
|
|
829
|
+
const auto dataToSendOne = q.Produce(NowUs, OneFragmentPacketLength);
|
|
830
830
|
|
|
831
831
|
REQUIRE(associationListener.HasOnStreamBufferedAmountLowBeenCalledWithStreamId(1));
|
|
832
832
|
REQUIRE(associationListener.CountOnStreamBufferedAmountLowCallsWithStreamId(1) == 1);
|
|
833
833
|
|
|
834
|
-
q.AddMessage(
|
|
834
|
+
q.AddMessage(NowUs, RTC::SCTP::Message(1, Ppid, std::vector<uint8_t>(1)));
|
|
835
835
|
|
|
836
836
|
REQUIRE(q.GetStreamBufferedAmount(1) == 1);
|
|
837
837
|
|
|
838
|
-
const auto dataToSendTwo = q.Produce(
|
|
838
|
+
const auto dataToSendTwo = q.Produce(NowUs, OneFragmentPacketLength);
|
|
839
839
|
|
|
840
840
|
REQUIRE(associationListener.HasOnStreamBufferedAmountLowBeenCalledWithStreamId(1));
|
|
841
841
|
REQUIRE(associationListener.CountOnStreamBufferedAmountLowCallsWithStreamId(1) == 2);
|
|
@@ -858,12 +858,12 @@ SCENARIO("SCTP RoundRobinSendQueue", "[sctp][roundrobinsendqueue]")
|
|
|
858
858
|
|
|
859
859
|
q.SetStreamBufferedAmountLowThreshold(1, 1000);
|
|
860
860
|
|
|
861
|
-
q.AddMessage(
|
|
861
|
+
q.AddMessage(NowUs, RTC::SCTP::Message(1, Ppid, std::vector<uint8_t>(10)));
|
|
862
862
|
|
|
863
863
|
REQUIRE(q.GetStreamBufferedAmount(1) == 10);
|
|
864
864
|
|
|
865
865
|
// Shouldn't trigger the event.
|
|
866
|
-
const auto dataToSendOne = q.Produce(
|
|
866
|
+
const auto dataToSendOne = q.Produce(NowUs, OneFragmentPacketLength);
|
|
867
867
|
|
|
868
868
|
REQUIRE(!associationListener.HasOnStreamBufferedAmountLowBeenCalledWithStreamId(1));
|
|
869
869
|
|
|
@@ -872,11 +872,11 @@ SCENARIO("SCTP RoundRobinSendQueue", "[sctp][roundrobinsendqueue]")
|
|
|
872
872
|
REQUIRE(dataToSendOne->data.GetPayloadLength() == 10);
|
|
873
873
|
REQUIRE(q.GetStreamBufferedAmount(1) == 0);
|
|
874
874
|
|
|
875
|
-
q.AddMessage(
|
|
875
|
+
q.AddMessage(NowUs, RTC::SCTP::Message(1, Ppid, std::vector<uint8_t>(20)));
|
|
876
876
|
|
|
877
877
|
REQUIRE(q.GetStreamBufferedAmount(1) == 20);
|
|
878
878
|
|
|
879
|
-
const auto dataToSendTwo = q.Produce(
|
|
879
|
+
const auto dataToSendTwo = q.Produce(NowUs, OneFragmentPacketLength);
|
|
880
880
|
|
|
881
881
|
REQUIRE(!associationListener.HasOnStreamBufferedAmountLowBeenCalledWithStreamId(1));
|
|
882
882
|
|
|
@@ -900,23 +900,23 @@ SCENARIO("SCTP RoundRobinSendQueue", "[sctp][roundrobinsendqueue]")
|
|
|
900
900
|
|
|
901
901
|
const std::vector<uint8_t> payload(1000);
|
|
902
902
|
|
|
903
|
-
q.AddMessage(
|
|
903
|
+
q.AddMessage(NowUs, RTC::SCTP::Message(1, Ppid, payload));
|
|
904
904
|
|
|
905
|
-
const auto dataToSendOne = q.Produce(
|
|
905
|
+
const auto dataToSendOne = q.Produce(NowUs, OneFragmentPacketLength);
|
|
906
906
|
|
|
907
907
|
REQUIRE(dataToSendOne.has_value());
|
|
908
908
|
REQUIRE(dataToSendOne->data.GetStreamId() == 1);
|
|
909
909
|
REQUIRE(dataToSendOne->data.GetPayloadLength() == OneFragmentPacketLength);
|
|
910
910
|
REQUIRE(q.GetStreamBufferedAmount(1) == 900);
|
|
911
911
|
|
|
912
|
-
const auto dataToSendTwo = q.Produce(
|
|
912
|
+
const auto dataToSendTwo = q.Produce(NowUs, OneFragmentPacketLength);
|
|
913
913
|
|
|
914
914
|
REQUIRE(dataToSendTwo.has_value());
|
|
915
915
|
REQUIRE(dataToSendTwo->data.GetPayloadLength() == OneFragmentPacketLength);
|
|
916
916
|
REQUIRE(q.GetStreamBufferedAmount(1) == 800);
|
|
917
917
|
|
|
918
918
|
// It goes beyond 700 bytes, it should trigger the event.
|
|
919
|
-
const auto dataToSendThree = q.Produce(
|
|
919
|
+
const auto dataToSendThree = q.Produce(NowUs, OneFragmentPacketLength);
|
|
920
920
|
|
|
921
921
|
REQUIRE(associationListener.HasOnStreamBufferedAmountLowBeenCalledWithStreamId(1));
|
|
922
922
|
REQUIRE(associationListener.CountOnStreamBufferedAmountLowCallsWithStreamId(1) == 1);
|
|
@@ -926,7 +926,7 @@ SCENARIO("SCTP RoundRobinSendQueue", "[sctp][roundrobinsendqueue]")
|
|
|
926
926
|
REQUIRE(q.GetStreamBufferedAmount(1) == 700);
|
|
927
927
|
|
|
928
928
|
// Buffer decreases so it shouldn't emit the event.
|
|
929
|
-
const auto dataToSendFour = q.Produce(
|
|
929
|
+
const auto dataToSendFour = q.Produce(NowUs, OneFragmentPacketLength);
|
|
930
930
|
|
|
931
931
|
REQUIRE(associationListener.CountOnStreamBufferedAmountLowCallsWithStreamId(1) == 1);
|
|
932
932
|
|
|
@@ -947,9 +947,9 @@ SCENARIO("SCTP RoundRobinSendQueue", "[sctp][roundrobinsendqueue]")
|
|
|
947
947
|
|
|
948
948
|
q.SetStreamBufferedAmountLowThreshold(1, 700);
|
|
949
949
|
|
|
950
|
-
q.AddMessage(
|
|
950
|
+
q.AddMessage(NowUs, RTC::SCTP::Message(1, Ppid, std::vector<uint8_t>(1000)));
|
|
951
951
|
|
|
952
|
-
const auto dataToSendOne = q.Produce(
|
|
952
|
+
const auto dataToSendOne = q.Produce(NowUs, 400);
|
|
953
953
|
|
|
954
954
|
REQUIRE(associationListener.HasOnStreamBufferedAmountLowBeenCalledWithStreamId(1));
|
|
955
955
|
REQUIRE(associationListener.CountOnStreamBufferedAmountLowCallsWithStreamId(1) == 1);
|
|
@@ -959,11 +959,11 @@ SCENARIO("SCTP RoundRobinSendQueue", "[sctp][roundrobinsendqueue]")
|
|
|
959
959
|
REQUIRE(dataToSendOne->data.GetPayloadLength() == 400);
|
|
960
960
|
REQUIRE(q.GetStreamBufferedAmount(1) == 600);
|
|
961
961
|
|
|
962
|
-
q.AddMessage(
|
|
962
|
+
q.AddMessage(NowUs, RTC::SCTP::Message(1, Ppid, std::vector<uint8_t>(200)));
|
|
963
963
|
|
|
964
964
|
REQUIRE(q.GetStreamBufferedAmount(1) == 800);
|
|
965
965
|
|
|
966
|
-
const auto dataToSendTwo = q.Produce(
|
|
966
|
+
const auto dataToSendTwo = q.Produce(NowUs, 200);
|
|
967
967
|
|
|
968
968
|
REQUIRE(associationListener.CountOnStreamBufferedAmountLowCallsWithStreamId(1) == 2);
|
|
969
969
|
|
|
@@ -983,7 +983,7 @@ SCENARIO("SCTP RoundRobinSendQueue", "[sctp][roundrobinsendqueue]")
|
|
|
983
983
|
DefaultStreamBufferedAmountLowThreshold,
|
|
984
984
|
TotalBufferedAmountLowThreshold);
|
|
985
985
|
|
|
986
|
-
q.AddMessage(
|
|
986
|
+
q.AddMessage(NowUs, RTC::SCTP::Message(StreamId, Ppid, std::vector<uint8_t>(100)));
|
|
987
987
|
|
|
988
988
|
// Modifying the threshold, still under buffered_amount, should not trigger
|
|
989
989
|
// event.
|
|
@@ -1026,13 +1026,13 @@ SCENARIO("SCTP RoundRobinSendQueue", "[sctp][roundrobinsendqueue]")
|
|
|
1026
1026
|
|
|
1027
1027
|
const std::vector<uint8_t> payload(TotalBufferedAmountLowThreshold - 1);
|
|
1028
1028
|
|
|
1029
|
-
q.AddMessage(
|
|
1029
|
+
q.AddMessage(NowUs, RTC::SCTP::Message(StreamId, Ppid, payload));
|
|
1030
1030
|
|
|
1031
1031
|
REQUIRE(q.GetTotalBufferedAmount() == payload.size());
|
|
1032
1032
|
|
|
1033
1033
|
// Will not trigger if going above but never below.
|
|
1034
1034
|
q.AddMessage(
|
|
1035
|
-
|
|
1035
|
+
NowUs, RTC::SCTP::Message(StreamId, Ppid, std::vector<uint8_t>(OneFragmentPacketLength)));
|
|
1036
1036
|
|
|
1037
1037
|
REQUIRE(associationListener.CountOnTotalBufferedAmountLowCalls() == 0);
|
|
1038
1038
|
REQUIRE(q.GetTotalBufferedAmount() > payload.size());
|
|
@@ -1050,15 +1050,15 @@ SCENARIO("SCTP RoundRobinSendQueue", "[sctp][roundrobinsendqueue]")
|
|
|
1050
1050
|
|
|
1051
1051
|
const std::vector<uint8_t> payload(TotalBufferedAmountLowThreshold);
|
|
1052
1052
|
|
|
1053
|
-
q.AddMessage(
|
|
1053
|
+
q.AddMessage(NowUs, RTC::SCTP::Message(StreamId, Ppid, payload));
|
|
1054
1054
|
|
|
1055
1055
|
REQUIRE(q.GetTotalBufferedAmount() == payload.size());
|
|
1056
1056
|
|
|
1057
1057
|
// Reaches it.
|
|
1058
|
-
q.AddMessage(
|
|
1058
|
+
q.AddMessage(NowUs, RTC::SCTP::Message(StreamId, Ppid, std::vector<uint8_t>(1)));
|
|
1059
1059
|
|
|
1060
1060
|
// Drain it a bit, will trigger.
|
|
1061
|
-
const auto dataToSendTwo = q.Produce(
|
|
1061
|
+
const auto dataToSendTwo = q.Produce(NowUs, OneFragmentPacketLength);
|
|
1062
1062
|
|
|
1063
1063
|
REQUIRE(associationListener.CountOnTotalBufferedAmountLowCalls() == 1);
|
|
1064
1064
|
|
|
@@ -1078,18 +1078,18 @@ SCENARIO("SCTP RoundRobinSendQueue", "[sctp][roundrobinsendqueue]")
|
|
|
1078
1078
|
|
|
1079
1079
|
constexpr size_t OneFragmentPacketSize = OneFragmentPacketLength;
|
|
1080
1080
|
|
|
1081
|
-
q.AddMessage(
|
|
1081
|
+
q.AddMessage(NowUs, RTC::SCTP::Message(5, Ppid, std::vector<uint8_t>(1)));
|
|
1082
1082
|
|
|
1083
|
-
const auto dataToSendOne = q.Produce(
|
|
1083
|
+
const auto dataToSendOne = q.Produce(NowUs, OneFragmentPacketSize);
|
|
1084
1084
|
|
|
1085
1085
|
REQUIRE(dataToSendOne.has_value());
|
|
1086
1086
|
REQUIRE(dataToSendOne->data.GetStreamId() == 5);
|
|
1087
1087
|
REQUIRE(dataToSendOne->data.GetPayloadLength() == 1);
|
|
1088
1088
|
|
|
1089
1089
|
// Next, it should pick a different stream.
|
|
1090
|
-
q.AddMessage(
|
|
1090
|
+
q.AddMessage(NowUs, RTC::SCTP::Message(1, Ppid, std::vector<uint8_t>(OneFragmentPacketSize * 2)));
|
|
1091
1091
|
|
|
1092
|
-
const auto dataToSendTwo = q.Produce(
|
|
1092
|
+
const auto dataToSendTwo = q.Produce(NowUs, OneFragmentPacketSize);
|
|
1093
1093
|
|
|
1094
1094
|
REQUIRE(dataToSendTwo.has_value());
|
|
1095
1095
|
REQUIRE(dataToSendTwo->data.GetStreamId() == 1);
|
|
@@ -1097,22 +1097,22 @@ SCENARIO("SCTP RoundRobinSendQueue", "[sctp][roundrobinsendqueue]")
|
|
|
1097
1097
|
|
|
1098
1098
|
// It should still stay on the Stream1 now, even if might be tempted to switch
|
|
1099
1099
|
// to this stream, as it's the stream following 5.
|
|
1100
|
-
q.AddMessage(
|
|
1100
|
+
q.AddMessage(NowUs, RTC::SCTP::Message(6, Ppid, std::vector<uint8_t>(1)));
|
|
1101
1101
|
|
|
1102
|
-
const auto dataToSendThree = q.Produce(
|
|
1102
|
+
const auto dataToSendThree = q.Produce(NowUs, OneFragmentPacketSize);
|
|
1103
1103
|
|
|
1104
1104
|
REQUIRE(dataToSendThree.has_value());
|
|
1105
1105
|
REQUIRE(dataToSendThree->data.GetStreamId() == 1);
|
|
1106
1106
|
REQUIRE(dataToSendThree->data.GetPayloadLength() == OneFragmentPacketSize);
|
|
1107
1107
|
|
|
1108
1108
|
// After stream 1 message is complete, it should move to stream 6.
|
|
1109
|
-
const auto dataToSendFour = q.Produce(
|
|
1109
|
+
const auto dataToSendFour = q.Produce(NowUs, OneFragmentPacketSize);
|
|
1110
1110
|
|
|
1111
1111
|
REQUIRE(dataToSendFour.has_value());
|
|
1112
1112
|
REQUIRE(dataToSendFour->data.GetStreamId() == 6);
|
|
1113
1113
|
REQUIRE(dataToSendFour->data.GetPayloadLength() == 1);
|
|
1114
1114
|
|
|
1115
|
-
REQUIRE(q.Produce(
|
|
1115
|
+
REQUIRE(q.Produce(NowUs, OneFragmentPacketSize).has_value() == false);
|
|
1116
1116
|
}
|
|
1117
1117
|
|
|
1118
1118
|
SECTION("streams have initial priority")
|
|
@@ -1127,7 +1127,7 @@ SCENARIO("SCTP RoundRobinSendQueue", "[sctp][roundrobinsendqueue]")
|
|
|
1127
1127
|
|
|
1128
1128
|
REQUIRE(q.GetStreamPriority(1) == DefaultPriority);
|
|
1129
1129
|
|
|
1130
|
-
q.AddMessage(
|
|
1130
|
+
q.AddMessage(NowUs, RTC::SCTP::Message(2, Ppid, std::vector<uint8_t>(40)));
|
|
1131
1131
|
|
|
1132
1132
|
REQUIRE(q.GetStreamPriority(2) == DefaultPriority);
|
|
1133
1133
|
}
|
|
@@ -1146,7 +1146,7 @@ SCENARIO("SCTP RoundRobinSendQueue", "[sctp][roundrobinsendqueue]")
|
|
|
1146
1146
|
|
|
1147
1147
|
REQUIRE(q.GetStreamPriority(1) == 42);
|
|
1148
1148
|
|
|
1149
|
-
q.AddMessage(
|
|
1149
|
+
q.AddMessage(NowUs, RTC::SCTP::Message(2, Ppid, std::vector<uint8_t>(40)));
|
|
1150
1150
|
q.SetStreamPriority(2, 42);
|
|
1151
1151
|
|
|
1152
1152
|
REQUIRE(q.GetStreamPriority(2) == 42);
|
|
@@ -1168,21 +1168,21 @@ SCENARIO("SCTP RoundRobinSendQueue", "[sctp][roundrobinsendqueue]")
|
|
|
1168
1168
|
q.SetStreamPriority(2, 20);
|
|
1169
1169
|
q.SetStreamPriority(3, 30);
|
|
1170
1170
|
|
|
1171
|
-
q.AddMessage(
|
|
1172
|
-
q.AddMessage(
|
|
1173
|
-
q.AddMessage(
|
|
1171
|
+
q.AddMessage(NowUs, RTC::SCTP::Message(1, Ppid, std::vector<uint8_t>(40)));
|
|
1172
|
+
q.AddMessage(NowUs, RTC::SCTP::Message(2, Ppid, std::vector<uint8_t>(20)));
|
|
1173
|
+
q.AddMessage(NowUs, RTC::SCTP::Message(3, Ppid, std::vector<uint8_t>(10)));
|
|
1174
1174
|
|
|
1175
1175
|
const std::vector<uint16_t> expectedStreams = { 3, 2, 2, 1, 1, 1, 1 };
|
|
1176
1176
|
|
|
1177
1177
|
for (const uint16_t streamId : expectedStreams)
|
|
1178
1178
|
{
|
|
1179
|
-
const auto dataToSend = q.Produce(
|
|
1179
|
+
const auto dataToSend = q.Produce(NowUs, 10);
|
|
1180
1180
|
|
|
1181
1181
|
REQUIRE(dataToSend.has_value());
|
|
1182
1182
|
REQUIRE(dataToSend->data.GetStreamId() == streamId);
|
|
1183
1183
|
}
|
|
1184
1184
|
|
|
1185
|
-
REQUIRE(q.Produce(
|
|
1185
|
+
REQUIRE(q.Produce(NowUs, 1).has_value() == false);
|
|
1186
1186
|
}
|
|
1187
1187
|
|
|
1188
1188
|
SECTION("will send lifecycle expire when expired in send queue")
|
|
@@ -1202,9 +1202,9 @@ SCENARIO("SCTP RoundRobinSendQueue", "[sctp][roundrobinsendqueue]")
|
|
|
1202
1202
|
options.lifetimeMs = 1000;
|
|
1203
1203
|
options.lifecycleId = 1;
|
|
1204
1204
|
|
|
1205
|
-
q.AddMessage(
|
|
1205
|
+
q.AddMessage(NowUs, RTC::SCTP::Message(2, Ppid, payload), options);
|
|
1206
1206
|
|
|
1207
|
-
REQUIRE(q.Produce(
|
|
1207
|
+
REQUIRE(q.Produce(NowUs + (1001 * 1000), OneFragmentPacketLength).has_value() == false);
|
|
1208
1208
|
|
|
1209
1209
|
REQUIRE(associationListener.HasOnAssociationLifecycleMessageExpiredSentBeenCalledWithLifecycleId(
|
|
1210
1210
|
1, false));
|
|
@@ -1223,10 +1223,10 @@ SCENARIO("SCTP RoundRobinSendQueue", "[sctp][roundrobinsendqueue]")
|
|
|
1223
1223
|
|
|
1224
1224
|
const std::vector<uint8_t> payload(120);
|
|
1225
1225
|
|
|
1226
|
-
q.AddMessage(
|
|
1227
|
-
q.AddMessage(
|
|
1226
|
+
q.AddMessage(NowUs, RTC::SCTP::Message(1, Ppid, payload), { .lifecycleId = 1 });
|
|
1227
|
+
q.AddMessage(NowUs, RTC::SCTP::Message(1, Ppid, payload), { .lifecycleId = 2 });
|
|
1228
1228
|
|
|
1229
|
-
const auto dataToSendOne = q.Produce(
|
|
1229
|
+
const auto dataToSendOne = q.Produce(NowUs, 50);
|
|
1230
1230
|
|
|
1231
1231
|
REQUIRE(dataToSendOne.has_value());
|
|
1232
1232
|
REQUIRE(dataToSendOne->data.GetStreamId() == 1);
|
|
@@ -1254,9 +1254,9 @@ SCENARIO("SCTP RoundRobinSendQueue", "[sctp][roundrobinsendqueue]")
|
|
|
1254
1254
|
|
|
1255
1255
|
const std::vector<uint8_t> payload(OneFragmentPacketLength + 20);
|
|
1256
1256
|
|
|
1257
|
-
q.AddMessage(
|
|
1257
|
+
q.AddMessage(NowUs, RTC::SCTP::Message(1, Ppid, payload), { .lifecycleId = 1 });
|
|
1258
1258
|
|
|
1259
|
-
const auto dataToSendOne = q.Produce(
|
|
1259
|
+
const auto dataToSendOne = q.Produce(NowUs, OneFragmentPacketLength);
|
|
1260
1260
|
|
|
1261
1261
|
REQUIRE(dataToSendOne.has_value());
|
|
1262
1262
|
REQUIRE(!dataToSendOne->data.IsEnd());
|