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
@@ -20,12 +20,12 @@ namespace RTC
20
20
  struct SkippedStream
21
21
  {
22
22
  SkippedStream(uint16_t streamId, uint16_t ssn)
23
- : streamId(streamId), ssn(ssn), unordered(false), mid(0)
23
+ : streamId(streamId), ssn(ssn), mid(0), unordered(false)
24
24
  {
25
25
  }
26
26
 
27
- SkippedStream(uint16_t streamId, bool unordered, uint32_t mid)
28
- : streamId(streamId), ssn(0), unordered(unordered), mid(mid)
27
+ SkippedStream(bool unordered, uint16_t streamId, uint32_t mid)
28
+ : streamId(streamId), ssn(0), mid(mid), unordered(unordered)
29
29
  {
30
30
  }
31
31
 
@@ -39,17 +39,17 @@ namespace RTC
39
39
  /**
40
40
  * Only set for I_FORWARD_TSN.
41
41
  */
42
- bool unordered;
42
+ uint32_t mid;
43
43
 
44
44
  /**
45
45
  * Only set for I_FORWARD_TSN.
46
46
  */
47
- uint32_t mid;
47
+ bool unordered;
48
48
 
49
49
  bool operator==(const SkippedStream& other) const
50
50
  {
51
- return streamId == other.streamId && ssn == other.ssn && unordered == other.unordered &&
52
- mid == other.mid;
51
+ return streamId == other.streamId && ssn == other.ssn && mid == other.mid &&
52
+ unordered == other.unordered;
53
53
  }
54
54
  };
55
55
 
@@ -71,8 +71,8 @@ namespace RTC
71
71
  */
72
72
  inline std::ostream& operator<<(std::ostream& os, const AnyForwardTsnChunk::SkippedStream& s)
73
73
  {
74
- return os << "{streamId:" << s.streamId << ", ssn:" << s.ssn << ", unordered:" << s.unordered
75
- << ", mid:" << s.mid << "}";
74
+ return os << "{streamId:" << s.streamId << ", ssn:" << s.ssn << ", mid:" << s.mid
75
+ << ", unordered:" << s.unordered << "}";
76
76
  }
77
77
  } // namespace SCTP
78
78
  } // namespace RTC
@@ -2,8 +2,8 @@
2
2
  #define MS_RTC_SCTP_ANY_INIT_CHUNK_HPP
3
3
 
4
4
  #include "common.hpp"
5
- #include "Utils.hpp"
6
5
  #include "RTC/SCTP/packet/Chunk.hpp"
6
+ #include "Utils.hpp"
7
7
 
8
8
  namespace RTC
9
9
  {
@@ -2,9 +2,9 @@
2
2
  #define MS_RTC_SCTP_DATA_CHUNK_HPP
3
3
 
4
4
  #include "common.hpp"
5
- #include "Utils.hpp"
6
5
  #include "RTC/SCTP/packet/UserData.hpp"
7
6
  #include "RTC/SCTP/packet/chunks/AnyDataChunk.hpp"
7
+ #include "Utils.hpp"
8
8
  #include <vector>
9
9
 
10
10
  namespace RTC
@@ -218,7 +218,7 @@ namespace RTC
218
218
 
219
219
  void SetUserDataPayload(const uint8_t* userDataPayload, uint16_t userDataPayloadLength);
220
220
 
221
- UserData GetUserData() const final
221
+ UserData MakeUserData() const final
222
222
  {
223
223
  const auto* userData = GetUserDataPayload();
224
224
  const uint16_t userDataLen = GetUserDataPayloadLength();
@@ -237,6 +237,8 @@ namespace RTC
237
237
  GetU());
238
238
  }
239
239
 
240
+ void SetUserData(UserData userData);
241
+
240
242
  protected:
241
243
  DataChunk* SoftClone(const uint8_t* buffer) const final;
242
244
 
@@ -2,8 +2,8 @@
2
2
  #define MS_RTC_SCTP_FORWARD_TSN_CHUNK_HPP
3
3
 
4
4
  #include "common.hpp"
