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.
Files changed (649) hide show
  1. package/node/lib/ActiveSpeakerObserver.js +34 -1
  2. package/node/lib/AudioLevelObserver.js +35 -2
  3. package/node/lib/Channel.d.ts.map +1 -1
  4. package/node/lib/Channel.js +37 -5
  5. package/node/lib/Consumer.js +39 -6
  6. package/node/lib/DataConsumer.d.ts.map +1 -1
  7. package/node/lib/DataConsumer.js +39 -5
  8. package/node/lib/DataConsumerTypes.d.ts +1 -0
  9. package/node/lib/DataConsumerTypes.d.ts.map +1 -1
  10. package/node/lib/DataProducer.js +37 -4
  11. package/node/lib/DirectTransport.js +37 -4
  12. package/node/lib/DirectTransportTypes.d.ts +7 -2
  13. package/node/lib/DirectTransportTypes.d.ts.map +1 -1
  14. package/node/lib/Logger.js +4 -1
  15. package/node/lib/PipeTransport.d.ts +3 -1
  16. package/node/lib/PipeTransport.d.ts.map +1 -1
  17. package/node/lib/PipeTransport.js +56 -5
  18. package/node/lib/PipeTransportTypes.d.ts +28 -8
  19. package/node/lib/PipeTransportTypes.d.ts.map +1 -1
  20. package/node/lib/PlainTransport.d.ts +3 -1
  21. package/node/lib/PlainTransport.d.ts.map +1 -1
  22. package/node/lib/PlainTransport.js +54 -3
  23. package/node/lib/PlainTransportTypes.d.ts +27 -7
  24. package/node/lib/PlainTransportTypes.d.ts.map +1 -1
  25. package/node/lib/Producer.js +40 -7
  26. package/node/lib/Router.d.ts +5 -5
  27. package/node/lib/Router.d.ts.map +1 -1
  28. package/node/lib/Router.js +81 -36
  29. package/node/lib/RouterTypes.d.ts +25 -3
  30. package/node/lib/RouterTypes.d.ts.map +1 -1
  31. package/node/lib/RtpObserver.js +36 -3
  32. package/node/lib/Transport.d.ts +3 -1
  33. package/node/lib/Transport.d.ts.map +1 -1
  34. package/node/lib/Transport.js +74 -22
  35. package/node/lib/TransportTypes.d.ts +2 -1
  36. package/node/lib/TransportTypes.d.ts.map +1 -1
  37. package/node/lib/WebRtcServer.js +36 -3
  38. package/node/lib/WebRtcTransport.d.ts +3 -1
  39. package/node/lib/WebRtcTransport.d.ts.map +1 -1
  40. package/node/lib/WebRtcTransport.js +55 -4
  41. package/node/lib/WebRtcTransportTypes.d.ts +27 -7
  42. package/node/lib/WebRtcTransportTypes.d.ts.map +1 -1
  43. package/node/lib/Worker.d.ts +2 -1
  44. package/node/lib/Worker.d.ts.map +1 -1
  45. package/node/lib/Worker.js +71 -25
  46. package/node/lib/WorkerTypes.d.ts +0 -4
  47. package/node/lib/WorkerTypes.d.ts.map +1 -1
  48. package/node/lib/enhancedEvents.d.ts +2 -2
  49. package/node/lib/enhancedEvents.d.ts.map +1 -1
  50. package/node/lib/enhancedEvents.js +0 -2
  51. package/node/lib/fbs/active-speaker-observer/active-speaker-observer-options.js +34 -1
  52. package/node/lib/fbs/active-speaker-observer/dominant-speaker-notification.js +34 -1
  53. package/node/lib/fbs/audio-level-observer/audio-level-observer-options.js +34 -1
  54. package/node/lib/fbs/audio-level-observer/volume.js +34 -1
  55. package/node/lib/fbs/audio-level-observer/volumes-notification.js +34 -1
  56. package/node/lib/fbs/common/string-string-array.js +34 -1
  57. package/node/lib/fbs/common/string-string.js +34 -1
  58. package/node/lib/fbs/common/string-uint8.js +34 -1
  59. package/node/lib/fbs/common/uint16-string.js +34 -1
  60. package/node/lib/fbs/common/uint32-string.js +34 -1
  61. package/node/lib/fbs/consumer/base-consumer-dump.js +34 -1
  62. package/node/lib/fbs/consumer/consumer-dump.js +34 -1
  63. package/node/lib/fbs/consumer/consumer-layers.js +34 -1
  64. package/node/lib/fbs/consumer/consumer-score.js +34 -1
  65. package/node/lib/fbs/consumer/dump-response.js +34 -1
  66. package/node/lib/fbs/consumer/enable-trace-event-request.js +34 -1
  67. package/node/lib/fbs/consumer/fir-trace-info.js +34 -1
  68. package/node/lib/fbs/consumer/get-stats-response.js +34 -1
  69. package/node/lib/fbs/consumer/key-frame-trace-info.js +34 -1
  70. package/node/lib/fbs/consumer/layers-change-notification.js +34 -1
  71. package/node/lib/fbs/consumer/pli-trace-info.js +34 -1
  72. package/node/lib/fbs/consumer/rtp-notification.js +34 -1
  73. package/node/lib/fbs/consumer/rtp-trace-info.js +34 -1
  74. package/node/lib/fbs/consumer/score-notification.js +34 -1
  75. package/node/lib/fbs/consumer/set-preferred-layers-request.js +34 -1
  76. package/node/lib/fbs/consumer/set-preferred-layers-response.js +34 -1
  77. package/node/lib/fbs/consumer/set-priority-request.js +34 -1
  78. package/node/lib/fbs/consumer/set-priority-response.js +34 -1
  79. package/node/lib/fbs/consumer/trace-notification.js +34 -1
  80. package/node/lib/fbs/data-consumer/add-subchannel-request.js +34 -1
  81. package/node/lib/fbs/data-consumer/add-subchannel-response.js +34 -1
  82. package/node/lib/fbs/data-consumer/buffered-amount-low-notification.js +34 -1
  83. package/node/lib/fbs/data-consumer/dump-response.d.ts +5 -2
  84. package/node/lib/fbs/data-consumer/dump-response.d.ts.map +1 -1
  85. package/node/lib/fbs/data-consumer/dump-response.js +60 -16
  86. package/node/lib/fbs/data-consumer/get-buffered-amount-response.js +34 -1
  87. package/node/lib/fbs/data-consumer/get-stats-response.js +34 -1
  88. package/node/lib/fbs/data-consumer/message-notification.js +34 -1
  89. package/node/lib/fbs/data-consumer/remove-subchannel-request.js +34 -1
  90. package/node/lib/fbs/data-consumer/remove-subchannel-response.js +34 -1
  91. package/node/lib/fbs/data-consumer/send-request.js +34 -1
  92. package/node/lib/fbs/data-consumer/set-buffered-amount-low-threshold-request.js +34 -1
  93. package/node/lib/fbs/data-consumer/set-subchannels-request.js +34 -1
  94. package/node/lib/fbs/data-consumer/set-subchannels-response.js +34 -1
  95. package/node/lib/fbs/data-consumer/type.d.ts +5 -0
  96. package/node/lib/fbs/data-consumer/type.d.ts.map +1 -0
  97. package/node/lib/fbs/data-consumer/type.js +10 -0
  98. package/node/lib/fbs/data-consumer.d.ts +1 -0
  99. package/node/lib/fbs/data-consumer.d.ts.map +1 -1
  100. package/node/lib/fbs/data-consumer.js +3 -1
  101. package/node/lib/fbs/data-producer/dump-response.js +34 -1
  102. package/node/lib/fbs/data-producer/get-stats-response.js +34 -1
  103. package/node/lib/fbs/data-producer/send-notification.js +34 -1
  104. package/node/lib/fbs/direct-transport/direct-transport-options.js +34 -1
  105. package/node/lib/fbs/direct-transport/dump-response.js +34 -1
  106. package/node/lib/fbs/direct-transport/get-stats-response.js +34 -1
  107. package/node/lib/fbs/direct-transport/rtcp-notification.js +34 -1
  108. package/node/lib/fbs/lib-uring/dump.js +34 -1
  109. package/node/lib/fbs/log/log.js +34 -1
  110. package/node/lib/fbs/message/message.js +34 -1
  111. package/node/lib/fbs/notification/body.d.ts +24 -22
  112. package/node/lib/fbs/notification/body.d.ts.map +1 -1
  113. package/node/lib/fbs/notification/body.js +24 -20
  114. package/node/lib/fbs/notification/event.d.ts +27 -26
  115. package/node/lib/fbs/notification/event.d.ts.map +1 -1
  116. package/node/lib/fbs/notification/event.js +27 -26
  117. package/node/lib/fbs/notification/notification.d.ts +3 -2
  118. package/node/lib/fbs/notification/notification.d.ts.map +1 -1
  119. package/node/lib/fbs/notification/notification.js +34 -1
  120. package/node/lib/fbs/pipe-transport/connect-request.js +34 -1
  121. package/node/lib/fbs/pipe-transport/connect-response.js +34 -1
  122. package/node/lib/fbs/pipe-transport/dump-response.js +34 -1
  123. package/node/lib/fbs/pipe-transport/get-stats-response.js +34 -1
  124. package/node/lib/fbs/pipe-transport/pipe-transport-options.js +34 -1
  125. package/node/lib/fbs/plain-transport/connect-request.js +34 -1
  126. package/node/lib/fbs/plain-transport/connect-response.js +34 -1
  127. package/node/lib/fbs/plain-transport/dump-response.js +34 -1
  128. package/node/lib/fbs/plain-transport/get-stats-response.js +34 -1
  129. package/node/lib/fbs/plain-transport/plain-transport-options.js +34 -1
  130. package/node/lib/fbs/plain-transport/rtcp-tuple-notification.js +34 -1
  131. package/node/lib/fbs/plain-transport/tuple-notification.js +34 -1
  132. package/node/lib/fbs/producer/dump-response.js +34 -1
  133. package/node/lib/fbs/producer/enable-trace-event-request.js +34 -1
  134. package/node/lib/fbs/producer/fir-trace-info.js +34 -1
  135. package/node/lib/fbs/producer/get-stats-response.js +34 -1
  136. package/node/lib/fbs/producer/key-frame-trace-info.js +34 -1
  137. package/node/lib/fbs/producer/pli-trace-info.js +34 -1
  138. package/node/lib/fbs/producer/rtp-trace-info.js +34 -1
  139. package/node/lib/fbs/producer/score-notification.js +34 -1
  140. package/node/lib/fbs/producer/score.js +34 -1
  141. package/node/lib/fbs/producer/send-notification.js +34 -1
  142. package/node/lib/fbs/producer/sr-trace-info.js +34 -1
  143. package/node/lib/fbs/producer/trace-notification.js +34 -1
  144. package/node/lib/fbs/producer/video-orientation-change-notification.js +34 -1
  145. package/node/lib/fbs/request/request.js +34 -1
  146. package/node/lib/fbs/response/response.js +34 -1
  147. package/node/lib/fbs/router/close-rtp-observer-request.js +34 -1
  148. package/node/lib/fbs/router/close-transport-request.js +34 -1
  149. package/node/lib/fbs/router/create-active-speaker-observer-request.js +34 -1
  150. package/node/lib/fbs/router/create-audio-level-observer-request.js +34 -1
  151. package/node/lib/fbs/router/create-direct-transport-request.js +34 -1
  152. package/node/lib/fbs/router/create-pipe-transport-request.js +34 -1
  153. package/node/lib/fbs/router/create-plain-transport-request.js +34 -1
  154. package/node/lib/fbs/router/create-web-rtc-transport-request.js +34 -1
  155. package/node/lib/fbs/router/dump-response.js +34 -1
  156. package/node/lib/fbs/rtp-observer/add-producer-request.js +34 -1
  157. package/node/lib/fbs/rtp-observer/remove-producer-request.js +34 -1
  158. package/node/lib/fbs/rtp-packet/dump.js +34 -1
  159. package/node/lib/fbs/rtp-parameters/boolean.js +34 -1
  160. package/node/lib/fbs/rtp-parameters/codec-mapping.js +34 -1
  161. package/node/lib/fbs/rtp-parameters/double.js +34 -1
  162. package/node/lib/fbs/rtp-parameters/encoding-mapping.js +34 -1
  163. package/node/lib/fbs/rtp-parameters/integer32-array.js +34 -1
  164. package/node/lib/fbs/rtp-parameters/integer32.js +34 -1
  165. package/node/lib/fbs/rtp-parameters/parameter.js +34 -1
  166. package/node/lib/fbs/rtp-parameters/rtcp-feedback.js +34 -1
  167. package/node/lib/fbs/rtp-parameters/rtcp-parameters.js +34 -1
  168. package/node/lib/fbs/rtp-parameters/rtp-codec-parameters.js +34 -1
  169. package/node/lib/fbs/rtp-parameters/rtp-encoding-parameters.js +34 -1
  170. package/node/lib/fbs/rtp-parameters/rtp-header-extension-parameters.js +34 -1
  171. package/node/lib/fbs/rtp-parameters/rtp-mapping.js +34 -1
  172. package/node/lib/fbs/rtp-parameters/rtp-parameters.js +34 -1
  173. package/node/lib/fbs/rtp-parameters/rtx.js +34 -1
  174. package/node/lib/fbs/rtp-parameters/string.js +34 -1
  175. package/node/lib/fbs/rtp-stream/base-stats.js +34 -1
  176. package/node/lib/fbs/rtp-stream/bitrate-by-layer.js +34 -1
  177. package/node/lib/fbs/rtp-stream/dump.js +34 -1
  178. package/node/lib/fbs/rtp-stream/params.js +34 -1
  179. package/node/lib/fbs/rtp-stream/recv-stats.js +34 -1
  180. package/node/lib/fbs/rtp-stream/send-stats.js +34 -1
  181. package/node/lib/fbs/rtp-stream/stats.js +34 -1
  182. package/node/lib/fbs/rtx-stream/params.js +34 -1
  183. package/node/lib/fbs/rtx-stream/rtx-dump.js +34 -1
  184. package/node/lib/fbs/sctp-association/sctp-negotiated-capabilities.d.ts +24 -0
  185. package/node/lib/fbs/sctp-association/sctp-negotiated-capabilities.d.ts.map +1 -0
  186. package/node/lib/fbs/sctp-association/sctp-negotiated-capabilities.js +102 -0
  187. package/node/lib/fbs/sctp-association.d.ts +1 -0
  188. package/node/lib/fbs/sctp-association.d.ts.map +1 -1
  189. package/node/lib/fbs/sctp-association.js +4 -1
  190. package/node/lib/fbs/sctp-parameters/num-sctp-streams.js +34 -1
  191. package/node/lib/fbs/sctp-parameters/sctp-parameters.d.ts +14 -14
  192. package/node/lib/fbs/sctp-parameters/sctp-parameters.d.ts.map +1 -1
  193. package/node/lib/fbs/sctp-parameters/sctp-parameters.js +73 -40
  194. package/node/lib/fbs/sctp-parameters/sctp-stream-parameters.js +34 -1
  195. package/node/lib/fbs/sctp-parameters.d.ts +0 -1
  196. package/node/lib/fbs/sctp-parameters.d.ts.map +1 -1
  197. package/node/lib/fbs/sctp-parameters.js +1 -4
  198. package/node/lib/fbs/srtp-parameters/srtp-parameters.js +34 -1
  199. package/node/lib/fbs/transport/bwe-trace-info.js +34 -1
  200. package/node/lib/fbs/transport/close-consumer-request.js +34 -1
  201. package/node/lib/fbs/transport/close-data-consumer-request.js +34 -1
  202. package/node/lib/fbs/transport/close-data-producer-request.js +34 -1
  203. package/node/lib/fbs/transport/close-producer-request.js +34 -1
  204. package/node/lib/fbs/transport/consume-data-request.d.ts +1 -1
  205. package/node/lib/fbs/transport/consume-data-request.js +35 -2
  206. package/node/lib/fbs/transport/consume-request.js +34 -1
  207. package/node/lib/fbs/transport/consume-response.js +34 -1
  208. package/node/lib/fbs/transport/dump.d.ts +7 -4
  209. package/node/lib/fbs/transport/dump.d.ts.map +1 -1
  210. package/node/lib/fbs/transport/dump.js +66 -22
  211. package/node/lib/fbs/transport/enable-trace-event-request.js +34 -1
  212. package/node/lib/fbs/transport/listen-info.js +34 -1
  213. package/node/lib/fbs/transport/options.d.ts +14 -14
  214. package/node/lib/fbs/transport/options.d.ts.map +1 -1
  215. package/node/lib/fbs/transport/options.js +92 -51
  216. package/node/lib/fbs/transport/port-range.js +34 -1
  217. package/node/lib/fbs/transport/produce-data-request.js +34 -1
  218. package/node/lib/fbs/transport/produce-request.js +34 -1
  219. package/node/lib/fbs/transport/produce-response.js +34 -1
  220. package/node/lib/fbs/transport/recv-rtp-header-extensions.js +34 -1
  221. package/node/lib/fbs/transport/restart-ice-response.js +34 -1
  222. package/node/lib/fbs/transport/rtp-listener.js +34 -1
  223. package/node/lib/fbs/transport/sctp-listener.js +34 -1
  224. package/node/lib/fbs/transport/sctp-negotiated-capabilities-notification.d.ts +22 -0
  225. package/node/lib/fbs/transport/sctp-negotiated-capabilities-notification.d.ts.map +1 -0
  226. package/node/lib/fbs/transport/sctp-negotiated-capabilities-notification.js +93 -0
  227. package/node/lib/fbs/transport/sctp-state-change-notification.js +34 -1
  228. package/node/lib/fbs/transport/send-rtcp-notification.js +34 -1
  229. package/node/lib/fbs/transport/set-max-incoming-bitrate-request.js +34 -1
  230. package/node/lib/fbs/transport/set-max-outgoing-bitrate-request.js +34 -1
  231. package/node/lib/fbs/transport/set-min-outgoing-bitrate-request.js +34 -1
  232. package/node/lib/fbs/transport/socket-flags.js +34 -1
  233. package/node/lib/fbs/transport/stats.js +34 -1
  234. package/node/lib/fbs/transport/trace-notification.js +34 -1
  235. package/node/lib/fbs/transport/tuple.js +34 -1
  236. package/node/lib/fbs/transport.d.ts +1 -0
  237. package/node/lib/fbs/transport.d.ts.map +1 -1
  238. package/node/lib/fbs/transport.js +5 -2
  239. package/node/lib/fbs/web-rtc-server/dump-response.js +34 -1
  240. package/node/lib/fbs/web-rtc-server/ice-user-name-fragment.js +34 -1
  241. package/node/lib/fbs/web-rtc-server/ip-port.js +34 -1
  242. package/node/lib/fbs/web-rtc-server/tuple-hash.js +34 -1
  243. package/node/lib/fbs/web-rtc-transport/connect-request.js +34 -1
  244. package/node/lib/fbs/web-rtc-transport/connect-response.js +34 -1
  245. package/node/lib/fbs/web-rtc-transport/dtls-parameters.js +34 -1
  246. package/node/lib/fbs/web-rtc-transport/dtls-state-change-notification.js +34 -1
  247. package/node/lib/fbs/web-rtc-transport/dump-response.js +34 -1
  248. package/node/lib/fbs/web-rtc-transport/fingerprint.js +34 -1
  249. package/node/lib/fbs/web-rtc-transport/get-stats-response.js +34 -1
  250. package/node/lib/fbs/web-rtc-transport/ice-candidate.js +34 -1
  251. package/node/lib/fbs/web-rtc-transport/ice-parameters.js +34 -1
  252. package/node/lib/fbs/web-rtc-transport/ice-selected-tuple-change-notification.js +34 -1
  253. package/node/lib/fbs/web-rtc-transport/ice-state-change-notification.js +34 -1
  254. package/node/lib/fbs/web-rtc-transport/listen-individual.js +34 -1
  255. package/node/lib/fbs/web-rtc-transport/listen-server.js +34 -1
  256. package/node/lib/fbs/web-rtc-transport/web-rtc-transport-options.js +34 -1
  257. package/node/lib/fbs/worker/channel-message-handlers.js +34 -1
  258. package/node/lib/fbs/worker/close-router-request.js +34 -1
  259. package/node/lib/fbs/worker/close-web-rtc-server-request.js +34 -1
  260. package/node/lib/fbs/worker/create-router-request.js +34 -1
  261. package/node/lib/fbs/worker/create-web-rtc-server-request.js +34 -1
  262. package/node/lib/fbs/worker/dump-response.js +34 -1
  263. package/node/lib/fbs/worker/resource-usage-response.js +34 -1
  264. package/node/lib/fbs/worker/update-settings-request.js +34 -1
  265. package/node/lib/index.d.ts +1 -1
  266. package/node/lib/index.d.ts.map +1 -1
  267. package/node/lib/index.js +37 -5
  268. package/node/lib/ortc.js +36 -3
  269. package/node/lib/rtpParametersFbsUtils.js +34 -1
  270. package/node/lib/rtpStreamStatsFbsUtils.js +35 -2
  271. package/node/lib/sctpParametersFbsUtils.d.ts +2 -2
  272. package/node/lib/sctpParametersFbsUtils.d.ts.map +1 -1
  273. package/node/lib/sctpParametersFbsUtils.js +44 -7
  274. package/node/lib/sctpParametersTypes.d.ts +10 -46
  275. package/node/lib/sctpParametersTypes.d.ts.map +1 -1
  276. package/node/lib/srtpParametersFbsUtils.js +34 -1
  277. package/node/lib/test/test-ActiveSpeakerObserver.js +35 -2
  278. package/node/lib/test/test-AudioLevelObserver.js +35 -2
  279. package/node/lib/test/test-Consumer.js +37 -4
  280. package/node/lib/test/test-DataConsumer.js +35 -2
  281. package/node/lib/test/test-DataProducer.js +35 -2
  282. package/node/lib/test/test-DirectTransport.js +36 -8
  283. package/node/lib/test/test-PipeTransport.js +35 -2
  284. package/node/lib/test/test-PlainTransport.js +45 -12
  285. package/node/lib/test/test-Producer.js +37 -4
  286. package/node/lib/test/test-Router.js +35 -2
  287. package/node/lib/test/test-WebRtcServer.js +34 -1
  288. package/node/lib/test/test-WebRtcTransport.js +51 -22
  289. package/node/lib/test/test-Worker.js +37 -4
  290. package/node/lib/test/test-mediasoup.js +36 -3
  291. package/node/lib/test/test-multiopus.js +35 -2
  292. package/node/lib/test/test-ortc.js +34 -1
  293. package/node/lib/test/test-werift-sctp.js +39 -5
  294. package/npm-scripts.mjs +2 -2
  295. package/package.json +13 -11
  296. package/worker/deps/libwebrtc/LICENSE +5 -0
  297. package/worker/deps/libwebrtc/README.md +3 -3
  298. package/worker/deps/libwebrtc/libwebrtc/mediasoup_helpers.h +13 -10
  299. package/worker/fbs/dataConsumer.fbs +7 -2
  300. package/worker/fbs/dataProducer.fbs +1 -0
  301. package/worker/fbs/notification.fbs +2 -0
  302. package/worker/fbs/sctpAssociation.fbs +4 -0
  303. package/worker/fbs/sctpParameters.fbs +5 -12
  304. package/worker/fbs/transport.fbs +12 -8
  305. package/worker/fuzzer/src/RTC/FuzzerDtlsTransport.cpp +13 -3
  306. package/worker/fuzzer/src/RTC/FuzzerRateCalculator.cpp +2 -2
  307. package/worker/fuzzer/src/RTC/FuzzerSeqManager.cpp +1 -1
  308. package/worker/fuzzer/src/RTC/FuzzerTrendCalculator.cpp +5 -5
  309. package/worker/fuzzer/src/RTC/ICE/FuzzerStunPacket.cpp +9 -6
  310. package/worker/fuzzer/src/RTC/RTP/FuzzerRetransmissionBuffer.cpp +1 -1
  311. package/worker/fuzzer/src/RTC/RTP/FuzzerRtpStreamSend.cpp +14 -2
  312. package/worker/fuzzer/src/RTC/SCTP/association/FuzzerStateCookie.cpp +1 -1
  313. package/worker/fuzzer/src/RTC/SCTP/packet/FuzzerPacket.cpp +5 -2
  314. package/worker/fuzzer/src/fuzzer.cpp +3 -10
  315. package/worker/include/Channel/ChannelMessageRegistrator.hpp +39 -0
  316. package/worker/include/Channel/ChannelMessageRegistratorInterface.hpp +32 -0
  317. package/worker/include/Channel/ChannelRequest.hpp +1 -1
  318. package/worker/include/Channel/ChannelSocket.hpp +1 -1
  319. package/worker/include/DepLibUV.hpp +1 -1
  320. package/worker/include/DepLibUring.hpp +3 -3
  321. package/worker/include/Logger.hpp +4 -4
  322. package/worker/include/MediaSoupErrors.hpp +1 -1
  323. package/worker/include/RTC/ActiveSpeakerObserver.hpp +11 -9
  324. package/worker/include/RTC/AudioLevelObserver.hpp +7 -7
  325. package/worker/include/RTC/Consumer.hpp +3 -3
  326. package/worker/include/RTC/DataConsumer.hpp +13 -17
  327. package/worker/include/RTC/DataProducer.hpp +6 -9
  328. package/worker/include/RTC/DirectTransport.hpp +4 -6
  329. package/worker/include/RTC/DtlsTransport.hpp +13 -11
  330. package/worker/include/RTC/ICE/IceServer.hpp +8 -5
  331. package/worker/include/RTC/ICE/StunPacket.hpp +1 -1
  332. package/worker/include/RTC/KeyFrameRequestManager.hpp +15 -12
  333. package/worker/include/RTC/NackGenerator.hpp +8 -6
  334. package/worker/include/RTC/PipeConsumer.hpp +1 -2
  335. package/worker/include/RTC/PipeTransport.hpp +4 -6
  336. package/worker/include/RTC/PlainTransport.hpp +4 -6
  337. package/worker/include/RTC/PortManager.hpp +1 -1
  338. package/worker/include/RTC/Producer.hpp +3 -3
  339. package/worker/include/RTC/RTCP/FeedbackPs.hpp +1 -1
  340. package/worker/include/RTC/RTCP/FeedbackRtp.hpp +1 -1
  341. package/worker/include/RTC/RTCP/FeedbackRtpNack.hpp +1 -1
  342. package/worker/include/RTC/RTCP/ReceiverReport.hpp +1 -1
  343. package/worker/include/RTC/RTP/Packet.hpp +2 -2
  344. package/worker/include/RTC/RTP/RtpStream.hpp +17 -12
  345. package/worker/include/RTC/RTP/RtpStreamRecv.hpp +8 -6
  346. package/worker/include/RTC/RTP/RtpStreamSend.hpp +4 -1
  347. package/worker/include/RTC/RTP/RtxStream.hpp +3 -1
  348. package/worker/include/RTC/RTP/SharedPacket.hpp +1 -1
  349. package/worker/include/RTC/RateCalculator.hpp +5 -2
  350. package/worker/include/RTC/Router.hpp +7 -8
  351. package/worker/include/RTC/RtpObserver.hpp +3 -3
  352. package/worker/include/RTC/SCTP/association/Association.hpp +53 -19
  353. package/worker/include/RTC/SCTP/association/AssociationListenerDeferrer.hpp +14 -6
  354. package/worker/include/RTC/SCTP/association/HeartbeatHandler.hpp +18 -14
  355. package/worker/include/RTC/SCTP/association/PacketSender.hpp +3 -3
  356. package/worker/include/RTC/SCTP/association/StateCookie.hpp +1 -1
  357. package/worker/include/RTC/SCTP/association/StreamResetHandler.hpp +49 -35
  358. package/worker/include/RTC/SCTP/association/TransmissionControlBlock.hpp +114 -31
  359. package/worker/include/RTC/SCTP/association/{TCBContext.hpp → TransmissionControlBlockContextInterface.hpp} +14 -8
  360. package/worker/include/RTC/SCTP/packet/Chunk.hpp +3 -3
  361. package/worker/include/RTC/SCTP/packet/TLV.hpp +1 -1
  362. package/worker/include/RTC/SCTP/packet/UserData.hpp +61 -17
  363. package/worker/include/RTC/SCTP/packet/chunks/AnyDataChunk.hpp +1 -1
  364. package/worker/include/RTC/SCTP/packet/chunks/AnyForwardTsnChunk.hpp +9 -9
  365. package/worker/include/RTC/SCTP/packet/chunks/AnyInitChunk.hpp +1 -1
  366. package/worker/include/RTC/SCTP/packet/chunks/DataChunk.hpp +4 -2
  367. package/worker/include/RTC/SCTP/packet/chunks/ForwardTsnChunk.hpp +3 -3
  368. package/worker/include/RTC/SCTP/packet/chunks/IDataChunk.hpp +4 -2
  369. package/worker/include/RTC/SCTP/packet/chunks/IForwardTsnChunk.hpp +3 -3
  370. package/worker/include/RTC/SCTP/packet/chunks/InitAckChunk.hpp +1 -1
  371. package/worker/include/RTC/SCTP/packet/chunks/InitChunk.hpp +1 -1
  372. package/worker/include/RTC/SCTP/packet/chunks/SackChunk.hpp +10 -3
  373. package/worker/include/RTC/SCTP/packet/chunks/ShutdownChunk.hpp +1 -1
  374. package/worker/include/RTC/SCTP/packet/errorCauses/InvalidStreamIdentifierErrorCause.hpp +1 -1
  375. package/worker/include/RTC/SCTP/packet/errorCauses/MissingMandatoryParameterErrorCause.hpp +1 -1
  376. package/worker/include/RTC/SCTP/packet/errorCauses/NoUserDataErrorCause.hpp +1 -1
  377. package/worker/include/RTC/SCTP/packet/errorCauses/StaleCookieErrorCause.hpp +1 -1
  378. package/worker/include/RTC/SCTP/packet/parameters/AddIncomingStreamsRequestParameter.hpp +1 -1
  379. package/worker/include/RTC/SCTP/packet/parameters/AddOutgoingStreamsRequestParameter.hpp +1 -1
  380. package/worker/include/RTC/SCTP/packet/parameters/CookiePreservativeParameter.hpp +1 -1
  381. package/worker/include/RTC/SCTP/packet/parameters/IncomingSsnResetRequestParameter.hpp +1 -1
  382. package/worker/include/RTC/SCTP/packet/parameters/OutgoingSsnResetRequestParameter.hpp +1 -1
  383. package/worker/include/RTC/SCTP/packet/parameters/ReconfigurationResponseParameter.hpp +1 -1
  384. package/worker/include/RTC/SCTP/packet/parameters/SsnTsnResetRequestParameter.hpp +1 -1
  385. package/worker/include/RTC/SCTP/packet/parameters/SupportedAddressTypesParameter.hpp +1 -1
  386. package/worker/include/RTC/SCTP/packet/parameters/SupportedExtensionsParameter.hpp +1 -1
  387. package/worker/include/RTC/SCTP/packet/parameters/ZeroChecksumAcceptableParameter.hpp +1 -1
  388. package/worker/include/RTC/SCTP/public/AssociationInterface.hpp +22 -2
  389. package/worker/include/RTC/SCTP/public/{AssociationListener.hpp → AssociationListenerInterface.hpp} +5 -5
  390. package/worker/include/RTC/SCTP/public/Message.hpp +26 -10
  391. package/worker/include/RTC/SCTP/public/SctpOptions.hpp +28 -19
  392. package/worker/include/RTC/SCTP/public/SctpTypes.hpp +21 -0
  393. package/worker/include/RTC/SCTP/rx/DataTracker.hpp +277 -0
  394. package/worker/include/RTC/SCTP/rx/InterleavedReassemblyStreams.hpp +116 -0
  395. package/worker/include/RTC/SCTP/rx/ReassemblyQueue.hpp +202 -0
  396. package/worker/include/RTC/SCTP/rx/ReassemblyStreamsInterface.hpp +83 -0
  397. package/worker/include/RTC/SCTP/rx/TraditionalReassemblyStreams.hpp +183 -0
  398. package/worker/include/RTC/SCTP/tx/OutstandingData.hpp +595 -0
  399. package/worker/include/RTC/SCTP/tx/RetransmissionErrorCounter.hpp +3 -3
  400. package/worker/include/RTC/SCTP/tx/RetransmissionQueue.hpp +329 -0
  401. package/worker/include/RTC/SCTP/tx/RetransmissionTimeout.hpp +11 -10
  402. package/worker/include/RTC/SCTP/tx/RoundRobinSendQueue.hpp +356 -0
  403. package/worker/include/RTC/SCTP/tx/SendQueueInterface.hpp +180 -0
  404. package/worker/include/RTC/SCTP/tx/StreamScheduler.hpp +235 -0
  405. package/worker/include/RTC/SenderBandwidthEstimator.hpp +5 -1
  406. package/worker/include/RTC/Serializable.hpp +11 -3
  407. package/worker/include/RTC/SimpleConsumer.hpp +1 -2
  408. package/worker/include/RTC/SimulcastConsumer.hpp +1 -2
  409. package/worker/include/RTC/SvcConsumer.hpp +1 -2
  410. package/worker/include/RTC/TcpServer.hpp +2 -2
  411. package/worker/include/RTC/Transport.hpp +65 -86
  412. package/worker/include/RTC/TransportCongestionControlClient.hpp +8 -5
  413. package/worker/include/RTC/TransportCongestionControlServer.hpp +8 -5
  414. package/worker/include/RTC/TransportTuple.hpp +1 -1
  415. package/worker/include/RTC/UdpSocket.hpp +1 -1
  416. package/worker/include/RTC/WebRtcServer.hpp +3 -3
  417. package/worker/include/RTC/WebRtcTransport.hpp +5 -7
  418. package/worker/include/Settings.hpp +2 -3
  419. package/worker/include/Shared.hpp +64 -0
  420. package/worker/include/SharedInterface.hpp +77 -0
  421. package/worker/include/Utils/UnwrappedSequenceNumber.hpp +270 -0
  422. package/worker/include/Utils.hpp +10 -4
  423. package/worker/include/Worker.hpp +6 -6
  424. package/worker/include/common.hpp +12 -12
  425. package/worker/include/handles/BackoffTimerHandle.hpp +28 -67
  426. package/worker/include/handles/BackoffTimerHandleInterface.hpp +123 -0
  427. package/worker/include/handles/TimerHandle.hpp +29 -20
  428. package/worker/include/handles/TimerHandleInterface.hpp +43 -0
  429. package/worker/meson.build +45 -29
  430. package/worker/meson_options.txt +2 -1
  431. package/worker/mocks/include/Channel/MockChannelMessageRegistrator.hpp +45 -0
  432. package/worker/mocks/include/MockShared.hpp +90 -0
  433. package/worker/mocks/include/RTC/SCTP/association/MockAssociationListener.hpp +308 -0
  434. package/worker/mocks/include/RTC/SCTP/association/MockTransmissionControlBlockContext.hpp +183 -0
  435. package/worker/mocks/include/RTC/SCTP/tx/MockSendQueue.hpp +262 -0
  436. package/worker/mocks/include/handles/MockBackoffTimerHandle.hpp +153 -0
  437. package/worker/mocks/include/handles/MockTimerHandle.hpp +74 -0
  438. package/worker/mocks/include/mockTypes.hpp +15 -0
  439. package/worker/mocks/src/Channel/MockChannelMessageRegistrator.cpp +128 -0
  440. package/worker/mocks/src/MockShared.cpp +46 -0
  441. package/worker/mocks/src/RTC/SCTP/association/MockTransmissionControlBlockContext.cpp +39 -0
  442. package/worker/mocks/src/handles/MockBackoffTimerHandle.cpp +127 -0
  443. package/worker/scripts/clang-scripts.mjs +5 -1
  444. package/worker/scripts/package-lock.json +6 -7
  445. package/worker/src/Channel/ChannelMessageRegistrator.cpp +125 -0
  446. package/worker/src/Channel/ChannelSocket.cpp +3 -4
  447. package/worker/src/DepLibUV.cpp +1 -1
  448. package/worker/src/DepLibUring.cpp +3 -1
  449. package/worker/src/Logger.cpp +1 -1
  450. package/worker/src/MediaSoupErrors.cpp +2 -0
  451. package/worker/src/RTC/ActiveSpeakerObserver.cpp +14 -14
  452. package/worker/src/RTC/AudioLevelObserver.cpp +12 -10
  453. package/worker/src/RTC/Consumer.cpp +28 -26
  454. package/worker/src/RTC/DataConsumer.cpp +61 -71
  455. package/worker/src/RTC/DataProducer.cpp +16 -11
  456. package/worker/src/RTC/DirectTransport.cpp +21 -20
  457. package/worker/src/RTC/DtlsTransport.cpp +4 -4
  458. package/worker/src/RTC/ICE/IceServer.cpp +6 -5
  459. package/worker/src/RTC/ICE/StunPacket.cpp +1 -1
  460. package/worker/src/RTC/KeyFrameRequestManager.cpp +15 -15
  461. package/worker/src/RTC/NackGenerator.cpp +6 -6
  462. package/worker/src/RTC/PipeConsumer.cpp +6 -5
  463. package/worker/src/RTC/PipeTransport.cpp +9 -22
  464. package/worker/src/RTC/PlainTransport.cpp +16 -28
  465. package/worker/src/RTC/Producer.cpp +40 -39
  466. package/worker/src/RTC/RTCP/FeedbackPsAfb.cpp +1 -1
  467. package/worker/src/RTC/RTCP/FeedbackPsRpsi.cpp +1 -2
  468. package/worker/src/RTC/RTCP/FeedbackRtpTransport.cpp +1 -1
  469. package/worker/src/RTC/RTCP/XR.cpp +1 -1
  470. package/worker/src/RTC/RTP/Packet.cpp +3 -1
  471. package/worker/src/RTC/RTP/ProbationGenerator.cpp +4 -4
  472. package/worker/src/RTC/RTP/RetransmissionBuffer.cpp +1 -1
  473. package/worker/src/RTC/RTP/RtpStream.cpp +17 -10
  474. package/worker/src/RTC/RTP/RtpStreamRecv.cpp +16 -14
  475. package/worker/src/RTC/RTP/RtpStreamSend.cpp +12 -9
  476. package/worker/src/RTC/RTP/RtxStream.cpp +7 -7
  477. package/worker/src/RTC/RTP/SharedPacket.cpp +3 -3
  478. package/worker/src/RTC/RateCalculator.cpp +1 -2
  479. package/worker/src/RTC/Router.cpp +61 -38
  480. package/worker/src/RTC/RtpDictionaries/RtpCodecMimeType.cpp +1 -1
  481. package/worker/src/RTC/RtpObserver.cpp +2 -1
  482. package/worker/src/RTC/SCTP/LICENSE +44 -0
  483. package/worker/src/RTC/SCTP/association/Association.cpp +417 -411
  484. package/worker/src/RTC/SCTP/association/AssociationListenerDeferrer.cpp +46 -13
  485. package/worker/src/RTC/SCTP/association/HeartbeatHandler.cpp +47 -43
  486. package/worker/src/RTC/SCTP/association/PacketSender.cpp +8 -8
  487. package/worker/src/RTC/SCTP/association/StreamResetHandler.cpp +113 -101
  488. package/worker/src/RTC/SCTP/association/TransmissionControlBlock.cpp +291 -62
  489. package/worker/src/RTC/SCTP/packet/Chunk.cpp +5 -1
  490. package/worker/src/RTC/SCTP/packet/Packet.cpp +8 -1
  491. package/worker/src/RTC/SCTP/packet/chunks/DataChunk.cpp +17 -0
  492. package/worker/src/RTC/SCTP/packet/chunks/ForwardTsnChunk.cpp +4 -4
  493. package/worker/src/RTC/SCTP/packet/chunks/IDataChunk.cpp +25 -0
  494. package/worker/src/RTC/SCTP/packet/chunks/IForwardTsnChunk.cpp +10 -7
  495. package/worker/src/RTC/SCTP/packet/chunks/SackChunk.cpp +21 -4
  496. package/worker/src/RTC/SCTP/packet/chunks/ShutdownCompleteChunk.cpp +1 -1
  497. package/worker/src/RTC/SCTP/packet/errorCauses/NoUserDataErrorCause.cpp +1 -1
  498. package/worker/src/RTC/SCTP/packet/errorCauses/ProtocolViolationErrorCause.cpp +2 -2
  499. package/worker/src/RTC/SCTP/packet/errorCauses/UserInitiatedAbortErrorCause.cpp +1 -1
  500. package/worker/src/RTC/SCTP/public/Message.cpp +8 -0
  501. package/worker/src/RTC/SCTP/public/SctpOptions.cpp +90 -0
  502. package/worker/src/RTC/SCTP/rx/DataTracker.cpp +471 -0
  503. package/worker/src/RTC/SCTP/rx/InterleavedReassemblyStreams.cpp +327 -0
  504. package/worker/src/RTC/SCTP/rx/ReassemblyQueue.cpp +288 -0
  505. package/worker/src/RTC/SCTP/rx/TraditionalReassemblyStreams.cpp +453 -0
  506. package/worker/src/RTC/SCTP/tx/OutstandingData.cpp +912 -0
  507. package/worker/src/RTC/SCTP/tx/RetransmissionQueue.cpp +786 -0
  508. package/worker/src/RTC/SCTP/tx/RetransmissionTimeout.cpp +2 -2
  509. package/worker/src/RTC/SCTP/tx/RoundRobinSendQueue.cpp +752 -0
  510. package/worker/src/RTC/SCTP/tx/StreamScheduler.cpp +257 -0
  511. package/worker/src/RTC/SenderBandwidthEstimator.cpp +7 -5
  512. package/worker/src/RTC/SimpleConsumer.cpp +11 -11
  513. package/worker/src/RTC/SimulcastConsumer.cpp +16 -16
  514. package/worker/src/RTC/SrtpSession.cpp +1 -1
  515. package/worker/src/RTC/SvcConsumer.cpp +16 -16
  516. package/worker/src/RTC/TcpConnection.cpp +1 -1
  517. package/worker/src/RTC/Transport.cpp +497 -563
  518. package/worker/src/RTC/TransportCongestionControlClient.cpp +9 -8
  519. package/worker/src/RTC/TransportCongestionControlServer.cpp +5 -5
  520. package/worker/src/RTC/WebRtcServer.cpp +5 -4
  521. package/worker/src/RTC/WebRtcTransport.cpp +44 -39
  522. package/worker/src/Settings.cpp +9 -28
  523. package/worker/src/Shared.cpp +35 -0
  524. package/worker/src/Utils/Crypto.cpp +1 -1
  525. package/worker/src/Utils/String.cpp +1 -1
  526. package/worker/src/Worker.cpp +19 -48
  527. package/worker/src/handles/BackoffTimerHandle.cpp +34 -21
  528. package/worker/src/handles/TimerHandle.cpp +5 -4
  529. package/worker/src/handles/UdpSocketHandle.cpp +1 -1
  530. package/worker/src/lib.cpp +17 -16
  531. package/worker/subprojects/catch2.wrap +6 -6
  532. package/worker/tasks.py +1 -1
  533. package/worker/test/include/RTC/ICE/iceCommon.hpp +8 -7
  534. package/worker/test/include/RTC/RTP/rtpCommon.hpp +7 -6
  535. package/worker/test/include/RTC/SCTP/sctpCommon.hpp +16 -10
  536. package/worker/test/include/catch2Macros.hpp +31 -0
  537. package/worker/test/src/RTC/ICE/TestStunPacket.cpp +3 -3
  538. package/worker/test/src/RTC/ICE/iceCommon.cpp +2 -2
  539. package/worker/test/src/RTC/RTP/Codecs/TestVP8.cpp +1 -1
  540. package/worker/test/src/RTC/RTP/Codecs/TestVP9.cpp +1 -1
  541. package/worker/test/src/RTC/RTP/TestPacket.cpp +3 -3
  542. package/worker/test/src/RTC/RTP/TestRtpStreamRecv.cpp +16 -9
  543. package/worker/test/src/RTC/RTP/TestRtpStreamSend.cpp +38 -23
  544. package/worker/test/src/RTC/RTP/TestSharedPacket.cpp +1 -1
  545. package/worker/test/src/RTC/RTP/rtpCommon.cpp +2 -2
  546. package/worker/test/src/RTC/SCTP/association/TestHeartbeatHandler.cpp +292 -0
  547. package/worker/test/src/RTC/SCTP/association/TestNegotiatedCapabilities.cpp +1 -1
  548. package/worker/test/src/RTC/SCTP/association/TestStateCookie.cpp +1 -1
  549. package/worker/test/src/RTC/SCTP/association/TestTransmissionControlBlock.cpp +99 -0
  550. package/worker/test/src/RTC/SCTP/packet/TestChunk.cpp +1 -1
  551. package/worker/test/src/RTC/SCTP/packet/TestPacket.cpp +1 -1
  552. package/worker/test/src/RTC/SCTP/packet/chunks/TestAbortAssociationChunk.cpp +1 -1
  553. package/worker/test/src/RTC/SCTP/packet/chunks/TestCookieAckChunk.cpp +1 -1
  554. package/worker/test/src/RTC/SCTP/packet/chunks/TestCookieEchoChunk.cpp +1 -1
  555. package/worker/test/src/RTC/SCTP/packet/chunks/TestDataChunk.cpp +77 -7
  556. package/worker/test/src/RTC/SCTP/packet/chunks/TestForwardTsnChunk.cpp +35 -26
  557. package/worker/test/src/RTC/SCTP/packet/chunks/TestHeartbeatAckChunk.cpp +1 -1
  558. package/worker/test/src/RTC/SCTP/packet/chunks/TestHeartbeatRequestChunk.cpp +1 -1
  559. package/worker/test/src/RTC/SCTP/packet/chunks/TestIDataChunk.cpp +77 -7
  560. package/worker/test/src/RTC/SCTP/packet/chunks/TestIForwardTsnChunk.cpp +59 -27
  561. package/worker/test/src/RTC/SCTP/packet/chunks/TestInitAckChunk.cpp +1 -1
  562. package/worker/test/src/RTC/SCTP/packet/chunks/TestInitChunk.cpp +1 -1
  563. package/worker/test/src/RTC/SCTP/packet/chunks/TestOperationErrorChunk.cpp +1 -1
  564. package/worker/test/src/RTC/SCTP/packet/chunks/TestReConfigChunk.cpp +1 -1
  565. package/worker/test/src/RTC/SCTP/packet/chunks/TestSackChunk.cpp +73 -35
  566. package/worker/test/src/RTC/SCTP/packet/chunks/TestShutdownAckChunk.cpp +1 -1
  567. package/worker/test/src/RTC/SCTP/packet/chunks/TestShutdownChunk.cpp +1 -1
  568. package/worker/test/src/RTC/SCTP/packet/chunks/TestShutdownCompleteChunk.cpp +1 -1
  569. package/worker/test/src/RTC/SCTP/packet/chunks/TestUnknownChunk.cpp +1 -1
  570. package/worker/test/src/RTC/SCTP/packet/errorCauses/TestCookieReceivedWhileShuttingDownErrorCause.cpp +1 -1
  571. package/worker/test/src/RTC/SCTP/packet/errorCauses/TestInvalidMandatoryParameterErrorCause.cpp +1 -1
  572. package/worker/test/src/RTC/SCTP/packet/errorCauses/TestInvalidStreamIdentifierErrorCause.cpp +1 -1
  573. package/worker/test/src/RTC/SCTP/packet/errorCauses/TestMissingMandatoryParameterErrorCause.cpp +1 -1
  574. package/worker/test/src/RTC/SCTP/packet/errorCauses/TestNoUserDataErrorCause.cpp +1 -1
  575. package/worker/test/src/RTC/SCTP/packet/errorCauses/TestOutOfResourceErrorCause.cpp +1 -1
  576. package/worker/test/src/RTC/SCTP/packet/errorCauses/TestProtocolViolationErrorCause.cpp +1 -1
  577. package/worker/test/src/RTC/SCTP/packet/errorCauses/TestRestartOfAnAssociationWithNewAddressesErrorCause.cpp +1 -1
  578. package/worker/test/src/RTC/SCTP/packet/errorCauses/TestStaleCookieErrorCause.cpp +1 -1
  579. package/worker/test/src/RTC/SCTP/packet/errorCauses/TestUnknownErrorCause.cpp +1 -1
  580. package/worker/test/src/RTC/SCTP/packet/errorCauses/TestUnrecognizedChunkTypeErrorCause.cpp +1 -1
  581. package/worker/test/src/RTC/SCTP/packet/errorCauses/TestUnrecognizedParametersErrorCause.cpp +1 -1
  582. package/worker/test/src/RTC/SCTP/packet/errorCauses/TestUnresolvableAddressErrorCause.cpp +1 -1
  583. package/worker/test/src/RTC/SCTP/packet/errorCauses/TestUserInitiatedAbortErrorCause.cpp +1 -1
  584. package/worker/test/src/RTC/SCTP/packet/parameters/TestAddIncomingStreamsRequestParameter.cpp +1 -1
  585. package/worker/test/src/RTC/SCTP/packet/parameters/TestAddOutgoingStreamsRequestParameter.cpp +1 -1
  586. package/worker/test/src/RTC/SCTP/packet/parameters/TestCookiePreservativeParameter.cpp +1 -1
  587. package/worker/test/src/RTC/SCTP/packet/parameters/TestForwardTsnSupportedParameter.cpp +1 -1
  588. package/worker/test/src/RTC/SCTP/packet/parameters/TestHeartbeatInfoParameter.cpp +1 -1
  589. package/worker/test/src/RTC/SCTP/packet/parameters/TestIPv4AddressParameter.cpp +1 -1
  590. package/worker/test/src/RTC/SCTP/packet/parameters/TestIPv6AddressParameter.cpp +1 -1
  591. package/worker/test/src/RTC/SCTP/packet/parameters/TestIncomingSsnResetRequestParameter.cpp +1 -1
  592. package/worker/test/src/RTC/SCTP/packet/parameters/TestOutgoingSsnResetRequestParameter.cpp +1 -1
  593. package/worker/test/src/RTC/SCTP/packet/parameters/TestReconfigurationResponseParameter.cpp +1 -1
  594. package/worker/test/src/RTC/SCTP/packet/parameters/TestSsnTsnResetRequestParameter.cpp +1 -1
  595. package/worker/test/src/RTC/SCTP/packet/parameters/TestStateCookieParameter.cpp +1 -1
  596. package/worker/test/src/RTC/SCTP/packet/parameters/TestSupportedAddressTypesParameter.cpp +1 -1
  597. package/worker/test/src/RTC/SCTP/packet/parameters/TestSupportedExtensionsParameter.cpp +1 -1
  598. package/worker/test/src/RTC/SCTP/packet/parameters/TestUnknownParameter.cpp +1 -1
  599. package/worker/test/src/RTC/SCTP/packet/parameters/TestUnrecognizedParameterParameter.cpp +1 -1
  600. package/worker/test/src/RTC/SCTP/packet/parameters/TestZeroChecksumAcceptableParameter.cpp +1 -1
  601. package/worker/test/src/RTC/SCTP/rx/TestDataTracker.cpp +1117 -0
  602. package/worker/test/src/RTC/SCTP/rx/TestInterleavedReassemblyStreams.cpp +565 -0
  603. package/worker/test/src/RTC/SCTP/rx/TestReassemblyQueue.cpp +557 -0
  604. package/worker/test/src/RTC/SCTP/rx/TestTraditionalReassemblyStreams.cpp +555 -0
  605. package/worker/test/src/RTC/SCTP/sctpCommon.cpp +2 -2
  606. package/worker/test/src/RTC/SCTP/tx/TestOutstandingData.cpp +1248 -0
  607. package/worker/test/src/RTC/SCTP/tx/TestRetransmissionErrorCounter.cpp +4 -0
  608. package/worker/test/src/RTC/SCTP/tx/TestRetransmissionQueue.cpp +2218 -0
  609. package/worker/test/src/RTC/SCTP/tx/TestRetransmissionTimeout.cpp +33 -33
  610. package/worker/test/src/RTC/SCTP/tx/TestRoundRobinSendQueue.cpp +1130 -0
  611. package/worker/test/src/RTC/SCTP/tx/TestStreamScheduler.cpp +721 -0
  612. package/worker/test/src/RTC/TestKeyFrameRequestManager.cpp +20 -30
  613. package/worker/test/src/RTC/TestNackGenerator.cpp +11 -8
  614. package/worker/test/src/RTC/TestRateCalculator.cpp +6 -7
  615. package/worker/test/src/RTC/TestSimpleConsumer.cpp +11 -11
  616. package/worker/test/src/RTC/TestTransportCongestionControlServer.cpp +15 -3
  617. package/worker/test/src/Utils/TestByte.cpp +98 -0
  618. package/worker/test/src/{RTC/SCTP/common → Utils}/TestUnwrappedSequenceNumber.cpp +2 -2
  619. package/worker/test/src/testHelpers.cpp +1 -1
  620. package/worker/test/src/tests.cpp +0 -12
  621. package/node/lib/fbs/consumer/degrade-request.d.ts +0 -30
  622. package/node/lib/fbs/consumer/degrade-request.d.ts.map +0 -1
  623. package/node/lib/fbs/consumer/degrade-request.js +0 -91
  624. package/node/lib/fbs/consumer/enable-delay-and-loss-request.d.ts +0 -24
  625. package/node/lib/fbs/consumer/enable-delay-and-loss-request.d.ts.map +0 -1
  626. package/node/lib/fbs/consumer/enable-delay-and-loss-request.js +0 -69
  627. package/node/lib/fbs/producer/degrade-request.d.ts +0 -30
  628. package/node/lib/fbs/producer/degrade-request.d.ts.map +0 -1
  629. package/node/lib/fbs/producer/degrade-request.js +0 -91
  630. package/node/lib/fbs/worker/close-notification.d.ts +0 -18
  631. package/node/lib/fbs/worker/close-notification.d.ts.map +0 -1
  632. package/node/lib/fbs/worker/close-notification.js +0 -45
  633. package/node/lib/fbs/worker/close-request.d.ts +0 -18
  634. package/node/lib/fbs/worker/close-request.d.ts.map +0 -1
  635. package/node/lib/fbs/worker/close-request.js +0 -45
  636. package/node/lib/fbs/worker/close-worker-notification.d.ts +0 -18
  637. package/node/lib/fbs/worker/close-worker-notification.d.ts.map +0 -1
  638. package/node/lib/fbs/worker/close-worker-notification.js +0 -45
  639. package/worker/include/ChannelMessageRegistrator.hpp +0 -30
  640. package/worker/include/DepUsrSCTP.hpp +0 -48
  641. package/worker/include/RTC/SCTP/TODO_SCTP.md +0 -43
  642. package/worker/include/RTC/SCTP/common/UnwrappedSequenceNumber.hpp +0 -274
  643. package/worker/include/RTC/SctpAssociation.hpp +0 -147
  644. package/worker/include/RTC/Shared.hpp +0 -23
  645. package/worker/src/ChannelMessageRegistrator.cpp +0 -119
  646. package/worker/src/DepUsrSCTP.cpp +0 -277
  647. package/worker/src/RTC/SctpAssociation.cpp +0 -1175
  648. package/worker/src/RTC/Shared.cpp +0 -23
  649. package/worker/subprojects/usrsctp.wrap +0 -8
