mediasoup 3.19.21 → 3.20.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/node/lib/ActiveSpeakerObserver.js +34 -1
- package/node/lib/AudioLevelObserver.js +35 -2
- package/node/lib/Channel.d.ts.map +1 -1
- package/node/lib/Channel.js +37 -5
- package/node/lib/Consumer.js +39 -6
- package/node/lib/DataConsumer.d.ts.map +1 -1
- package/node/lib/DataConsumer.js +39 -5
- package/node/lib/DataConsumerTypes.d.ts +1 -0
- package/node/lib/DataConsumerTypes.d.ts.map +1 -1
- package/node/lib/DataProducer.js +37 -4
- package/node/lib/DirectTransport.js +37 -4
- package/node/lib/DirectTransportTypes.d.ts +7 -2
- package/node/lib/DirectTransportTypes.d.ts.map +1 -1
- package/node/lib/Logger.js +4 -1
- package/node/lib/PipeTransport.d.ts +3 -1
- package/node/lib/PipeTransport.d.ts.map +1 -1
- package/node/lib/PipeTransport.js +56 -5
- package/node/lib/PipeTransportTypes.d.ts +28 -8
- package/node/lib/PipeTransportTypes.d.ts.map +1 -1
- package/node/lib/PlainTransport.d.ts +3 -1
- package/node/lib/PlainTransport.d.ts.map +1 -1
- package/node/lib/PlainTransport.js +54 -3
- package/node/lib/PlainTransportTypes.d.ts +27 -7
- package/node/lib/PlainTransportTypes.d.ts.map +1 -1
- package/node/lib/Producer.js +40 -7
- package/node/lib/Router.d.ts +5 -5
- package/node/lib/Router.d.ts.map +1 -1
- package/node/lib/Router.js +81 -36
- package/node/lib/RouterTypes.d.ts +25 -3
- package/node/lib/RouterTypes.d.ts.map +1 -1
- package/node/lib/RtpObserver.js +36 -3
- package/node/lib/Transport.d.ts +3 -1
- package/node/lib/Transport.d.ts.map +1 -1
- package/node/lib/Transport.js +74 -22
- package/node/lib/TransportTypes.d.ts +2 -1
- package/node/lib/TransportTypes.d.ts.map +1 -1
- package/node/lib/WebRtcServer.js +36 -3
- package/node/lib/WebRtcTransport.d.ts +3 -1
- package/node/lib/WebRtcTransport.d.ts.map +1 -1
- package/node/lib/WebRtcTransport.js +55 -4
- package/node/lib/WebRtcTransportTypes.d.ts +27 -7
- package/node/lib/WebRtcTransportTypes.d.ts.map +1 -1
- package/node/lib/Worker.d.ts +2 -1
- package/node/lib/Worker.d.ts.map +1 -1
- package/node/lib/Worker.js +71 -25
- package/node/lib/WorkerTypes.d.ts +0 -4
- package/node/lib/WorkerTypes.d.ts.map +1 -1
- package/node/lib/enhancedEvents.d.ts +2 -2
- package/node/lib/enhancedEvents.d.ts.map +1 -1
- package/node/lib/enhancedEvents.js +0 -2
- package/node/lib/fbs/active-speaker-observer/active-speaker-observer-options.js +34 -1
- package/node/lib/fbs/active-speaker-observer/dominant-speaker-notification.js +34 -1
- package/node/lib/fbs/audio-level-observer/audio-level-observer-options.js +34 -1
- package/node/lib/fbs/audio-level-observer/volume.js +34 -1
- package/node/lib/fbs/audio-level-observer/volumes-notification.js +34 -1
- package/node/lib/fbs/common/string-string-array.js +34 -1
- package/node/lib/fbs/common/string-string.js +34 -1
- package/node/lib/fbs/common/string-uint8.js +34 -1
- package/node/lib/fbs/common/uint16-string.js +34 -1
- package/node/lib/fbs/common/uint32-string.js +34 -1
- package/node/lib/fbs/consumer/base-consumer-dump.js +34 -1
- package/node/lib/fbs/consumer/consumer-dump.js +34 -1
- package/node/lib/fbs/consumer/consumer-layers.js +34 -1
- package/node/lib/fbs/consumer/consumer-score.js +34 -1
- package/node/lib/fbs/consumer/dump-response.js +34 -1
- package/node/lib/fbs/consumer/enable-trace-event-request.js +34 -1
- package/node/lib/fbs/consumer/fir-trace-info.js +34 -1
- package/node/lib/fbs/consumer/get-stats-response.js +34 -1
- package/node/lib/fbs/consumer/key-frame-trace-info.js +34 -1
- package/node/lib/fbs/consumer/layers-change-notification.js +34 -1
- package/node/lib/fbs/consumer/pli-trace-info.js +34 -1
- package/node/lib/fbs/consumer/rtp-notification.js +34 -1
- package/node/lib/fbs/consumer/rtp-trace-info.js +34 -1
- package/node/lib/fbs/consumer/score-notification.js +34 -1
- package/node/lib/fbs/consumer/set-preferred-layers-request.js +34 -1
- package/node/lib/fbs/consumer/set-preferred-layers-response.js +34 -1
- package/node/lib/fbs/consumer/set-priority-request.js +34 -1
- package/node/lib/fbs/consumer/set-priority-response.js +34 -1
- package/node/lib/fbs/consumer/trace-notification.js +34 -1
- package/node/lib/fbs/data-consumer/add-subchannel-request.js +34 -1
- package/node/lib/fbs/data-consumer/add-subchannel-response.js +34 -1
- package/node/lib/fbs/data-consumer/buffered-amount-low-notification.js +34 -1
- package/node/lib/fbs/data-consumer/dump-response.d.ts +5 -2
- package/node/lib/fbs/data-consumer/dump-response.d.ts.map +1 -1
- package/node/lib/fbs/data-consumer/dump-response.js +60 -16
- package/node/lib/fbs/data-consumer/get-buffered-amount-response.js +34 -1
- package/node/lib/fbs/data-consumer/get-stats-response.js +34 -1
- package/node/lib/fbs/data-consumer/message-notification.js +34 -1
- package/node/lib/fbs/data-consumer/remove-subchannel-request.js +34 -1
- package/node/lib/fbs/data-consumer/remove-subchannel-response.js +34 -1
- package/node/lib/fbs/data-consumer/send-request.js +34 -1
- package/node/lib/fbs/data-consumer/set-buffered-amount-low-threshold-request.js +34 -1
- package/node/lib/fbs/data-consumer/set-subchannels-request.js +34 -1
- package/node/lib/fbs/data-consumer/set-subchannels-response.js +34 -1
- package/node/lib/fbs/data-consumer/type.d.ts +5 -0
- package/node/lib/fbs/data-consumer/type.d.ts.map +1 -0
- package/node/lib/fbs/data-consumer/type.js +10 -0
- package/node/lib/fbs/data-consumer.d.ts +1 -0
- package/node/lib/fbs/data-consumer.d.ts.map +1 -1
- package/node/lib/fbs/data-consumer.js +3 -1
- package/node/lib/fbs/data-producer/dump-response.js +34 -1
- package/node/lib/fbs/data-producer/get-stats-response.js +34 -1
- package/node/lib/fbs/data-producer/send-notification.js +34 -1
- package/node/lib/fbs/direct-transport/direct-transport-options.js +34 -1
- package/node/lib/fbs/direct-transport/dump-response.js +34 -1
- package/node/lib/fbs/direct-transport/get-stats-response.js +34 -1
- package/node/lib/fbs/direct-transport/rtcp-notification.js +34 -1
- package/node/lib/fbs/lib-uring/dump.js +34 -1
- package/node/lib/fbs/log/log.js +34 -1
- package/node/lib/fbs/message/message.js +34 -1
- package/node/lib/fbs/notification/body.d.ts +24 -22
- package/node/lib/fbs/notification/body.d.ts.map +1 -1
- package/node/lib/fbs/notification/body.js +24 -20
- package/node/lib/fbs/notification/event.d.ts +27 -26
- package/node/lib/fbs/notification/event.d.ts.map +1 -1
- package/node/lib/fbs/notification/event.js +27 -26
- package/node/lib/fbs/notification/notification.d.ts +3 -2
- package/node/lib/fbs/notification/notification.d.ts.map +1 -1
- package/node/lib/fbs/notification/notification.js +34 -1
- package/node/lib/fbs/pipe-transport/connect-request.js +34 -1
- package/node/lib/fbs/pipe-transport/connect-response.js +34 -1
- package/node/lib/fbs/pipe-transport/dump-response.js +34 -1
- package/node/lib/fbs/pipe-transport/get-stats-response.js +34 -1
- package/node/lib/fbs/pipe-transport/pipe-transport-options.js +34 -1
- package/node/lib/fbs/plain-transport/connect-request.js +34 -1
- package/node/lib/fbs/plain-transport/connect-response.js +34 -1
- package/node/lib/fbs/plain-transport/dump-response.js +34 -1
- package/node/lib/fbs/plain-transport/get-stats-response.js +34 -1
- package/node/lib/fbs/plain-transport/plain-transport-options.js +34 -1
- package/node/lib/fbs/plain-transport/rtcp-tuple-notification.js +34 -1
- package/node/lib/fbs/plain-transport/tuple-notification.js +34 -1
- package/node/lib/fbs/producer/dump-response.js +34 -1
- package/node/lib/fbs/producer/enable-trace-event-request.js +34 -1
- package/node/lib/fbs/producer/fir-trace-info.js +34 -1
- package/node/lib/fbs/producer/get-stats-response.js +34 -1
- package/node/lib/fbs/producer/key-frame-trace-info.js +34 -1
- package/node/lib/fbs/producer/pli-trace-info.js +34 -1
- package/node/lib/fbs/producer/rtp-trace-info.js +34 -1
- package/node/lib/fbs/producer/score-notification.js +34 -1
- package/node/lib/fbs/producer/score.js +34 -1
- package/node/lib/fbs/producer/send-notification.js +34 -1
- package/node/lib/fbs/producer/sr-trace-info.js +34 -1
- package/node/lib/fbs/producer/trace-notification.js +34 -1
- package/node/lib/fbs/producer/video-orientation-change-notification.js +34 -1
- package/node/lib/fbs/request/request.js +34 -1
- package/node/lib/fbs/response/response.js +34 -1
- package/node/lib/fbs/router/close-rtp-observer-request.js +34 -1
- package/node/lib/fbs/router/close-transport-request.js +34 -1
- package/node/lib/fbs/router/create-active-speaker-observer-request.js +34 -1
- package/node/lib/fbs/router/create-audio-level-observer-request.js +34 -1
- package/node/lib/fbs/router/create-direct-transport-request.js +34 -1
- package/node/lib/fbs/router/create-pipe-transport-request.js +34 -1
- package/node/lib/fbs/router/create-plain-transport-request.js +34 -1
- package/node/lib/fbs/router/create-web-rtc-transport-request.js +34 -1
- package/node/lib/fbs/router/dump-response.js +34 -1
- package/node/lib/fbs/rtp-observer/add-producer-request.js +34 -1
- package/node/lib/fbs/rtp-observer/remove-producer-request.js +34 -1
- package/node/lib/fbs/rtp-packet/dump.js +34 -1
- package/node/lib/fbs/rtp-parameters/boolean.js +34 -1
- package/node/lib/fbs/rtp-parameters/codec-mapping.js +34 -1
- package/node/lib/fbs/rtp-parameters/double.js +34 -1
- package/node/lib/fbs/rtp-parameters/encoding-mapping.js +34 -1
- package/node/lib/fbs/rtp-parameters/integer32-array.js +34 -1
- package/node/lib/fbs/rtp-parameters/integer32.js +34 -1
- package/node/lib/fbs/rtp-parameters/parameter.js +34 -1
- package/node/lib/fbs/rtp-parameters/rtcp-feedback.js +34 -1
- package/node/lib/fbs/rtp-parameters/rtcp-parameters.js +34 -1
- package/node/lib/fbs/rtp-parameters/rtp-codec-parameters.js +34 -1
- package/node/lib/fbs/rtp-parameters/rtp-encoding-parameters.js +34 -1
- package/node/lib/fbs/rtp-parameters/rtp-header-extension-parameters.js +34 -1
- package/node/lib/fbs/rtp-parameters/rtp-mapping.js +34 -1
- package/node/lib/fbs/rtp-parameters/rtp-parameters.js +34 -1
- package/node/lib/fbs/rtp-parameters/rtx.js +34 -1
- package/node/lib/fbs/rtp-parameters/string.js +34 -1
- package/node/lib/fbs/rtp-stream/base-stats.js +34 -1
- package/node/lib/fbs/rtp-stream/bitrate-by-layer.js +34 -1
- package/node/lib/fbs/rtp-stream/dump.js +34 -1
- package/node/lib/fbs/rtp-stream/params.js +34 -1
- package/node/lib/fbs/rtp-stream/recv-stats.js +34 -1
- package/node/lib/fbs/rtp-stream/send-stats.js +34 -1
- package/node/lib/fbs/rtp-stream/stats.js +34 -1
- package/node/lib/fbs/rtx-stream/params.js +34 -1
- package/node/lib/fbs/rtx-stream/rtx-dump.js +34 -1
- package/node/lib/fbs/sctp-association/sctp-negotiated-capabilities.d.ts +24 -0
- package/node/lib/fbs/sctp-association/sctp-negotiated-capabilities.d.ts.map +1 -0
- package/node/lib/fbs/sctp-association/sctp-negotiated-capabilities.js +102 -0
- package/node/lib/fbs/sctp-association.d.ts +1 -0
- package/node/lib/fbs/sctp-association.d.ts.map +1 -1
- package/node/lib/fbs/sctp-association.js +4 -1
- package/node/lib/fbs/sctp-parameters/num-sctp-streams.js +34 -1
- package/node/lib/fbs/sctp-parameters/sctp-parameters.d.ts +14 -14
- package/node/lib/fbs/sctp-parameters/sctp-parameters.d.ts.map +1 -1
- package/node/lib/fbs/sctp-parameters/sctp-parameters.js +73 -40
- package/node/lib/fbs/sctp-parameters/sctp-stream-parameters.js +34 -1
- package/node/lib/fbs/sctp-parameters.d.ts +0 -1
- package/node/lib/fbs/sctp-parameters.d.ts.map +1 -1
- package/node/lib/fbs/sctp-parameters.js +1 -4
- package/node/lib/fbs/srtp-parameters/srtp-parameters.js +34 -1
- package/node/lib/fbs/transport/bwe-trace-info.js +34 -1
- package/node/lib/fbs/transport/close-consumer-request.js +34 -1
- package/node/lib/fbs/transport/close-data-consumer-request.js +34 -1
- package/node/lib/fbs/transport/close-data-producer-request.js +34 -1
- package/node/lib/fbs/transport/close-producer-request.js +34 -1
- package/node/lib/fbs/transport/consume-data-request.d.ts +1 -1
- package/node/lib/fbs/transport/consume-data-request.js +35 -2
- package/node/lib/fbs/transport/consume-request.js +34 -1
- package/node/lib/fbs/transport/consume-response.js +34 -1
- package/node/lib/fbs/transport/dump.d.ts +7 -4
- package/node/lib/fbs/transport/dump.d.ts.map +1 -1
- package/node/lib/fbs/transport/dump.js +66 -22
- package/node/lib/fbs/transport/enable-trace-event-request.js +34 -1
- package/node/lib/fbs/transport/listen-info.js +34 -1
- package/node/lib/fbs/transport/options.d.ts +14 -14
- package/node/lib/fbs/transport/options.d.ts.map +1 -1
- package/node/lib/fbs/transport/options.js +92 -51
- package/node/lib/fbs/transport/port-range.js +34 -1
- package/node/lib/fbs/transport/produce-data-request.js +34 -1
- package/node/lib/fbs/transport/produce-request.js +34 -1
- package/node/lib/fbs/transport/produce-response.js +34 -1
- package/node/lib/fbs/transport/recv-rtp-header-extensions.js +34 -1
- package/node/lib/fbs/transport/restart-ice-response.js +34 -1
- package/node/lib/fbs/transport/rtp-listener.js +34 -1
- package/node/lib/fbs/transport/sctp-listener.js +34 -1
- package/node/lib/fbs/transport/sctp-negotiated-capabilities-notification.d.ts +22 -0
- package/node/lib/fbs/transport/sctp-negotiated-capabilities-notification.d.ts.map +1 -0
- package/node/lib/fbs/transport/sctp-negotiated-capabilities-notification.js +93 -0
- package/node/lib/fbs/transport/sctp-state-change-notification.js +34 -1
- package/node/lib/fbs/transport/send-rtcp-notification.js +34 -1
- package/node/lib/fbs/transport/set-max-incoming-bitrate-request.js +34 -1
- package/node/lib/fbs/transport/set-max-outgoing-bitrate-request.js +34 -1
- package/node/lib/fbs/transport/set-min-outgoing-bitrate-request.js +34 -1
- package/node/lib/fbs/transport/socket-flags.js +34 -1
- package/node/lib/fbs/transport/stats.js +34 -1
- package/node/lib/fbs/transport/trace-notification.js +34 -1
- package/node/lib/fbs/transport/tuple.js +34 -1
- package/node/lib/fbs/transport.d.ts +1 -0
- package/node/lib/fbs/transport.d.ts.map +1 -1
- package/node/lib/fbs/transport.js +5 -2
- package/node/lib/fbs/web-rtc-server/dump-response.js +34 -1
- package/node/lib/fbs/web-rtc-server/ice-user-name-fragment.js +34 -1
- package/node/lib/fbs/web-rtc-server/ip-port.js +34 -1
- package/node/lib/fbs/web-rtc-server/tuple-hash.js +34 -1
- package/node/lib/fbs/web-rtc-transport/connect-request.js +34 -1
- package/node/lib/fbs/web-rtc-transport/connect-response.js +34 -1
- package/node/lib/fbs/web-rtc-transport/dtls-parameters.js +34 -1
- package/node/lib/fbs/web-rtc-transport/dtls-state-change-notification.js +34 -1
- package/node/lib/fbs/web-rtc-transport/dump-response.js +34 -1
- package/node/lib/fbs/web-rtc-transport/fingerprint.js +34 -1
- package/node/lib/fbs/web-rtc-transport/get-stats-response.js +34 -1
- package/node/lib/fbs/web-rtc-transport/ice-candidate.js +34 -1
- package/node/lib/fbs/web-rtc-transport/ice-parameters.js +34 -1
- package/node/lib/fbs/web-rtc-transport/ice-selected-tuple-change-notification.js +34 -1
- package/node/lib/fbs/web-rtc-transport/ice-state-change-notification.js +34 -1
- package/node/lib/fbs/web-rtc-transport/listen-individual.js +34 -1
- package/node/lib/fbs/web-rtc-transport/listen-server.js +34 -1
- package/node/lib/fbs/web-rtc-transport/web-rtc-transport-options.js +34 -1
- package/node/lib/fbs/worker/channel-message-handlers.js +34 -1
- package/node/lib/fbs/worker/close-router-request.js +34 -1
- package/node/lib/fbs/worker/close-web-rtc-server-request.js +34 -1
- package/node/lib/fbs/worker/create-router-request.js +34 -1
- package/node/lib/fbs/worker/create-web-rtc-server-request.js +34 -1
- package/node/lib/fbs/worker/dump-response.js +34 -1
- package/node/lib/fbs/worker/resource-usage-response.js +34 -1
- package/node/lib/fbs/worker/update-settings-request.js +34 -1
- package/node/lib/index.d.ts +1 -1
- package/node/lib/index.d.ts.map +1 -1
- package/node/lib/index.js +37 -5
- package/node/lib/ortc.js +36 -3
- package/node/lib/rtpParametersFbsUtils.js +34 -1
- package/node/lib/rtpStreamStatsFbsUtils.js +35 -2
- package/node/lib/sctpParametersFbsUtils.d.ts +2 -2
- package/node/lib/sctpParametersFbsUtils.d.ts.map +1 -1
- package/node/lib/sctpParametersFbsUtils.js +44 -7
- package/node/lib/sctpParametersTypes.d.ts +10 -46
- package/node/lib/sctpParametersTypes.d.ts.map +1 -1
- package/node/lib/srtpParametersFbsUtils.js +34 -1
- package/node/lib/test/test-ActiveSpeakerObserver.js +35 -2
- package/node/lib/test/test-AudioLevelObserver.js +35 -2
- package/node/lib/test/test-Consumer.js +37 -4
- package/node/lib/test/test-DataConsumer.js +35 -2
- package/node/lib/test/test-DataProducer.js +35 -2
- package/node/lib/test/test-DirectTransport.js +36 -8
- package/node/lib/test/test-PipeTransport.js +35 -2
- package/node/lib/test/test-PlainTransport.js +45 -12
- package/node/lib/test/test-Producer.js +37 -4
- package/node/lib/test/test-Router.js +35 -2
- package/node/lib/test/test-WebRtcServer.js +34 -1
- package/node/lib/test/test-WebRtcTransport.js +51 -22
- package/node/lib/test/test-Worker.js +37 -4
- package/node/lib/test/test-mediasoup.js +36 -3
- package/node/lib/test/test-multiopus.js +35 -2
- package/node/lib/test/test-ortc.js +34 -1
- package/node/lib/test/test-werift-sctp.js +39 -5
- package/npm-scripts.mjs +2 -2
- package/package.json +13 -11
- package/worker/deps/libwebrtc/LICENSE +5 -0
- package/worker/deps/libwebrtc/README.md +3 -3
- package/worker/deps/libwebrtc/libwebrtc/mediasoup_helpers.h +13 -10
- package/worker/fbs/dataConsumer.fbs +7 -2
- package/worker/fbs/dataProducer.fbs +1 -0
- package/worker/fbs/notification.fbs +2 -0
- package/worker/fbs/sctpAssociation.fbs +4 -0
- package/worker/fbs/sctpParameters.fbs +5 -12
- package/worker/fbs/transport.fbs +12 -8
- package/worker/fuzzer/src/RTC/FuzzerDtlsTransport.cpp +13 -3
- package/worker/fuzzer/src/RTC/FuzzerRateCalculator.cpp +2 -2
- package/worker/fuzzer/src/RTC/FuzzerSeqManager.cpp +1 -1
- package/worker/fuzzer/src/RTC/FuzzerTrendCalculator.cpp +5 -5
- package/worker/fuzzer/src/RTC/ICE/FuzzerStunPacket.cpp +9 -6
- package/worker/fuzzer/src/RTC/RTP/FuzzerRetransmissionBuffer.cpp +1 -1
- package/worker/fuzzer/src/RTC/RTP/FuzzerRtpStreamSend.cpp +14 -2
- package/worker/fuzzer/src/RTC/SCTP/association/FuzzerStateCookie.cpp +1 -1
- package/worker/fuzzer/src/RTC/SCTP/packet/FuzzerPacket.cpp +5 -2
- package/worker/fuzzer/src/fuzzer.cpp +3 -10
- package/worker/include/Channel/ChannelMessageRegistrator.hpp +39 -0
- package/worker/include/Channel/ChannelMessageRegistratorInterface.hpp +32 -0
- package/worker/include/Channel/ChannelRequest.hpp +1 -1
- package/worker/include/Channel/ChannelSocket.hpp +1 -1
- package/worker/include/DepLibUV.hpp +1 -1
- package/worker/include/DepLibUring.hpp +3 -3
- package/worker/include/Logger.hpp +4 -4
- package/worker/include/MediaSoupErrors.hpp +1 -1
- package/worker/include/RTC/ActiveSpeakerObserver.hpp +11 -9
- package/worker/include/RTC/AudioLevelObserver.hpp +7 -7
- package/worker/include/RTC/Consumer.hpp +3 -3
- package/worker/include/RTC/DataConsumer.hpp +13 -17
- package/worker/include/RTC/DataProducer.hpp +6 -9
- package/worker/include/RTC/DirectTransport.hpp +4 -6
- package/worker/include/RTC/DtlsTransport.hpp +13 -11
- package/worker/include/RTC/ICE/IceServer.hpp +8 -5
- package/worker/include/RTC/ICE/StunPacket.hpp +1 -1
- package/worker/include/RTC/KeyFrameRequestManager.hpp +15 -12
- package/worker/include/RTC/NackGenerator.hpp +8 -6
- package/worker/include/RTC/PipeConsumer.hpp +1 -2
- package/worker/include/RTC/PipeTransport.hpp +4 -6
- package/worker/include/RTC/PlainTransport.hpp +4 -6
- package/worker/include/RTC/PortManager.hpp +1 -1
- package/worker/include/RTC/Producer.hpp +3 -3
- package/worker/include/RTC/RTCP/FeedbackPs.hpp +1 -1
- package/worker/include/RTC/RTCP/FeedbackRtp.hpp +1 -1
- package/worker/include/RTC/RTCP/FeedbackRtpNack.hpp +1 -1
- package/worker/include/RTC/RTCP/ReceiverReport.hpp +1 -1
- package/worker/include/RTC/RTP/Packet.hpp +2 -2
- package/worker/include/RTC/RTP/RtpStream.hpp +17 -12
- package/worker/include/RTC/RTP/RtpStreamRecv.hpp +8 -6
- package/worker/include/RTC/RTP/RtpStreamSend.hpp +4 -1
- package/worker/include/RTC/RTP/RtxStream.hpp +3 -1
- package/worker/include/RTC/RTP/SharedPacket.hpp +1 -1
- package/worker/include/RTC/RateCalculator.hpp +5 -2
- package/worker/include/RTC/Router.hpp +7 -8
- package/worker/include/RTC/RtpObserver.hpp +3 -3
- package/worker/include/RTC/SCTP/association/Association.hpp +53 -19
- package/worker/include/RTC/SCTP/association/AssociationListenerDeferrer.hpp +14 -6
- package/worker/include/RTC/SCTP/association/HeartbeatHandler.hpp +18 -14
- package/worker/include/RTC/SCTP/association/PacketSender.hpp +3 -3
- package/worker/include/RTC/SCTP/association/StateCookie.hpp +1 -1
- package/worker/include/RTC/SCTP/association/StreamResetHandler.hpp +49 -35
- package/worker/include/RTC/SCTP/association/TransmissionControlBlock.hpp +114 -31
- package/worker/include/RTC/SCTP/association/{TCBContext.hpp → TransmissionControlBlockContextInterface.hpp} +14 -8
- package/worker/include/RTC/SCTP/packet/Chunk.hpp +3 -3
- package/worker/include/RTC/SCTP/packet/TLV.hpp +1 -1
- package/worker/include/RTC/SCTP/packet/UserData.hpp +61 -17
- package/worker/include/RTC/SCTP/packet/chunks/AnyDataChunk.hpp +1 -1
- package/worker/include/RTC/SCTP/packet/chunks/AnyForwardTsnChunk.hpp +9 -9
- package/worker/include/RTC/SCTP/packet/chunks/AnyInitChunk.hpp +1 -1
- package/worker/include/RTC/SCTP/packet/chunks/DataChunk.hpp +4 -2
- package/worker/include/RTC/SCTP/packet/chunks/ForwardTsnChunk.hpp +3 -3
- package/worker/include/RTC/SCTP/packet/chunks/IDataChunk.hpp +4 -2
- package/worker/include/RTC/SCTP/packet/chunks/IForwardTsnChunk.hpp +3 -3
- package/worker/include/RTC/SCTP/packet/chunks/InitAckChunk.hpp +1 -1
- package/worker/include/RTC/SCTP/packet/chunks/InitChunk.hpp +1 -1
- package/worker/include/RTC/SCTP/packet/chunks/SackChunk.hpp +10 -3
- package/worker/include/RTC/SCTP/packet/chunks/ShutdownChunk.hpp +1 -1
- package/worker/include/RTC/SCTP/packet/errorCauses/InvalidStreamIdentifierErrorCause.hpp +1 -1
- package/worker/include/RTC/SCTP/packet/errorCauses/MissingMandatoryParameterErrorCause.hpp +1 -1
- package/worker/include/RTC/SCTP/packet/errorCauses/NoUserDataErrorCause.hpp +1 -1
- package/worker/include/RTC/SCTP/packet/errorCauses/StaleCookieErrorCause.hpp +1 -1
- package/worker/include/RTC/SCTP/packet/parameters/AddIncomingStreamsRequestParameter.hpp +1 -1
- package/worker/include/RTC/SCTP/packet/parameters/AddOutgoingStreamsRequestParameter.hpp +1 -1
- package/worker/include/RTC/SCTP/packet/parameters/CookiePreservativeParameter.hpp +1 -1
- package/worker/include/RTC/SCTP/packet/parameters/IncomingSsnResetRequestParameter.hpp +1 -1
- package/worker/include/RTC/SCTP/packet/parameters/OutgoingSsnResetRequestParameter.hpp +1 -1
- package/worker/include/RTC/SCTP/packet/parameters/ReconfigurationResponseParameter.hpp +1 -1
- package/worker/include/RTC/SCTP/packet/parameters/SsnTsnResetRequestParameter.hpp +1 -1
- package/worker/include/RTC/SCTP/packet/parameters/SupportedAddressTypesParameter.hpp +1 -1
- package/worker/include/RTC/SCTP/packet/parameters/SupportedExtensionsParameter.hpp +1 -1
- package/worker/include/RTC/SCTP/packet/parameters/ZeroChecksumAcceptableParameter.hpp +1 -1
- package/worker/include/RTC/SCTP/public/AssociationInterface.hpp +22 -2
- package/worker/include/RTC/SCTP/public/{AssociationListener.hpp → AssociationListenerInterface.hpp} +5 -5
- package/worker/include/RTC/SCTP/public/Message.hpp +26 -10
- package/worker/include/RTC/SCTP/public/SctpOptions.hpp +28 -19
- package/worker/include/RTC/SCTP/public/SctpTypes.hpp +21 -0
- package/worker/include/RTC/SCTP/rx/DataTracker.hpp +277 -0
- package/worker/include/RTC/SCTP/rx/InterleavedReassemblyStreams.hpp +116 -0
- package/worker/include/RTC/SCTP/rx/ReassemblyQueue.hpp +202 -0
- package/worker/include/RTC/SCTP/rx/ReassemblyStreamsInterface.hpp +83 -0
- package/worker/include/RTC/SCTP/rx/TraditionalReassemblyStreams.hpp +183 -0
- package/worker/include/RTC/SCTP/tx/OutstandingData.hpp +595 -0
- package/worker/include/RTC/SCTP/tx/RetransmissionErrorCounter.hpp +3 -3
- package/worker/include/RTC/SCTP/tx/RetransmissionQueue.hpp +329 -0
- package/worker/include/RTC/SCTP/tx/RetransmissionTimeout.hpp +11 -10
- package/worker/include/RTC/SCTP/tx/RoundRobinSendQueue.hpp +356 -0
- package/worker/include/RTC/SCTP/tx/SendQueueInterface.hpp +180 -0
- package/worker/include/RTC/SCTP/tx/StreamScheduler.hpp +235 -0
- package/worker/include/RTC/SenderBandwidthEstimator.hpp +5 -1
- package/worker/include/RTC/Serializable.hpp +11 -3
- package/worker/include/RTC/SimpleConsumer.hpp +1 -2
- package/worker/include/RTC/SimulcastConsumer.hpp +1 -2
- package/worker/include/RTC/SvcConsumer.hpp +1 -2
- package/worker/include/RTC/TcpServer.hpp +2 -2
- package/worker/include/RTC/Transport.hpp +65 -86
- package/worker/include/RTC/TransportCongestionControlClient.hpp +8 -5
- package/worker/include/RTC/TransportCongestionControlServer.hpp +8 -5
- package/worker/include/RTC/TransportTuple.hpp +1 -1
- package/worker/include/RTC/UdpSocket.hpp +1 -1
- package/worker/include/RTC/WebRtcServer.hpp +3 -3
- package/worker/include/RTC/WebRtcTransport.hpp +5 -7
- package/worker/include/Settings.hpp +2 -3
- package/worker/include/Shared.hpp +64 -0
- package/worker/include/SharedInterface.hpp +77 -0
- package/worker/include/Utils/UnwrappedSequenceNumber.hpp +270 -0
- package/worker/include/Utils.hpp +10 -4
- package/worker/include/Worker.hpp +6 -6
- package/worker/include/common.hpp +12 -12
- package/worker/include/handles/BackoffTimerHandle.hpp +28 -67
- package/worker/include/handles/BackoffTimerHandleInterface.hpp +123 -0
- package/worker/include/handles/TimerHandle.hpp +29 -20
- package/worker/include/handles/TimerHandleInterface.hpp +43 -0
- package/worker/meson.build +45 -29
- package/worker/meson_options.txt +2 -1
- package/worker/mocks/include/Channel/MockChannelMessageRegistrator.hpp +45 -0
- package/worker/mocks/include/MockShared.hpp +90 -0
- package/worker/mocks/include/RTC/SCTP/association/MockAssociationListener.hpp +308 -0
- package/worker/mocks/include/RTC/SCTP/association/MockTransmissionControlBlockContext.hpp +183 -0
- package/worker/mocks/include/RTC/SCTP/tx/MockSendQueue.hpp +262 -0
- package/worker/mocks/include/handles/MockBackoffTimerHandle.hpp +153 -0
- package/worker/mocks/include/handles/MockTimerHandle.hpp +74 -0
- package/worker/mocks/include/mockTypes.hpp +15 -0
- package/worker/mocks/src/Channel/MockChannelMessageRegistrator.cpp +128 -0
- package/worker/mocks/src/MockShared.cpp +46 -0
- package/worker/mocks/src/RTC/SCTP/association/MockTransmissionControlBlockContext.cpp +39 -0
- package/worker/mocks/src/handles/MockBackoffTimerHandle.cpp +127 -0
- package/worker/scripts/clang-scripts.mjs +5 -1
- package/worker/scripts/package-lock.json +6 -7
- package/worker/src/Channel/ChannelMessageRegistrator.cpp +125 -0
- package/worker/src/Channel/ChannelSocket.cpp +3 -4
- package/worker/src/DepLibUV.cpp +1 -1
- package/worker/src/DepLibUring.cpp +3 -1
- package/worker/src/Logger.cpp +1 -1
- package/worker/src/MediaSoupErrors.cpp +2 -0
- package/worker/src/RTC/ActiveSpeakerObserver.cpp +14 -14
- package/worker/src/RTC/AudioLevelObserver.cpp +12 -10
- package/worker/src/RTC/Consumer.cpp +28 -26
- package/worker/src/RTC/DataConsumer.cpp +61 -71
- package/worker/src/RTC/DataProducer.cpp +16 -11
- package/worker/src/RTC/DirectTransport.cpp +21 -20
- package/worker/src/RTC/DtlsTransport.cpp +4 -4
- package/worker/src/RTC/ICE/IceServer.cpp +6 -5
- package/worker/src/RTC/ICE/StunPacket.cpp +1 -1
- package/worker/src/RTC/KeyFrameRequestManager.cpp +15 -15
- package/worker/src/RTC/NackGenerator.cpp +6 -6
- package/worker/src/RTC/PipeConsumer.cpp +6 -5
- package/worker/src/RTC/PipeTransport.cpp +9 -22
- package/worker/src/RTC/PlainTransport.cpp +16 -28
- package/worker/src/RTC/Producer.cpp +40 -39
- package/worker/src/RTC/RTCP/FeedbackPsAfb.cpp +1 -1
- package/worker/src/RTC/RTCP/FeedbackPsRpsi.cpp +1 -2
- package/worker/src/RTC/RTCP/FeedbackRtpTransport.cpp +1 -1
- package/worker/src/RTC/RTCP/XR.cpp +1 -1
- package/worker/src/RTC/RTP/Packet.cpp +3 -1
- package/worker/src/RTC/RTP/ProbationGenerator.cpp +4 -4
- package/worker/src/RTC/RTP/RetransmissionBuffer.cpp +1 -1
- package/worker/src/RTC/RTP/RtpStream.cpp +17 -10
- package/worker/src/RTC/RTP/RtpStreamRecv.cpp +16 -14
- package/worker/src/RTC/RTP/RtpStreamSend.cpp +12 -9
- package/worker/src/RTC/RTP/RtxStream.cpp +7 -7
- package/worker/src/RTC/RTP/SharedPacket.cpp +3 -3
- package/worker/src/RTC/RateCalculator.cpp +1 -2
- package/worker/src/RTC/Router.cpp +61 -38
- package/worker/src/RTC/RtpDictionaries/RtpCodecMimeType.cpp +1 -1
- package/worker/src/RTC/RtpObserver.cpp +2 -1
- package/worker/src/RTC/SCTP/LICENSE +44 -0
- package/worker/src/RTC/SCTP/association/Association.cpp +417 -411
- package/worker/src/RTC/SCTP/association/AssociationListenerDeferrer.cpp +46 -13
- package/worker/src/RTC/SCTP/association/HeartbeatHandler.cpp +47 -43
- package/worker/src/RTC/SCTP/association/PacketSender.cpp +8 -8
- package/worker/src/RTC/SCTP/association/StreamResetHandler.cpp +113 -101
- package/worker/src/RTC/SCTP/association/TransmissionControlBlock.cpp +291 -62
- package/worker/src/RTC/SCTP/packet/Chunk.cpp +5 -1
- package/worker/src/RTC/SCTP/packet/Packet.cpp +8 -1
- package/worker/src/RTC/SCTP/packet/chunks/DataChunk.cpp +17 -0
- package/worker/src/RTC/SCTP/packet/chunks/ForwardTsnChunk.cpp +4 -4
- package/worker/src/RTC/SCTP/packet/chunks/IDataChunk.cpp +25 -0
- package/worker/src/RTC/SCTP/packet/chunks/IForwardTsnChunk.cpp +10 -7
- package/worker/src/RTC/SCTP/packet/chunks/SackChunk.cpp +21 -4
- package/worker/src/RTC/SCTP/packet/chunks/ShutdownCompleteChunk.cpp +1 -1
- package/worker/src/RTC/SCTP/packet/errorCauses/NoUserDataErrorCause.cpp +1 -1
- package/worker/src/RTC/SCTP/packet/errorCauses/ProtocolViolationErrorCause.cpp +2 -2
- package/worker/src/RTC/SCTP/packet/errorCauses/UserInitiatedAbortErrorCause.cpp +1 -1
- package/worker/src/RTC/SCTP/public/Message.cpp +8 -0
- package/worker/src/RTC/SCTP/public/SctpOptions.cpp +90 -0
- package/worker/src/RTC/SCTP/rx/DataTracker.cpp +471 -0
- package/worker/src/RTC/SCTP/rx/InterleavedReassemblyStreams.cpp +327 -0
- package/worker/src/RTC/SCTP/rx/ReassemblyQueue.cpp +288 -0
- package/worker/src/RTC/SCTP/rx/TraditionalReassemblyStreams.cpp +453 -0
- package/worker/src/RTC/SCTP/tx/OutstandingData.cpp +912 -0
- package/worker/src/RTC/SCTP/tx/RetransmissionQueue.cpp +786 -0
- package/worker/src/RTC/SCTP/tx/RetransmissionTimeout.cpp +2 -2
- package/worker/src/RTC/SCTP/tx/RoundRobinSendQueue.cpp +752 -0
- package/worker/src/RTC/SCTP/tx/StreamScheduler.cpp +257 -0
- package/worker/src/RTC/SenderBandwidthEstimator.cpp +7 -5
- package/worker/src/RTC/SimpleConsumer.cpp +11 -11
- package/worker/src/RTC/SimulcastConsumer.cpp +16 -16
- package/worker/src/RTC/SrtpSession.cpp +1 -1
- package/worker/src/RTC/SvcConsumer.cpp +16 -16
- package/worker/src/RTC/TcpConnection.cpp +1 -1
- package/worker/src/RTC/Transport.cpp +497 -563
- package/worker/src/RTC/TransportCongestionControlClient.cpp +9 -8
- package/worker/src/RTC/TransportCongestionControlServer.cpp +5 -5
- package/worker/src/RTC/WebRtcServer.cpp +5 -4
- package/worker/src/RTC/WebRtcTransport.cpp +44 -39
- package/worker/src/Settings.cpp +9 -28
- package/worker/src/Shared.cpp +35 -0
- package/worker/src/Utils/Crypto.cpp +1 -1
- package/worker/src/Utils/String.cpp +1 -1
- package/worker/src/Worker.cpp +19 -48
- package/worker/src/handles/BackoffTimerHandle.cpp +34 -21
- package/worker/src/handles/TimerHandle.cpp +5 -4
- package/worker/src/handles/UdpSocketHandle.cpp +1 -1
- package/worker/src/lib.cpp +17 -16
- package/worker/subprojects/catch2.wrap +6 -6
- package/worker/tasks.py +1 -1
- package/worker/test/include/RTC/ICE/iceCommon.hpp +8 -7
- package/worker/test/include/RTC/RTP/rtpCommon.hpp +7 -6
- package/worker/test/include/RTC/SCTP/sctpCommon.hpp +16 -10
- package/worker/test/include/catch2Macros.hpp +31 -0
- package/worker/test/src/RTC/ICE/TestStunPacket.cpp +3 -3
- package/worker/test/src/RTC/ICE/iceCommon.cpp +2 -2
- package/worker/test/src/RTC/RTP/Codecs/TestVP8.cpp +1 -1
- package/worker/test/src/RTC/RTP/Codecs/TestVP9.cpp +1 -1
- package/worker/test/src/RTC/RTP/TestPacket.cpp +3 -3
- package/worker/test/src/RTC/RTP/TestRtpStreamRecv.cpp +16 -9
- package/worker/test/src/RTC/RTP/TestRtpStreamSend.cpp +38 -23
- package/worker/test/src/RTC/RTP/TestSharedPacket.cpp +1 -1
- package/worker/test/src/RTC/RTP/rtpCommon.cpp +2 -2
- package/worker/test/src/RTC/SCTP/association/TestHeartbeatHandler.cpp +292 -0
- package/worker/test/src/RTC/SCTP/association/TestNegotiatedCapabilities.cpp +1 -1
- package/worker/test/src/RTC/SCTP/association/TestStateCookie.cpp +1 -1
- package/worker/test/src/RTC/SCTP/association/TestTransmissionControlBlock.cpp +99 -0
- package/worker/test/src/RTC/SCTP/packet/TestChunk.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/TestPacket.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/chunks/TestAbortAssociationChunk.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/chunks/TestCookieAckChunk.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/chunks/TestCookieEchoChunk.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/chunks/TestDataChunk.cpp +77 -7
- package/worker/test/src/RTC/SCTP/packet/chunks/TestForwardTsnChunk.cpp +35 -26
- package/worker/test/src/RTC/SCTP/packet/chunks/TestHeartbeatAckChunk.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/chunks/TestHeartbeatRequestChunk.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/chunks/TestIDataChunk.cpp +77 -7
- package/worker/test/src/RTC/SCTP/packet/chunks/TestIForwardTsnChunk.cpp +59 -27
- package/worker/test/src/RTC/SCTP/packet/chunks/TestInitAckChunk.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/chunks/TestInitChunk.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/chunks/TestOperationErrorChunk.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/chunks/TestReConfigChunk.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/chunks/TestSackChunk.cpp +73 -35
- package/worker/test/src/RTC/SCTP/packet/chunks/TestShutdownAckChunk.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/chunks/TestShutdownChunk.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/chunks/TestShutdownCompleteChunk.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/chunks/TestUnknownChunk.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/errorCauses/TestCookieReceivedWhileShuttingDownErrorCause.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/errorCauses/TestInvalidMandatoryParameterErrorCause.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/errorCauses/TestInvalidStreamIdentifierErrorCause.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/errorCauses/TestMissingMandatoryParameterErrorCause.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/errorCauses/TestNoUserDataErrorCause.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/errorCauses/TestOutOfResourceErrorCause.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/errorCauses/TestProtocolViolationErrorCause.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/errorCauses/TestRestartOfAnAssociationWithNewAddressesErrorCause.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/errorCauses/TestStaleCookieErrorCause.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/errorCauses/TestUnknownErrorCause.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/errorCauses/TestUnrecognizedChunkTypeErrorCause.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/errorCauses/TestUnrecognizedParametersErrorCause.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/errorCauses/TestUnresolvableAddressErrorCause.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/errorCauses/TestUserInitiatedAbortErrorCause.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/parameters/TestAddIncomingStreamsRequestParameter.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/parameters/TestAddOutgoingStreamsRequestParameter.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/parameters/TestCookiePreservativeParameter.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/parameters/TestForwardTsnSupportedParameter.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/parameters/TestHeartbeatInfoParameter.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/parameters/TestIPv4AddressParameter.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/parameters/TestIPv6AddressParameter.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/parameters/TestIncomingSsnResetRequestParameter.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/parameters/TestOutgoingSsnResetRequestParameter.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/parameters/TestReconfigurationResponseParameter.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/parameters/TestSsnTsnResetRequestParameter.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/parameters/TestStateCookieParameter.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/parameters/TestSupportedAddressTypesParameter.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/parameters/TestSupportedExtensionsParameter.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/parameters/TestUnknownParameter.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/parameters/TestUnrecognizedParameterParameter.cpp +1 -1
- package/worker/test/src/RTC/SCTP/packet/parameters/TestZeroChecksumAcceptableParameter.cpp +1 -1
- package/worker/test/src/RTC/SCTP/rx/TestDataTracker.cpp +1117 -0
- package/worker/test/src/RTC/SCTP/rx/TestInterleavedReassemblyStreams.cpp +565 -0
- package/worker/test/src/RTC/SCTP/rx/TestReassemblyQueue.cpp +557 -0
- package/worker/test/src/RTC/SCTP/rx/TestTraditionalReassemblyStreams.cpp +555 -0
- package/worker/test/src/RTC/SCTP/sctpCommon.cpp +2 -2
- package/worker/test/src/RTC/SCTP/tx/TestOutstandingData.cpp +1248 -0
- package/worker/test/src/RTC/SCTP/tx/TestRetransmissionErrorCounter.cpp +4 -0
- package/worker/test/src/RTC/SCTP/tx/TestRetransmissionQueue.cpp +2218 -0
- package/worker/test/src/RTC/SCTP/tx/TestRetransmissionTimeout.cpp +33 -33
- package/worker/test/src/RTC/SCTP/tx/TestRoundRobinSendQueue.cpp +1130 -0
- package/worker/test/src/RTC/SCTP/tx/TestStreamScheduler.cpp +721 -0
- package/worker/test/src/RTC/TestKeyFrameRequestManager.cpp +20 -30
- package/worker/test/src/RTC/TestNackGenerator.cpp +11 -8
- package/worker/test/src/RTC/TestRateCalculator.cpp +6 -7
- package/worker/test/src/RTC/TestSimpleConsumer.cpp +11 -11
- package/worker/test/src/RTC/TestTransportCongestionControlServer.cpp +15 -3
- package/worker/test/src/Utils/TestByte.cpp +98 -0
- package/worker/test/src/{RTC/SCTP/common → Utils}/TestUnwrappedSequenceNumber.cpp +2 -2
- package/worker/test/src/testHelpers.cpp +1 -1
- package/worker/test/src/tests.cpp +0 -12
- package/node/lib/fbs/consumer/degrade-request.d.ts +0 -30
- package/node/lib/fbs/consumer/degrade-request.d.ts.map +0 -1
- package/node/lib/fbs/consumer/degrade-request.js +0 -91
- package/node/lib/fbs/consumer/enable-delay-and-loss-request.d.ts +0 -24
- package/node/lib/fbs/consumer/enable-delay-and-loss-request.d.ts.map +0 -1
- package/node/lib/fbs/consumer/enable-delay-and-loss-request.js +0 -69
- package/node/lib/fbs/producer/degrade-request.d.ts +0 -30
- package/node/lib/fbs/producer/degrade-request.d.ts.map +0 -1
- package/node/lib/fbs/producer/degrade-request.js +0 -91
- package/node/lib/fbs/worker/close-notification.d.ts +0 -18
- package/node/lib/fbs/worker/close-notification.d.ts.map +0 -1
- package/node/lib/fbs/worker/close-notification.js +0 -45
- package/node/lib/fbs/worker/close-request.d.ts +0 -18
- package/node/lib/fbs/worker/close-request.d.ts.map +0 -1
- package/node/lib/fbs/worker/close-request.js +0 -45
- package/node/lib/fbs/worker/close-worker-notification.d.ts +0 -18
- package/node/lib/fbs/worker/close-worker-notification.d.ts.map +0 -1
- package/node/lib/fbs/worker/close-worker-notification.js +0 -45
- package/worker/include/ChannelMessageRegistrator.hpp +0 -30
- package/worker/include/DepUsrSCTP.hpp +0 -48
- package/worker/include/RTC/SCTP/TODO_SCTP.md +0 -43
- package/worker/include/RTC/SCTP/common/UnwrappedSequenceNumber.hpp +0 -274
- package/worker/include/RTC/SctpAssociation.hpp +0 -147
- package/worker/include/RTC/Shared.hpp +0 -23
- package/worker/src/ChannelMessageRegistrator.cpp +0 -119
- package/worker/src/DepUsrSCTP.cpp +0 -277
- package/worker/src/RTC/SctpAssociation.cpp +0 -1175
- package/worker/src/RTC/Shared.cpp +0 -23
- package/worker/subprojects/usrsctp.wrap +0 -8
|
@@ -2,20 +2,20 @@
|
|
|
2
2
|
#define MS_RTC_RTP_RTP_STREAM_HPP
|
|
3
3
|
|
|
4
4
|
#include "common.hpp"
|
|
5
|
-
#include "DepLibUV.hpp"
|
|
6
5
|
#include "FBS/rtpStream.h"
|
|
7
|
-
#include "RTC/RTCP/FeedbackPsFir.hpp"
|
|
8
|
-
#include "RTC/RTCP/FeedbackPsPli.hpp"
|
|
9
|
-
#include "RTC/RTCP/FeedbackRtpNack.hpp"
|
|
10
|
-
#include "RTC/RTCP/Packet.hpp"
|
|
11
|
-
#include "RTC/RTCP/ReceiverReport.hpp"
|
|
12
|
-
#include "RTC/RTCP/Sdes.hpp"
|
|
13
|
-
#include "RTC/RTCP/SenderReport.hpp"
|
|
14
|
-
#include "RTC/RTCP/XrDelaySinceLastRr.hpp"
|
|
15
|
-
#include "RTC/RTCP/XrReceiverReferenceTime.hpp"
|
|
6
|
+
#include "RTC/RTCP/FeedbackPsFir.hpp"
|
|
7
|
+
#include "RTC/RTCP/FeedbackPsPli.hpp"
|
|
8
|
+
#include "RTC/RTCP/FeedbackRtpNack.hpp"
|
|
9
|
+
#include "RTC/RTCP/Packet.hpp"
|
|
10
|
+
#include "RTC/RTCP/ReceiverReport.hpp"
|
|
11
|
+
#include "RTC/RTCP/Sdes.hpp"
|
|
12
|
+
#include "RTC/RTCP/SenderReport.hpp"
|
|
13
|
+
#include "RTC/RTCP/XrDelaySinceLastRr.hpp"
|
|
14
|
+
#include "RTC/RTCP/XrReceiverReferenceTime.hpp"
|
|
16
15
|
#include "RTC/RTP/Packet.hpp"
|
|
17
16
|
#include "RTC/RTP/RtxStream.hpp"
|
|
18
17
|
#include "RTC/RtpDictionaries.hpp"
|
|
18
|
+
#include "SharedInterface.hpp"
|
|
19
19
|
#include <string>
|
|
20
20
|
#include <vector>
|
|
21
21
|
|
|
@@ -61,7 +61,11 @@ namespace RTC
|
|
|
61
61
|
};
|
|
62
62
|
|
|
63
63
|
public:
|
|
64
|
-
RtpStream(
|
|
64
|
+
RtpStream(
|
|
65
|
+
RTP::RtpStream::Listener* listener,
|
|
66
|
+
SharedInterface* shared,
|
|
67
|
+
RTP::RtpStream::Params& params,
|
|
68
|
+
uint8_t initialScore);
|
|
65
69
|
virtual ~RtpStream();
|
|
66
70
|
|
|
67
71
|
flatbuffers::Offset<FBS::RtpStream::Dump> FillBuffer(flatbuffers::FlatBufferBuilder& builder) const;
|
|
@@ -162,7 +166,7 @@ namespace RTC
|
|
|
162
166
|
}
|
|
163
167
|
uint64_t GetActiveMs() const
|
|
164
168
|
{
|
|
165
|
-
return
|
|
169
|
+
return this->shared->GetTimeMs() - this->activeSinceMs;
|
|
166
170
|
}
|
|
167
171
|
|
|
168
172
|
protected:
|
|
@@ -185,6 +189,7 @@ namespace RTC
|
|
|
185
189
|
protected:
|
|
186
190
|
// Given as argument.
|
|
187
191
|
RTP::RtpStream::Listener* listener{ nullptr };
|
|
192
|
+
SharedInterface* shared{ nullptr };
|
|
188
193
|
Params params;
|
|
189
194
|
// Others.
|
|
190
195
|
// https://tools.ietf.org/html/rfc3550#appendix-A.1 stuff.
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
#ifndef MS_RTC_RTP_RTP_STREAM_RECV_HPP
|
|
2
2
|
#define MS_RTC_RTP_RTP_STREAM_RECV_HPP
|
|
3
3
|
|
|
4
|
+
#include "handles/TimerHandleInterface.hpp"
|
|
4
5
|
#include "RTC/NackGenerator.hpp"
|
|
5
6
|
#include "RTC/RTCP/XrDelaySinceLastRr.hpp"
|
|
6
7
|
#include "RTC/RTP/RtpStream.hpp"
|
|
7
8
|
#include "RTC/RateCalculator.hpp"
|
|
8
|
-
#include "handles/TimerHandle.hpp"
|
|
9
9
|
#include <vector>
|
|
10
10
|
|
|
11
11
|
namespace RTC
|
|
@@ -14,7 +14,7 @@ namespace RTC
|
|
|
14
14
|
{
|
|
15
15
|
class RtpStreamRecv : public RTP::RtpStream,
|
|
16
16
|
public RTC::NackGenerator::Listener,
|
|
17
|
-
public
|
|
17
|
+
public TimerHandleInterface::Listener
|
|
18
18
|
{
|
|
19
19
|
public:
|
|
20
20
|
class Listener : public RTP::RtpStream::Listener
|
|
@@ -30,7 +30,8 @@ namespace RTC
|
|
|
30
30
|
class TransmissionCounter
|
|
31
31
|
{
|
|
32
32
|
public:
|
|
33
|
-
TransmissionCounter(
|
|
33
|
+
TransmissionCounter(
|
|
34
|
+
SharedInterface* shared, uint8_t spatialLayers, uint8_t temporalLayers, size_t windowSize);
|
|
34
35
|
void Update(const RTP::Packet* packet);
|
|
35
36
|
uint32_t GetBitrate(uint64_t nowMs);
|
|
36
37
|
uint32_t GetBitrate(uint64_t nowMs, uint8_t spatialLayer, uint8_t temporalLayer);
|
|
@@ -46,6 +47,7 @@ namespace RTC
|
|
|
46
47
|
public:
|
|
47
48
|
RtpStreamRecv(
|
|
48
49
|
RTP::RtpStreamRecv::Listener* listener,
|
|
50
|
+
SharedInterface* shared,
|
|
49
51
|
RTP::RtpStream::Params& params,
|
|
50
52
|
unsigned int sendNackDelayMs,
|
|
51
53
|
bool useRtpInactivityCheck);
|
|
@@ -92,9 +94,9 @@ namespace RTC
|
|
|
92
94
|
public:
|
|
93
95
|
void UserOnSequenceNumberReset() override;
|
|
94
96
|
|
|
95
|
-
/* Pure virtual methods inherited from
|
|
97
|
+
/* Pure virtual methods inherited from TimerHandleInterface. */
|
|
96
98
|
protected:
|
|
97
|
-
void OnTimer(
|
|
99
|
+
void OnTimer(TimerHandleInterface* timer) override;
|
|
98
100
|
|
|
99
101
|
/* Pure virtual methods inherited from RTC::NackGenerator. */
|
|
100
102
|
protected:
|
|
@@ -124,7 +126,7 @@ namespace RTC
|
|
|
124
126
|
uint8_t firSeqNumber{ 0u };
|
|
125
127
|
int32_t reportedPacketsLost{ 0 };
|
|
126
128
|
std::unique_ptr<RTC::NackGenerator> nackGenerator;
|
|
127
|
-
|
|
129
|
+
TimerHandleInterface* inactivityCheckPeriodicTimer{ nullptr };
|
|
128
130
|
bool inactive{ false };
|
|
129
131
|
// Valid media + valid RTX.
|
|
130
132
|
TransmissionCounter transmissionCounter;
|
|
@@ -36,7 +36,10 @@ namespace RTC
|
|
|
36
36
|
|
|
37
37
|
public:
|
|
38
38
|
RtpStreamSend(
|
|
39
|
-
RTP::RtpStreamSend::Listener* listener,
|
|
39
|
+
RTP::RtpStreamSend::Listener* listener,
|
|
40
|
+
SharedInterface* shared,
|
|
41
|
+
RTP::RtpStream::Params& params,
|
|
42
|
+
std::string& mid);
|
|
40
43
|
~RtpStreamSend() override;
|
|
41
44
|
|
|
42
45
|
flatbuffers::Offset<FBS::RtpStream::Stats> FillBufferStats(
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
#include "RTC/RTCP/SenderReport.hpp"
|
|
8
8
|
#include "RTC/RTP/Packet.hpp"
|
|
9
9
|
#include "RTC/RtpDictionaries.hpp"
|
|
10
|
+
#include "SharedInterface.hpp"
|
|
10
11
|
#include <string>
|
|
11
12
|
|
|
12
13
|
namespace RTC
|
|
@@ -30,7 +31,7 @@ namespace RTC
|
|
|
30
31
|
};
|
|
31
32
|
|
|
32
33
|
public:
|
|
33
|
-
explicit RtxStream(RTP::RtxStream::Params& params);
|
|
34
|
+
explicit RtxStream(SharedInterface* shared, RTP::RtxStream::Params& params);
|
|
34
35
|
virtual ~RtxStream();
|
|
35
36
|
|
|
36
37
|
flatbuffers::Offset<FBS::RtxStream::RtxDump> FillBuffer(
|
|
@@ -87,6 +88,7 @@ namespace RTC
|
|
|
87
88
|
|
|
88
89
|
protected:
|
|
89
90
|
// Given as argument.
|
|
91
|
+
SharedInterface* shared{ nullptr };
|
|
90
92
|
Params params;
|
|
91
93
|
// Others.
|
|
92
94
|
// https://tools.ietf.org/html/rfc3550#appendix-A.1 stuff.
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
|
|
4
4
|
#include "common.hpp"
|
|
5
5
|
#include "RTC/RTP/Packet.hpp"
|
|
6
|
+
#include "SharedInterface.hpp"
|
|
6
7
|
#include <vector>
|
|
7
8
|
|
|
8
9
|
namespace RTC
|
|
@@ -75,8 +76,9 @@ namespace RTC
|
|
|
75
76
|
class RtpDataCounter
|
|
76
77
|
{
|
|
77
78
|
public:
|
|
78
|
-
explicit RtpDataCounter(
|
|
79
|
-
|
|
79
|
+
explicit RtpDataCounter(
|
|
80
|
+
SharedInterface* shared, bool ignorePaddingOnlyPackets, size_t windowSizeMs = 2500)
|
|
81
|
+
: shared(shared), ignorePaddingOnlyPackets(ignorePaddingOnlyPackets), rate(windowSizeMs)
|
|
80
82
|
{
|
|
81
83
|
}
|
|
82
84
|
|
|
@@ -99,6 +101,7 @@ namespace RTC
|
|
|
99
101
|
}
|
|
100
102
|
|
|
101
103
|
private:
|
|
104
|
+
SharedInterface* shared{ nullptr };
|
|
102
105
|
// Whether the size of padding only RTP packets should not be taken into
|
|
103
106
|
// account
|
|
104
107
|
bool ignorePaddingOnlyPackets{ false };
|
|
@@ -10,9 +10,10 @@
|
|
|
10
10
|
#include "RTC/RTP/Packet.hpp"
|
|
11
11
|
#include "RTC/RTP/RtpStreamRecv.hpp"
|
|
12
12
|
#include "RTC/RtpObserver.hpp"
|
|
13
|
-
#include "RTC/
|
|
13
|
+
#include "RTC/SCTP/public/Message.hpp"
|
|
14
14
|
#include "RTC/Transport.hpp"
|
|
15
15
|
#include "RTC/WebRtcServer.hpp"
|
|
16
|
+
#include "SharedInterface.hpp"
|
|
16
17
|
#include <absl/container/flat_hash_map.h>
|
|
17
18
|
#include <absl/container/flat_hash_set.h>
|
|
18
19
|
#include <string>
|
|
@@ -36,7 +37,7 @@ namespace RTC
|
|
|
36
37
|
};
|
|
37
38
|
|
|
38
39
|
public:
|
|
39
|
-
explicit Router(
|
|
40
|
+
explicit Router(SharedInterface* shared, const std::string& id, Listener* listener);
|
|
40
41
|
~Router() override;
|
|
41
42
|
|
|
42
43
|
public:
|
|
@@ -48,8 +49,8 @@ namespace RTC
|
|
|
48
49
|
void HandleRequest(Channel::ChannelRequest* request) override;
|
|
49
50
|
|
|
50
51
|
private:
|
|
51
|
-
RTC::Transport*
|
|
52
|
-
RTC::RtpObserver*
|
|
52
|
+
RTC::Transport* AssertAndGetTransportById(const std::string& transportId) const;
|
|
53
|
+
RTC::RtpObserver* AssertAndGetRtpObserverById(const std::string& rtpObserverId) const;
|
|
53
54
|
void CheckNoTransport(const std::string& transportId) const;
|
|
54
55
|
void CheckNoRtpObserver(const std::string& rtpObserverId) const;
|
|
55
56
|
|
|
@@ -96,9 +97,7 @@ namespace RTC
|
|
|
96
97
|
void OnTransportDataProducerMessageReceived(
|
|
97
98
|
RTC::Transport* transport,
|
|
98
99
|
RTC::DataProducer* dataProducer,
|
|
99
|
-
|
|
100
|
-
size_t len,
|
|
101
|
-
uint32_t ppid,
|
|
100
|
+
RTC::SCTP::Message message,
|
|
102
101
|
std::vector<uint16_t>& subchannels,
|
|
103
102
|
std::optional<uint16_t> requiredSubchannel) override;
|
|
104
103
|
void OnTransportNewDataConsumer(
|
|
@@ -120,7 +119,7 @@ namespace RTC
|
|
|
120
119
|
|
|
121
120
|
private:
|
|
122
121
|
// Passed by argument.
|
|
123
|
-
|
|
122
|
+
SharedInterface* shared{ nullptr };
|
|
124
123
|
Listener* listener{ nullptr };
|
|
125
124
|
// Allocated by this.
|
|
126
125
|
absl::flat_hash_map<std::string, RTC::Transport*> mapTransports;
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
|
|
4
4
|
#include "RTC/Producer.hpp"
|
|
5
5
|
#include "RTC/RTP/Packet.hpp"
|
|
6
|
-
#include "
|
|
6
|
+
#include "SharedInterface.hpp"
|
|
7
7
|
#include <string>
|
|
8
8
|
|
|
9
9
|
namespace RTC
|
|
@@ -25,7 +25,7 @@ namespace RTC
|
|
|
25
25
|
};
|
|
26
26
|
|
|
27
27
|
public:
|
|
28
|
-
RtpObserver(
|
|
28
|
+
RtpObserver(SharedInterface* shared, const std::string& id, RTC::RtpObserver::Listener* listener);
|
|
29
29
|
~RtpObserver() override;
|
|
30
30
|
|
|
31
31
|
public:
|
|
@@ -55,7 +55,7 @@ namespace RTC
|
|
|
55
55
|
|
|
56
56
|
protected:
|
|
57
57
|
// Passed by argument.
|
|
58
|
-
|
|
58
|
+
SharedInterface* shared{ nullptr };
|
|
59
59
|
|
|
60
60
|
private:
|
|
61
61
|
// Passed by argument.
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
#define MS_RTC_SCTP_ASSOCIATION_HPP
|
|
3
3
|
|
|
4
4
|
#include "common.hpp"
|
|
5
|
+
#include "handles/BackoffTimerHandleInterface.hpp"
|
|
5
6
|
#include "RTC/SCTP/association/AssociationListenerDeferrer.hpp"
|
|
6
7
|
#include "RTC/SCTP/association/NegotiatedCapabilities.hpp"
|
|
7
8
|
#include "RTC/SCTP/association/PacketSender.hpp"
|
|
@@ -31,12 +32,13 @@
|
|
|
31
32
|
#include "RTC/SCTP/packet/chunks/ShutdownCompleteChunk.hpp"
|
|
32
33
|
#include "RTC/SCTP/packet/chunks/UnknownChunk.hpp"
|
|
33
34
|
#include "RTC/SCTP/public/AssociationInterface.hpp"
|
|
34
|
-
#include "RTC/SCTP/public/
|
|
35
|
+
#include "RTC/SCTP/public/AssociationListenerInterface.hpp"
|
|
35
36
|
#include "RTC/SCTP/public/AssociationMetrics.hpp"
|
|
36
37
|
#include "RTC/SCTP/public/Message.hpp"
|
|
37
38
|
#include "RTC/SCTP/public/SctpOptions.hpp"
|
|
38
39
|
#include "RTC/SCTP/public/SctpTypes.hpp"
|
|
39
|
-
#include "
|
|
40
|
+
#include "RTC/SCTP/tx/RoundRobinSendQueue.hpp"
|
|
41
|
+
#include "SharedInterface.hpp"
|
|
40
42
|
#include <FBS/sctpParameters.h>
|
|
41
43
|
#include <span>
|
|
42
44
|
#include <string_view>
|
|
@@ -51,7 +53,7 @@ namespace RTC
|
|
|
51
53
|
*/
|
|
52
54
|
class Association : public AssociationInterface,
|
|
53
55
|
public PacketSender::Listener,
|
|
54
|
-
public
|
|
56
|
+
public BackoffTimerHandleInterface::Listener
|
|
55
57
|
{
|
|
56
58
|
public:
|
|
57
59
|
/**
|
|
@@ -166,7 +168,11 @@ namespace RTC
|
|
|
166
168
|
};
|
|
167
169
|
|
|
168
170
|
public:
|
|
169
|
-
explicit Association(
|
|
171
|
+
explicit Association(
|
|
172
|
+
const SctpOptions& sctpOptions,
|
|
173
|
+
AssociationListenerInterface* listener,
|
|
174
|
+
SharedInterface* shared,
|
|
175
|
+
bool isDataChannel);
|
|
170
176
|
|
|
171
177
|
~Association() override;
|
|
172
178
|
|
|
@@ -220,7 +226,7 @@ namespace RTC
|
|
|
220
226
|
* Retrieves the latest metrics. If the Association is not fully connected,
|
|
221
227
|
* `std::nullopt` will be returned.
|
|
222
228
|
*/
|
|
223
|
-
std::optional<AssociationMetrics>
|
|
229
|
+
std::optional<AssociationMetrics> MakeMetrics() const override;
|
|
224
230
|
|
|
225
231
|
/**
|
|
226
232
|
* Returns the currently set priority for an outgoing stream. The initial
|
|
@@ -240,6 +246,12 @@ namespace RTC
|
|
|
240
246
|
*/
|
|
241
247
|
void SetMaxSendMessageSize(size_t maxMessageSize) override;
|
|
242
248
|
|
|
249
|
+
/**
|
|
250
|
+
* Returns the number of bytes of data currently queued to be sent in
|
|
251
|
+
* total.
|
|
252
|
+
*/
|
|
253
|
+
size_t GetTotalBufferedAmount() const override;
|
|
254
|
+
|
|
243
255
|
/**
|
|
244
256
|
* Returns the number of bytes of data currently queued to be sent on a
|
|
245
257
|
* given stream.
|
|
@@ -257,7 +269,7 @@ namespace RTC
|
|
|
257
269
|
* considered "low" for a given stream, which will trigger
|
|
258
270
|
* `OnAssociationStreamBufferedAmountLow()` event. The default value is 0.
|
|
259
271
|
*/
|
|
260
|
-
void
|
|
272
|
+
void SetStreamBufferedAmountLowThreshold(uint16_t streamId, size_t bytes) override;
|
|
261
273
|
|
|
262
274
|
/**
|
|
263
275
|
* Resetting streams is an asynchronous operation and the results will be
|
|
@@ -320,6 +332,23 @@ namespace RTC
|
|
|
320
332
|
*/
|
|
321
333
|
void ReceiveSctpData(const uint8_t* data, size_t len) override;
|
|
322
334
|
|
|
335
|
+
/**
|
|
336
|
+
* Get negotiated max outbound streams. Returns 0 if the association is
|
|
337
|
+
* not yet connected.
|
|
338
|
+
*/
|
|
339
|
+
uint16_t GetNegotiatedMaxOutboundStreams() const override;
|
|
340
|
+
|
|
341
|
+
/**
|
|
342
|
+
* Get negotiated max inbound streams. Returns 0 if the association is
|
|
343
|
+
* not yet connected.
|
|
344
|
+
*/
|
|
345
|
+
uint16_t GetNegotiatedMaxInboundStreams() const override;
|
|
346
|
+
|
|
347
|
+
bool IsDataChannel() const override
|
|
348
|
+
{
|
|
349
|
+
return this->isDataChannel;
|
|
350
|
+
}
|
|
351
|
+
|
|
323
352
|
private:
|
|
324
353
|
void InternalClose(Types::ErrorKind errorKind, const std::string_view& message);
|
|
325
354
|
|
|
@@ -369,7 +398,7 @@ namespace RTC
|
|
|
369
398
|
*/
|
|
370
399
|
void MayDeliverMessages();
|
|
371
400
|
|
|
372
|
-
Types::SendMessageStatus
|
|
401
|
+
Types::SendMessageStatus InternalSendMessageCheck(
|
|
373
402
|
const Message& message, const SendMessageOptions& sendMessageOptions);
|
|
374
403
|
|
|
375
404
|
bool ValidateReceivedPacket(const Packet* receivedPacket);
|
|
@@ -454,30 +483,31 @@ namespace RTC
|
|
|
454
483
|
|
|
455
484
|
void AssertHasTcb() const;
|
|
456
485
|
|
|
457
|
-
void
|
|
486
|
+
void AssertIsConsistent() const;
|
|
458
487
|
|
|
459
488
|
/* Pure virtual methods inherited from PacketSender::Listener. */
|
|
460
489
|
public:
|
|
461
490
|
void OnPacketSenderPacketSent(PacketSender* packetSender, const Packet* packet, bool sent) override;
|
|
462
491
|
|
|
463
|
-
/* Pure virtual methods inherited from
|
|
492
|
+
/* Pure virtual methods inherited from BackoffTimerHandleInterface::Listener. */
|
|
464
493
|
public:
|
|
465
|
-
void
|
|
494
|
+
void OnBackoffTimer(
|
|
495
|
+
BackoffTimerHandleInterface* backoffTimer, uint64_t& baseTimeoutMs, bool& stop) override;
|
|
466
496
|
|
|
467
497
|
private:
|
|
468
498
|
// SCTP options given in the constructor.
|
|
469
499
|
SctpOptions sctpOptions;
|
|
470
|
-
// Listener. It's
|
|
471
|
-
// `
|
|
472
|
-
AssociationListenerDeferrer
|
|
500
|
+
// Listener. It's a `AssociationListenerDeferrer` which implements
|
|
501
|
+
// `AssociationListenerInterface`.
|
|
502
|
+
AssociationListenerDeferrer associationListenerDeferrer;
|
|
503
|
+
SharedInterface* shared;
|
|
473
504
|
// SCTP association internal state.
|
|
474
505
|
State state{ State::NEW };
|
|
475
506
|
// Packet sender.
|
|
476
507
|
PacketSender packetSender;
|
|
477
508
|
// The actual send queue implementation. As data can be sent before the
|
|
478
509
|
// connection is established, this component is not in the TCB.
|
|
479
|
-
|
|
480
|
-
// RRSendQueue sendQueue;
|
|
510
|
+
RoundRobinSendQueue sendQueue;
|
|
481
511
|
// To keep settings between sending of INIT Chunk and establishment of
|
|
482
512
|
// the connection.
|
|
483
513
|
PreTransmissionControlBlock preTcb;
|
|
@@ -485,13 +515,17 @@ namespace RTC
|
|
|
485
515
|
// is created.
|
|
486
516
|
std::unique_ptr<TransmissionControlBlock> tcb;
|
|
487
517
|
// Private metrics.
|
|
488
|
-
AssociationPrivateMetrics privateMetrics
|
|
518
|
+
AssociationPrivateMetrics privateMetrics;
|
|
489
519
|
// T1-init timer.
|
|
490
|
-
const std::unique_ptr<
|
|
520
|
+
const std::unique_ptr<BackoffTimerHandleInterface> t1InitTimer;
|
|
491
521
|
// T1-cookie timer.
|
|
492
|
-
const std::unique_ptr<
|
|
522
|
+
const std::unique_ptr<BackoffTimerHandleInterface> t1CookieTimer;
|
|
493
523
|
// T2-shutdown timer.
|
|
494
|
-
const std::unique_ptr<
|
|
524
|
+
const std::unique_ptr<BackoffTimerHandleInterface> t2ShutdownTimer;
|
|
525
|
+
// Max SCTP Packet length.
|
|
526
|
+
const size_t maxPacketLength;
|
|
527
|
+
// Whether this is DataChannel based SCTP.
|
|
528
|
+
bool isDataChannel;
|
|
495
529
|
};
|
|
496
530
|
} // namespace SCTP
|
|
497
531
|
} // namespace RTC
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
#define MS_RTC_SCTP_ASSOCIATION_LISTENER_DEFERRED_HPP
|
|
3
3
|
|
|
4
4
|
#include "common.hpp"
|
|
5
|
-
#include "RTC/SCTP/public/
|
|
5
|
+
#include "RTC/SCTP/public/AssociationListenerInterface.hpp"
|
|
6
6
|
#include "RTC/SCTP/public/Message.hpp"
|
|
7
7
|
#include "RTC/SCTP/public/SctpTypes.hpp"
|
|
8
8
|
#include <span>
|
|
@@ -15,7 +15,7 @@ namespace RTC
|
|
|
15
15
|
{
|
|
16
16
|
namespace SCTP
|
|
17
17
|
{
|
|
18
|
-
class AssociationListenerDeferrer : public
|
|
18
|
+
class AssociationListenerDeferrer : public AssociationListenerInterface
|
|
19
19
|
{
|
|
20
20
|
public:
|
|
21
21
|
class ScopedDeferrer
|
|
@@ -46,10 +46,10 @@ namespace RTC
|
|
|
46
46
|
// variant can hold all cases of stored data.
|
|
47
47
|
using CallbackData = std::variant<std::monostate, Message, Error, StreamReset, uint16_t>;
|
|
48
48
|
|
|
49
|
-
using Callback = std::function<void(CallbackData,
|
|
49
|
+
using Callback = std::function<void(CallbackData, AssociationListenerInterface*)>;
|
|
50
50
|
|
|
51
51
|
public:
|
|
52
|
-
explicit AssociationListenerDeferrer(
|
|
52
|
+
explicit AssociationListenerDeferrer(AssociationListenerInterface* innerListener);
|
|
53
53
|
|
|
54
54
|
private:
|
|
55
55
|
void SetReady();
|
|
@@ -57,7 +57,7 @@ namespace RTC
|
|
|
57
57
|
void TriggerDeferredCallbacks();
|
|
58
58
|
|
|
59
59
|
public:
|
|
60
|
-
/* Pure virtual methods inherited from RTC::STCP::
|
|
60
|
+
/* Pure virtual methods inherited from RTC::STCP::AssociationListenerInterface. */
|
|
61
61
|
bool OnAssociationSendData(const uint8_t* data, size_t len) override;
|
|
62
62
|
|
|
63
63
|
void OnAssociationConnecting() override;
|
|
@@ -87,8 +87,16 @@ namespace RTC
|
|
|
87
87
|
|
|
88
88
|
bool OnAssociationIsTransportReadyForSctp() override;
|
|
89
89
|
|
|
90
|
+
void OnAssociationLifecycleMessageFullySent(uint64_t lifecycleId) override;
|
|
91
|
+
|
|
92
|
+
void OnAssociationLifecycleMessageExpired(uint64_t lifecycleId, bool maybeDelivered) override;
|
|
93
|
+
|
|
94
|
+
void OnAssociationLifecycleMessageDelivered(uint64_t lifecycleId) override;
|
|
95
|
+
|
|
96
|
+
void OnAssociationLifecycleMessageEnd(uint64_t lifecycleId) override;
|
|
97
|
+
|
|
90
98
|
private:
|
|
91
|
-
|
|
99
|
+
AssociationListenerInterface* innerListener;
|
|
92
100
|
bool ready{ false };
|
|
93
101
|
std::vector<std::pair<Callback, CallbackData>> deferredCallbacks;
|
|
94
102
|
};
|
|
@@ -2,12 +2,13 @@
|
|
|
2
2
|
#define MS_RTC_SCTP_HEARTBEAT_HANDLER_HPP
|
|
3
3
|
|
|
4
4
|
#include "common.hpp"
|
|
5
|
-
#include "
|
|
5
|
+
#include "handles/BackoffTimerHandleInterface.hpp"
|
|
6
|
+
#include "RTC/SCTP/association/TransmissionControlBlockContextInterface.hpp"
|
|
6
7
|
#include "RTC/SCTP/packet/chunks/HeartbeatAckChunk.hpp"
|
|
7
8
|
#include "RTC/SCTP/packet/chunks/HeartbeatRequestChunk.hpp"
|
|
8
|
-
#include "RTC/SCTP/public/
|
|
9
|
+
#include "RTC/SCTP/public/AssociationListenerInterface.hpp"
|
|
9
10
|
#include "RTC/SCTP/public/SctpOptions.hpp"
|
|
10
|
-
#include "
|
|
11
|
+
#include "SharedInterface.hpp"
|
|
11
12
|
|
|
12
13
|
namespace RTC
|
|
13
14
|
{
|
|
@@ -21,13 +22,14 @@ namespace RTC
|
|
|
21
22
|
* still healthy and to measure the RTT. If a number of heartbeats time out,
|
|
22
23
|
* the connection will eventually be closed.
|
|
23
24
|
*/
|
|
24
|
-
class HeartbeatHandler : public
|
|
25
|
+
class HeartbeatHandler : public BackoffTimerHandleInterface::Listener
|
|
25
26
|
{
|
|
26
27
|
public:
|
|
27
28
|
HeartbeatHandler(
|
|
28
|
-
|
|
29
|
+
AssociationListenerInterface& associationListener,
|
|
29
30
|
const SctpOptions& sctpOptions,
|
|
30
|
-
|
|
31
|
+
SharedInterface* shared,
|
|
32
|
+
TransmissionControlBlockContextInterface* tcbContext);
|
|
31
33
|
|
|
32
34
|
~HeartbeatHandler() override;
|
|
33
35
|
|
|
@@ -55,21 +57,23 @@ namespace RTC
|
|
|
55
57
|
|
|
56
58
|
void OnTimeoutTimer(uint64_t& baseTimeoutMs, bool& stop);
|
|
57
59
|
|
|
58
|
-
/* Pure virtual methods inherited from
|
|
60
|
+
/* Pure virtual methods inherited from BackoffTimerHandleInterface::Listener. */
|
|
59
61
|
public:
|
|
60
|
-
void
|
|
62
|
+
void OnBackoffTimer(
|
|
63
|
+
BackoffTimerHandleInterface* backoffTimer, uint64_t& baseTimeoutMs, bool& stop) override;
|
|
61
64
|
|
|
62
65
|
private:
|
|
63
|
-
|
|
66
|
+
AssociationListenerInterface& associationListener;
|
|
64
67
|
const SctpOptions sctpOptions;
|
|
65
|
-
|
|
68
|
+
SharedInterface* shared;
|
|
69
|
+
TransmissionControlBlockContextInterface* tcbContext;
|
|
66
70
|
// The time for a connection to be idle before a heartbeat is sent.
|
|
67
|
-
const uint64_t intervalDurationMs
|
|
71
|
+
const uint64_t intervalDurationMs;
|
|
68
72
|
// Adding RTT to the duration will add some jitter, which is good in
|
|
69
73
|
// production, but less good in unit tests, which is why it can be disabled.
|
|
70
|
-
const bool intervalDurationShouldIncludeRtt
|
|
71
|
-
const std::unique_ptr<
|
|
72
|
-
const std::unique_ptr<
|
|
74
|
+
const bool intervalDurationShouldIncludeRtt;
|
|
75
|
+
const std::unique_ptr<BackoffTimerHandleInterface> intervalTimer;
|
|
76
|
+
const std::unique_ptr<BackoffTimerHandleInterface> timeoutTimer;
|
|
73
77
|
};
|
|
74
78
|
} // namespace SCTP
|
|
75
79
|
} // namespace RTC
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
|
|
4
4
|
#include "common.hpp"
|
|
5
5
|
#include "RTC/SCTP/packet/Packet.hpp"
|
|
6
|
-
#include "RTC/SCTP/public/
|
|
6
|
+
#include "RTC/SCTP/public/AssociationListenerInterface.hpp"
|
|
7
7
|
|
|
8
8
|
namespace RTC
|
|
9
9
|
{
|
|
@@ -23,7 +23,7 @@ namespace RTC
|
|
|
23
23
|
};
|
|
24
24
|
|
|
25
25
|
public:
|
|
26
|
-
PacketSender(Listener* listener,
|
|
26
|
+
PacketSender(Listener* listener, AssociationListenerInterface& associationListener);
|
|
27
27
|
|
|
28
28
|
~PacketSender();
|
|
29
29
|
|
|
@@ -43,7 +43,7 @@ namespace RTC
|
|
|
43
43
|
|
|
44
44
|
private:
|
|
45
45
|
Listener* listener;
|
|
46
|
-
|
|
46
|
+
AssociationListenerInterface& associationListener;
|
|
47
47
|
};
|
|
48
48
|
} // namespace SCTP
|
|
49
49
|
} // namespace RTC
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
#define MS_RTC_SCTP_STATE_COOKIE_HPP
|
|
3
3
|
|
|
4
4
|
#include "common.hpp"
|
|
5
|
-
#include "Utils.hpp"
|
|
6
5
|
#include "RTC/SCTP/association/NegotiatedCapabilities.hpp"
|
|
7
6
|
#include "RTC/SCTP/public/SctpTypes.hpp"
|
|
8
7
|
#include "RTC/Serializable.hpp"
|
|
8
|
+
#include "Utils.hpp"
|
|
9
9
|
#include <string_view>
|
|
10
10
|
|
|
11
11
|
namespace RTC
|