5
- #include "Utils.hpp"
6
5
  #include "RTC/SCTP/packet/chunks/AnyForwardTsnChunk.hpp"
6
+ #include "Utils.hpp"
7
7
 
8
8
  namespace RTC
9
9
  {
@@ -114,7 +114,7 @@ namespace RTC
114
114
 
115
115
  std::vector<AnyForwardTsnChunk::SkippedStream> GetSkippedStreams() const final;
116
116
 
117
- void AddStream(uint16_t stream, uint16_t streamSequence);
117
+ void AddSkippedStream(const AnyForwardTsnChunk::SkippedStream& skippedStream);
118
118
 
119
119
  protected:
120
120
  ForwardTsnChunk* SoftClone(const uint8_t* buffer) const final;
@@ -129,7 +129,7 @@ namespace RTC
129
129
  }
130
130
 
131
131
  private:
132
- uint16_t GetStreamIdAt(uint16_t idx) const
132
+ uint16_t GetSkippedStreamIdAt(uint16_t idx) const
133
133
  {
134
134
  return Utils::Byte::Get2Bytes(GetVariableLengthValuePointer(), (idx * 4));
135
135
  }
@@ -2,9 +2,9 @@
2
2
  #define MS_RTC_SCTP_I_DATA_CHUNK_HPP
3
3
 
4
4
  #include "common.hpp"
5
- #include "Utils.hpp"
6
5
  #include "RTC/SCTP/packet/UserData.hpp"
7
6
  #include "RTC/SCTP/packet/chunks/AnyDataChunk.hpp"
7
+ #include "Utils.hpp"
8
8
  #include <vector>
9
9
 
10
10
  namespace RTC
@@ -234,7 +234,7 @@ namespace RTC
234
234
 
235
235
  void SetUserDataPayload(const uint8_t* userDataPayload, uint16_t userDataPayloadLength);
236
236
 
237
- UserData GetUserData() const final
237
+ UserData MakeUserData() const final
238
238
  {
239
239
  const auto* userData = GetUserDataPayload();
240
240
  const uint16_t userDataLen = GetUserDataPayloadLength();
@@ -253,6 +253,8 @@ namespace RTC
253
253
  GetU());
254
254
  }
255
255
 
256
+ void SetUserData(UserData userData);
257
+
256
258
  protected:
257
259
  IDataChunk* SoftClone(const uint8_t* buffer) const final;
258
260
 
@@ -2,8 +2,8 @@
2
2
  #define MS_RTC_SCTP_I_FORWARD_TSN_CHUNK_HPP
3
3
 
4
4
  #include "common.hpp"
5
- #include "Utils.hpp"
6
5
  #include "RTC/SCTP/packet/chunks/AnyForwardTsnChunk.hpp"
6
+ #include "Utils.hpp"
7
7
 
8
8
  namespace RTC
9
9
  {
@@ -126,7 +126,7 @@ namespace RTC
126
126
 
127
127
  std::vector<AnyForwardTsnChunk::SkippedStream> GetSkippedStreams() const final;
128
128
 
129
- void AddStream(uint16_t stream, bool uFlag, uint32_t messageIdentifier);
129
+ void AddSkippedStream(const AnyForwardTsnChunk::SkippedStream& skippedStream);
130
130
 
131
131
  protected:
132
132
  IForwardTsnChunk* SoftClone(const uint8_t* buffer) const final;
@@ -141,7 +141,7 @@ namespace RTC
141
141
  }
142
142
 
143
143
  private:
144
- uint16_t GetStreamIdAt(uint16_t idx) const
144
+ uint16_t GetSkippedStreamIdAt(uint16_t idx) const
145
145
  {
146
146
  return Utils::Byte::Get2Bytes(GetVariableLengthValuePointer(), (idx * 8));
147
147
  }
@@ -2,8 +2,8 @@
2
2
  #define MS_RTC_SCTP_INIT_ACK_CHUNK_HPP
3
3
 
4
4
  #include "common.hpp"