@@ -0,0 +1,235 @@
1
+ #ifndef MS_RTC_SCTP_STREAM_SCHEDULER_HPP
2
+ #define MS_RTC_SCTP_STREAM_SCHEDULER_HPP
3
+
4
+ #include "common.hpp"
5
+ #include "RTC/SCTP/packet/Packet.hpp"
6
+ #include "RTC/SCTP/packet/chunks/IDataChunk.hpp"
7
+ #include "RTC/SCTP/tx/SendQueueInterface.hpp"
8
+ #include <set>
9
+
10
+ namespace RTC
11
+ {
12
+ namespace SCTP
13
+ {
14
+ /**
15
+ * A parameterized stream scheduler. Currently, it implements the round robin
16
+ * scheduling algorithm using virtual finish time. It is to be used as a
17
+ * part of a send queue and will track all active streams (streams that have
18
+ * any data that can be sent).
19
+ *
20
+ * The stream scheduler works with the concept of associating active streams
21
+ * with a "virtual finish time", which is the time when a stream is allowed
22
+ * to produce data. Streams are ordered by their virtual finish time, and
23
+ * the "current virtual time" will advance to the next following virtual
24
+ * finish time whenever a chunk is to be produced.
25
+ *
26
+ * In the round robin scheduling algorithm, a stream's virtual finish time
27
+ * will just increment by one (1) after having produced a chunk, which
28
+ * results in a round-robin scheduling.
29
+ *
30
+ * In WFQ scheduling algorithm, a stream's virtual finish time will be
31
+ * defined as the number of bytes in the next fragment to be sent, multiplied
32
+ * by theinverse of the stream's priority, meaning that a high priority - or
33
+ * a smaller fragment - results in a closer virtual finish time, compared to
34
+ * a stream with either a lower priority or a larger fragment to be sent.
35
+ *
36
+ * @remarks
37
+ * - When message interleaving is enabled, the WFQ (Weighted Fair Queueing)
38
+ * scheduling algorithm will be used. And when it's not, round-robin
39
+ * scheduling will be used instead.
40
+ */
41
+ class StreamScheduler
42
+ {
43
+ public:
44
+ class StreamProducer
45
+ {
46
+ public:
47
+ virtual ~StreamProducer() = default;
48
+
49
+ public:
50
+ /**
51
+ * Produces a fragment of data to send. The current wall time is specified
52
+ * as `nowMs` and should be used to skip chunks with expired limited
53
+ * lifetime. The parameter `maxLength` specifies the maximum amount of
54
+ * actual payload that may be returned. If these constraints prevents the
55
+ * stream from sending some data, `std::nullopt` should be returned.
56
+ */
57
+ virtual std::optional<SendQueueInterface::DataToSend> Produce(
58
+ uint64_t nowMs, size_t maxLength) = 0;
59
+
60
+ /**
61
+ * Returns the number of payload bytes that is scheduled to be sent in the
62
+ * next enqueued message, or zero if there are no enqueued messages or if
63
+ * the stream has been actively paused.
64
+ */
65
+ virtual size_t GetBytesToSendInNextMessage() const = 0;
66
+ };
67
+
68
+ public:
69
+ class Stream
70
+ {
71
+ private:
72
+ friend class StreamScheduler;
73
+
74
+ private:
75
+ Stream(StreamScheduler* parent, StreamProducer* producer, uint16_t streamId, uint16_t priority)
76
+ : parent(*parent),
77
+ producer(*producer),
78
+ streamId(streamId),
79
+ priority(priority),
80
+ inverseWeight(1.0 / std::max(static_cast<double>(priority), 1e-6))
81
+ {
82
+ }
83
+
84
+ public:
85
+ uint16_t GetStreamId() const
86
+ {
87
+ return this->streamId;
88
+ }
89
+
90
+ uint16_t GetPriority() const
91
+ {
92
+ return this->priority;
93
+ }
94
+
95
+ void SetPriority(uint16_t priority);
96
+
97
+ /**
98
+ * Will activate the stream if it has any data to send. That is, if the
99
+ * callback to `GetBytesToSendInNextMessage()` returns non-zero. If the
100
+ * callback returns zero, the stream will not be made active.
101
+ */
102
+ void MayMakeActive();
103
+
104
+ /**
105
+ * Will remove the stream from the list of active streams, and will not
106
+ * try to produce data from it. To make it active again, call
107
+ * `MayMakeActive()`.
108
+ */
109
+ void MakeInactive();
110
+
111
+ /**
112
+ * Make the scheduler move to another message, or another stream. This
113
+ * is used to abort the scheduler from continuing producing fragments
114
+ * for the current message in case it's deleted.
115
+ */
116
+ void ForceReschedule()
117
+ {
118
+ this->parent.ForceReschedule();
119
+ }
120
+
121
+ private:
122
+ /**
123
+ * Produces a message from this stream. This will only be called on
124
+ * streams that have data.
125
+ */
126
+ std::optional<SendQueueInterface::DataToSend> Produce(uint64_t nowMs, size_t maxLength);
127
+
128
+ void MakeActive(size_t bytesToSendNext);
129
+
130
+ void ForceMarkInactive();
131
+
132
+ double GetCurrentTime() const
133
+ {
134
+ return this->currentVirtualTime;
135
+ }
136
+
137
+ double GetNextFinishTime() const
138
+ {
139
+ return this->nextFinishTime;
140
+ }
141
+
142
+ size_t GetBytesToSendInNextMessage() const
143
+ {
144
+ return this->producer.GetBytesToSendInNextMessage();
145
+ }
146
+
147
+ double CalculateFinishTime(size_t bytesToSendNext) const;
148
+
149
+ private:
150
+ StreamScheduler& parent;
151
+ StreamProducer& producer;
152
+ const uint16_t streamId;
153
+ uint16_t priority;
154
+ double inverseWeight;
155
+ // This outgoing stream's "current" virtual time.
156
+ double currentVirtualTime{ 0.0 };
157
+ double nextFinishTime{ 0.0 };
158
+ };
159
+
160
+ private:
161
+ struct ActiveStreamComparator
162
+ {
163
+ // Ordered by virtual finish time (primary), stream-id (secondary).
164
+ bool operator()(Stream* a, Stream* b) const
165
+ {
166
+ const double aVft = a->GetNextFinishTime();
167
+ const double bVft = b->GetNextFinishTime();
168
+
169
+ if (aVft == bVft)
170
+ {
171
+ return a->GetStreamId() < b->GetStreamId();
172
+ }
173
+
174
+ return aVft < bVft;
175
+ }
176
+ };
177
+
178
+ public:
179
+ explicit StreamScheduler(size_t mtu)
180
+ : maxPayloadBytes(mtu - Packet::CommonHeaderLength - IDataChunk::IDataChunkHeaderLength)
181
+ {
182
+ }
183
+
184
+ public:
185
+ std::unique_ptr<Stream> CreateStream(StreamProducer* producer, uint16_t streamId, uint16_t priority)
186
+ {
187
+ return std::unique_ptr<Stream>(new Stream(this, producer, streamId, priority));
188
+ }
189
+
190
+ void EnableMessageInterleaving(bool enabled)
191
+ {
192
+ this->enableMessageInterleaving = enabled;
193
+ }
194
+
195
+ /**
196
+ * Makes the scheduler stop producing message from the current stream and
197
+ * re-evaluates which stream to produce from.
198
+ */
199
+ void ForceReschedule()
200
+ {
201
+ this->currentlySendingAMessage = false;
202
+ }
203
+
204
+ /**
205
+ * Produces a fragment of data to send. The current wall time is specified
206
+ * as `nowMs` and will be used to skip chunks with expired limited
207
+ * lifetime. The parameter `maxLength` specifies the maximum amount of
208
+ * actual payload that may be returned. If no data can be produced,
209
+ * `std::nullopt` is returned.
210
+ */
211
+ std::optional<SendQueueInterface::DataToSend> Produce(uint64_t nowMs, size_t maxLength);
212
+
213
+ std::set<uint16_t> GetActiveStreamsForTesting() const;
214
+
215
+ private:
216
+ void AssertIsConsistent() const;
217
+
218
+ private:
219
+ const size_t maxPayloadBytes;
220
+ // The current virtual time, as defined in the WFQ algorithm.
221
+ double virtualTime{ 0.0 };
222
+ // The current stream to send chunks from.
223
+ Stream* currentStream{ nullptr };
224
+ bool enableMessageInterleaving{ false };
225
+ // Indicates if the streams is currently sending a message, and should
226
+ // then (if message interleaving is not enabled) continue sending from
227
+ // this stream until that message has been sent in full.
228
+ bool currentlySendingAMessage{ false };
229
+ // The currently active streams, ordered by virtual finish time.
230
+ std::set<Stream*, ActiveStreamComparator> activeStreams;
231
+ };
232
+ } // namespace SCTP
233
+ } // namespace RTC
234
+
235
+ #endif
@@ -6,6 +6,7 @@
6
6
  #include "RTC/RateCalculator.hpp"
