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
@@ -8,3 +8,7 @@ enum SctpState: uint8 {
8
8
  CLOSED,
9
9
  }
10
10
 
11
+ table SctpNegotiatedCapabilities {
12
+ negotiated_max_outbound_streams: uint16;
13
+ negotiated_max_inbound_streams: uint16;
14
+ }
@@ -1,18 +1,12 @@
1
1
  namespace FBS.SctpParameters;
2
2
 
3
- table NumSctpStreams {
4
- os: uint16 = 1024;
5
- mis: uint16 = 1024;
6
- }
7
-
8
3
  table SctpParameters {
9
- // Port is always 5000.
10
- port: uint16 = 5000;
11
- os: uint16;
12
- mis: uint16;
13
- max_message_size: uint32;
4
+ port: uint16;
5
+ max_send_message_size: uint32;
6
+ max_receive_message_size: uint32;
14
7
  send_buffer_size: uint32;
15
- sctp_buffered_amount: uint32;
8
+ per_stream_send_queue_limit: uint32;
9
+ max_receiver_window_buffer_size: uint32;
16
10
  is_data_channel: bool;
17
11
  }
18
12
 
@@ -22,4 +16,3 @@ table SctpStreamParameters {
22
16
  max_packet_life_time: uint16 = null;
23
17
  max_retransmits: uint16 = null;
24
18
  }
25
-
@@ -1,6 +1,7 @@
1
1
  include "common.fbs";
2
2
  include "consumer.fbs";
3
3
  include "dataProducer.fbs";
4
+ include "dataConsumer.fbs";
4
5
  include "rtpParameters.fbs";
5
6
  include "sctpAssociation.fbs";
6
7
  include "sctpParameters.fbs";
