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,13 +2,14 @@
|
|
|
2
2
|
#define MS_RTC_TRANSPORT_CONGESTION_CONTROL_CLIENT_HPP
|
|
3
3
|
|
|
4
4
|
#include "common.hpp"
|
|
5
|
+
#include "handles/TimerHandleInterface.hpp"
|
|
5
6
|
#include "RTC/BweType.hpp"
|
|
6
7
|
#include "RTC/RTCP/FeedbackRtpTransport.hpp"
|
|
7
8
|
#include "RTC/RTCP/ReceiverReport.hpp"
|
|
8
9
|
#include "RTC/RTP/Packet.hpp"
|
|
9
10
|
#include "RTC/RTP/ProbationGenerator.hpp"
|
|
10
11
|
#include "RTC/TrendCalculator.hpp"
|
|
11
|
-
#include "
|
|
12
|
+
#include "SharedInterface.hpp"
|
|
12
13
|
#include <libwebrtc/api/transport/goog_cc_factory.h>
|
|
13
14
|
#include <libwebrtc/api/transport/network_types.h>
|
|
14
15
|
#include <libwebrtc/call/rtp_transport_controller_send.h>
|
|
@@ -21,7 +22,7 @@ namespace RTC
|
|
|
21
22
|
|
|
22
23
|
class TransportCongestionControlClient : public webrtc::PacketRouter,
|
|
23
24
|
public webrtc::TargetTransferRateObserver,
|
|
24
|
-
public
|
|
25
|
+
public TimerHandleInterface::Listener
|
|
25
26
|
{
|
|
26
27
|
public:
|
|
27
28
|
struct Bitrates
|
|
@@ -54,6 +55,7 @@ namespace RTC
|
|
|
54
55
|
public:
|
|
55
56
|
TransportCongestionControlClient(
|
|
56
57
|
RTC::TransportCongestionControlClient::Listener* listener,
|
|
58
|
+
SharedInterface* shared,
|
|
57
59
|
RTC::BweType bweType,
|
|
58
60
|
uint32_t initialAvailableBitrate,
|
|
59
61
|
uint32_t maxOutgoingBitrate,
|
|
@@ -104,18 +106,19 @@ namespace RTC
|
|
|
104
106
|
void SendPacket(RTC::RTP::Packet* packet, const webrtc::PacedPacketInfo& pacingInfo) override;
|
|
105
107
|
RTC::RTP::Packet* GeneratePadding(size_t size) override;
|
|
106
108
|
|
|
107
|
-
/* Pure virtual methods inherited from RTC::
|
|
109
|
+
/* Pure virtual methods inherited from RTC::TimerHandleInterface. */
|
|
108
110
|
public:
|
|
109
|
-
void OnTimer(
|
|
111
|
+
void OnTimer(TimerHandleInterface* timer) override;
|
|
110
112
|
|
|
111
113
|
private:
|
|
112
114
|
// Passed by argument.
|
|
113
115
|
Listener* listener{ nullptr };
|
|
116
|
+
SharedInterface* shared{ nullptr };
|
|
114
117
|
// Allocated by this.
|
|
115
118
|
webrtc::NetworkControllerFactoryInterface* controllerFactory{ nullptr };
|
|
116
119
|
webrtc::RtpTransportControllerSend* rtpTransportControllerSend{ nullptr };
|
|
117
120
|
RTC::RTP::ProbationGenerator* probationGenerator{ nullptr };
|
|
118
|
-
|
|
121
|
+
TimerHandleInterface* processTimer{ nullptr };
|
|
119
122
|
// Others.
|
|
120
123
|
RTC::BweType bweType;
|
|
121
124
|
uint32_t initialAvailableBitrate{ 0u };
|
|
@@ -2,19 +2,20 @@
|
|
|
2
2
|
#define MS_RTC_TRANSPORT_CONGESTION_CONTROL_SERVER_HPP
|
|
3
3
|
|
|
4
4
|
#include "common.hpp"
|
|
5
|
+
#include "handles/TimerHandleInterface.hpp"
|
|
5
6
|
#include "RTC/BweType.hpp"
|
|
6
7
|
#include "RTC/RTCP/FeedbackRtpTransport.hpp"
|
|
7
8
|
#include "RTC/RTCP/Packet.hpp"
|
|
8
9
|
#include "RTC/RTP/Packet.hpp"
|
|
9
10
|
#include "RTC/SeqManager.hpp"
|
|
10
|
-
#include "
|
|
11
|
+
#include "SharedInterface.hpp"
|
|
11
12
|
#include <libwebrtc/modules/remote_bitrate_estimator/remote_bitrate_estimator_abs_send_time.h>
|
|
12
13
|
#include <deque>
|
|
13
14
|
|
|
14
15
|
namespace RTC
|
|
15
16
|
{
|
|
16
17
|
class TransportCongestionControlServer : public webrtc::RemoteBitrateEstimator::Listener,
|
|
17
|
-
public
|
|
18
|
+
public TimerHandleInterface::Listener
|
|
18
19
|
{
|
|
19
20
|
public:
|
|
20
21
|
class Listener
|
|
@@ -30,6 +31,7 @@ namespace RTC
|
|
|
30
31
|
public:
|
|
31
32
|
TransportCongestionControlServer(
|
|
32
33
|
RTC::TransportCongestionControlServer::Listener* listener,
|
|
34
|
+
SharedInterface* shared,
|
|
33
35
|
RTC::BweType bweType,
|
|
34
36
|
size_t maxRtcpPacketLen);
|
|
35
37
|
~TransportCongestionControlServer() override;
|
|
@@ -72,15 +74,16 @@ namespace RTC
|
|
|
72
74
|
const std::vector<uint32_t>& ssrcs,
|
|
73
75
|
uint32_t availableBitrate) override;
|
|
74
76
|
|
|
75
|
-
/* Pure virtual methods inherited from
|
|
77
|
+
/* Pure virtual methods inherited from TimerHandleInterface::Listener. */
|
|
76
78
|
public:
|
|
77
|
-
void OnTimer(
|
|
79
|
+
void OnTimer(TimerHandleInterface* timer) override;
|
|
78
80
|
|
|
79
81
|
private:
|
|
80
82
|
// Passed by argument.
|
|
81
83
|
Listener* listener{ nullptr };
|
|
84
|
+
SharedInterface* shared{ nullptr };
|
|
82
85
|
// Allocated by this.
|
|
83
|
-
|
|
86
|
+
TimerHandleInterface* transportCcFeedbackSendPeriodicTimer{ nullptr };
|
|
84
87
|
std::unique_ptr<RTC::RTCP::FeedbackRtpTransportPacket> transportCcFeedbackPacket;
|
|
85
88
|
webrtc::RemoteBitrateEstimatorAbsSendTime* rembServer{ nullptr };
|
|
86
89
|
// Others.
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
#define MS_RTC_TRANSPORT_TUPLE_HPP
|
|
3
3
|
|
|
4
4
|
#include "common.hpp"
|
|
5
|
-
#include "Utils.hpp"
|
|
6
5
|
#include "FBS/transport.h"
|
|
7
6
|
#include "RTC/TcpConnection.hpp"
|
|
8
7
|
#include "RTC/UdpSocket.hpp"
|
|
8
|
+
#include "Utils.hpp"
|
|
9
9
|
#include <flatbuffers/flatbuffers.h>
|
|
10
10
|
#include <string>
|
|
11
11
|
|
|
@@ -4,12 +4,12 @@
|
|
|
4
4
|
#include "Channel/ChannelRequest.hpp"
|
|
5
5
|
#include "RTC/ICE/IceCandidate.hpp"
|
|
6
6
|
#include "RTC/ICE/StunPacket.hpp"
|
|
7
|
-
#include "RTC/Shared.hpp"
|
|
8
7
|
#include "RTC/TcpConnection.hpp"
|
|
9
8
|
#include "RTC/TcpServer.hpp"
|
|
10
9
|
#include "RTC/TransportTuple.hpp"
|
|
11
10
|
#include "RTC/UdpSocket.hpp"
|
|
12
11
|
#include "RTC/WebRtcTransport.hpp"
|
|
12
|
+
#include "SharedInterface.hpp"
|
|
13
13
|
#include <flatbuffers/flatbuffers.h>
|
|
14
14
|
#include <absl/container/flat_hash_map.h>
|
|
15
15
|
#include <absl/container/flat_hash_set.h>
|
|
@@ -52,7 +52,7 @@ namespace RTC
|
|
|
52
52
|
|
|
53
53
|
public:
|
|
54
54
|
WebRtcServer(
|
|
55
|
-
|
|
55
|
+
SharedInterface* shared,
|
|
56
56
|
const std::string& id,
|
|
57
57
|
const flatbuffers::Vector<flatbuffers::Offset<FBS::Transport::ListenInfo>>* listenInfos);
|
|
58
58
|
~WebRtcServer() override;
|
|
@@ -112,7 +112,7 @@ namespace RTC
|
|
|
112
112
|
// Passed by argument.
|
|
113
113
|
std::string id;
|
|
114
114
|
// Passed by argument.
|
|
115
|
-
|
|
115
|
+
SharedInterface* shared{ nullptr };
|
|
116
116
|
// Vector of UdpSockets and TcpServers in the user given order.
|
|
117
117
|
std::vector<UdpSocketOrTcpServer> udpSocketOrTcpServers;
|
|
118
118
|
// Set of WebRtcTransports.
|
|
@@ -5,13 +5,13 @@
|
|
|
5
5
|
#include "RTC/ICE/IceCandidate.hpp"
|
|
6
6
|
#include "RTC/ICE/IceServer.hpp"
|
|
7
7
|
#include "RTC/ICE/StunPacket.hpp"
|
|
8
|
-
#include "RTC/Shared.hpp"
|
|
9
8
|
#include "RTC/SrtpSession.hpp"
|
|
10
9
|
#include "RTC/TcpConnection.hpp"
|
|
11
10
|
#include "RTC/TcpServer.hpp"
|
|
12
11
|
#include "RTC/Transport.hpp"
|
|
13
12
|
#include "RTC/TransportTuple.hpp"
|
|
14
13
|
#include "RTC/UdpSocket.hpp"
|
|
14
|
+
#include "SharedInterface.hpp"
|
|
15
15
|
#include <vector>
|
|
16
16
|
|
|
17
17
|
namespace RTC
|
|
@@ -44,12 +44,12 @@ namespace RTC
|
|
|
44
44
|
|
|
45
45
|
public:
|
|
46
46
|
WebRtcTransport(
|
|
47
|
-
|
|
47
|
+
SharedInterface* shared,
|
|
48
48
|
const std::string& id,
|
|
49
49
|
RTC::Transport::Listener* listener,
|
|
50
50
|
const FBS::WebRtcTransport::WebRtcTransportOptions* options);
|
|
51
51
|
WebRtcTransport(
|
|
52
|
-
|
|
52
|
+
SharedInterface* shared,
|
|
53
53
|
const std::string& id,
|
|
54
54
|
RTC::Transport::Listener* listener,
|
|
55
55
|
WebRtcTransportListener* webRtcTransportListener,
|
|
@@ -87,11 +87,9 @@ namespace RTC
|
|
|
87
87
|
void SendRtcpCompoundPacket(RTC::RTCP::CompoundPacket* packet) override;
|
|
88
88
|
void SendMessage(
|
|
89
89
|
RTC::DataConsumer* dataConsumer,
|
|
90
|
-
|
|
91
|
-
size_t len,
|
|
92
|
-
uint32_t ppid,
|
|
90
|
+
RTC::SCTP::Message message,
|
|
93
91
|
onQueuedCallback* cb = nullptr) override;
|
|
94
|
-
bool
|
|
92
|
+
bool SendData(const uint8_t* data, size_t len) override;
|
|
95
93
|
void RecvStreamClosed(uint32_t ssrc) override;
|
|
96
94
|
void SendStreamClosed(uint32_t ssrc) override;
|
|
97
95
|
void OnPacketReceived(RTC::TransportTuple* tuple, const uint8_t* data, size_t len, size_t bufferLen);
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
#define MS_SETTINGS_HPP
|
|
3
3
|
|
|
4
4
|
#include "common.hpp"
|
|
5
|
-
#include "LogLevel.hpp"
|
|
6
5
|
#include "Channel/ChannelRequest.hpp"
|
|
6
|
+
#include "LogLevel.hpp"
|
|
7
7
|
#include <absl/container/flat_hash_map.h>
|
|
8
8
|
#include <string>
|
|
9
9
|
#include <vector>
|
|
@@ -40,7 +40,6 @@ public:
|
|
|
40
40
|
std::string dtlsPrivateKeyFile;
|
|
41
41
|
std::string libwebrtcFieldTrials{ "WebRTC-Bwe-AlrLimitedBackoff/Enabled/" };
|
|
42
42
|
bool disableLiburing{ false };
|
|
43
|
-
bool useBuiltInSctpStack{ false };
|
|
44
43
|
};
|
|
45
44
|
|
|
46
45
|
public:
|
|
@@ -54,7 +53,7 @@ private:
|
|
|
54
53
|
static void SetDtlsCertificateAndPrivateKeyFiles();
|
|
55
54
|
|
|
56
55
|
public:
|
|
57
|
-
thread_local
|
|
56
|
+
static thread_local struct Configuration configuration;
|
|
58
57
|
|
|
59
58
|
private:
|
|
60
59
|
static const absl::flat_hash_map<std::string, LogLevel> String2LogLevel;
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
#ifndef MS_SHARED_HPP
|
|
2
|
+
#define MS_SHARED_HPP
|
|
3
|
+
|
|
4
|
+
#include "Channel/ChannelMessageRegistrator.hpp"
|
|
5
|
+
#include "Channel/ChannelNotifier.hpp"
|
|
6
|
+
#include "DepLibUV.hpp"
|
|
7
|
+
#include "SharedInterface.hpp"
|
|
8
|
+
|
|
9
|
+
class Shared : public SharedInterface
|
|
10
|
+
{
|
|
11
|
+
public:
|
|
12
|
+
explicit Shared(
|
|
13
|
+
Channel::ChannelMessageRegistrator* channelMessageRegistrator,
|
|
14
|
+
Channel::ChannelNotifier* channelNotifier);
|
|
15
|
+
|
|
16
|
+
~Shared() override;
|
|
17
|
+
|
|
18
|
+
public:
|
|
19
|
+
Channel::ChannelMessageRegistratorInterface* GetChannelMessageRegistrator() override
|
|
20
|
+
{
|
|
21
|
+
return this->channelMessageRegistrator.get();
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
Channel::ChannelNotifier* GetChannelNotifier() override
|
|
25
|
+
{
|
|
26
|
+
return this->channelNotifier.get();
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
TimerHandleInterface* CreateTimer(TimerHandleInterface::Listener* listener) override;
|
|
30
|
+
|
|
31
|
+
BackoffTimerHandleInterface* CreateBackoffTimer(
|
|
32
|
+
const BackoffTimerHandleInterface::BackoffTimerHandleOptions& options) override;
|
|
33
|
+
|
|
34
|
+
uint64_t GetTimeMs() override
|
|
35
|
+
{
|
|
36
|
+
return DepLibUV::GetTimeMs();
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
uint64_t GetTimeUs() override
|
|
40
|
+
{
|
|
41
|
+
return DepLibUV::GetTimeUs();
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
uint64_t GetTimeNs() override
|
|
45
|
+
{
|
|
46
|
+
return DepLibUV::GetTimeNs();
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
int64_t GetTimeMsInt64() override
|
|
50
|
+
{
|
|
51
|
+
return DepLibUV::GetTimeMsInt64();
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
int64_t GetTimeUsInt64() override
|
|
55
|
+
{
|
|
56
|
+
return DepLibUV::GetTimeUsInt64();
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
private:
|
|
60
|
+
std::unique_ptr<Channel::ChannelMessageRegistrator> channelMessageRegistrator;
|
|
61
|
+
std::unique_ptr<Channel::ChannelNotifier> channelNotifier;
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
#endif
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
#ifndef MS_SHARED_INTERFACE_HPP
|
|
2
|
+
#define MS_SHARED_INTERFACE_HPP
|
|
3
|
+
|
|
4
|
+
#include "Channel/ChannelMessageRegistratorInterface.hpp"
|
|
5
|
+
// TODO: We should have a ChannelNotifierInterface class instead.
|
|
6
|
+
#include "Channel/ChannelNotifier.hpp"
|
|
7
|
+
#include "handles/BackoffTimerHandleInterface.hpp"
|
|
8
|
+
#include "handles/TimerHandleInterface.hpp"
|
|
9
|
+
|
|
10
|
+
class SharedInterface
|
|
11
|
+
{
|
|
12
|
+
public:
|
|
13
|
+
virtual ~SharedInterface() = default;
|
|
14
|
+
|
|
15
|
+
public:
|
|
16
|
+
/**
|
|
17
|
+
* @todo We should have a ChannelMessageRegistratorInterface class instead.
|
|
18
|
+
*/
|
|
19
|
+
virtual Channel::ChannelMessageRegistratorInterface* GetChannelMessageRegistrator() = 0;
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* @todo We should have a ChannelNotifierInterface class instead.
|
|
23
|
+
*/
|
|
24
|
+
virtual Channel::ChannelNotifier* GetChannelNotifier() = 0;
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Creates a TimerHandle timer.
|
|
28
|
+
*
|
|
29
|
+
* @remarks
|
|
30
|
+
* - The caller is responsible for freeing it.
|
|
31
|
+
*/
|
|
32
|
+
virtual TimerHandleInterface* CreateTimer(TimerHandleInterface::Listener* listener) = 0;
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Creates a BackoffTimerHandle timer.
|
|
36
|
+
*
|
|
37
|
+
* @remarks
|
|
38
|
+
* - The caller is responsible for freeing it.
|
|
39
|
+
*/
|
|
40
|
+
virtual BackoffTimerHandleInterface* CreateBackoffTimer(
|
|
41
|
+
const BackoffTimerHandleInterface::BackoffTimerHandleOptions& options) = 0;
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Get current time in milliseconds.
|
|
45
|
+
*/
|
|
46
|
+
virtual uint64_t GetTimeMs() = 0;
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Get current time in microseconds.
|
|
50
|
+
*/
|
|
51
|
+
virtual uint64_t GetTimeUs() = 0;
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Get current time in nanoseconds.
|
|
55
|
+
*/
|
|
56
|
+
virtual uint64_t GetTimeNs() = 0;
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* @remarks
|
|
60
|
+
* - Used within libwebrtc dependency which uses int64_t values for time
|
|
61
|
+
* representation.
|
|
62
|
+
*
|
|
63
|
+
* @todo Remove once not needed.
|
|
64
|
+
*/
|
|
65
|
+
virtual int64_t GetTimeMsInt64() = 0;
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* @remarks
|
|
69
|
+
* - Used within libwebrtc dependency which uses int64_t values for time
|
|
70
|
+
* representation.
|
|
71
|
+
*
|
|
72
|
+
* @todo Remove once not needed.
|
|
73
|
+
*/
|
|
74
|
+
virtual int64_t GetTimeUsInt64() = 0;
|
|
75
|
+
};
|
|
76
|
+
|
|
77
|
+
#endif
|
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
#ifndef MS_UTILS_UNWRAPPED_SEQUENCE_NUMBER_HPP
|
|
2
|
+
#define MS_UTILS_UNWRAPPED_SEQUENCE_NUMBER_HPP
|
|
3
|
+
|
|
4
|
+
#include "common.hpp"
|
|
5
|
+
#include <limits>
|
|
6
|
+
#include <ostream>
|
|
7
|
+
#include <typeinfo>
|
|
8
|
+
|
|
9
|
+
namespace Utils
|
|
10
|
+
{
|
|
11
|
+
/**
|
|
12
|
+
* UnwrappedSequenceNumber handles wrapping sequence numbers and unwraps
|
|
13
|
+
* them to an int64_t value space, to allow wrapped sequence numbers to be
|
|
14
|
+
* easily compared for ordering.
|
|
15
|
+
*
|
|
16
|
+
* Sequence numbers are expected to be monotonically increasing, but they
|
|
17
|
+
* do not need to be unwrapped in order, as long as the difference to the
|
|
18
|
+
* previous one is not larger than half the range of the wrapped sequence
|
|
19
|
+
* number.
|
|
20
|
+
*/
|
|
21
|
+
template<typename T>
|
|
22
|
+
class UnwrappedSequenceNumber
|
|
23
|
+
{
|
|
24
|
+
public:
|
|
25
|
+
static_assert(!std::numeric_limits<T>::is_signed, "the wrapped type must be unsigned");
|
|
26
|
+
static_assert(
|
|
27
|
+
std::numeric_limits<T>::max() < std::numeric_limits<int64_t>::max(),
|
|
28
|
+
"the wrapped type must be less than the int64_t value space");
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* The unwrapper is a sort of factory and converts wrapped sequence
|
|
32
|
+
* numbers to unwrapped ones.
|
|
33
|
+
*/
|
|
34
|
+
class Unwrapper
|
|
35
|
+
{
|
|
36
|
+
public:
|
|
37
|
+
Unwrapper() = default;
|
|
38
|
+
|
|
39
|
+
Unwrapper(const Unwrapper&) = default;
|
|
40
|
+
|
|
41
|
+
Unwrapper& operator=(const Unwrapper&) = default;
|
|
42
|
+
|
|
43
|
+
public:
|
|
44
|
+
/**
|
|
45
|
+
* Given a wrapped `value`, and with knowledge of its current last seen
|
|
46
|
+
* largest number, will return a value that can be compared using normal
|
|
47
|
+
* operators, such as less-than, greater-than etc.
|
|
48
|
+
*
|
|
49
|
+
* This will also update the Unwrapper's state, to track the last seen
|
|
50
|
+
* largest value.
|
|
51
|
+
*/
|
|
52
|
+
UnwrappedSequenceNumber<T> Unwrap(T value)
|
|
53
|
+
{
|
|
54
|
+
if (!this->lastValue)
|
|
55
|
+
{
|
|
56
|
+
this->lastUnwrapped = value;
|
|
57
|
+
}
|
|
58
|
+
else
|
|
59
|
+
{
|
|
60
|
+
const uint64_t prev = this->lastValue->GetValue();
|
|
61
|
+
const uint64_t curr = value;
|
|
62
|
+
auto delta = static_cast<int64_t>(curr - prev);
|
|
63
|
+
const auto half = static_cast<int64_t>(1) << (sizeof(T) * 8 - 1);
|
|
64
|
+
|
|
65
|
+
if (delta < -half)
|
|
66
|
+
{
|
|
67
|
+
delta += static_cast<int64_t>(1) << (sizeof(T) * 8);
|
|
68
|
+
}
|
|
69
|
+
else if (delta > half)
|
|
70
|
+
{
|
|
71
|
+
delta -= static_cast<int64_t>(1) << (sizeof(T) * 8);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
this->lastUnwrapped += delta;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
this->lastValue = UnwrappedSequenceNumber<T>(value);
|
|
78
|
+
|
|
79
|
+
return UnwrappedSequenceNumber<T>(this->lastUnwrapped);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* Similar to `Unwrap()`, but will not update the Unwrappers's internal
|
|
84
|
+
* state.
|
|
85
|
+
*/
|
|
86
|
+
UnwrappedSequenceNumber<T> PeekUnwrap(T value) const
|
|
87
|
+
{
|
|
88
|
+
if (!this->lastValue)
|
|
89
|
+
{
|
|
90
|
+
return UnwrappedSequenceNumber<T>(value);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
const uint64_t prev = this->lastValue->GetValue();
|
|
94
|
+
const uint64_t curr = value;
|
|
95
|
+
auto delta = static_cast<int64_t>(curr - prev);
|
|
96
|
+
const auto half = static_cast<int64_t>(1) << (sizeof(T) * 8 - 1);
|
|
97
|
+
|
|
98
|
+
if (delta < -half)
|
|
99
|
+
{
|
|
100
|
+
delta += static_cast<int64_t>(1) << (sizeof(T) * 8);
|
|
101
|
+
}
|
|
102
|
+
else if (delta > half)
|
|
103
|
+
{
|
|
104
|
+
delta -= static_cast<int64_t>(1) << (sizeof(T) * 8);
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
return UnwrappedSequenceNumber<T>(this->lastUnwrapped + delta);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
* Resets the Unwrapper to its pristine state. Used when a sequence number
|
|
112
|
+
* is to be reset to zero.
|
|
113
|
+
*/
|
|
114
|
+
void Reset()
|
|
115
|
+
{
|
|
116
|
+
this->lastUnwrapped = 0;
|
|
117
|
+
this->lastValue.reset();
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
private:
|
|
121
|
+
int64_t lastUnwrapped{ 0 };
|
|
122
|
+
std::optional<UnwrappedSequenceNumber<T>> lastValue;
|
|
123
|
+
};
|
|
124
|
+
|
|
125
|
+
public:
|
|
126
|
+
/**
|
|
127
|
+
* Returns a new sequence number based on `value`, and adding `delta`
|
|
128
|
+
* (which may be negative).
|
|
129
|
+
*/
|
|
130
|
+
static UnwrappedSequenceNumber<T> AddTo(UnwrappedSequenceNumber<T> value, int64_t delta)
|
|
131
|
+
{
|
|
132
|
+
return UnwrappedSequenceNumber<T>(value.value + delta);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* Returns the absolute difference between `lhs` and `rhs`.
|
|
137
|
+
*/
|
|
138
|
+
static T Difference(UnwrappedSequenceNumber<T> lhs, UnwrappedSequenceNumber<T> rhs)
|
|
139
|
+
{
|
|
140
|
+
return (lhs.value > rhs.value) ? (lhs.value - rhs.value) : (rhs.value - lhs.value);
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
private:
|
|
144
|
+
static constexpr auto ValueLimit = static_cast<int64_t>(1) << std::numeric_limits<T>::digits;
|
|
145
|
+
|
|
146
|
+
public:
|
|
147
|
+
explicit UnwrappedSequenceNumber(int64_t value) : value(value)
|
|
148
|
+
{
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
public:
|
|
152
|
+
/**
|
|
153
|
+
* Returns the wrapped value this type represents.
|
|
154
|
+
*/
|
|
155
|
+
T Wrap() const
|
|
156
|
+
{
|
|
157
|
+
return static_cast<T>(this->value % UnwrappedSequenceNumber::ValueLimit);
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
bool operator==(const UnwrappedSequenceNumber<T>& other) const
|
|
161
|
+
{
|
|
162
|
+
return this->value == other.value;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
bool operator!=(const UnwrappedSequenceNumber<T>& other) const
|
|
166
|
+
{
|
|
167
|
+
return this->value != other.value;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
bool operator<(const UnwrappedSequenceNumber<T>& other) const
|
|
171
|
+
{
|
|
172
|
+
return this->value < other.value;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
bool operator>(const UnwrappedSequenceNumber<T>& other) const
|
|
176
|
+
{
|
|
177
|
+
return this->value > other.value;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
bool operator>=(const UnwrappedSequenceNumber<T>& other) const
|
|
181
|
+
{
|
|
182
|
+
return this->value >= other.value;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
bool operator<=(const UnwrappedSequenceNumber<T>& other) const
|
|
186
|
+
{
|
|
187
|
+
return this->value <= other.value;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
// Const accessors for underlying value.
|
|
191
|
+
|
|
192
|
+
constexpr const int64_t* operator->() const
|
|
193
|
+
{
|
|
194
|
+
return std::addressof(this->value);
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
constexpr const int64_t& operator*() const&
|
|
198
|
+
{
|
|
199
|
+
return this->value;
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
constexpr const int64_t&& operator*() const&&
|
|
203
|
+
{
|
|
204
|
+
return std::move(this->value);
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
constexpr const int64_t& GetValue() const&
|
|
208
|
+
{
|
|
209
|
+
return this->value;
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
constexpr const int64_t&& GetValue() const&&
|
|
213
|
+
{
|
|
214
|
+
return std::move(this->value);
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
constexpr explicit operator const int64_t&() const&
|
|
218
|
+
{
|
|
219
|
+
return this->value;
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
/**
|
|
223
|
+
* Increments the value.
|
|
224
|
+
*/
|
|
225
|
+
void Increment()
|
|
226
|
+
{
|
|
227
|
+
++this->value;
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
/**
|
|
231
|
+
* Returns the next value relative to this sequence number.
|
|
232
|
+
*/
|
|
233
|
+
UnwrappedSequenceNumber<T> GetNextValue() const
|
|
234
|
+
{
|
|
235
|
+
return UnwrappedSequenceNumber<T>(this->value + 1);
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
private:
|
|
239
|
+
int64_t value{ 0 };
|
|
240
|
+
};
|
|
241
|
+
|
|
242
|
+
/**
|
|
243
|
+
* For logging purposes in Catch2 tests.
|
|
244
|
+
*/
|
|
245
|
+
template<typename T>
|
|
246
|
+
inline std::ostream& operator<<(std::ostream& os, const UnwrappedSequenceNumber<T>& s)
|
|
247
|
+
{
|
|
248
|
+
return os << "{T:" << typeid(T).name() << ", wrapped:" << s.Wrap();
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
template<>
|
|
252
|
+
inline std::ostream& operator<<(std::ostream& os, const UnwrappedSequenceNumber<uint8_t>& s)
|
|
253
|
+
{
|
|
254
|
+
return os << "{T:uint8_t, wrapped:" << s.Wrap() << "}";
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
template<>
|
|
258
|
+
inline std::ostream& operator<<(std::ostream& os, const UnwrappedSequenceNumber<uint16_t>& s)
|
|
259
|
+
{
|
|
260
|
+
return os << "{T:uint16_t, wrapped:" << s.Wrap() << "}";
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
template<>
|
|
264
|
+
inline std::ostream& operator<<(std::ostream& os, const UnwrappedSequenceNumber<uint32_t>& s)
|
|
265
|
+
{
|
|
266
|
+
return os << "{T:uint32_t, wrapped:" << s.Wrap() << "}";
|
|
267
|
+
}
|
|
268
|
+
} // namespace Utils
|
|
269
|
+
|
|
270
|
+
#endif
|
package/worker/include/Utils.hpp
CHANGED
|
@@ -212,6 +212,12 @@ namespace Utils
|
|
|
212
212
|
return (size + 3) & ~static_cast<T>(0x03);
|
|
213
213
|
}
|
|
214
214
|
|
|
215
|
+
template<typename T>
|
|
216
|
+
typename std::enable_if<std::is_unsigned<T>::value, T>::type static PadDownTo4Bytes(T size)
|
|
217
|
+
{
|
|
218
|
+
return size & ~static_cast<T>(0x03);
|
|
219
|
+
}
|
|
220
|
+
|
|
215
221
|
template<typename T>
|
|
216
222
|
typename std::enable_if<std::is_unsigned<T>::value, T>::type static PadTo8Bytes(T size)
|
|
217
223
|
{
|
|
@@ -259,10 +265,10 @@ namespace Utils
|
|
|
259
265
|
static void WriteRandomBytes(uint8_t* buffer, size_t len);
|
|
260
266
|
|
|
261
267
|
private:
|
|
262
|
-
thread_local
|
|
263
|
-
thread_local
|
|
264
|
-
thread_local
|
|
265
|
-
thread_local
|
|
268
|
+
static thread_local std::mt19937_64 rng;
|
|
269
|
+
static thread_local EVP_MAC* mac;
|
|
270
|
+
static thread_local EVP_MAC_CTX* hmacSha1Ctx;
|
|
271
|
+
static thread_local uint8_t hmacSha1Buffer[];
|
|
266
272
|
static const uint32_t Crc32Table[256];
|
|
267
273
|
static const uint32_t Crc32cTable[256];
|
|
268
274
|
};
|