7
7
  #include "RTC/SeqManager.hpp"
8
8
  #include "RTC/TrendCalculator.hpp"
9
+ #include "SharedInterface.hpp"
9
10
  #include <map>
10
11
 
11
12
  namespace RTC
@@ -82,7 +83,9 @@ namespace RTC
82
83
 
83
84
  public:
84
85
  SenderBandwidthEstimator(
85
- RTC::SenderBandwidthEstimator::Listener* listener, uint32_t initialAvailableBitrate);
86
+ RTC::SenderBandwidthEstimator::Listener* listener,
87
+ SharedInterface* shared,
88
+ uint32_t initialAvailableBitrate);
86
89
  virtual ~SenderBandwidthEstimator();
87
90
 
88
91
  public:
@@ -98,6 +101,7 @@ namespace RTC
98
101
  private:
99
102
  // Passed by argument.
100
103
  Listener* listener{ nullptr };
104
+ SharedInterface* shared{ nullptr };
101
105
  // Others.
102
106
  uint32_t initialAvailableBitrate{ 0u };
103
107
  uint32_t availableBitrate{ 0u };
@@ -75,6 +75,14 @@ namespace RTC
75
75
  return this->length;
76
76
  }
77
77
 
78
+ /**
79
+ * Current available length of the Serializable.
80
+ */
81
+ virtual size_t GetAvailableLength() const final
82
+ {
83
+ return this->bufferLength - this->length;
84
+ }
85
+
78
86
  /**
79
87
  * Serialize the Serializable into a new buffer. This method copies the
80
88
  * bytes of the internal buffer into the new buffer and makes `GetBuffer()`
@@ -205,11 +213,11 @@ namespace RTC
205
213
 
206
214
  private:
207
215
  // Buffer holding the Serializable content.
208
- uint8_t* buffer{ nullptr };
216
+ uint8_t* buffer;
209
217
  // Length of the buffer. This is the maximum length the Serializable can
210
218
  // take.
211
- size_t bufferLength{ 0u };
212
- // Serializable exact length (includes padding bytes).
219
+ size_t bufferLength;
220
+ // Serializable current exact length (includes padding bytes).
213
221
  size_t length{ 0u };
214
222
  // Event listener invoked when the current buffer is released (no longer
215
223
  // used by this Serializable)-
@@ -3,7 +3,6 @@
3
3
 
4
4
  #include "RTC/Consumer.hpp"
5
5
  #include "RTC/SeqManager.hpp"
6
- #include "RTC/Shared.hpp"
7
6
  #include <map>
8
7
 
9
8
  namespace RTC
@@ -12,7 +11,7 @@ namespace RTC
12
11
  {
13
12
  public:
14
13
  SimpleConsumer(
15
- RTC::Shared* shared,
14
+ SharedInterface* shared,
16
15
  const std::string& id,
17
16
  const std::string& producerId,
18
17
  RTC::Consumer::Listener* listener,
@@ -4,7 +4,6 @@
4
4
  #include "RTC/Consumer.hpp"
5
5
  #include "RTC/RTP/Codecs/PayloadDescriptorHandler.hpp"
6
6
  #include "RTC/SeqManager.hpp"
7
- #include "RTC/Shared.hpp"
8
7
  #include <map>
9
8
 
10
9
  namespace RTC
@@ -13,7 +12,7 @@ namespace RTC
13
12
  {
14
13
  public:
15
14
  SimulcastConsumer(
16
- RTC::Shared* shared,
15
+ SharedInterface* shared,
17
16
  const std::string& id,
18
17
  const std::string& producerId,
19
18
  RTC::Consumer::Listener* listener,
@@ -4,7 +4,6 @@
4
4
  #include "RTC/Consumer.hpp"
5
5
  #include "RTC/RTP/Codecs/PayloadDescriptorHandler.hpp"
6
6
  #include "RTC/SeqManager.hpp"
7
- #include "RTC/Shared.hpp"
8
7
  #include <map>
9
8
 
10
9
  namespace RTC
@@ -13,7 +12,7 @@ namespace RTC
13
12
  {
14
13
  public:
15
14
  SvcConsumer(
16
- RTC::Shared* shared,
15
+ SharedInterface* shared,
17
16
  const std::string& id,
18
17
  const std::string& producerId,
19
18
  RTC::Consumer::Listener* listener,
@@ -2,10 +2,10 @@
2
2
  #define MS_RTC_TCP_SERVER_HPP
3
3
 
4
4
  #include "common.hpp"
5
- #include "RTC/TcpConnection.hpp"
6
- #include "RTC/Transport.hpp"
7
5
  #include "handles/TcpConnectionHandle.hpp"
8
6
  #include "handles/TcpServerHandle.hpp"
7
+ #include "RTC/TcpConnection.hpp"
8
+ #include "RTC/Transport.hpp"
9
9
  #include <string>
10
10
 
11
11
  namespace RTC
@@ -1,9 +1,9 @@
1
1
  #ifndef MS_RTC_TRANSPORT_HPP
2
2
  #define MS_RTC_TRANSPORT_HPP
3
+
3
4
  // #define ENABLE_RTC_SENDER_BANDWIDTH_ESTIMATOR
4
5
 
5
6
  #include "common.hpp"
6
- #include "DepLibUV.hpp"
7
7
  #include "Channel/ChannelNotification.hpp"
8
8
  #include "Channel/ChannelRequest.hpp"
9
9
  #include "Channel/ChannelSocket.hpp"
@@ -19,19 +19,17 @@
19
19
  #include "RTC/RateCalculator.hpp"
20
20
  #include "RTC/RtpListener.hpp"
21
21
  #include "RTC/SCTP/public/AssociationInterface.hpp"
22
- #include "RTC/SCTP/public/AssociationListener.hpp"
22
+ #include "RTC/SCTP/public/AssociationListenerInterface.hpp"
23
23
  #include "RTC/SCTP/public/Message.hpp"
24
24
  #include "RTC/SCTP/public/SctpTypes.hpp"
25
- // TODO: Remove once we only use built-in SCTP stack.
26
- #include "RTC/SctpAssociation.hpp"
27
25
  #include "RTC/SctpListener.hpp"
28
- #include "RTC/Shared.hpp"
26
+ #include "SharedInterface.hpp"
29
27
  #ifdef ENABLE_RTC_SENDER_BANDWIDTH_ESTIMATOR
30
28
  #include "RTC/SenderBandwidthEstimator.hpp"
31
29
  #endif
30
+ #include "handles/TimerHandleInterface.hpp"
32
31
  #include "RTC/TransportCongestionControlClient.hpp"
33
32
  #include "RTC/TransportCongestionControlServer.hpp"
34
- #include "handles/TimerHandle.hpp"
35
33
  #include <absl/container/flat_hash_map.h>
36
34
  #include <string>
37
35
  #include <vector>
@@ -42,9 +40,7 @@ namespace RTC
42
40
  public RTC::Consumer::Listener,
43
41
  public RTC::DataProducer::Listener,
44
42
  public RTC::DataConsumer::Listener,
45
- public RTC::SCTP::AssociationListener,
46
- // TODO: Remove once we only use built-in SCTP stack.
47
- public RTC::SctpAssociation::Listener,
43
+ public RTC::SCTP::AssociationListenerInterface,
48
44
  public RTC::TransportCongestionControlClient::Listener,
49
45
  public RTC::TransportCongestionControlServer::Listener,
50
46
  public Channel::ChannelSocket::RequestHandler,
@@ -52,7 +48,7 @@ namespace RTC
52
48
  #ifdef ENABLE_RTC_SENDER_BANDWIDTH_ESTIMATOR
53
49
  public RTC::SenderBandwidthEstimator::Listener,
54
50
  #endif
55
- public TimerHandle::Listener
51
+ public TimerHandleInterface::Listener
56
52
  {
57
53
  protected:
58
54
  using onSendCallback = const std::function<void(bool sent)>;
@@ -110,9 +106,7 @@ namespace RTC
110
106
  virtual void OnTransportDataProducerMessageReceived(
111
107
  RTC::Transport* transport,
112
108
  RTC::DataProducer* dataProducer,
113
- const uint8_t* msg,
114
- size_t len,
115
- uint32_t ppid,
109
+ RTC::SCTP::Message message,
116
110
  std::vector<uint16_t>& subchannels,
117
111
  std::optional<uint16_t> requiredSubchannel) = 0;
118
112
  virtual void OnTransportNewDataConsumer(
@@ -157,7 +151,7 @@ namespace RTC
157
151
 
158
152
  public:
159
153
  Transport(
160
- RTC::Shared* shared,
154
+ SharedInterface* shared,
161
155
  const std::string& id,
162
156
  RTC::Transport::Listener* listener,
163
157
  const FBS::Transport::Options* options);
@@ -180,51 +174,51 @@ namespace RTC
180
174
 
181
175
  protected:
182
176
  // Must be called from the subclass.
183
- void Destroying();
184
- void Connected();
185
- void Disconnected();
186
- void DataReceived(size_t len)
177
+ virtual void SetDestroying() final;
178
+ virtual void Connected() final;
179
+ virtual void Disconnected() final;
180
+ virtual void DataReceived(size_t len) final
187
181
  {
188
- this->recvTransmission.Update(len, DepLibUV::GetTimeMs());
182
+ this->recvTransmission.Update(len, this->shared->GetTimeMs());
189
183
  }
190
- void DataSent(size_t len)
184
+ virtual void DataSent(size_t len) final
191
185
  {
192
- this->sendTransmission.Update(len, DepLibUV::GetTimeMs());
186
+ this->sendTransmission.Update(len, this->shared->GetTimeMs());
193
187
  }
194
- void ReceiveRtpPacket(RTC::RTP::Packet* packet);
195
- void ReceiveRtcpPacket(RTC::RTCP::Packet* packet);
196
- void ReceiveSctpData(const uint8_t* data, size_t len);
197
- RTC::Producer* GetProducerById(const std::string& producerId) const;
198
- RTC::Consumer* GetConsumerById(const std::string& consumerId) const;
199
- RTC::Consumer* GetConsumerByMediaSsrc(uint32_t ssrc) const;
200
- RTC::Consumer* GetConsumerByRtxSsrc(uint32_t ssrc) const;
201
- RTC::DataProducer* GetDataProducerById(const std::string& dataProducerId) const;
202
- RTC::DataConsumer* GetDataConsumerById(const std::string& dataConsumerId) const;
188
+ virtual void ReceiveRtpPacket(RTC::RTP::Packet* packet) final;
189
+ virtual void ReceiveRtcpPacket(RTC::RTCP::Packet* packet) final;
190
+ virtual void ReceiveSctpData(const uint8_t* data, size_t len) final;
191
+ virtual void SendSctpMessage(
192
+ RTC::DataConsumer* dataConsumer, RTC::SCTP::Message message, onQueuedCallback* cb = nullptr) final;
203
193
 
204
194
  private:
195
+ virtual RTC::Producer* AssertAndGetProducerById(const std::string& producerId) const final;
196
+ virtual RTC::Consumer* AssertAndGetConsumerById(const std::string& consumerId) const final;
197
+ virtual RTC::Consumer* GetConsumerByMediaSsrc(uint32_t ssrc) const final;
198
+ virtual RTC::Consumer* GetConsumerByRtxSsrc(uint32_t ssrc) const final;
199
+ virtual RTC::DataProducer* AssertAndGetDataProducerById(const std::string& dataProducerId) const final;
200
+ virtual RTC::DataConsumer* AssertAndGetDataConsumerById(const std::string& dataConsumerId) const final;
201
+ virtual RTC::DataConsumer* GetSctpDataConsumerByStreamId(uint16_t streamId) const final;
205
202
  virtual bool IsConnected() const = 0;
206
203
  virtual void SendRtpPacket(
207
204
  RTC::Consumer* consumer, RTC::RTP::Packet* packet, const onSendCallback* cb = nullptr) = 0;
208
- void HandleRtcpPacket(RTC::RTCP::Packet* packet);
209
- void SendRtcp(uint64_t nowMs);
205
+ virtual void HandleRtcpPacket(RTC::RTCP::Packet* packet) final;
206
+ virtual void SendRtcp(uint64_t nowMs) final;
210
207
  virtual void SendRtcpPacket(RTC::RTCP::Packet* packet) = 0;
211
208
  virtual void SendRtcpCompoundPacket(RTC::RTCP::CompoundPacket* packet) = 0;
212
209
  virtual void SendMessage(
213
- RTC::DataConsumer* dataConsumer,
214
- const uint8_t* msg,
215
- size_t len,
216
- uint32_t ppid,
217
- onQueuedCallback* = nullptr) = 0;
218
- virtual bool SendSctpData(const uint8_t* data, size_t len) = 0;
219
- virtual void RecvStreamClosed(uint32_t ssrc) = 0;
220
- virtual void SendStreamClosed(uint32_t ssrc) = 0;
221
- void DistributeAvailableOutgoingBitrate();
222
- void ComputeOutgoingDesiredBitrate(bool forceBitrate = false);
223
- void EmitTraceEventProbationType(RTC::RTP::Packet* packet) const;
224
- void EmitTraceEventBweType(RTC::TransportCongestionControlClient::Bitrates& bitrates) const;
225
- void CheckNoProducer(const std::string& producerId) const;
226
- void CheckNoDataProducer(const std::string& dataProducerId) const;
227
- void CheckNoDataConsumer(const std::string& dataConsumerId) const;
210
+ RTC::DataConsumer* dataConsumer, RTC::SCTP::Message message, onQueuedCallback* cb = nullptr) = 0;
211
+ virtual bool SendData(const uint8_t* data, size_t len) = 0;
212
+ virtual void RecvStreamClosed(uint32_t ssrc) = 0;
213
+ virtual void SendStreamClosed(uint32_t ssrc) = 0;
214
+ virtual void DistributeAvailableOutgoingBitrate() final;
215
+ virtual void ComputeOutgoingDesiredBitrate(bool forceBitrate = false) final;
216
+ virtual void EmitTraceEventProbationType(RTC::RTP::Packet* packet) const final;
217
+ virtual void EmitTraceEventBweType(
218
+ RTC::TransportCongestionControlClient::Bitrates& bitrates) const final;
219
+ virtual void CheckNoDataProducer(const std::string& dataProducerId) const final;
220
+ virtual void CheckNoDataConsumer(const std::string& dataConsumerId) const final;
221
+ virtual void CheckNoSctpDataConsumer(uint16_t streamId) const final;
228
222
 
229
223
  /* Pure virtual methods inherited from RTC::Producer::Listener. */
