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
@@ -33,6 +33,13 @@ if get_option('ms_build_tests')
33
33
  ]
34
34
  endif
35
35
 
36
+ if get_option('ms_build_fuzzer')
37
+ cpp_args += [
38
+ '-DMS_FUZZER',
39
+ '-DMS_LOG_STD'
40
+ ]
41
+ endif
42
+
36
43
  if get_option('ms_log_trace')
37
44
  cpp_args += [
38
45
  '-DMS_LOG_TRACE',
@@ -81,13 +88,11 @@ common_sources = [
81
88
  'src/DepLibUV.cpp',
82
89
  'src/DepLibWebRTC.cpp',
83
90
  'src/DepOpenSSL.cpp',
84
- # TODO: Remove once we only use built-in SCTP stack.
85
- 'src/DepUsrSCTP.cpp',
86
91
  'src/Logger.cpp',
87
92
  'src/MediaSoupErrors.cpp',
88
93
  'src/Settings.cpp',
94
+ 'src/Shared.cpp',
89
95
  'src/Worker.cpp',
90
- 'src/ChannelMessageRegistrator.cpp',
91
96
  'src/Utils/BitStream.cpp',
92
97
  'src/Utils/Crypto.cpp',
93
98
  'src/Utils/File.cpp',
@@ -102,6 +107,7 @@ common_sources = [
102
107
  'src/handles/UnixStreamSocketHandle.cpp',
103
108
  'src/Channel/ChannelNotifier.cpp',
104
109
  'src/Channel/ChannelRequest.cpp',
110
+ 'src/Channel/ChannelMessageRegistrator.cpp',
105
111
  'src/Channel/ChannelNotification.cpp',
106
112
  'src/Channel/ChannelSocket.cpp',
107
113
  'src/RTC/ActiveSpeakerObserver.cpp',
@@ -123,13 +129,10 @@ common_sources = [
123
129
  'src/RTC/RtcLogger.cpp',
124
130
  'src/RTC/RtpListener.cpp',
125
131
  'src/RTC/RtpObserver.cpp',
126
- # TODO: Remove once we only use built-in SCTP stack.
127
- 'src/RTC/SctpAssociation.cpp',
128
132
  'src/RTC/SctpListener.cpp',
129
133
  'src/RTC/SenderBandwidthEstimator.cpp',
130
134
  'src/RTC/SeqManager.cpp',
131
135
  'src/RTC/Serializable.cpp',
132
- 'src/RTC/Shared.cpp',
133
136
  'src/RTC/SimpleConsumer.cpp',
134
137
  'src/RTC/SimulcastConsumer.cpp',
135
138
  'src/RTC/SrtpSession.cpp',
@@ -207,8 +210,16 @@ common_sources = [
207
210
  'src/RTC/SCTP/association/StateCookie.cpp',
208
211
  'src/RTC/SCTP/association/StreamResetHandler.cpp',
209
212
  'src/RTC/SCTP/association/TransmissionControlBlock.cpp',
213
+ 'src/RTC/SCTP/rx/DataTracker.cpp',
214
+ 'src/RTC/SCTP/rx/InterleavedReassemblyStreams.cpp',
215
+ 'src/RTC/SCTP/rx/ReassemblyQueue.cpp',
216
+ 'src/RTC/SCTP/rx/TraditionalReassemblyStreams.cpp',
217
+ 'src/RTC/SCTP/tx/OutstandingData.cpp',
210
218
  'src/RTC/SCTP/tx/RetransmissionErrorCounter.cpp',
219
+ 'src/RTC/SCTP/tx/RetransmissionQueue.cpp',
211
220
  'src/RTC/SCTP/tx/RetransmissionTimeout.cpp',
221
+ 'src/RTC/SCTP/tx/RoundRobinSendQueue.cpp',
222
+ 'src/RTC/SCTP/tx/StreamScheduler.cpp',
212
223
  'src/RTC/SCTP/packet/Packet.cpp',
213
224
  'src/RTC/SCTP/packet/TLV.cpp',
214
225
  'src/RTC/SCTP/packet/UserData.cpp',
@@ -265,6 +276,7 @@ common_sources = [
265
276
  'src/RTC/SCTP/packet/errorCauses/ProtocolViolationErrorCause.cpp',
266
277
  'src/RTC/SCTP/packet/errorCauses/UnknownErrorCause.cpp',
267
278
  'src/RTC/SCTP/public/AssociationMetrics.cpp',
279
+ 'src/RTC/SCTP/public/SctpOptions.cpp',
268
280
  'src/RTC/SCTP/public/Message.cpp',
269
281
  ]
270
282
 
@@ -294,14 +306,6 @@ libsrtp3_proj = subproject(
294
306
  ],
295
307
  )
296
308
 
297
- usrsctp_proj = subproject(
298
- 'usrsctp',
299
- default_options: [
300
- 'warning_level=0',
301
- 'sctp_build_programs=false',
302
- ],
303
- )
304
-
305
309
  abseil_cpp_proj = subproject(
306
310
  'abseil-cpp',
307
311
  default_options: [
@@ -329,7 +333,6 @@ dependencies = [
329
333
  openssl_proj.get_variable('openssl_dep'),
330
334
  libuv_proj.get_variable('libuv_dep'),
331
335
  libsrtp3_proj.get_variable('libsrtp3_dep'),
332
- usrsctp_proj.get_variable('usrsctp_dep'),
333
336
  flatbuffers_proj.get_variable('flatbuffers_dep'),
334
337
  flatbuffers_generator_dep,
335
338
  libwebrtc_dep,
@@ -341,7 +344,6 @@ link_whole = [
341
344
  openssl_proj.get_variable('libssl_lib'),
342
345
  libuv_proj.get_variable('libuv'),
343
346
  libsrtp3_proj.get_variable('libsrtp3'),
344
- usrsctp_proj.get_variable('usrsctp'),
345
347
  flatbuffers_proj.get_variable('flatbuffers_lib'),
346
348
  libwebrtc,
347
349
  ]
@@ -433,6 +435,13 @@ executable(
433
435
  cpp_args: cpp_args + ['-DMS_EXECUTABLE'],
434
436
  )
435
437
 
438
+ mock_sources = [
439
+ 'mocks/src/MockShared.cpp',
440
+ 'mocks/src/handles/MockBackoffTimerHandle.cpp',
441
+ 'mocks/src/Channel/MockChannelMessageRegistrator.cpp',
442
+ 'mocks/src/RTC/SCTP/association/MockTransmissionControlBlockContext.cpp',
443
+ ]
444
+
436
445
  test_sources = [
437
446
  'test/src/tests.cpp',
438
447
  'test/src/testHelpers.cpp',
@@ -480,11 +489,21 @@ test_sources = [
480
489
  'test/src/RTC/RTCP/TestPacket.cpp',
481
490
  'test/src/RTC/RTCP/TestXr.cpp',
482
491
  'test/src/RTC/SCTP/sctpCommon.cpp',
483
- 'test/src/RTC/SCTP/association/TestStateCookie.cpp',
492
+ 'test/src/RTC/SCTP/association/TestHeartbeatHandler.cpp',
484
493
  'test/src/RTC/SCTP/association/TestNegotiatedCapabilities.cpp',
485
- 'test/src/RTC/SCTP/common/TestUnwrappedSequenceNumber.cpp',
494
+ 'test/src/RTC/SCTP/association/TestStateCookie.cpp',
495
+ 'test/src/RTC/SCTP/association/TestTransmissionControlBlock.cpp',
496
+ 'test/src/RTC/SCTP/rx/TestDataTracker.cpp',
497
+ 'test/src/RTC/SCTP/rx/TestInterleavedReassemblyStreams.cpp',
498
+ 'test/src/RTC/SCTP/rx/TestReassemblyQueue.cpp',
499
+ 'test/src/RTC/SCTP/rx/TestTraditionalReassemblyStreams.cpp',
500
+ 'test/src/RTC/SCTP/tx/TestOutstandingData.cpp',
486
501
  'test/src/RTC/SCTP/tx/TestRetransmissionErrorCounter.cpp',
502
+ 'test/src/RTC/SCTP/tx/TestRetransmissionQueue.cpp',
487
503
  'test/src/RTC/SCTP/tx/TestRetransmissionTimeout.cpp',
504
+ 'test/src/RTC/SCTP/tx/TestRoundRobinSendQueue.cpp',
505
+ 'test/src/RTC/SCTP/tx/TestOutstandingData.cpp',
506
+ 'test/src/RTC/SCTP/tx/TestStreamScheduler.cpp',
488
507
  'test/src/RTC/SCTP/packet/TestPacket.cpp',
489
508
  'test/src/RTC/SCTP/packet/TestChunk.cpp',
490
509
  'test/src/RTC/SCTP/packet/TestParameter.cpp',
@@ -545,6 +564,7 @@ test_sources = [
545
564
  'test/src/Utils/TestNumber.cpp',
546
565
  'test/src/Utils/TestString.cpp',
547
566
  'test/src/Utils/TestTime.cpp',
567
+ 'test/src/Utils/TestUnwrappedSequenceNumber.cpp',
548
568
  ]
549
569
 
550
570
  mediasoup_worker_test = executable(
@@ -553,10 +573,9 @@ mediasoup_worker_test = executable(
553
573
  install: true,
554
574
  install_tag: 'mediasoup-worker-test',
555
575
  dependencies: dependencies,
556
- sources: common_sources + test_sources,
576
+ sources: common_sources + test_sources + mock_sources,
557
577
  include_directories: include_directories(
558
578
  'include',
559
- 'test/include',
560
579
  ),
561
580
  cpp_args: cpp_args,
562
581
  )
@@ -573,10 +592,9 @@ mediasoup_worker_test_asan_address = executable(
573
592
  install: true,
574
593
  install_tag: 'mediasoup-worker-test-asan-address',
575
594
  dependencies: dependencies,
576
- sources: common_sources + test_sources,
595
+ sources: common_sources + test_sources + mock_sources,
577
596
  include_directories: include_directories(
578
597
  'include',
579
- 'test/include',
580
598
  ),
581
599
  cpp_args: cpp_args + [
582
600
  '-g',
@@ -601,10 +619,9 @@ mediasoup_worker_test_asan_undefined = executable(
601
619
  install: true,
602
620
  install_tag: 'mediasoup-worker-test-asan-undefined',
603
621
  dependencies: dependencies,
604
- sources: common_sources + test_sources,
622
+ sources: common_sources + test_sources + mock_sources,
605
623
  include_directories: include_directories(
606
624
  'include',
607
- 'test/include',
608
625
  ),
609
626
  cpp_args: cpp_args + [
610
627
  '-g',
@@ -623,7 +640,7 @@ test(
623
640
  workdir: meson.project_source_root(),
624
641
  )
625
642
 
626
- fuzzer_sources = common_sources + [
643
+ fuzzer_sources = [
627
644
  'fuzzer/src/fuzzer.cpp',
628
645
  'fuzzer/src/FuzzerUtils.cpp',
629
646
  'fuzzer/src/RTC/FuzzerDtlsTransport.cpp',
@@ -665,7 +682,7 @@ fuzzer_sources = common_sources + [
665
682
  'fuzzer/src/RTC/RTCP/FuzzerSenderReport.cpp',
666
683
  'fuzzer/src/RTC/RTCP/FuzzerXr.cpp',
667
684
  'fuzzer/src/RTC/SCTP/association/FuzzerStateCookie.cpp',
668
- 'fuzzer/src/RTC/SCTP/packet/FuzzerPacket.cpp'
685
+ 'fuzzer/src/RTC/SCTP/packet/FuzzerPacket.cpp',
669
686
  ]
670
687
 
671
688
  executable(
@@ -674,13 +691,12 @@ executable(
674
691
  install: true,
675
692
  install_tag: 'mediasoup-worker-fuzzer',
676
693
  dependencies: dependencies,
677
- sources: fuzzer_sources,
694
+ sources: common_sources + fuzzer_sources + mock_sources,
678
695
  include_directories: include_directories(
679
696
  'include',
680
- 'fuzzer/include',
697
+ 'fuzzer/include'
681
698
  ),
682
699
  cpp_args: cpp_args + [
683
- '-DMS_LOG_STD',
684
700
  '-g',
685
701
  '-O3',
686
702
  '-fno-omit-frame-pointer',
@@ -1,7 +1,8 @@
1
- option('ms_build_tests', type: 'boolean', value: false, description: 'Whether to build mediasoup worker tests')
2
1
  option('ms_log_trace', type: 'boolean', value: false, description: 'Logs the current method/function if current log level is "debug"')
3
2
  option('ms_log_file_line', type: 'boolean', value: false, description: 'Logging macros print more verbose information, including current file and line')
4
3
  option('ms_rtc_logger_rtp', type: 'boolean', value: false, description: 'Prints a line with information for each processed RTP packet')
5
4
  option('ms_dump_rtp_payload_descriptor', type: 'boolean', value: false, description: 'RTC::RTP::Packet::Dump() method also dumps payload descriptor details')
6
5
  option('ms_dump_rtp_shared_packet_memory_usage', type: 'boolean', value: false, description: 'prints information about total memory allocated by RTC::RTP::SharedPacket instances')
7
6
  option('ms_disable_liburing', type: 'boolean', value: false, description: 'When set to true, disables liburing integration despite current host supports it')
7
+ option('ms_build_tests', type: 'boolean', value: false, description: 'Must be enabled when building mediasoup worker tests')
8
+ option('ms_build_fuzzer', type: 'boolean', value: false, description: 'Must be enabled when building mediasoup worker fuzzer')
@@ -0,0 +1,45 @@
1
+ #ifndef MS_MOCKS_MOCK_CHANNEL_MESSAGE_REGISTRATOR_HPP
2
+ #define MS_MOCKS_MOCK_CHANNEL_MESSAGE_REGISTRATOR_HPP
3
+
4
+ #include "Channel/ChannelMessageRegistratorInterface.hpp"
5
+ // TODO: We should have a ChannelSocketInterface class instead.
6
+ #include "Channel/ChannelSocket.hpp"
7
+ #include <string>
8
+ #include <unordered_map>
9
+
10
+ namespace mocks
11
+ {
12
+ namespace Channel
13
+ {
14
+ class MockChannelMessageRegistrator : public ::Channel::ChannelMessageRegistratorInterface
15
+ {
16
+ public:
17
+ explicit MockChannelMessageRegistrator();
18
+
19
+ ~MockChannelMessageRegistrator() override;
20
+
21
+ public:
22
+ flatbuffers::Offset<FBS::Worker::ChannelMessageHandlers> FillBuffer(
23
+ flatbuffers::FlatBufferBuilder& builder) override;
24
+
25
+ void RegisterHandler(
26
+ const std::string& id,
27
+ ::Channel::ChannelSocket::RequestHandler* channelRequestHandler,
28
+ ::Channel::ChannelSocket::NotificationHandler* channelNotificationHandler) override;
29
+
30
+ void UnregisterHandler(const std::string& id) override;
31
+
32
+ ::Channel::ChannelSocket::RequestHandler* GetChannelRequestHandler(const std::string& id) override;
33
+
34
+ ::Channel::ChannelSocket::NotificationHandler* GetChannelNotificationHandler(
35
+ const std::string& id) override;
36
+
37
+ private:
38
+ std::unordered_map<std::string, ::Channel::ChannelSocket::RequestHandler*> mapChannelRequestHandlers;
39
+ std::unordered_map<std::string, ::Channel::ChannelSocket::NotificationHandler*>
40
+ mapChannelNotificationHandlers;
41
+ };
42
+ } // namespace Channel
43
+ } // namespace mocks
44
+
45
+ #endif
@@ -0,0 +1,90 @@
1
+ #ifndef MS_MOCKS_MOCK_SHARED_HPP
2
+ #define MS_MOCKS_MOCK_SHARED_HPP
3
+
4
+ #include "Channel/ChannelNotifier.hpp"
5
+ #include "Channel/ChannelSocket.hpp"
6
+ #include "SharedInterface.hpp"
7
+ #include "mocks/include/Channel/MockChannelMessageRegistrator.hpp"
8
+ #include "mocks/include/handles/MockBackoffTimerHandle.hpp"
9
+ #include <map>
10
+ #include <string>
11
+ #include <string_view>
12
+
13
+ namespace mocks
14
+ {
15
+ class MockShared : public SharedInterface
16
+ {
17
+ public:
18
+ explicit MockShared(std::function<uint64_t()> getTimeMs);
19
+
20
+ ~MockShared() override = default;
21
+
22
+ public:
23
+ ::Channel::ChannelMessageRegistratorInterface* GetChannelMessageRegistrator() override
24
+ {
25
+ return this->channelMessageRegistrator.get();
26
+ }
27
+
28
+ ::Channel::ChannelNotifier* GetChannelNotifier() override
29
+ {
30
+ return this->channelNotifier.get();
31
+ }
32
+
33
+ TimerHandleInterface* CreateTimer(TimerHandleInterface::Listener* listener) override;
34
+
35
+ BackoffTimerHandleInterface* CreateBackoffTimer(
36
+ const BackoffTimerHandleInterface::BackoffTimerHandleOptions& options) override;
37
+
38
+ uint64_t GetTimeMs() override
39
+ {
40
+ return this->getTimeMs();
41
+ }
42
+
43
+ uint64_t GetTimeUs() override
44
+ {
45
+ return GetTimeMs() * 1000;
46
+ }
47
+
48
+ uint64_t GetTimeNs() override
49
+ {
50
+ return GetTimeMs() * 1000 * 1000;
51
+ }
52
+
53
+ int64_t GetTimeMsInt64() override
54
+ {
55
+ return static_cast<int64_t>(GetTimeMs());
56
+ }
57
+
58
+ int64_t GetTimeUsInt64() override
59
+ {
60
+ return static_cast<int64_t>(GetTimeUs());
61
+ }
62
+
63
+ // Methods for testing.
64
+ public:
65
+ MockBackoffTimerHandle* GetBackoffTimer(const std::string_view label) const
66
+ {
67
+ const auto it = this->backoffTimers.find(std::string(label));
68
+
69
+ if (it != this->backoffTimers.end())
70
+ {
71
+ return it->second;
72
+ }
73
+ else
74
+ {
75
+ return nullptr;
76
+ }
77
+ }
78
+
79
+ private:
80
+ // Given by argument.
81
+ const std::function<uint64_t()> getTimeMs;
82
+ // Others.
83
+ std::unique_ptr<::Channel::ChannelSocket> channelSocket;
84
+ std::unique_ptr<mocks::Channel::MockChannelMessageRegistrator> channelMessageRegistrator;
85
+ std::unique_ptr<::Channel::ChannelNotifier> channelNotifier;
86
+ std::map<std::string /*label*/, MockBackoffTimerHandle* /*backoffTimer*/> backoffTimers;
87
+ };
88
+ } // namespace mocks
89
+
90
+ #endif
@@ -0,0 +1,308 @@
1
+ #ifndef MS_MOCKS_RTC_SCTP_MOCK_ASSOCIATION_LISTENER_HPP
2
+ #define MS_MOCKS_RTC_SCTP_MOCK_ASSOCIATION_LISTENER_HPP
3
+
4
+ #include "RTC/SCTP/public/AssociationListenerInterface.hpp"
5
+ #include <deque>
6
+ #include <map>
7
+ #include <set>
8
+ #include <string>
9
+ #include <vector>
10
+
11
+ namespace mocks
12
+ {
13
+ namespace RTC
14
+ {
15
+ namespace SCTP
16
+ {
17
+ class MockAssociationListener : public ::RTC::SCTP::AssociationListenerInterface
18
+ {
19
+ public:
20
+ bool OnAssociationSendData(const uint8_t* data, size_t len) override
21
+ {
22
+ this->sentPackets.emplace_back(data, data + len);
23
+
24
+ return true;
25
+ }
26
+
27
+ void OnAssociationConnecting() override
28
+ {
29
+ this->connecting = true;
30
+ }
31
+
32
+ void OnAssociationConnected() override
33
+ {
34
+ this->connecting = false;
35
+ this->connected = true;
36
+ }
37
+
38
+ void OnAssociationFailed(
39
+ ::RTC::SCTP::Types::ErrorKind errorKind, std::string_view errorMessage) override
40
+ {
41
+ this->connecting = false;
42
+ this->connected = false;
43
+ this->failed = true;
44
+ this->failedErrorKind = errorKind;
45
+ this->failedErrorMessage = errorMessage;
46
+ }
47
+
48
+ void OnAssociationClosed(
49
+ ::RTC::SCTP::Types::ErrorKind errorKind, std::string_view errorMessage) override
50
+ {
51
+ this->connecting = false;
52
+ this->connected = false;
53
+ this->closed = true;
54
+ this->closedErrorKind = errorKind;
55
+ this->closedErrorMessage = errorMessage;
56
+ }
57
+
58
+ void OnAssociationRestarted() override
59
+ {
60
+ this->restarted = true;
61
+ }
62
+
63
+ void OnAssociationError(
64
+ ::RTC::SCTP::Types::ErrorKind errorKind, std::string_view errorMessage) override
65
+ {
66
+ this->connecting = false;
67
+ this->connected = false;
68
+ this->errored = true;
69
+ this->erroredErrorKind = errorKind;
70
+ this->erroredErrorMessage = errorMessage;
71
+ }
72
+
73
+ void OnAssociationMessageReceived(::RTC::SCTP::Message message) override
74
+ {
75
+ this->receivedMessages.emplace_back(std::move(message));
76
+ }
77
+
78
+ void OnAssociationStreamsResetPerformed(std::span<const uint16_t> /*outboundStreamIds*/) override
79
+ {
80
+ // TODO: Do something here for tests.
81
+ }
82
+
83
+ void OnAssociationStreamsResetFailed(
84
+ std::span<const uint16_t> /*outboundStreamIds*/, std::string_view /*errorMessage*/) override
85
+ {
86
+ // TODO: Do something here for tests.
87
+ }
88
+
89
+ void OnAssociationInboundStreamsReset(std::span<const uint16_t> /*inboundStreamIds*/) override
90
+ {
91
+ // TODO: Do something here for tests.
92
+ }
93
+
94
+ void OnAssociationStreamBufferedAmountLow(uint16_t streamId) override
95
+ {
96
+ ++this->onStreamBufferedAmountLowCalls[streamId];
97
+ }
98
+
99
+ void OnAssociationTotalBufferedAmountLow() override
100
+ {
101
+ ++this->onTotalBufferedAmountLowCalls;
102
+ }
103
+
104
+ bool OnAssociationIsTransportReadyForSctp() override
105
+ {
106
+ return this->transportReady;
107
+ }
108
+
109
+ void OnAssociationLifecycleMessageFullySent(uint64_t lifecycleId) override
110
+ {
111
+ this->onAssociationLifecycleMessageFullySentCalls.insert(lifecycleId);
112
+ }
113
+
114
+ void OnAssociationLifecycleMessageExpired(uint64_t lifecycleId, bool maybeDelivered) override
115
+ {
116
+ this->onAssociationLifecycleMessageExpiredCalls[lifecycleId] = maybeDelivered;
117
+ }
118
+
119
+ void OnAssociationLifecycleMessageDelivered(uint64_t lifecycleId) override
120
+ {
121
+ this->onAssociationLifecycleMessageDeliveredCalls.insert(lifecycleId);
122
+ }
123
+
124
+ void OnAssociationLifecycleMessageEnd(uint64_t lifecycleId) override
125
+ {
126
+ this->onAssociationLifecycleMessageEndCalls.insert(lifecycleId);
127
+ }
128
+
129
+ // Methods for testing.
130
+ public:
131
+ bool IsConnecting() const
132
+ {
133
+ return this->connecting;
134
+ }
135
+
136
+ bool IsConnected() const
137
+ {
138
+ return this->connected;
139
+ }
140
+
141
+ bool HasRestarted() const
142
+ {
143
+ return this->restarted;
144
+ }
145
+
146
+ bool HasFailed() const
147
+ {
148
+ return this->failed;
149
+ }
150
+
151
+ ::RTC::SCTP::Types::ErrorKind GetFailedErrorKind() const
152
+ {
153
+ return this->failedErrorKind;
154
+ }
155
+
156
+ const std::string& GetFailedErrorMessage() const
157
+ {
158
+ return this->failedErrorMessage;
159
+ }
160
+
161
+ bool IsClosed() const
162
+ {
163
+ return this->closed;
164
+ }
165
+
166
+ ::RTC::SCTP::Types::ErrorKind GetClosedErrorKind() const
167
+ {
168
+ return this->closedErrorKind;
169
+ }
170
+
171
+ const std::string& GetClosedErrorMessage() const
172
+ {
173
+ return this->closedErrorMessage;
174
+ }
175
+
176
+ bool HasErrored() const
177
+ {
178
+ return this->errored;
179
+ }
180
+
181
+ ::RTC::SCTP::Types::ErrorKind GetErroredErrorKind() const
182
+ {
183
+ return this->erroredErrorKind;
184
+ }
185
+
186
+ const std::string& GetErroredErrorMessage() const
187
+ {
188
+ return this->erroredErrorMessage;
189
+ }
190
+
191
+ bool HasOnStreamBufferedAmountLowBeenCalledWithStreamId(uint64_t streamId) const
192
+ {
193
+ return this->onStreamBufferedAmountLowCalls.contains(streamId);
194
+ }
195
+
196
+ size_t CountOnStreamBufferedAmountLowCallsWithStreamId(uint64_t streamId) const
197
+ {
198
+ if (!this->onStreamBufferedAmountLowCalls.contains(streamId))
199
+ {
200
+ return 0;
201
+ }
202
+
203
+ return this->onStreamBufferedAmountLowCalls.at(streamId);
204
+ }
205
+
206
+ size_t CountOnTotalBufferedAmountLowCalls() const
207
+ {
208
+ return this->onTotalBufferedAmountLowCalls;
209
+ }
210
+
211
+ bool HasSentPackets() const
212
+ {
213
+ return !this->sentPackets.empty();
214
+ }
215
+
216
+ bool HasReceivedMessages() const
217
+ {
218
+ return !this->receivedMessages.empty();
219
+ }
220
+
221
+ std::vector<uint8_t> ConsumeFirstSentPacket()
222
+ {
223
+ if (this->sentPackets.empty())
224
+ {
225
+ return {};
226
+ }
227
+
228
+ const auto packet = std::move(this->sentPackets.front());
229
+
230
+ this->sentPackets.pop_front();
231
+
232
+ return packet;
233
+ }
234
+
235
+ std::optional<::RTC::SCTP::Message> ConsumeFirstReceivedMessage()
236
+ {
237
+ if (this->receivedMessages.empty())
238
+ {
239
+ return std::nullopt;
240
+ }
241
+
242
+ auto message = std::move(this->receivedMessages.front());
243
+
244
+ this->receivedMessages.pop_front();
245
+
246
+ return message;
247
+ }
248
+
249
+ bool IsTransportReady() const
250
+ {
251
+ return this->transportReady;
252
+ }
253
+
254
+ bool HasOnAssociationLifecycleMessageFullySentBeenCalledWithLifecycleId(uint64_t lifecycleId) const
255
+ {
256
+ return this->onAssociationLifecycleMessageFullySentCalls.contains(lifecycleId);
257
+ }
258
+
259
+ bool HasOnAssociationLifecycleMessageExpiredSentBeenCalledWithLifecycleId(
260
+ uint64_t lifecycleId, bool maybeDelivered) const
261
+ {
262
+ if (!this->onAssociationLifecycleMessageExpiredCalls.contains(lifecycleId))
263
+ {
264
+ return false;
265
+ }
266
+
267
+ return this->onAssociationLifecycleMessageExpiredCalls.at(lifecycleId) == maybeDelivered;
268
+ }
269
+
270
+ bool HasOnAssociationLifecycleMessageDeliveredBeenCalledWithLifecycleId(uint64_t lifecycleId) const
271
+ {
272
+ return this->onAssociationLifecycleMessageDeliveredCalls.contains(lifecycleId);
273
+ }
274
+
275
+ bool HasOnAssociationLifecycleMessageEndBeenCalledWithLifecycleId(uint64_t lifecycleId) const
276
+ {
277
+ return this->onAssociationLifecycleMessageEndCalls.contains(lifecycleId);
278
+ }
279
+
280
+ private:
281
+ // Observable state for tests.
282
+ bool connecting{ false };
283
+ bool connected{ false };
284
+ bool restarted{ false };
285
+ bool failed{ false };
286
+ ::RTC::SCTP::Types::ErrorKind failedErrorKind;
287
+ std::string failedErrorMessage;
288
+ bool closed{ false };
289
+ ::RTC::SCTP::Types::ErrorKind closedErrorKind;
290
+ std::string closedErrorMessage;
291
+ bool errored{ false };
292
+ ::RTC::SCTP::Types::ErrorKind erroredErrorKind;
293
+ std::string erroredErrorMessage;
294
+ std::map<uint16_t /*streamId*/, size_t /*count*/> onStreamBufferedAmountLowCalls;
295
+ size_t onTotalBufferedAmountLowCalls{ 0 };
296
+ std::deque<std::vector<uint8_t>> sentPackets;
297
+ std::deque<::RTC::SCTP::Message> receivedMessages;
298
+ bool transportReady{ true };
299
+ std::set<uint64_t /*lifecycleId*/> onAssociationLifecycleMessageFullySentCalls;
300
+ std::map<uint64_t /*lifecycleId*/, bool /*maybeDelivered*/> onAssociationLifecycleMessageExpiredCalls;
301
+ std::set<uint64_t /*lifecycleId*/> onAssociationLifecycleMessageDeliveredCalls;
302
+ std::set<uint64_t /*lifecycleId*/> onAssociationLifecycleMessageEndCalls;
303
+ };
304
+ } // namespace SCTP
305
+ } // namespace RTC
306
+ } // namespace mocks
307
+
308
+ #endif