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
@@ -2,20 +2,20 @@
2
2
  #define MS_RTC_RTP_RTP_STREAM_HPP
3
3
 
4
4
  #include "common.hpp"
5
- #include "DepLibUV.hpp"
6
5
  #include "FBS/rtpStream.h"
7
- #include "RTC/RTCP/FeedbackPsFir.hpp" // IWYU pragma: export
8
- #include "RTC/RTCP/FeedbackPsPli.hpp" // IWYU pragma: export
9
- #include "RTC/RTCP/FeedbackRtpNack.hpp" // IWYU pragma: export
10
- #include "RTC/RTCP/Packet.hpp" // IWYU pragma: export
11
- #include "RTC/RTCP/ReceiverReport.hpp" // IWYU pragma: export
12
- #include "RTC/RTCP/Sdes.hpp" // IWYU pragma: export
13
- #include "RTC/RTCP/SenderReport.hpp" // IWYU pragma: export
14
- #include "RTC/RTCP/XrDelaySinceLastRr.hpp" // IWYU pragma: export
15
- #include "RTC/RTCP/XrReceiverReferenceTime.hpp" // IWYU pragma: export
6
+ #include "RTC/RTCP/FeedbackPsFir.hpp"
7
+ #include "RTC/RTCP/FeedbackPsPli.hpp"
8
+ #include "RTC/RTCP/FeedbackRtpNack.hpp"
9
+ #include "RTC/RTCP/Packet.hpp"
10
+ #include "RTC/RTCP/ReceiverReport.hpp"
11
+ #include "RTC/RTCP/Sdes.hpp"
12
+ #include "RTC/RTCP/SenderReport.hpp"
13
+ #include "RTC/RTCP/XrDelaySinceLastRr.hpp"
14
+ #include "RTC/RTCP/XrReceiverReferenceTime.hpp"
16
15
  #include "RTC/RTP/Packet.hpp"
17
16
  #include "RTC/RTP/RtxStream.hpp"
18
17
  #include "RTC/RtpDictionaries.hpp"
18
+ #include "SharedInterface.hpp"
19
19
  #include <string>
20
20
  #include <vector>
21
21
 
@@ -61,7 +61,11 @@ namespace RTC
61
61
  };
62
62
 
63
63
  public:
64
- RtpStream(RTP::RtpStream::Listener* listener, RTP::RtpStream::Params& params, uint8_t initialScore);
64
+ RtpStream(
65
+ RTP::RtpStream::Listener* listener,
66
+ SharedInterface* shared,
67
+ RTP::RtpStream::Params& params,
68
+ uint8_t initialScore);
65
69
  virtual ~RtpStream();
66
70
 
67
71
  flatbuffers::Offset<FBS::RtpStream::Dump> FillBuffer(flatbuffers::FlatBufferBuilder& builder) const;
@@ -162,7 +166,7 @@ namespace RTC
162
166
  }
163
167
  uint64_t GetActiveMs() const
164
168
  {
165
- return DepLibUV::GetTimeMs() - this->activeSinceMs;
169
+ return this->shared->GetTimeMs() - this->activeSinceMs;
166
170
  }
167
171
 
168
172
  protected:
@@ -185,6 +189,7 @@ namespace RTC
185
189
  protected:
186
190
  // Given as argument.
187
191
  RTP::RtpStream::Listener* listener{ nullptr };
192
+ SharedInterface* shared{ nullptr };
188
193
  Params params;
189
194
  // Others.
190
195
  // https://tools.ietf.org/html/rfc3550#appendix-A.1 stuff.
@@ -1,11 +1,11 @@
1
1
  #ifndef MS_RTC_RTP_RTP_STREAM_RECV_HPP
2
2
  #define MS_RTC_RTP_RTP_STREAM_RECV_HPP
3
3
 
4
+ #include "handles/TimerHandleInterface.hpp"
4
5
  #include "RTC/NackGenerator.hpp"
5
6
  #include "RTC/RTCP/XrDelaySinceLastRr.hpp"
6
7
  #include "RTC/RTP/RtpStream.hpp"
7
8
  #include "RTC/RateCalculator.hpp"
8
- #include "handles/TimerHandle.hpp"
9
9
  #include <vector>
10
10
 
11
11
  namespace RTC