230
224
  public:
@@ -269,9 +263,7 @@ namespace RTC
269
263
  }
270
264
  void OnDataProducerMessageReceived(
271
265
  RTC::DataProducer* dataProducer,
272
- const uint8_t* msg,
273
- size_t len,
274
- uint32_t ppid,
266
+ RTC::SCTP::Message message,
275
267
  std::vector<uint16_t>& subchannels,
276
268
  std::optional<uint16_t> requiredSubchannel) override;
277
269
  void OnDataProducerPaused(RTC::DataProducer* dataProducer) override;
@@ -280,16 +272,16 @@ namespace RTC
280
272
  /* Pure virtual methods inherited from RTC::DataConsumer::Listener. */
281
273
  public:
282
274
  void OnDataConsumerSendMessage(
283
- RTC::DataConsumer* dataConsumer,
284
- const uint8_t* msg,
285
- size_t len,
286
- uint32_t ppid,
287
- onQueuedCallback* cb = nullptr) override;
275
+ RTC::DataConsumer* dataConsumer, RTC::SCTP::Message message, onQueuedCallback* cb) override;
288
276
  void OnDataConsumerNeedBufferedAmount(
289
- RTC::DataConsumer* dataConsumer, uint32_t& bufferedAmount) override;
277
+ const RTC::DataConsumer* dataConsumer, uint32_t& bufferedAmount) const override;
278
+ void OnDataConsumerNeedBufferedAmountLowThreshold(
279
+ const RTC::DataConsumer* dataConsumer, uint32_t& bufferedAmountLowThreshold) const override;
280
+ void OnDataConsumerSetBufferedAmountLowThreshold(
281
+ const RTC::DataConsumer* dataConsumer, uint32_t bytes) const override;
290
282
  void OnDataConsumerDataProducerClosed(RTC::DataConsumer* dataConsumer) override;