5
- #include "Utils.hpp"
6
5
  #include "RTC/SCTP/packet/chunks/AnyInitChunk.hpp"
6
+ #include "Utils.hpp"
7
7
 
8
8
  namespace RTC
9
9
  {
@@ -2,8 +2,8 @@
2
2
  #define MS_RTC_SCTP_INIT_CHUNK_HPP
3
3
 
4
4
  #include "common.hpp"
5
- #include "Utils.hpp"
6
5
  #include "RTC/SCTP/packet/chunks/AnyInitChunk.hpp"
6
+ #include "Utils.hpp"
7
7
 
8
8
  namespace RTC
9
9
  {
@@ -2,8 +2,8 @@
2
2
  #define MS_RTC_SCTP_SACK_CHUNK_HPP
3
3
 
4
4
  #include "common.hpp"
5
- #include "Utils.hpp"
6
5
  #include "RTC/SCTP/packet/Chunk.hpp"
6
+ #include "Utils.hpp"
7
7
  #include <ostream>
8
8
  #include <vector>
9
9
 
@@ -154,14 +154,16 @@ namespace RTC
154
154
  return Utils::Byte::Get4Bytes(GetBuffer(), 4);
155
155
  }
156
156
 
157
- void SetCumulativeTsnAck(uint32_t value);
157
+ void SetCumulativeTsnAck(uint32_t tsn);
158
158
 
159
159
  uint32_t GetAdvertisedReceiverWindowCredit() const
160
160
  {
161
161
  return Utils::Byte::Get4Bytes(GetBuffer(), 8);
162
162
  }
163
163
 
164
- void SetAdvertisedReceiverWindowCredit(uint32_t value);
164
+ void SetAdvertisedReceiverWindowCredit(uint32_t aRwnd);
165
+
166
+ std::vector<SackChunk::GapAckBlock> GetGapAckBlocks() const;
165
167
 
166
168
  std::vector<GapAckBlock> GetValidatedGapAckBlocks() const;
167
169
 
@@ -169,6 +171,11 @@ namespace RTC
169
171
 
170
172
  void AddAckBlock(uint16_t start, uint16_t end);
171
173
 
174
+ void AddAckBlock(GapAckBlock gapAckBlock)
175
+ {
176
+ AddAckBlock(gapAckBlock.start, gapAckBlock.end);
177
+ }
178
+
172
179
  void AddDuplicateTsn(uint32_t tsn);
173
180
 
174
181
  protected:
@@ -2,8 +2,8 @@
2
2
  #define MS_RTC_SCTP_SHUTDOWN_CHUNK_HPP
3
3
 
4
4
  #include "common.hpp"
5
- #include "Utils.hpp"
6
5
  #include "RTC/SCTP/packet/Chunk.hpp"
6
+ #include "Utils.hpp"
7
7
 
8
8
  namespace RTC
9
9
  {
@@ -2,8 +2,8 @@
2
2
  #define MS_RTC_SCTP_INVALID_STREAM_IDENTIFIER_ERROR_CAUSE_HPP
3
3
 
4
4
  #include "common.hpp"
5
- #include "Utils.hpp"
6
5
  #include "RTC/SCTP/packet/ErrorCause.hpp"
6
+ #include "Utils.hpp"
7
7
 
8
8
  namespace RTC
9
9
  {
@@ -2,9 +2,9 @@
2
2
  #define MS_RTC_SCTP_MISSING_MANDATORY_PARAMETER_ERROR_CAUSE_HPP
3
3
 
4
4
  #include "common.hpp"
5
- #include "Utils.hpp"
6
5
  #include "RTC/SCTP/packet/ErrorCause.hpp"
7
6
  #include "RTC/SCTP/packet/Parameter.hpp"
7
+ #include "Utils.hpp"
8
8
 
9
9
  namespace RTC
10
10
  {
@@ -2,8 +2,8 @@
2
2
  #define MS_RTC_SCTP_NO_USER_DATA_ERROR_CAUSE_HPP
3
3
 
4
4
  #include "common.hpp"
5
- #include "Utils.hpp"
6
5
  #include "RTC/SCTP/packet/ErrorCause.hpp"
6
+ #include "Utils.hpp"
7
7
 
8
8
  namespace RTC
9
9
  {
@@ -2,8 +2,8 @@
2
2
  #define MS_RTC_SCTP_STALE_COOKIE_ERROR_CAUSE_HPP
3
3
 
4
4
  #include "common.hpp"
5
- #include "Utils.hpp"
6
5
  #include "RTC/SCTP/packet/ErrorCause.hpp"
6
+ #include "Utils.hpp"
7
7
 
8
8
  namespace RTC
9
9
  {
@@ -2,8 +2,8 @@
2
2
  #define MS_RTC_SCTP_ADD_INCOMING_STREAMS_REQUEST_PARAMETER_HPP
3
3
 
4
4
  #include "common.hpp"
5
- #include "Utils.hpp"
6
5
  #include "RTC/SCTP/packet/Parameter.hpp"
6
+ #include "Utils.hpp"
7
7
 
8
8
  namespace RTC
9
9
  {
@@ -2,8 +2,8 @@
2
2
  #define MS_RTC_SCTP_ADD_OUTGOING_STREAMS_REQUEST_PARAMETER_HPP
3
3
 
4
4
  #include "common.hpp"
5
- #include "Utils.hpp"
6
5
  #include "RTC/SCTP/packet/Parameter.hpp"
6
+ #include "Utils.hpp"
7
7
 
8
8
  namespace RTC
9
9
  {
@@ -2,8 +2,8 @@
2
2
  #define MS_RTC_SCTP_COOKIE_PRESERVATIVE_PARAMETER_HPP
3
3
 
4
4
  #include "common.hpp"
5
- #include "Utils.hpp"
6
5
  #include "RTC/SCTP/packet/Parameter.hpp"
6
+ #include "Utils.hpp"
7
7
 
8
8
  namespace RTC
9
9
  {
@@ -2,8 +2,8 @@
2
2
  #define MS_RTC_SCTP_INCOMING_SSN_RESET_REQUEST_PARAMETER_HPP
3
3
 
4
4
  #include "common.hpp"
5
- #include "Utils.hpp"
6
5
  #include "RTC/SCTP/packet/Parameter.hpp"
6
+ #include "Utils.hpp"
7
7
  #include <vector>
8
8
 
9
9
  namespace RTC
@@ -2,8 +2,8 @@
2
2
  #define MS_RTC_SCTP_OUTGOING_SSN_RESET_REQUEST_PARAMETER_HPP
3
3
 
4
4
  #include "common.hpp"
5
- #include "Utils.hpp"
6
5
  #include "RTC/SCTP/packet/Parameter.hpp"
6
+ #include "Utils.hpp"
7
7
  #include <vector>
8
8
 
9
9
  namespace RTC
@@ -2,8 +2,8 @@
2
2
  #define MS_RTC_SCTP_RECONFIGURATION_RESPONSE_PARAMETER_HPP
3
3
 
4
4
  #include "common.hpp"
5
- #include "Utils.hpp"
6
5
  #include "RTC/SCTP/packet/Parameter.hpp"
6
+ #include "Utils.hpp"
7
7
  #include <string>
8
8
  #include <unordered_map>
9
9
 
@@ -2,8 +2,8 @@
2
2
  #define MS_RTC_SCTP_SSN_TSN_RESET_REQUEST_PARAMETER_HPP
3
3
 
4
4
  #include "common.hpp"
5
- #include "Utils.hpp"
6
5
  #include "RTC/SCTP/packet/Parameter.hpp"
6
+ #include "Utils.hpp"
7
7
 
8
8
  namespace RTC
9
9
  {
@@ -2,8 +2,8 @@
2
2
  #define MS_RTC_SCTP_SUPPORTED_ADDRESS_TYPES_PARAMETER_HPP
3
3
 
4
4
  #include "common.hpp"
5
- #include "Utils.hpp"
6
5
  #include "RTC/SCTP/packet/Parameter.hpp"
6
+ #include "Utils.hpp"
7
7
 
8
8
  namespace RTC
9
9
  {
@@ -2,9 +2,9 @@
2
2
  #define MS_RTC_SCTP_SUPPORTED_EXTENSIONS_PARAMETER_HPP
3
3
 
4
4
  #include "common.hpp"
5
- #include "Utils.hpp"
6
5
  #include "RTC/SCTP/packet/Chunk.hpp"
7
6
  #include "RTC/SCTP/packet/Parameter.hpp"
7
+ #include "Utils.hpp"
8
8
 
9
9
  namespace RTC
10
10
  {
@@ -2,8 +2,8 @@
2
2
  #define MS_RTC_SCTP_ZERO_CHECKSUM_ACCEPTABLE_PARAMETER_HPP
3
3
 
4
4
  #include "common.hpp"
5
- #include "Utils.hpp"
6
5
  #include "RTC/SCTP/packet/Parameter.hpp"
6
+ #include "Utils.hpp"
7
7
  #include <string>
8
8
  #include <unordered_map>
9
9
 
@@ -72,7 +72,7 @@ namespace RTC
72
72
  * Retrieves the latest metrics. If the Association is not fully connected,
73
73
  * `std::nullopt` will be returned.
74
74
  */
75
- virtual std::optional<AssociationMetrics> GetMetrics() const = 0;
75
+ virtual std::optional<AssociationMetrics> MakeMetrics() const = 0;
76
76
 
77
77
  /**
78
78
  * Returns the currently set priority for an outgoing stream. The initial
@@ -92,6 +92,12 @@ namespace RTC
92
92
  */
93
93
  virtual void SetMaxSendMessageSize(size_t maxMessageSize) = 0;
94
94
 
95
+ /**
96
+ * Returns the number of bytes of data currently queued to be sent in
97
+ * total.
98
+ */
99
+ virtual size_t GetTotalBufferedAmount() const = 0;
100
+
95
101
  /**
96
102
  * Returns the number of bytes of data currently queued to be sent on a
97
103
  * given stream.
@@ -109,7 +115,7 @@ namespace RTC
109
115
  * considered "low" for a given stream, which will trigger
110
116
  * `OnAssociationStreamBufferedAmountLow()` event. The default value is 0.
111
117
  */
112
- virtual void SetBufferedAmountLowThreshold(uint16_t streamId, size_t bytes) = 0;
118
+ virtual void SetStreamBufferedAmountLowThreshold(uint16_t streamId, size_t bytes) = 0;
113
119
 
114
120
  /**
115
121
  * Resetting streams is an asynchronous operation and the results will be
@@ -171,6 +177,20 @@ namespace RTC
171
177
  * Receives SCTP data (hopefully an SCTP Packet) from the remote peer.
172
178
  */
173
179
  virtual void ReceiveSctpData(const uint8_t* data, size_t len) = 0;
180
+
181
+ /**
182
+ * Get negotiated max outbound streams. Returns 0 if the association is
183
+ * not yet connected.
184
+ */
185
+ virtual uint16_t GetNegotiatedMaxOutboundStreams() const = 0;
186
+
187
+ /**
188
+ * Get negotiated max inbound streams. Returns 0 if the association is
189
+ * not yet connected.
190
+ */
191
+ virtual uint16_t GetNegotiatedMaxInboundStreams() const = 0;
192
+
193
+ virtual bool IsDataChannel() const = 0;
174
194
  };
175
195
  } // namespace SCTP
176
196
  } // namespace RTC
@@ -1,5 +1,5 @@
1
- #ifndef MS_RTC_SCTP_ASSOCIATION_LISTENER_HPP
2
- #define MS_RTC_SCTP_ASSOCIATION_LISTENER_HPP
1
+ #ifndef MS_RTC_SCTP_ASSOCIATION_LISTENER_INTERFACE_HPP
2
+ #define MS_RTC_SCTP_ASSOCIATION_LISTENER_INTERFACE_HPP
3
3
 
4
4
  #include "common.hpp"
5
5
  #include "RTC/SCTP/public/Message.hpp"
@@ -11,10 +11,10 @@ namespace RTC
11
11
  {
12
12
  namespace SCTP
13
13
  {
14
- class AssociationListener
14
+ class AssociationListenerInterface
15
15
  {
16
16
  public:
17
- virtual ~AssociationListener() = default;
17
+ virtual ~AssociationListenerInterface() = default;
18
18
 
19
19
  public:
20
20
  /**
@@ -136,7 +136,7 @@ namespace RTC
136
136
  /**
137
137
  * Called when the total amount of data buffered (in the entire send
138
138
  * buffer, for all streams) falls to or below the threshold specified in
139
- * SctpOptions::totalBufferedAmountLowThreshold`.
139
+ * `SctpOptions::totalBufferedAmountLowThreshold`.
140
140
  *
141
141
  * @remarks
142
142
  * - It is allowed to call methods in Association within this callback.
@@ -2,6 +2,7 @@
2
2
  #define MS_RTC_SCTP_MESSAGE_HPP
3
3
 
4
4
  #include "common.hpp"
5
+ #include <span>
5
6
  #include <vector>
6
7
 
7
8
  namespace RTC
@@ -18,18 +19,26 @@ namespace RTC
18
19
  public:
19
20
  Message(uint16_t streamId, uint32_t ppid, std::vector<uint8_t> payload);
20
21
 
21
- // Move constructor. No need to do anything special since std::vector
22
- // already implements move.
22
+ /**
23
+ * Move constructor. No need to do anything special since std::vector
24
+ * already implements move.
25
+ */
23
26
  Message(Message&& other) = default;
24
27
 
25
- // Move assignment. No need to do anything special since std::vector
26
- // already implements move.
28
+ /**
29
+ * Move assignment. No need to do anything special since std::vector
30
+ * already implements move.
31
+ */
27
32
  Message& operator=(Message&& other) = default;
28
33
 
29
- // Disable copy constructor.
34
+ /**
35
+ * Copy constructor disabled.
36
+ */
30
37
  Message(const Message&) = delete;
31
38
 
32
- // Disable copy assignment.
39
+ /**
40
+ * Copy assignment disabled.
41
+ */
33
42
  Message& operator=(const Message&) = delete;
34
43
 
35
44
  ~Message();
@@ -42,14 +51,16 @@ namespace RTC
42
51
  return this->streamId;
43
52
  }
44
53
 
54
+ void SetStreamId(uint16_t streamId);
55
+
45
56
  uint32_t GetPayloadProtocolId() const
46
57
  {
47
58
  return this->ppid;
48
59
  }
49
60
 
50
- const uint8_t* GetPayload() const
61
+ std::span<const uint8_t> GetPayload() const
51
62
  {
52
- return this->payload.data();
63
+ return this->payload;
53
64
  }
54
65
 
55
66
  size_t GetPayloadLength() const
@@ -75,9 +86,14 @@ namespace RTC
75
86
  return std::move(this->payload);
76
87
  }
77
88
 
89
+ Message Clone() const
90
+ {
91
+ return Message(this->streamId, this->ppid, this->payload);
92
+ }
93
+
78
94
  private:
79
- uint16_t streamId{ 0 };
80
- uint32_t ppid{ 0 };
95
+ uint16_t streamId;
96
+ uint32_t ppid;
81
97
  std::vector<uint8_t> payload;
82
98
  };
83
99
  } // namespace SCTP
@@ -55,11 +55,22 @@ namespace RTC
55
55
  size_t maxSendMessageSize{ 256 * 1024 };
56
56
 
57
57
  /**
58
- * The default stream priority, if not overridden by
59
- * `Association::SetStreamPriority()`. The default value is selected to be
60
- * compatible with https://www.w3.org/TR/webrtc-priority/, section 4.2-4.3.
58
+ * Send queue total size limit. It will not be possible to queue more data
59
+ * if the queue size is larger than this number.
61
60
  */
62
- uint16_t defaultStreamPriority{ 256 };
61
+ size_t maxSendBufferSize{ 2000000 };
62
+
63
+ /**
64
+ * Per stream send queue size limit. Similar to `maxSendBufferSize`, but
65
+ * limiting the size of individual streams.
66
+ */
67
+ size_t perStreamSendQueueLimit{ 2000000 };
68
+
69
+ /**
70
+ * The largest allowed message payload to be received. This value should
71
+ * be smaller than `maxReceiverWindowBufferSize`.
72
+ */
73
+ size_t maxReceiveMessageSize{ 256 * 1024 };
63
74
 
64
75
  /**
65
76
  * Maximum received window buffer size. This should be a bit larger than
@@ -72,24 +83,19 @@ namespace RTC
72
83
  */
73
84
  size_t maxReceiverWindowBufferSize{ 5 * 1024 * 1024 };
74
85
 
75
- /**
76
- * Send queue total size limit. It will not be possible to queue more data
77
- * if the queue size is larger than this number.
78
- */
79
- size_t maxSendBufferSize{ 2000000 };
80
-
81
- /**
82
- * Per stream send queue size limit. Similar to `maxSendBufferSize`, but
83
- * limiting the size of individual streams.
84
- */
85
- size_t perStreamSendQueueLimit{ 2000000 };
86
-
87
86
  /**
88
87
  * A threshold that, when the amount of data in the send buffer goes below
89
88
  * this value, will trigger `Association::OnAssociationTotalBufferedAmountLow()`.
90
89
  */
91
90
  size_t totalBufferedAmountLowThreshold{ 1800000 };
92
91
 
92
+ /**
93
+ * The default stream priority, if not overridden by
94
+ * `Association::SetStreamPriority()`. The default value is selected to be
95
+ * compatible with https://www.w3.org/TR/webrtc-priority/, section 4.2-4.3.
96
+ */
97
+ uint16_t defaultStreamPriority{ 256 };
98
+
93
99
  /**
94
100
  * Max allowed RTT value. When the RTT is measured and it's found to be
95
101
  * larger than this value, it will be discarded and not used for e.g. any
@@ -217,7 +223,7 @@ namespace RTC
217
223
  * Maximum data retransmit attempts (for DATA, I_DATA and other Chunks).
218
224
  * Set to std::nullopt for no limit.
219
225
  */
220
- std::optional<size_t> maxRetransmissions{ 10 };
226
+ std::optional<uint16_t> maxRetransmissions{ 10 };
221
227
 
222
228
  /**
223
229
  * Max.Init.Retransmits. Set to std::nullopt for no limit.
@@ -228,6 +234,7 @@ namespace RTC
228
234
 
229
235
  /**
230
236
  * Enable Partial Reliability Extension.
237
+ *
231
238
  * @see RFC 3758.
232
239
  */
233
240
  bool enablePartialReliability{ true };
@@ -256,6 +263,8 @@ namespace RTC
256
263
  ZeroChecksumAcceptableParameter::AlternateErrorDetectionMethod zeroChecksumAlternateErrorDetectionMethod{
257
264
  ZeroChecksumAcceptableParameter::AlternateErrorDetectionMethod::NONE
258
265
  };
266
+
267
+ void Dump(int indentation = 0) const;
259
268
  };
260
269
 
261
270
  /**
@@ -273,13 +282,13 @@ namespace RTC
273
282
  * received before the lifetime has expired. This is only available if
274
283
  * the peer supports Partial Reliability Extension (RFC 3758).
275
284
  */
276
- std::optional<uint64_t> lifetime{ std::nullopt };
285
+ std::optional<uint64_t> lifetimeMs{ std::nullopt };
277
286
 
278
287
  /**
279
288
  * If set, limits the number of retransmissions. This is only available
280
289
  * if the peer supports Partial Reliability Extension (RFC 3758).
281
290
  */
282
- std::optional<size_t> maxRetransmissions{ std::nullopt };
291
+ std::optional<uint16_t> maxRetransmissions{ std::nullopt };
283
292
 
284
293
  /**
285
294
  * If set, will generate lifecycle events for this message. See e.g.