@@ -14,7 +14,7 @@ namespace RTC
14
14
  {
15
15
  class RtpStreamRecv : public RTP::RtpStream,
16
16
  public RTC::NackGenerator::Listener,
17
- public TimerHandle::Listener
17
+ public TimerHandleInterface::Listener
18
18
  {
19
19
  public:
20
20
  class Listener : public RTP::RtpStream::Listener
@@ -30,7 +30,8 @@ namespace RTC
30
30
  class TransmissionCounter
31
31
  {
32
32
  public:
33
- TransmissionCounter(uint8_t spatialLayers, uint8_t temporalLayers, size_t windowSize);
33
+ TransmissionCounter(
34
+ SharedInterface* shared, uint8_t spatialLayers, uint8_t temporalLayers, size_t windowSize);
34
35
  void Update(const RTP::Packet* packet);
35
36
  uint32_t GetBitrate(uint64_t nowMs);
36
37
  uint32_t GetBitrate(uint64_t nowMs, uint8_t spatialLayer, uint8_t temporalLayer);
@@ -46,6 +47,7 @@ namespace RTC
46
47
  public:
47
48
  RtpStreamRecv(
48
49
  RTP::RtpStreamRecv::Listener* listener,
50
+ SharedInterface* shared,
49
51
  RTP::RtpStream::Params& params,
50
52
  unsigned int sendNackDelayMs,
51
53
  bool useRtpInactivityCheck);
@@ -92,9 +94,9 @@ namespace RTC
92
94
  public:
93
95
  void UserOnSequenceNumberReset() override;
94
96
 
95
- /* Pure virtual methods inherited from TimerHandle. */
97
+ /* Pure virtual methods inherited from TimerHandleInterface. */
96
98
  protected:
97
- void OnTimer(TimerHandle* timer) override;
99
+ void OnTimer(TimerHandleInterface* timer) override;
98
100
 
99
101
  /* Pure virtual methods inherited from RTC::NackGenerator. */
100
102
  protected:
@@ -124,7 +126,7 @@ namespace RTC
124
126
  uint8_t firSeqNumber{ 0u };
125
127
  int32_t reportedPacketsLost{ 0 };
126
128
  std::unique_ptr<RTC::NackGenerator> nackGenerator;
127
- TimerHandle* inactivityCheckPeriodicTimer{ nullptr };
129
+ TimerHandleInterface* inactivityCheckPeriodicTimer{ nullptr };
128
130
  bool inactive{ false };
129
131
  // Valid media + valid RTX.
130
132
  TransmissionCounter transmissionCounter;
@@ -36,7 +36,10 @@ namespace RTC
36
36
 
37
37
  public:
38
38
  RtpStreamSend(
39
- RTP::RtpStreamSend::Listener* listener, RTP::RtpStream::Params& params, std::string& mid);
39
+ RTP::RtpStreamSend::Listener* listener,
40
+ SharedInterface* shared,
41
+ RTP::RtpStream::Params& params,
42
+ std::string& mid);
40
43
  ~RtpStreamSend() override;
41
44
 
42
45
  flatbuffers::Offset<FBS::RtpStream::Stats> FillBufferStats(
@@ -7,6 +7,7 @@
7
7
  #include "RTC/RTCP/SenderReport.hpp"
8
8
  #include "RTC/RTP/Packet.hpp"
9
9
  #include "RTC/RtpDictionaries.hpp"
10
+ #include "SharedInterface.hpp"
10
11
  #include <string>
11
12
 
12
13
  namespace RTC
@@ -30,7 +31,7 @@ namespace RTC
30
31
  };
31
32
 
32
33
  public:
33
- explicit RtxStream(RTP::RtxStream::Params& params);
34
+ explicit RtxStream(SharedInterface* shared, RTP::RtxStream::Params& params);
34
35
  virtual ~RtxStream();
35
36
 
36
37
  flatbuffers::Offset<FBS::RtxStream::RtxDump> FillBuffer(
@@ -87,6 +88,7 @@ namespace RTC
87
88
 
88
89
  protected:
89
90
  // Given as argument.
91
+ SharedInterface* shared{ nullptr };
90
92
  Params params;
91
93
  // Others.
92
94
  // https://tools.ietf.org/html/rfc3550#appendix-A.1 stuff.
@@ -12,7 +12,7 @@ namespace RTC
12
12
  {
13
13
  public:
14
14
  #ifdef MS_DUMP_RTP_SHARED_PACKET_MEMORY_USAGE
15
- thread_local static uint64_t allocatedMemory;
15
+ static thread_local uint64_t allocatedMemory;
16
16
  #endif
17
17
 
18
18
  public:
@@ -3,6 +3,7 @@
3
3
 
4
4
  #include "common.hpp"
5
5
  #include "RTC/RTP/Packet.hpp"
6
+ #include "SharedInterface.hpp"
6
7
  #include <vector>
7
8
 
8
9
  namespace RTC
@@ -75,8 +76,9 @@ namespace RTC
75
76
  class RtpDataCounter
76
77
  {
77
78
  public:
78
- explicit RtpDataCounter(bool ignorePaddingOnlyPackets, size_t windowSizeMs = 2500)
79
- : ignorePaddingOnlyPackets(ignorePaddingOnlyPackets), rate(windowSizeMs)
79
+ explicit RtpDataCounter(
80
+ SharedInterface* shared, bool ignorePaddingOnlyPackets, size_t windowSizeMs = 2500)
81
+ : shared(shared), ignorePaddingOnlyPackets(ignorePaddingOnlyPackets), rate(windowSizeMs)
80
82
  {
81
83
  }
82
84
 
@@ -99,6 +101,7 @@ namespace RTC
99
101
  }
100
102
 
101
103
  private:
104
+ SharedInterface* shared{ nullptr };
102
105
  // Whether the size of padding only RTP packets should not be taken into
103
106
  // account
104
107
  bool ignorePaddingOnlyPackets{ false };
@@ -10,9 +10,10 @@
10
10
  #include "RTC/RTP/Packet.hpp"
11
11
  #include "RTC/RTP/RtpStreamRecv.hpp"
12
12
  #include "RTC/RtpObserver.hpp"
13
- #include "RTC/Shared.hpp"
13
+ #include "RTC/SCTP/public/Message.hpp"
14
14
  #include "RTC/Transport.hpp"
15
15
  #include "RTC/WebRtcServer.hpp"
16
+ #include "SharedInterface.hpp"
16
17
  #include <absl/container/flat_hash_map.h>
17
18
  #include <absl/container/flat_hash_set.h>
18
19
  #include <string>
@@ -36,7 +37,7 @@ namespace RTC
36
37
  };
37
38
 
38
39
  public:
39
- explicit Router(RTC::Shared* shared, const std::string& id, Listener* listener);
40
+ explicit Router(SharedInterface* shared, const std::string& id, Listener* listener);
40
41
  ~Router() override;
41
42
 
42
43
  public:
@@ -48,8 +49,8 @@ namespace RTC
48
49
  void HandleRequest(Channel::ChannelRequest* request) override;
49
50
 
50
51
  private:
51
- RTC::Transport* GetTransportById(const std::string& transportId) const;
52
- RTC::RtpObserver* GetRtpObserverById(const std::string& rtpObserverId) const;
52
+ RTC::Transport* AssertAndGetTransportById(const std::string& transportId) const;
53
+ RTC::RtpObserver* AssertAndGetRtpObserverById(const std::string& rtpObserverId) const;
53
54
  void CheckNoTransport(const std::string& transportId) const;
54
55
  void CheckNoRtpObserver(const std::string& rtpObserverId) const;
55
56
 
@@ -96,9 +97,7 @@ namespace RTC
96
97
  void OnTransportDataProducerMessageReceived(
97
98
  RTC::Transport* transport,
98
99
  RTC::DataProducer* dataProducer,
99
- const uint8_t* msg,
100
- size_t len,
101
- uint32_t ppid,
100
+ RTC::SCTP::Message message,
102
101
  std::vector<uint16_t>& subchannels,
103
102
  std::optional<uint16_t> requiredSubchannel) override;
104
103
  void OnTransportNewDataConsumer(
@@ -120,7 +119,7 @@ namespace RTC
120
119
 
121
120
  private:
122
121
  // Passed by argument.
123
- RTC::Shared* shared{ nullptr };
122
+ SharedInterface* shared{ nullptr };
124
123
  Listener* listener{ nullptr };
125
124
  // Allocated by this.
126
125
  absl::flat_hash_map<std::string, RTC::Transport*> mapTransports;
@@ -3,7 +3,7 @@
3
3
 
4
4
  #include "RTC/Producer.hpp"
5
5
  #include "RTC/RTP/Packet.hpp"
6
- #include "RTC/Shared.hpp"
6
+ #include "SharedInterface.hpp"
7
7
  #include <string>
8
8
 
9
9
  namespace RTC
@@ -25,7 +25,7 @@ namespace RTC
25
25
  };
26
26
 
27
27
  public:
28
- RtpObserver(RTC::Shared* shared, const std::string& id, RTC::RtpObserver::Listener* listener);
28
+ RtpObserver(SharedInterface* shared, const std::string& id, RTC::RtpObserver::Listener* listener);
29
29
  ~RtpObserver() override;
30
30
 
31
31
  public:
@@ -55,7 +55,7 @@ namespace RTC
55
55
 
56
56
  protected:
57
57
  // Passed by argument.
58
- RTC::Shared* shared{ nullptr };
58
+ SharedInterface* shared{ nullptr };
59
59
 
60
60
  private:
61
61
  // Passed by argument.
@@ -2,6 +2,7 @@
2
2
  #define MS_RTC_SCTP_ASSOCIATION_HPP
3
3
 
4
4
  #include "common.hpp"
5
+ #include "handles/BackoffTimerHandleInterface.hpp"
5
6
  #include "RTC/SCTP/association/AssociationListenerDeferrer.hpp"
6
7
  #include "RTC/SCTP/association/NegotiatedCapabilities.hpp"
7
8
  #include "RTC/SCTP/association/PacketSender.hpp"
@@ -31,12 +32,13 @@
31
32
  #include "RTC/SCTP/packet/chunks/ShutdownCompleteChunk.hpp"
32
33
  #include "RTC/SCTP/packet/chunks/UnknownChunk.hpp"
33
34
  #include "RTC/SCTP/public/AssociationInterface.hpp"
34
- #include "RTC/SCTP/public/AssociationListener.hpp"
35
+ #include "RTC/SCTP/public/AssociationListenerInterface.hpp"
35
36
  #include "RTC/SCTP/public/AssociationMetrics.hpp"
36
37
  #include "RTC/SCTP/public/Message.hpp"
37
38
  #include "RTC/SCTP/public/SctpOptions.hpp"
38
39
  #include "RTC/SCTP/public/SctpTypes.hpp"
39
- #include "handles/BackoffTimerHandle.hpp"
40
+ #include "RTC/SCTP/tx/RoundRobinSendQueue.hpp"
41
+ #include "SharedInterface.hpp"
40
42
  #include <FBS/sctpParameters.h>
41
43
  #include <span>
42
44
  #include <string_view>
@@ -51,7 +53,7 @@ namespace RTC
51
53
  */
52
54
  class Association : public AssociationInterface,
53
55
  public PacketSender::Listener,
54
- public BackoffTimerHandle::Listener
56
+ public BackoffTimerHandleInterface::Listener
55
57
  {
56
58
  public:
57
59
  /**
@@ -166,7 +168,11 @@ namespace RTC
166
168
  };
167
169
 
168
170
  public:
169
- explicit Association(const SctpOptions& sctpOptions, AssociationListener* listener);
171
+ explicit Association(
172
+ const SctpOptions& sctpOptions,
173
+ AssociationListenerInterface* listener,
174
+ SharedInterface* shared,
175
+ bool isDataChannel);
170
176
 
171
177
  ~Association() override;
172
178
 
@@ -220,7 +226,7 @@ namespace RTC
220
226
  * Retrieves the latest metrics. If the Association is not fully connected,
221
227
  * `std::nullopt` will be returned.
222
228
  */
223
- std::optional<AssociationMetrics> GetMetrics() const override;
229
+ std::optional<AssociationMetrics> MakeMetrics() const override;
224
230
 
225
231
  /**
226
232
  * Returns the currently set priority for an outgoing stream. The initial
@@ -240,6 +246,12 @@ namespace RTC
240
246
  */
241
247
  void SetMaxSendMessageSize(size_t maxMessageSize) override;
242
248
 
249
+ /**
250
+ * Returns the number of bytes of data currently queued to be sent in
251
+ * total.
252
+ */
253
+ size_t GetTotalBufferedAmount() const override;
254
+
243
255
  /**
244
256
  * Returns the number of bytes of data currently queued to be sent on a
245
257
  * given stream.
@@ -257,7 +269,7 @@ namespace RTC
257
269
  * considered "low" for a given stream, which will trigger
258
270
  * `OnAssociationStreamBufferedAmountLow()` event. The default value is 0.
259
271
  */
260
- void SetBufferedAmountLowThreshold(uint16_t streamId, size_t bytes) override;
272
+ void SetStreamBufferedAmountLowThreshold(uint16_t streamId, size_t bytes) override;
261
273
 
262
274
  /**
263
275
  * Resetting streams is an asynchronous operation and the results will be
@@ -320,6 +332,23 @@ namespace RTC
320
332
  */
321
333
  void ReceiveSctpData(const uint8_t* data, size_t len) override;
322
334
 
335
+ /**
336
+ * Get negotiated max outbound streams. Returns 0 if the association is
337
+ * not yet connected.
338
+ */
339
+ uint16_t GetNegotiatedMaxOutboundStreams() const override;
340
+
341
+ /**
342
+ * Get negotiated max inbound streams. Returns 0 if the association is
343
+ * not yet connected.
344
+ */
345
+ uint16_t GetNegotiatedMaxInboundStreams() const override;
346
+
347
+ bool IsDataChannel() const override
348
+ {
349
+ return this->isDataChannel;
350
+ }
351
+
323
352
  private:
324
353
  void InternalClose(Types::ErrorKind errorKind, const std::string_view& message);
325
354
 
@@ -369,7 +398,7 @@ namespace RTC
369
398
  */
370
399
  void MayDeliverMessages();
371
400
 
372
- Types::SendMessageStatus InternalSendMessage(
401
+ Types::SendMessageStatus InternalSendMessageCheck(
373
402
  const Message& message, const SendMessageOptions& sendMessageOptions);
374
403
 
375
404
  bool ValidateReceivedPacket(const Packet* receivedPacket);
@@ -454,30 +483,31 @@ namespace RTC
454
483
 
455
484
  void AssertHasTcb() const;
456
485
 
457
- void AssertStateIsConsistent() const;
486
+ void AssertIsConsistent() const;
458
487
 
459
488
  /* Pure virtual methods inherited from PacketSender::Listener. */
460
489
  public:
461
490
  void OnPacketSenderPacketSent(PacketSender* packetSender, const Packet* packet, bool sent) override;
462
491
 
463
- /* Pure virtual methods inherited from BackoffTimerHandle::Listener. */
492
+ /* Pure virtual methods inherited from BackoffTimerHandleInterface::Listener. */
464
493
  public:
465
- void OnTimer(BackoffTimerHandle* backoffTimer, uint64_t& baseTimeoutMs, bool& stop) override;
494
+ void OnBackoffTimer(
495
+ BackoffTimerHandleInterface* backoffTimer, uint64_t& baseTimeoutMs, bool& stop) override;
466
496
 
467
497
  private:
468
498
  // SCTP options given in the constructor.
469
499
  SctpOptions sctpOptions;
470
- // Listener. It's not an `AssociationListener` but an
471
- // `AssociationListenerDeferrer` which inherits from `AssociationListener`.
472
- AssociationListenerDeferrer listener;
500
+ // Listener. It's a `AssociationListenerDeferrer` which implements
501
+ // `AssociationListenerInterface`.
502
+ AssociationListenerDeferrer associationListenerDeferrer;
503
+ SharedInterface* shared;
473
504
  // SCTP association internal state.
474
505
  State state{ State::NEW };
475
506
  // Packet sender.
476
507
  PacketSender packetSender;
477
508
  // The actual send queue implementation. As data can be sent before the
478
509
  // connection is established, this component is not in the TCB.
479
- // TODO: Implement this class.
480
- // RRSendQueue sendQueue;
510
+ RoundRobinSendQueue sendQueue;
481
511
  // To keep settings between sending of INIT Chunk and establishment of
482
512
  // the connection.
483
513
  PreTransmissionControlBlock preTcb;
@@ -485,13 +515,17 @@ namespace RTC
485
515
  // is created.
486
516
  std::unique_ptr<TransmissionControlBlock> tcb;
487
517
  // Private metrics.
488
- AssociationPrivateMetrics privateMetrics{};
518
+ AssociationPrivateMetrics privateMetrics;
489
519
  // T1-init timer.
490
- const std::unique_ptr<BackoffTimerHandle> t1InitTimer;
520
+ const std::unique_ptr<BackoffTimerHandleInterface> t1InitTimer;
491
521
  // T1-cookie timer.
492
- const std::unique_ptr<BackoffTimerHandle> t1CookieTimer;
522
+ const std::unique_ptr<BackoffTimerHandleInterface> t1CookieTimer;
493
523
  // T2-shutdown timer.
494
- const std::unique_ptr<BackoffTimerHandle> t2ShutdownTimer;
524
+ const std::unique_ptr<BackoffTimerHandleInterface> t2ShutdownTimer;
525
+ // Max SCTP Packet length.
526
+ const size_t maxPacketLength;
527
+ // Whether this is DataChannel based SCTP.
528
+ bool isDataChannel;
495
529
  };
496
530
  } // namespace SCTP
497
531
  } // namespace RTC
@@ -2,7 +2,7 @@
2
2
  #define MS_RTC_SCTP_ASSOCIATION_LISTENER_DEFERRED_HPP
3
3
 
4
4
  #include "common.hpp"
5
- #include "RTC/SCTP/public/AssociationListener.hpp"
5
+ #include "RTC/SCTP/public/AssociationListenerInterface.hpp"
6
6
  #include "RTC/SCTP/public/Message.hpp"
7
7
  #include "RTC/SCTP/public/SctpTypes.hpp"
8
8
  #include <span>
@@ -15,7 +15,7 @@ namespace RTC
15
15
  {
16
16
  namespace SCTP
17
17
  {
18
- class AssociationListenerDeferrer : public AssociationListener
18
+ class AssociationListenerDeferrer : public AssociationListenerInterface
19
19
  {
20
20
  public:
21
21
  class ScopedDeferrer
@@ -46,10 +46,10 @@ namespace RTC
46
46
  // variant can hold all cases of stored data.
47
47
  using CallbackData = std::variant<std::monostate, Message, Error, StreamReset, uint16_t>;
48
48
 
49
- using Callback = std::function<void(CallbackData, AssociationListener*)>;
49
+ using Callback = std::function<void(CallbackData, AssociationListenerInterface*)>;
50
50
 
51
51
  public:
52
- explicit AssociationListenerDeferrer(AssociationListener* innerListener);
52
+ explicit AssociationListenerDeferrer(AssociationListenerInterface* innerListener);
53
53
 
54
54
  private:
55
55
  void SetReady();
@@ -57,7 +57,7 @@ namespace RTC
57
57
  void TriggerDeferredCallbacks();
58
58
 
59
59
  public:
60
- /* Pure virtual methods inherited from RTC::STCP::AssociationListener. */
60
+ /* Pure virtual methods inherited from RTC::STCP::AssociationListenerInterface. */
61
61
  bool OnAssociationSendData(const uint8_t* data, size_t len) override;
62
62
 
63
63
  void OnAssociationConnecting() override;
@@ -87,8 +87,16 @@ namespace RTC
87
87
 
88
88
  bool OnAssociationIsTransportReadyForSctp() override;
89
89
 
90
+ void OnAssociationLifecycleMessageFullySent(uint64_t lifecycleId) override;
91
+
92
+ void OnAssociationLifecycleMessageExpired(uint64_t lifecycleId, bool maybeDelivered) override;
93
+
94
+ void OnAssociationLifecycleMessageDelivered(uint64_t lifecycleId) override;
95
+
96
+ void OnAssociationLifecycleMessageEnd(uint64_t lifecycleId) override;
97
+
90
98
  private:
91
- AssociationListener* innerListener;
99
+ AssociationListenerInterface* innerListener;
92
100
  bool ready{ false };
93
101
  std::vector<std::pair<Callback, CallbackData>> deferredCallbacks;
94
102
  };
@@ -2,12 +2,13 @@
2
2
  #define MS_RTC_SCTP_HEARTBEAT_HANDLER_HPP
3
3
 
4
4
  #include "common.hpp"
5
- #include "RTC/SCTP/association/TCBContext.hpp"
5
+ #include "handles/BackoffTimerHandleInterface.hpp"
6
+ #include "RTC/SCTP/association/TransmissionControlBlockContextInterface.hpp"
6
7
  #include "RTC/SCTP/packet/chunks/HeartbeatAckChunk.hpp"
7
8
  #include "RTC/SCTP/packet/chunks/HeartbeatRequestChunk.hpp"
8
- #include "RTC/SCTP/public/AssociationListener.hpp"
9
+ #include "RTC/SCTP/public/AssociationListenerInterface.hpp"
9
10
  #include "RTC/SCTP/public/SctpOptions.hpp"
10
- #include "handles/BackoffTimerHandle.hpp"
11
+ #include "SharedInterface.hpp"
11
12
 
12
13
  namespace RTC
13
14
  {
@@ -21,13 +22,14 @@ namespace RTC
21
22
  * still healthy and to measure the RTT. If a number of heartbeats time out,
22
23
  * the connection will eventually be closed.
23
24
  */
24
- class HeartbeatHandler : public BackoffTimerHandle::Listener
25
+ class HeartbeatHandler : public BackoffTimerHandleInterface::Listener
25
26
  {
26
27
  public:
27
28
  HeartbeatHandler(
28
- AssociationListener& associationListener,
29
+ AssociationListenerInterface& associationListener,
29
30
  const SctpOptions& sctpOptions,
30
- TCBContext* tcbContext);
31
+ SharedInterface* shared,
32
+ TransmissionControlBlockContextInterface* tcbContext);
31
33
 
32
34
  ~HeartbeatHandler() override;
33
35
 
@@ -55,21 +57,23 @@ namespace RTC
55
57
 
56
58
  void OnTimeoutTimer(uint64_t& baseTimeoutMs, bool& stop);
57
59
 
58
- /* Pure virtual methods inherited from BackoffTimerHandle::Listener. */
60
+ /* Pure virtual methods inherited from BackoffTimerHandleInterface::Listener. */
59
61
  public:
60
- void OnTimer(BackoffTimerHandle* backoffTimer, uint64_t& baseTimeoutMs, bool& stop) override;
62
+ void OnBackoffTimer(
63
+ BackoffTimerHandleInterface* backoffTimer, uint64_t& baseTimeoutMs, bool& stop) override;
61
64
 
62
65
  private:
63
- AssociationListener& associationListener;
66
+ AssociationListenerInterface& associationListener;
64
67
  const SctpOptions sctpOptions;
65
- TCBContext* tcbContext{ nullptr };
68
+ SharedInterface* shared;
69
+ TransmissionControlBlockContextInterface* tcbContext;
66
70
  // The time for a connection to be idle before a heartbeat is sent.
67
- const uint64_t intervalDurationMs{ 0 };
71
+ const uint64_t intervalDurationMs;
68
72
  // Adding RTT to the duration will add some jitter, which is good in
69
73
  // production, but less good in unit tests, which is why it can be disabled.
70
- const bool intervalDurationShouldIncludeRtt{ false };
71
- const std::unique_ptr<BackoffTimerHandle> intervalTimer;
72
- const std::unique_ptr<BackoffTimerHandle> timeoutTimer;
74
+ const bool intervalDurationShouldIncludeRtt;
75
+ const std::unique_ptr<BackoffTimerHandleInterface> intervalTimer;
76
+ const std::unique_ptr<BackoffTimerHandleInterface> timeoutTimer;
73
77
  };
74
78
  } // namespace SCTP
75
79
  } // namespace RTC
@@ -3,7 +3,7 @@
3
3
 
4
4
  #include "common.hpp"
5
5
  #include "RTC/SCTP/packet/Packet.hpp"
6
- #include "RTC/SCTP/public/AssociationListener.hpp"
6
+ #include "RTC/SCTP/public/AssociationListenerInterface.hpp"
7
7
 
8
8
  namespace RTC
9
9
  {
@@ -23,7 +23,7 @@ namespace RTC
23
23
  };
24
24
 
25
25
  public:
26
- PacketSender(Listener* listener, AssociationListener& associationListener);
26
+ PacketSender(Listener* listener, AssociationListenerInterface& associationListener);
27
27
 
28
28
  ~PacketSender();
29
29
 
@@ -43,7 +43,7 @@ namespace RTC
43
43
 
44
44
  private:
45
45
  Listener* listener;
46
- AssociationListener& associationListener;
46
+ AssociationListenerInterface& associationListener;
47
47
  };
48
48
  } // namespace SCTP
49
49
  } // namespace RTC
@@ -2,10 +2,10 @@
2
2
  #define MS_RTC_SCTP_STATE_COOKIE_HPP
3
3
 
4
4
  #include "common.hpp"
5
- #include "Utils.hpp"
6
5
  #include "RTC/SCTP/association/NegotiatedCapabilities.hpp"
7
6
  #include "RTC/SCTP/public/SctpTypes.hpp"
8
7
  #include "RTC/Serializable.hpp"
8
+ #include "Utils.hpp"
9
9
  #include <string_view>
10
10
 
11
11
  namespace RTC