291
283
 
292
- /* Pure virtual methods inherited from RTC::SCTP::AssociationListener. */
284
+ /* Pure virtual methods inherited from RTC::SCTP::AssociationListenerInterface. */
293
285
  public:
294
286
  bool OnAssociationSendData(const uint8_t* data, size_t len) override;
295
287
  void OnAssociationConnecting() override;
@@ -306,25 +298,6 @@ namespace RTC
306
298
  void OnAssociationStreamBufferedAmountLow(uint16_t streamId) override;
307
299
  void OnAssociationTotalBufferedAmountLow() override;
308
300
  bool OnAssociationIsTransportReadyForSctp() override;
309
- // TODO: SCTP: Add OnAssociationLifecycleMessageXxxxxx() methods.
310
-
311
- /* Pure virtual methods inherited from RTC::SctpAssociation::Listener. */
312
- // TODO: Remove once we only use built-in SCTP stack.
313
- public:
314
- void OnSctpAssociationConnecting(RTC::SctpAssociation* sctpAssociation) override;
315
- void OnSctpAssociationConnected(RTC::SctpAssociation* sctpAssociation) override;
316
- void OnSctpAssociationFailed(RTC::SctpAssociation* sctpAssociation) override;
317
- void OnSctpAssociationClosed(RTC::SctpAssociation* sctpAssociation) override;
318
- void OnSctpAssociationSendData(
319
- RTC::SctpAssociation* sctpAssociation, const uint8_t* data, size_t len) override;
320
- void OnSctpAssociationMessageReceived(
321
- RTC::SctpAssociation* sctpAssociation,
322
- uint16_t streamId,
323
- const uint8_t* msg,
324
- size_t len,
325
- uint32_t ppid) override;
326
- void OnSctpAssociationBufferedAmount(
327
- RTC::SctpAssociation* sctpAssociation, uint32_t bufferedAmount) override;
328
301
 