@@ -86,7 +87,7 @@ table ProduceDataRequest {
86
87
  table ConsumeDataRequest {
87
88
  data_consumer_id: string (required);
88
89
  data_producer_id: string (required);
89
- type: FBS.DataProducer.Type;
90
+ type: FBS.DataConsumer.Type;
90
91
  sctp_stream_parameters: FBS.SctpParameters.SctpStreamParameters;
91
92
  label: string;
92
93
  protocol: string;
@@ -122,14 +123,13 @@ table RecvRtpHeaderExtensions {
122
123
 
123
124
  table Options {
124
125
  direct: bool = false;
125
-
126
- /// Only needed for DirectTransport. This value is handled by base Transport.
127
- max_message_size: uint32 = null;
128
126
  initial_available_outgoing_bitrate: uint32 = null;
129
127
  enable_sctp: bool = false;
130
- num_sctp_streams: FBS.SctpParameters.NumSctpStreams;
131
- max_sctp_message_size: uint32;
128
+ max_send_message_size: uint32;
129
+ max_receive_message_size: uint32;
132
130
  sctp_send_buffer_size: uint32;
131
+ sctp_per_stream_send_queue_limit: uint32;
132
+ sctp_max_receiver_window_buffer_size: uint32;
133
133
  is_data_channel: bool = false;
134
134
  }
135
135
 
@@ -149,7 +149,8 @@ table Dump {
149
149
  data_consumer_ids: [string] (required);
150
150
  recv_rtp_header_extensions: RecvRtpHeaderExtensions (required);
151
151
  rtp_listener: RtpListener (required);
152
- max_message_size: uint32;
152
+ max_send_message_size: uint32;
153
+ max_receive_message_size: uint32;
153
154
  sctp_parameters: FBS.SctpParameters.SctpParameters;
154
155
  sctp_state: FBS.SctpAssociation.SctpState = null;
155
156
  sctp_listener: SctpListener;
@@ -227,6 +228,10 @@ table SctpStateChangeNotification {
227
228
  sctp_state: FBS.SctpAssociation.SctpState;
228
229
  }
229
230
 
231
+ table SctpNegotiatedCapabilitiesNotification {
232
+ negotiated_capabilities: FBS.SctpAssociation.SctpNegotiatedCapabilities;
233
+ }
234
+
230
235
  union TraceInfo {
231
236
  BweTraceInfo,
232
237
  }
@@ -253,4 +258,3 @@ table TraceNotification {
253
258
  direction: FBS.Common.TraceDirection;
254
259
  info: TraceInfo;
255
260
  }
256
-
@@ -4,17 +4,26 @@
4
4
  #include "RTC/FuzzerDtlsTransport.hpp"
5
5
  #include "Logger.hpp"
6
6
  #include "Utils.hpp"
7
+ #include "mocks/include/MockShared.hpp"
7
8
 
8
9
  namespace
9
10
  {
10
- // NOLINTBEGIN(readability-identifier-naming)
11
+ // NOLINTNEXTLINE(readability-identifier-naming)
12
+ thread_local mocks::MockShared shared(/*getTimeMs*/
13
+ []()
14
+ {
15
+ return 1000;
16
+ });
17
+
11
18
  // DtlsTransport instance. It's reset every time DTLS handshake fails or DTLS
12
19
  // is closed.
20
+ // NOLINTNEXTLINE(readability-identifier-naming)
13
21
  thread_local RTC::DtlsTransport* dtlsTransportSingleton{ nullptr };
22
+
14
23
  // DtlsTransport Listener instance. It's reset every time the DtlsTransport
15
24
  // singletonDTLS is reset.
25
+ // NOLINTNEXTLINE(readability-identifier-naming)
16
26
  thread_local FuzzerRtcDtlsTransport::DtlsTransportListener* dtlsTransportListenerSingleton{ nullptr };
17
- // NOLINTEND(readability-identifier-naming)
18
27
  } // namespace
19
28
 
20
29
  void FuzzerRtcDtlsTransport::Fuzz(const uint8_t* data, size_t len)
@@ -31,7 +40,8 @@ void FuzzerRtcDtlsTransport::Fuzz(const uint8_t* data, size_t len)
31
40
  delete dtlsTransportListenerSingleton;
32
41
  dtlsTransportListenerSingleton = new DtlsTransportListener();
33
42
 
34
- dtlsTransportSingleton = new RTC::DtlsTransport(dtlsTransportListenerSingleton);
43
+ dtlsTransportSingleton =
44
+ new RTC::DtlsTransport(dtlsTransportListenerSingleton, std::addressof(shared));
35
45
 
36
46
  RTC::DtlsTransport::Role localRole;
37
47
  RTC::DtlsTransport::Fingerprint dtlsRemoteFingerprint;
@@ -1,8 +1,8 @@
1
1
  #include "RTC/FuzzerRateCalculator.hpp"
2
2
  #include "DepLibUV.hpp"
3
- #include "Utils.hpp"
4
3
  #include "RTC/Consts.hpp"
5
4
  #include "RTC/RateCalculator.hpp"
5
+ #include "Utils.hpp"
6
6
 
7
7
  namespace
8
8
  {
@@ -23,7 +23,7 @@ void FuzzerRtcRateCalculator::Fuzz(const uint8_t* data, size_t len)
23
23
  {
24
24
  // Trick to initialize our stuff just once.
25
25
  // NOLINTNEXTLINE(readability-identifier-naming)
26
- thread_local const int unused = init();
26
+ static thread_local const int unused = init();
27
27
 
28
28
  // Avoid [-Wunused-variable].
29
29
  (void)unused;
@@ -1,6 +1,6 @@
1
1
  #include "RTC/FuzzerSeqManager.hpp"
2
- #include "Utils.hpp"
3
2
  #include "RTC/SeqManager.hpp"
3
+ #include "Utils.hpp"
4
4
  #include <iostream>
5
5
 
6
6
  void FuzzerRtcSeqManager::Fuzz(const uint8_t* data, size_t len)
@@ -1,25 +1,25 @@
1
1
  #include "RTC/FuzzerTrendCalculator.hpp"
2
2
  #include "DepLibUV.hpp"
3
- #include "Utils.hpp"
4
3
  #include "RTC/TrendCalculator.hpp"
4
+ #include "Utils.hpp"
5
5
 
6
6
  void FuzzerRtcTrendCalculator::Fuzz(const uint8_t* data, size_t len)
7
7
  {
8
8
  RTC::TrendCalculator trend;
9
- auto now = DepLibUV::GetTimeMs();
9
+ auto nowMs = DepLibUV::GetTimeMs();
10
10
  size_t offset{ 0u };
11
11
 
12
12
  while (len >= 4u)
13
13
  {
14
14
  const auto value = Utils::Byte::Get4Bytes(data, offset);
15
15
 
16
- trend.Update(value, now);
16
+ trend.Update(value, nowMs);
17
17
  trend.GetValue();
18
- trend.Update(value, now - 1000u);
18
+ trend.Update(value, nowMs - 1000u);
19
19
  trend.GetValue();
20
20
 
21
21
  len -= 4u;
22
22
  offset += 4;
23
- now += 500u;
23
+ nowMs += 500u;
24
24
  }
25
25
  }
@@ -2,12 +2,15 @@
2
2
  #include "RTC/ICE/StunPacket.hpp"
3
3
  #include <string_view>
4
4
 
5
- static constexpr size_t ResponseFactoryBufferLength{ 65536 };
6
- alignas(4) thread_local uint8_t ResponseFactoryBuffer[ResponseFactoryBufferLength];
7
- static constexpr size_t SerializeBufferLength{ 65536 };
8
- alignas(4) thread_local uint8_t SerializeBuffer[SerializeBufferLength];
9
- static constexpr size_t CloneBufferLength{ 65536 };
10
- alignas(4) thread_local uint8_t CloneBuffer[CloneBufferLength];
5
+ namespace
6
+ {
7
+ constexpr size_t ResponseFactoryBufferLength{ 65536 };
8
+ alignas(4) thread_local uint8_t ResponseFactoryBuffer[ResponseFactoryBufferLength];
9
+ constexpr size_t SerializeBufferLength{ 65536 };
10
+ alignas(4) thread_local uint8_t SerializeBuffer[SerializeBufferLength];
11
+ constexpr size_t CloneBufferLength{ 65536 };
12
+ alignas(4) thread_local uint8_t CloneBuffer[CloneBufferLength];
13
+ } // namespace
11
14
 
12
15
  void FuzzerRtcIceStunPacket::Fuzz(const uint8_t* data, size_t len)
13
16
  {
@@ -1,8 +1,8 @@
1
1
  #include "RTC/RTP/FuzzerRetransmissionBuffer.hpp"
2
- #include "Utils.hpp"
3
2
  #include "RTC/RTP/Packet.hpp"
4
3
  #include "RTC/RTP/RetransmissionBuffer.hpp"
5
4
  #include "RTC/RTP/SharedPacket.hpp"
5
+ #include "Utils.hpp"
6
6
 
7
7
  void FuzzerRtcRtpRetransmissionBuffer::Fuzz(const uint8_t* data, size_t len)
8
8
  {
@@ -1,6 +1,17 @@
1
1
  #include "RTC/RTP/FuzzerRtpStreamSend.hpp"
2
- #include "Utils.hpp"
3
2
  #include "RTC/RTP/SharedPacket.hpp"
3
+ #include "Utils.hpp"
4
+ #include "mocks/include/MockShared.hpp"
5
+
6
+ namespace
7
+ {
8
+ // NOLINTNEXTLINE(readability-identifier-naming)
9
+ thread_local mocks::MockShared shared(/*getTimeMs*/
10
+ []()
11
+ {
12
+ return 1000;
13
+ });
14
+ } // namespace
4
15
 
5
16
  void FuzzerRtcRtpStreamSend::Fuzz(const uint8_t* data, size_t len)
6
17
  {
@@ -30,7 +41,8 @@ void FuzzerRtcRtpStreamSend::Fuzz(const uint8_t* data, size_t len)
30
41
  packet->SetSsrc(params.ssrc);
31
42
 
32
43
  std::string mid;
33
- auto* stream = new RTC::RTP::RtpStreamSend(&testRtpStreamListener, params, mid);
44
+ auto* stream = new RTC::RTP::RtpStreamSend(
45
+ std::addressof(testRtpStreamListener), std::addressof(shared), params, mid);
34
46
  size_t offset{ 0u };
35
47
 
36
48
  while (len >= 4u)
@@ -1,6 +1,6 @@
1
1
  #include "RTC/SCTP/FuzzerStateCookie.hpp"
2
- #include "Utils.hpp"
3
2
  #include "RTC/SCTP/association/StateCookie.hpp"
3
+ #include "Utils.hpp"
4
4
  #include <cstring> // std::memcpy()
5
5
 
6
6
  namespace
@@ -1,8 +1,11 @@
1
1
  #include "RTC/SCTP/packet/FuzzerPacket.hpp"
2
2
  #include "RTC/SCTP/packet/Packet.hpp"
3
3
 
4
- thread_local uint8_t PacketSerializeBuffer[65536];
5
- thread_local uint8_t PacketCloneBuffer[65536];
4
+ namespace
5
+ {
6
+ thread_local uint8_t PacketSerializeBuffer[65536];
7
+ thread_local uint8_t PacketCloneBuffer[65536];
8
+ } // namespace
6
9
 
7
10
  void FuzzerRtcSctpPacket::Fuzz(const uint8_t* data, size_t len)
8
11
  {
@@ -5,11 +5,7 @@
5
5
  #include "DepLibUV.hpp"
6
6
  #include "DepLibWebRTC.hpp"
7
7
  #include "DepOpenSSL.hpp"
8
- // TODO: Remove once we only use built-in SCTP stack.
9
- #include "DepUsrSCTP.hpp"
10
8
  #include "FuzzerUtils.hpp"
11
- #include "Settings.hpp"
12
- #include "Utils.hpp"
13
9
  #include "RTC/DtlsTransport.hpp"
14
10
  #include "RTC/FuzzerDtlsTransport.hpp"
15
11
  #include "RTC/FuzzerRateCalculator.hpp"
@@ -29,6 +25,8 @@
29
25
  #include "RTC/RTP/FuzzerRtpStreamSend.hpp"
30
26
  #include "RTC/SCTP/FuzzerStateCookie.hpp"
31
27
  #include "RTC/SCTP/packet/FuzzerPacket.hpp"
28
+ #include "Settings.hpp"
29
+ #include "Utils.hpp"
32
30
  #include <cstdlib> // std::getenv()
33
31
  #include <iostream>
34
32
  #include <sstream> // std::istringstream()
@@ -146,11 +144,6 @@ namespace
146
144
  DepLibUV::ClassInit();
147
145
  DepOpenSSL::ClassInit();
148
146
  DepLibSRTP::ClassInit();
149
- // TODO: Remove once we only use built-in SCTP stack.
150
- if (!Settings::configuration.useBuiltInSctpStack)
151
- {
152
- DepUsrSCTP::ClassInit();
153
- }
154
147
  DepLibWebRTC::ClassInit();
155
148
  Utils::Crypto::ClassInit();
156
149
  RTC::DtlsTransport::ClassInit();
@@ -163,7 +156,7 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t len)
163
156
  {
164
157
  // Trick to initialize our stuff just once.
165
158
  // NOLINTNEXTLINE(readability-identifier-naming)
166
- thread_local const int unused = init();
159
+ static thread_local const int unused = init();
167
160
 
168
161
  // Avoid [-Wunused-variable].
169
162
  (void)unused;
@@ -0,0 +1,39 @@
1
+ #ifndef MS_CHANNEL_MESSAGE_REGISTRATOR_HPP
2
+ #define MS_CHANNEL_MESSAGE_REGISTRATOR_HPP
3
+
4
+ #include "Channel/ChannelMessageRegistratorInterface.hpp"
5
+ #include "Channel/ChannelSocket.hpp"
6
+ #include <string>
7
+ #include <unordered_map>
8
+
9
+ namespace Channel
10
+ {
11
+ class ChannelMessageRegistrator : public Channel::ChannelMessageRegistratorInterface
12
+ {
13
+ public:
14
+ explicit ChannelMessageRegistrator();
15
+
16
+ ~ChannelMessageRegistrator() override;
17
+
18
+ public:
19
+ flatbuffers::Offset<FBS::Worker::ChannelMessageHandlers> FillBuffer(
20
+ flatbuffers::FlatBufferBuilder& builder) override;
21
+
22
+ void RegisterHandler(
23
+ const std::string& id,
24
+ ChannelSocket::RequestHandler* channelRequestHandler,
25
+ ChannelSocket::NotificationHandler* channelNotificationHandler) override;
26
+
27
+ void UnregisterHandler(const std::string& id) override;
28
+
29
+ ChannelSocket::RequestHandler* GetChannelRequestHandler(const std::string& id) override;
30
+
31
+ ChannelSocket::NotificationHandler* GetChannelNotificationHandler(const std::string& id) override;
32
+
33
+ private:
34
+ std::unordered_map<std::string, ChannelSocket::RequestHandler*> mapChannelRequestHandlers;
35
+ std::unordered_map<std::string, ChannelSocket::NotificationHandler*> mapChannelNotificationHandlers;
36
+ };
37
+ } // namespace Channel
38
+
39
+ #endif
@@ -0,0 +1,32 @@
1
+ #ifndef MS_CHANNEL_MESSAGE_REGISTRATOR_INTERFACE_HPP
2
+ #define MS_CHANNEL_MESSAGE_REGISTRATOR_INTERFACE_HPP
3
+
4
+ // TODO: We should have a ChannelSocketInterface class instead.
5
+ #include "Channel/ChannelSocket.hpp"
6
+ #include <string>
7
+
8
+ namespace Channel
9
+ {
10
+ class ChannelMessageRegistratorInterface
11
+ {
12
+ public:
13
+ virtual ~ChannelMessageRegistratorInterface() = default;
14
+
15
+ public:
16
+ virtual flatbuffers::Offset<FBS::Worker::ChannelMessageHandlers> FillBuffer(
17
+ flatbuffers::FlatBufferBuilder& builder) = 0;
18
+
19
+ virtual void RegisterHandler(
20
+ const std::string& id,
21
+ ChannelSocket::RequestHandler* channelRequestHandler,
22
+ ChannelSocket::NotificationHandler* channelNotificationHandler) = 0;
23
+
24
+ virtual void UnregisterHandler(const std::string& id) = 0;
25
+
26
+ virtual ChannelSocket::RequestHandler* GetChannelRequestHandler(const std::string& id) = 0;
27
+
28
+ virtual ChannelSocket::NotificationHandler* GetChannelNotificationHandler(const std::string& id) = 0;
29
+ };
30
+ } // namespace Channel
31
+
32
+ #endif
@@ -21,7 +21,7 @@ namespace Channel
21
21
  using Method = FBS::Request::Method;
22
22
 
23
23
  public:
24
- thread_local static flatbuffers::FlatBufferBuilder bufferBuilder;
24
+ static thread_local flatbuffers::FlatBufferBuilder bufferBuilder;
25
25
  static const absl::flat_hash_map<FBS::Request::Method, const char*> Method2String;
26
26
 
27
27
  public:
@@ -82,7 +82,7 @@ namespace Channel
82
82
  };
83
83
 
84
84
  public:
85
- #ifdef MS_TEST
85
+ #if defined(MS_TEST) || defined(MS_FUZZER)
86
86
  explicit ChannelSocket();
87
87
  #endif
88
88
  explicit ChannelSocket(int consumerFd, int producerFd);
@@ -41,7 +41,7 @@ public:
41
41
  }
42
42
 
43
43
  private:
44
- thread_local static uv_loop_t* loop;
44
+ static thread_local uv_loop_t* loop;
45
45
  };
46
46
 
47
47
  #endif
@@ -1,8 +1,8 @@
1
1
  #ifndef MS_DEP_LIBURING_HPP
2
2
  #define MS_DEP_LIBURING_HPP
3
3
 
4
- #include "DepLibUV.hpp"
5
4
  #include "FBS/liburing.h"
5
+ #include <uv.h>
6
6
  #include <functional>
7
7
  #include <liburing.h>
8
8
  #include <queue>
@@ -52,8 +52,8 @@ public:
52
52
  class LibUring;
53
53
 
54
54
  // Whether liburing is enabled or not after runtime checks.
55
- thread_local static bool enabled;
56
- thread_local static LibUring* liburing;
55
+ static thread_local bool enabled;
56
+ static thread_local LibUring* liburing;
57
57
 
58
58
  public:
59
59
  // Singleton.
@@ -96,9 +96,9 @@
96
96
  #define MS_LOGGER_HPP
97
97
 
98
98
  #include "common.hpp"
99
+ #include "Channel/ChannelSocket.hpp"
99
100
  #include "LogLevel.hpp"
100
101
  #include "Settings.hpp"
101
- #include "Channel/ChannelSocket.hpp"
102
102
  #include <cstdio> // std::snprintf(), std::fprintf(), stdout, stderr
103
103
  #include <cstdlib> // std::abort()
104
104
  #include <cstring>
@@ -156,10 +156,10 @@ public:
156
156
  static void ClassInit(Channel::ChannelSocket* channel);
157
157
 
158
158
  public:
159
- static const uint64_t pid;
160
- thread_local static Channel::ChannelSocket* channel;
159
+ static const uint64_t Pid;
160
+ static thread_local Channel::ChannelSocket* channel;
161
161
  static const size_t BufferSize {50000};
162
- thread_local static char buffer[];
162
+ static thread_local char buffer[];
163
163
  };
164
164
 
165
165
  /* Logging macros. */
@@ -14,7 +14,7 @@ public:
14
14
 
15
15
  public:
16
16
  static const size_t BufferSize{ 2000 };
17
- thread_local static char buffer[];
17
+ static thread_local char buffer[];
18
18
  };
19
19
 
20
20
  class MediaSoupTypeError : public MediaSoupError
@@ -1,9 +1,9 @@
1
1
  #ifndef MS_RTC_ACTIVE_SPEAKER_OBSERVER_HPP
2
2
  #define MS_RTC_ACTIVE_SPEAKER_OBSERVER_HPP
3
3
 
4
+ #include "handles/TimerHandleInterface.hpp"
4
5
  #include "RTC/RtpObserver.hpp"
5
- #include "RTC/Shared.hpp"
6
- #include "handles/TimerHandle.hpp"
6
+ #include "SharedInterface.hpp"
7
7
  #include <absl/container/flat_hash_map.h>
8
8
  #include <vector>
9
9
 
@@ -14,13 +14,15 @@
14
14
  // https://github.com/jitsi/jitsi-utils/blob/master/src/main/java/org/jitsi/utils/dsi/DominantSpeakerIdentification.java
15
15
  namespace RTC
16
16
  {
17
- class ActiveSpeakerObserver : public RTC::RtpObserver, public TimerHandle::Listener
17
+ class ActiveSpeakerObserver : public RTC::RtpObserver, public TimerHandleInterface::Listener
18
18
  {
19
19
  private:
20
20
  class Speaker
21
21
  {
22
22
  public:
23
- Speaker();
23
+ explicit Speaker(SharedInterface* shared);
24
+
25
+ public:
24
26
  void EvalActivityScores();
25
27
  double GetActivityScore(uint8_t interval) const;
26
28
  void LevelChanged(uint32_t level, uint64_t now);
@@ -56,7 +58,7 @@ namespace RTC
56
58
  class ProducerSpeaker
57
59
  {
58
60
  public:
59
- explicit ProducerSpeaker(RTC::Producer* producer);
61
+ ProducerSpeaker(SharedInterface* shared, RTC::Producer* producer);
60
62
  ~ProducerSpeaker();
61
63
 
62
64
  public:
@@ -69,7 +71,7 @@ namespace RTC
69
71
 
70
72
  public:
71
73
  ActiveSpeakerObserver(
72
- RTC::Shared* shared,
74
+ SharedInterface* shared,
73
75
  const std::string& id,
74
76
  RTC::RtpObserver::Listener* listener,
75
77
  const FBS::ActiveSpeakerObserver::ActiveSpeakerObserverOptions* options);
@@ -89,14 +91,14 @@ namespace RTC
89
91
  bool CalculateActiveSpeaker();
90
92
  void TimeoutIdleLevels(uint64_t now);
91
93
 
92
- /* Pure virtual methods inherited from TimerHandle. */
94
+ /* Pure virtual methods inherited from TimerHandleInterface. */
93
95
  protected:
94
- void OnTimer(TimerHandle* timer) override;
96
+ void OnTimer(TimerHandleInterface* timer) override;
95
97
 
96
98
  private:
97
99
  double relativeSpeachActivities[RelativeSpeachActivitiesLen]{};
98
100
  std::string dominantId;
99
- TimerHandle* periodicTimer{ nullptr };
101
+ TimerHandleInterface* periodicTimer{ nullptr };
100
102
  uint16_t interval{ 300u };
101
103
  // Map of ProducerSpeakers indexed by Producer id.
102
104
  absl::flat_hash_map<std::string, ProducerSpeaker*> mapProducerSpeakers;
@@ -1,14 +1,14 @@
1
1
  #ifndef MS_RTC_AUDIO_LEVEL_OBSERVER_HPP
2
2
  #define MS_RTC_AUDIO_LEVEL_OBSERVER_HPP
3
3
 
4
+ #include "handles/TimerHandleInterface.hpp"
4
5
  #include "RTC/RtpObserver.hpp"
5
- #include "RTC/Shared.hpp"
6
- #include "handles/TimerHandle.hpp"
6
+ #include "SharedInterface.hpp"
7
7
  #include <absl/container/flat_hash_map.h>
8
8
 
9
9
  namespace RTC
10
10
  {
11
- class AudioLevelObserver : public RTC::RtpObserver, public TimerHandle::Listener
11
+ class AudioLevelObserver : public RTC::RtpObserver, public TimerHandleInterface::Listener
12
12
  {
13
13
  private:
14
14
  struct DBovs
@@ -19,7 +19,7 @@ namespace RTC
19
19
 
20
20
  public:
21
21
  AudioLevelObserver(
22
- RTC::Shared* shared,
22
+ SharedInterface* shared,
23
23
  const std::string& id,
24
24
  RTC::RtpObserver::Listener* listener,
25
25
  const FBS::AudioLevelObserver::AudioLevelObserverOptions* options);
@@ -38,9 +38,9 @@ namespace RTC
38
38
  void Update();
39
39
  void ResetMapProducerDBovs();
40
40
 
41
- /* Pure virtual methods inherited from TimerHandle. */
41
+ /* Pure virtual methods inherited from TimerHandleInterface. */
42
42
  protected:
43
- void OnTimer(TimerHandle* timer) override;
43
+ void OnTimer(TimerHandleInterface* timer) override;
44
44
 
45
45
  private:
46
46
  // Passed by argument.
@@ -48,7 +48,7 @@ namespace RTC
48
48
  int8_t threshold{ -80 };
49
49
  uint16_t interval{ 1000u };
50
50
  // Allocated by this.
51
- TimerHandle* periodicTimer{ nullptr };
51
+ TimerHandleInterface* periodicTimer{ nullptr };
52
52
  // Others.
53
53
  absl::flat_hash_map<RTC::Producer*, DBovs> mapProducerDBovs;
54
54
  bool silence{ true };
@@ -16,7 +16,7 @@
16
16
  #include "RTC/RTP/RtpStreamSend.hpp"
17
17
  #include "RTC/RTP/SharedPacket.hpp"
18
18
  #include "RTC/RtpDictionaries.hpp"
19
- #include "RTC/Shared.hpp"
19
+ #include "SharedInterface.hpp"
20
20
  #include <absl/container/flat_hash_set.h>
21
21
  #include <string>
22
22
  #include <vector>
@@ -52,7 +52,7 @@ namespace RTC
52
52
 
53
53
  public:
54
54
  Consumer(
55
- RTC::Shared* shared,
55
+ SharedInterface* shared,
56
56
  const std::string& id,
57
57
  const std::string& producerId,
58
58
  RTC::Consumer::Listener* listener,
@@ -177,7 +177,7 @@ namespace RTC
177
177
 
178
178
  protected:
179
179
  // Passed by argument.
180
- RTC::Shared* shared{ nullptr };
180
+ SharedInterface* shared{ nullptr };
181
181
  RTC::Consumer::Listener* listener{ nullptr };
182
182
  RTC::Media::Kind kind;
183
183
  RTC::RtpParameters rtpParameters;