329
302
  /* Pure virtual methods inherited from RTC::TransportCongestionControlClient::Listener. */
330
303
  public:
@@ -350,21 +323,16 @@ namespace RTC
350
323
  uint32_t previousAvailableBitrate) override;
351
324
  #endif
352
325
 
353
- /* Pure virtual methods inherited from TimerHandle::Listener. */
326
+ /* Pure virtual methods inherited from TimerHandleInterface::Listener. */
354
327
  public:
355
- void OnTimer(TimerHandle* timer) override;
328
+ void OnTimer(TimerHandleInterface* timer) override;
356
329
 
357
330
  public:
358
331
  // Passed by argument.
359
332
  std::string id;
360
333
 
361
334
  protected:
362
- RTC::Shared* shared{ nullptr };
363
- size_t maxMessageSize{ 262144u };
364
- // Allocated by this.
365
- std::unique_ptr<RTC::SCTP::AssociationInterface> sctpAssociation{ nullptr };
366
- // TODO: Remove once we only use built-in SCTP stack.
367
- RTC::SctpAssociation* oldSctpAssociation{ nullptr };
335
+ SharedInterface* shared{ nullptr };
368
336
 
369
337
  private:
370
338
  // Passed by argument.
@@ -374,9 +342,12 @@ namespace RTC
374
342
  absl::flat_hash_map<std::string, RTC::Consumer*> mapConsumers;
375
343
  absl::flat_hash_map<std::string, RTC::DataProducer*> mapDataProducers;
376
344
  absl::flat_hash_map<std::string, RTC::DataConsumer*> mapDataConsumers;
345
+ absl::flat_hash_map<uint16_t, RTC::DataConsumer*> mapSctpStreamIdDataConsumers;
377
346
  absl::flat_hash_map<uint32_t, RTC::Consumer*> mapSsrcConsumer;
378
347
  absl::flat_hash_map<uint32_t, RTC::Consumer*> mapRtxSsrcConsumer;
379
- TimerHandle* rtcpTimer{ nullptr };
348
+ TimerHandleInterface* rtcpTimer{ nullptr };
349
+ // Allocated by this.
350
+ std::unique_ptr<RTC::SCTP::AssociationInterface> sctpAssociation{ nullptr };
380
351
  std::shared_ptr<RTC::TransportCongestionControlClient> tccClient{ nullptr };
381
352
  std::shared_ptr<RTC::TransportCongestionControlServer> tccServer{ nullptr };
382
353
  #ifdef ENABLE_RTC_SENDER_BANDWIDTH_ESTIMATOR
@@ -384,7 +355,7 @@ namespace RTC
384
355
  #endif
385
356
  // Others.
386
357
  bool direct{ false }; // Whether this Transport allows direct communication.
387
- bool destroying{ false };
358
+ bool isDestroying{ false };
388
359
  struct RTC::RTP::HeaderExtensionIds recvRtpHeaderExtensionIds;
389
360
  RTC::RtpListener rtpListener;
390
361
  RTC::SctpListener sctpListener;
@@ -400,6 +371,14 @@ namespace RTC
400
371
  uint32_t maxIncomingBitrate{ 0u };
401
372
  uint32_t maxOutgoingBitrate{ 0u };
402
373
  uint32_t minOutgoingBitrate{ 0u };
374
+ // For SCTP capable transports and for direct transport.
375
+ size_t maxSendMessageSize{ 0u };
376
+ size_t maxReceiveMessageSize{ 0u };
377
+ // For SCTP capable transports.
378
+ size_t sctpSendBufferSize{ 0u };
379
+ size_t sctpPerStreamSendQueueLimit{ 0u };
380
+ size_t sctpMaxReceiverWindowBufferSize{ 0u };
381
+
403
382
  struct TraceEventTypes traceEventTypes;
404
383
  };
405
384
  } // namespace RTC