mediasoup 3.20.0 → 3.20.2

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 (360) hide show
  1. package/node/lib/Consumer.d.ts.map +1 -1
  2. package/node/lib/Consumer.js +5 -4
  3. package/node/lib/DataConsumer.d.ts +2 -3
  4. package/node/lib/DataConsumer.d.ts.map +1 -1
  5. package/node/lib/DataConsumer.js +10 -7
  6. package/node/lib/DataConsumerTypes.d.ts +5 -4
  7. package/node/lib/DataConsumerTypes.d.ts.map +1 -1
  8. package/node/lib/DataProducer.d.ts.map +1 -1
  9. package/node/lib/DataProducer.js +2 -1
  10. package/node/lib/PipeTransport.d.ts.map +1 -1
  11. package/node/lib/PipeTransport.js +5 -4
  12. package/node/lib/PlainTransport.d.ts.map +1 -1
  13. package/node/lib/PlainTransport.js +6 -5
  14. package/node/lib/Producer.d.ts.map +1 -1
  15. package/node/lib/Producer.js +4 -3
  16. package/node/lib/Router.js +1 -1
  17. package/node/lib/WebRtcTransport.d.ts.map +1 -1
  18. package/node/lib/WebRtcTransport.js +6 -5
  19. package/node/lib/fbs/consumer/degrade-request.d.ts +30 -0
  20. package/node/lib/fbs/consumer/degrade-request.d.ts.map +1 -0
  21. package/node/lib/fbs/consumer/degrade-request.js +124 -0
  22. package/node/lib/fbs/consumer/enable-delay-and-loss-request.d.ts +24 -0
  23. package/node/lib/fbs/consumer/enable-delay-and-loss-request.d.ts.map +1 -0
  24. package/node/lib/fbs/consumer/enable-delay-and-loss-request.js +102 -0
  25. package/node/lib/fbs/data-consumer/send-response.d.ts +21 -0
  26. package/node/lib/fbs/data-consumer/send-response.d.ts.map +1 -0
  27. package/node/lib/fbs/data-consumer/send-response.js +91 -0
  28. package/node/lib/fbs/data-consumer.d.ts +1 -0
  29. package/node/lib/fbs/data-consumer.d.ts.map +1 -1
  30. package/node/lib/fbs/data-consumer.js +4 -1
  31. package/node/lib/fbs/producer/degrade-request.d.ts +30 -0
  32. package/node/lib/fbs/producer/degrade-request.d.ts.map +1 -0
  33. package/node/lib/fbs/producer/degrade-request.js +124 -0
  34. package/node/lib/fbs/response/body.d.ts +7 -5
  35. package/node/lib/fbs/response/body.d.ts.map +1 -1
  36. package/node/lib/fbs/response/body.js +7 -3
  37. package/node/lib/fbs/response/response.d.ts +3 -2
  38. package/node/lib/fbs/response/response.d.ts.map +1 -1
  39. package/node/lib/fbs/sctp-parameters/num-sctp-streams.d.ts.map +1 -1
  40. package/node/lib/fbs/sctp-parameters/num-sctp-streams.js +5 -5
  41. package/node/lib/fbs/transport/sctp-negotiated-max-streams-notification.d.ts +24 -0
  42. package/node/lib/fbs/transport/sctp-negotiated-max-streams-notification.d.ts.map +1 -0
  43. package/node/lib/fbs/transport/sctp-negotiated-max-streams-notification.js +102 -0
  44. package/node/lib/fbs/transport/sctp-negotiated-options-notification.d.ts +24 -0
  45. package/node/lib/fbs/transport/sctp-negotiated-options-notification.d.ts.map +1 -0
  46. package/node/lib/fbs/transport/sctp-negotiated-options-notification.js +102 -0
  47. package/node/lib/fbs/worker/close-notification.d.ts +18 -0
  48. package/node/lib/fbs/worker/close-notification.d.ts.map +1 -0
  49. package/node/lib/fbs/worker/close-notification.js +78 -0
  50. package/node/lib/fbs/worker/close-request.d.ts +18 -0
  51. package/node/lib/fbs/worker/close-request.d.ts.map +1 -0
  52. package/node/lib/fbs/worker/close-request.js +78 -0
  53. package/node/lib/fbs/worker/close-worker-notification.d.ts +18 -0
  54. package/node/lib/fbs/worker/close-worker-notification.d.ts.map +1 -0
  55. package/node/lib/fbs/worker/close-worker-notification.js +78 -0
  56. package/node/lib/sctpParametersTypes.d.ts +23 -0
  57. package/node/lib/sctpParametersTypes.d.ts.map +1 -1
  58. package/node/lib/test/test-Consumer.js +194 -0
  59. package/node/lib/test/test-DataConsumer.js +6 -0
  60. package/node/lib/test/test-Router.js +11 -0
  61. package/node/lib/test/test-werift-sctp.js +7 -0
  62. package/npm-scripts.mjs +2 -2
  63. package/package.json +7 -6
  64. package/worker/Makefile +5 -1
  65. package/worker/deps/libwebrtc/meson.build +5 -1
  66. package/worker/fbs/dataConsumer.fbs +4 -0
  67. package/worker/fbs/response.fbs +1 -0
  68. package/worker/fuzzer/src/RTC/RTP/FuzzerPacket.cpp +2 -2
  69. package/worker/include/Channel/ChannelMessageRegistrator.hpp +4 -3
  70. package/worker/include/Channel/ChannelNotification.hpp +0 -4
  71. package/worker/include/Channel/ChannelRequest.hpp +3 -4
  72. package/worker/include/DepLibSRTP.hpp +2 -2
  73. package/worker/include/RTC/ActiveSpeakerObserver.hpp +2 -2
  74. package/worker/include/RTC/AudioLevelObserver.hpp +2 -2
  75. package/worker/include/RTC/Consumer.hpp +1 -1
  76. package/worker/include/RTC/DataConsumer.hpp +2 -2
  77. package/worker/include/RTC/DtlsTransport.hpp +4 -4
  78. package/worker/include/RTC/ICE/IceServer.hpp +2 -2
  79. package/worker/include/RTC/ICE/StunPacket.hpp +34 -34
  80. package/worker/include/RTC/KeyFrameRequestManager.hpp +3 -3
  81. package/worker/include/RTC/Parameters.hpp +2 -2
  82. package/worker/include/RTC/PipeConsumer.hpp +6 -5
  83. package/worker/include/RTC/PlainTransport.hpp +0 -1
  84. package/worker/include/RTC/PortManager.hpp +92 -12
  85. package/worker/include/RTC/Producer.hpp +7 -6
  86. package/worker/include/RTC/RTCP/Feedback.hpp +1 -2
  87. package/worker/include/RTC/RTCP/FeedbackRtpTransport.hpp +2 -2
  88. package/worker/include/RTC/RTCP/Packet.hpp +2 -2
  89. package/worker/include/RTC/RTCP/Sdes.hpp +1 -1
  90. package/worker/include/RTC/RTP/Codecs/DependencyDescriptor.hpp +2 -1
  91. package/worker/include/RTC/RTP/Packet.hpp +57 -57
  92. package/worker/include/RTC/RTP/ProbationGenerator.hpp +2 -2
  93. package/worker/include/RTC/RTP/SharedPacket.hpp +4 -4
  94. package/worker/include/RTC/Router.hpp +12 -11
  95. package/worker/include/RTC/RtcLogger.hpp +2 -2
  96. package/worker/include/RTC/RtpDictionaries.hpp +6 -6
  97. package/worker/include/RTC/RtpListener.hpp +4 -4
  98. package/worker/include/RTC/SCTP/association/Association.hpp +13 -13
  99. package/worker/include/RTC/SCTP/association/HeartbeatHandler.hpp +2 -2
  100. package/worker/include/RTC/SCTP/association/NegotiatedCapabilities.hpp +2 -2
  101. package/worker/include/RTC/SCTP/association/PacketSender.hpp +3 -3
  102. package/worker/include/RTC/SCTP/association/StateCookie.hpp +9 -9
  103. package/worker/include/RTC/SCTP/association/StreamResetHandler.hpp +4 -4
  104. package/worker/include/RTC/SCTP/association/TransmissionControlBlock.hpp +24 -24
  105. package/worker/include/RTC/SCTP/association/TransmissionControlBlockContextInterface.hpp +4 -4
  106. package/worker/include/RTC/SCTP/packet/Chunk.hpp +86 -86
  107. package/worker/include/RTC/SCTP/packet/ErrorCause.hpp +18 -18
  108. package/worker/include/RTC/SCTP/packet/Packet.hpp +33 -33
  109. package/worker/include/RTC/SCTP/packet/Parameter.hpp +24 -24
  110. package/worker/include/RTC/SCTP/packet/TLV.hpp +13 -13
  111. package/worker/include/RTC/SCTP/packet/UserData.hpp +4 -4
  112. package/worker/include/RTC/SCTP/packet/chunks/AbortAssociationChunk.hpp +5 -5
  113. package/worker/include/RTC/SCTP/packet/chunks/AnyDataChunk.hpp +9 -9
  114. package/worker/include/RTC/SCTP/packet/chunks/AnyForwardTsnChunk.hpp +3 -3
  115. package/worker/include/RTC/SCTP/packet/chunks/CookieAckChunk.hpp +5 -5
  116. package/worker/include/RTC/SCTP/packet/chunks/CookieEchoChunk.hpp +5 -5
  117. package/worker/include/RTC/SCTP/packet/chunks/DataChunk.hpp +11 -11
  118. package/worker/include/RTC/SCTP/packet/chunks/ForwardTsnChunk.hpp +6 -6
  119. package/worker/include/RTC/SCTP/packet/chunks/HeartbeatAckChunk.hpp +6 -6
  120. package/worker/include/RTC/SCTP/packet/chunks/HeartbeatRequestChunk.hpp +6 -6
  121. package/worker/include/RTC/SCTP/packet/chunks/IDataChunk.hpp +6 -6
  122. package/worker/include/RTC/SCTP/packet/chunks/IForwardTsnChunk.hpp +7 -7
  123. package/worker/include/RTC/SCTP/packet/chunks/InitAckChunk.hpp +10 -10
  124. package/worker/include/RTC/SCTP/packet/chunks/InitChunk.hpp +8 -8
  125. package/worker/include/RTC/SCTP/packet/chunks/OperationErrorChunk.hpp +6 -6
  126. package/worker/include/RTC/SCTP/packet/chunks/ReConfigChunk.hpp +10 -10
  127. package/worker/include/RTC/SCTP/packet/chunks/SackChunk.hpp +5 -5
  128. package/worker/include/RTC/SCTP/packet/chunks/ShutdownAckChunk.hpp +5 -5
  129. package/worker/include/RTC/SCTP/packet/chunks/ShutdownChunk.hpp +5 -5
  130. package/worker/include/RTC/SCTP/packet/chunks/ShutdownCompleteChunk.hpp +5 -5
  131. package/worker/include/RTC/SCTP/packet/chunks/UnknownChunk.hpp +2 -2
  132. package/worker/include/RTC/SCTP/packet/errorCauses/CookieReceivedWhileShuttingDownErrorCause.hpp +4 -4
  133. package/worker/include/RTC/SCTP/packet/errorCauses/InvalidMandatoryParameterErrorCause.hpp +4 -4
  134. package/worker/include/RTC/SCTP/packet/errorCauses/InvalidStreamIdentifierErrorCause.hpp +5 -5
  135. package/worker/include/RTC/SCTP/packet/errorCauses/MissingMandatoryParameterErrorCause.hpp +5 -5
  136. package/worker/include/RTC/SCTP/packet/errorCauses/NoUserDataErrorCause.hpp +5 -5
  137. package/worker/include/RTC/SCTP/packet/errorCauses/OutOfResourceErrorCause.hpp +4 -4
  138. package/worker/include/RTC/SCTP/packet/errorCauses/ProtocolViolationErrorCause.hpp +4 -4
  139. package/worker/include/RTC/SCTP/packet/errorCauses/RestartOfAnAssociationWithNewAddressesErrorCause.hpp +4 -4
  140. package/worker/include/RTC/SCTP/packet/errorCauses/StaleCookieErrorCause.hpp +5 -5
  141. package/worker/include/RTC/SCTP/packet/errorCauses/UnknownErrorCause.hpp +2 -2
  142. package/worker/include/RTC/SCTP/packet/errorCauses/UnrecognizedChunkTypeErrorCause.hpp +4 -4
  143. package/worker/include/RTC/SCTP/packet/errorCauses/UnrecognizedParametersErrorCause.hpp +4 -4
  144. package/worker/include/RTC/SCTP/packet/errorCauses/UnresolvableAddressErrorCause.hpp +4 -4
  145. package/worker/include/RTC/SCTP/packet/errorCauses/UserInitiatedAbortErrorCause.hpp +4 -4
  146. package/worker/include/RTC/SCTP/packet/parameters/AddIncomingStreamsRequestParameter.hpp +5 -5
  147. package/worker/include/RTC/SCTP/packet/parameters/AddOutgoingStreamsRequestParameter.hpp +5 -5
  148. package/worker/include/RTC/SCTP/packet/parameters/CookiePreservativeParameter.hpp +5 -5
  149. package/worker/include/RTC/SCTP/packet/parameters/ForwardTsnSupportedParameter.hpp +4 -4
  150. package/worker/include/RTC/SCTP/packet/parameters/HeartbeatInfoParameter.hpp +3 -3
  151. package/worker/include/RTC/SCTP/packet/parameters/IPv4AddressParameter.hpp +4 -4
  152. package/worker/include/RTC/SCTP/packet/parameters/IPv6AddressParameter.hpp +5 -5
  153. package/worker/include/RTC/SCTP/packet/parameters/IncomingSsnResetRequestParameter.hpp +5 -5
  154. package/worker/include/RTC/SCTP/packet/parameters/OutgoingSsnResetRequestParameter.hpp +5 -5
  155. package/worker/include/RTC/SCTP/packet/parameters/ReconfigurationResponseParameter.hpp +7 -7
  156. package/worker/include/RTC/SCTP/packet/parameters/SsnTsnResetRequestParameter.hpp +5 -5
  157. package/worker/include/RTC/SCTP/packet/parameters/StateCookieParameter.hpp +5 -5
  158. package/worker/include/RTC/SCTP/packet/parameters/SupportedAddressTypesParameter.hpp +4 -4
  159. package/worker/include/RTC/SCTP/packet/parameters/SupportedExtensionsParameter.hpp +4 -4
  160. package/worker/include/RTC/SCTP/packet/parameters/UnknownParameter.hpp +2 -2
  161. package/worker/include/RTC/SCTP/packet/parameters/UnrecognizedParameterParameter.hpp +4 -4
  162. package/worker/include/RTC/SCTP/packet/parameters/ZeroChecksumAcceptableParameter.hpp +7 -7
  163. package/worker/include/RTC/SCTP/public/AssociationInterface.hpp +7 -7
  164. package/worker/include/RTC/SCTP/public/AssociationListenerInterface.hpp +26 -26
  165. package/worker/include/RTC/SCTP/public/AssociationMetrics.hpp +7 -7
  166. package/worker/include/RTC/SCTP/public/Message.hpp +1 -1
  167. package/worker/include/RTC/SCTP/public/SctpOptions.hpp +4 -4
  168. package/worker/include/RTC/SCTP/public/SctpTypes.hpp +10 -10
  169. package/worker/include/RTC/SCTP/rx/DataTracker.hpp +1 -1
  170. package/worker/include/RTC/SCTP/rx/ReassemblyStreamsInterface.hpp +1 -1
  171. package/worker/include/RTC/SCTP/tx/OutstandingData.hpp +39 -39
  172. package/worker/include/RTC/SCTP/tx/RetransmissionErrorCounter.hpp +1 -1
  173. package/worker/include/RTC/SCTP/tx/RetransmissionQueue.hpp +14 -14
  174. package/worker/include/RTC/SCTP/tx/RoundRobinSendQueue.hpp +1 -1
  175. package/worker/include/RTC/SctpListener.hpp +2 -2
  176. package/worker/include/RTC/SimulcastConsumer.hpp +2 -1
  177. package/worker/include/RTC/TcpServer.hpp +3 -2
  178. package/worker/include/RTC/Transport.hpp +8 -8
  179. package/worker/include/RTC/UdpSocket.hpp +3 -2
  180. package/worker/include/RTC/WebRtcServer.hpp +4 -5
  181. package/worker/include/RTC/WebRtcTransport.hpp +2 -2
  182. package/worker/include/Settings.hpp +3 -3
  183. package/worker/include/Worker.hpp +3 -3
  184. package/worker/include/handles/TcpServerHandle.hpp +2 -2
  185. package/worker/meson.build +9 -4
  186. package/worker/mocks/include/Channel/MockChannelMessageRegistrator.hpp +4 -3
  187. package/worker/src/Channel/ChannelNotification.cpp +5 -4
  188. package/worker/src/Channel/ChannelRequest.cpp +9 -6
  189. package/worker/src/DepLibSRTP.cpp +1 -1
  190. package/worker/src/RTC/AudioLevelObserver.cpp +2 -2
  191. package/worker/src/RTC/DataConsumer.cpp +13 -3
  192. package/worker/src/RTC/DataProducer.cpp +1 -1
  193. package/worker/src/RTC/DtlsTransport.cpp +3 -3
  194. package/worker/src/RTC/ICE/IceServer.cpp +1 -1
  195. package/worker/src/RTC/ICE/StunPacket.cpp +77 -77
  196. package/worker/src/RTC/PipeTransport.cpp +5 -4
  197. package/worker/src/RTC/PlainTransport.cpp +9 -8
  198. package/worker/src/RTC/PortManager.cpp +174 -114
  199. package/worker/src/RTC/Producer.cpp +0 -1
  200. package/worker/src/RTC/RTCP/Feedback.cpp +6 -6
  201. package/worker/src/RTC/RTCP/FeedbackPs.cpp +1 -1
  202. package/worker/src/RTC/RTCP/FeedbackPsAfb.cpp +1 -1
  203. package/worker/src/RTC/RTCP/FeedbackPsPli.cpp +1 -1
  204. package/worker/src/RTC/RTCP/FeedbackPsRemb.cpp +2 -2
  205. package/worker/src/RTC/RTCP/FeedbackRtp.cpp +1 -1
  206. package/worker/src/RTC/RTCP/FeedbackRtpSrReq.cpp +1 -1
  207. package/worker/src/RTC/RTCP/FeedbackRtpTransport.cpp +2 -2
  208. package/worker/src/RTC/RTCP/Packet.cpp +2 -2
  209. package/worker/src/RTC/RTCP/Sdes.cpp +1 -1
  210. package/worker/src/RTC/RTP/Codecs/DependencyDescriptor.cpp +2 -1
  211. package/worker/src/RTC/RTP/Packet.cpp +68 -68
  212. package/worker/src/RTC/RTP/ProbationGenerator.cpp +3 -3
  213. package/worker/src/RTC/RTP/RtpStreamRecv.cpp +3 -3
  214. package/worker/src/RTC/RTP/RtxStream.cpp +2 -2
  215. package/worker/src/RTC/RTP/SharedPacket.cpp +4 -4
  216. package/worker/src/RTC/Router.cpp +5 -5
  217. package/worker/src/RTC/RtcLogger.cpp +1 -1
  218. package/worker/src/RTC/RtpDictionaries/RtpCodecMimeType.cpp +4 -4
  219. package/worker/src/RTC/RtpDictionaries/RtpParameters.cpp +2 -3
  220. package/worker/src/RTC/SCTP/association/Association.cpp +100 -97
  221. package/worker/src/RTC/SCTP/association/HeartbeatHandler.cpp +6 -6
  222. package/worker/src/RTC/SCTP/association/NegotiatedCapabilities.cpp +3 -3
  223. package/worker/src/RTC/SCTP/association/PacketSender.cpp +1 -1
  224. package/worker/src/RTC/SCTP/association/StreamResetHandler.cpp +2 -2
  225. package/worker/src/RTC/SCTP/association/TransmissionControlBlock.cpp +5 -5
  226. package/worker/src/RTC/SCTP/packet/Chunk.cpp +52 -52
  227. package/worker/src/RTC/SCTP/packet/ErrorCause.cpp +14 -14
  228. package/worker/src/RTC/SCTP/packet/Packet.cpp +17 -17
  229. package/worker/src/RTC/SCTP/packet/Parameter.cpp +17 -17
  230. package/worker/src/RTC/SCTP/packet/TLV.cpp +8 -8
  231. package/worker/src/RTC/SCTP/packet/chunks/AbortAssociationChunk.cpp +3 -3
  232. package/worker/src/RTC/SCTP/packet/chunks/CookieAckChunk.cpp +2 -2
  233. package/worker/src/RTC/SCTP/packet/chunks/CookieEchoChunk.cpp +1 -1
  234. package/worker/src/RTC/SCTP/packet/chunks/DataChunk.cpp +2 -2
  235. package/worker/src/RTC/SCTP/packet/chunks/ForwardTsnChunk.cpp +2 -2
  236. package/worker/src/RTC/SCTP/packet/chunks/HeartbeatAckChunk.cpp +3 -3
  237. package/worker/src/RTC/SCTP/packet/chunks/HeartbeatRequestChunk.cpp +3 -3
  238. package/worker/src/RTC/SCTP/packet/chunks/IDataChunk.cpp +2 -2
  239. package/worker/src/RTC/SCTP/packet/chunks/IForwardTsnChunk.cpp +2 -2
  240. package/worker/src/RTC/SCTP/packet/chunks/InitAckChunk.cpp +4 -4
  241. package/worker/src/RTC/SCTP/packet/chunks/InitChunk.cpp +4 -4
  242. package/worker/src/RTC/SCTP/packet/chunks/OperationErrorChunk.cpp +3 -3
  243. package/worker/src/RTC/SCTP/packet/chunks/ReConfigChunk.cpp +3 -3
  244. package/worker/src/RTC/SCTP/packet/chunks/SackChunk.cpp +3 -3
  245. package/worker/src/RTC/SCTP/packet/chunks/ShutdownAckChunk.cpp +2 -2
  246. package/worker/src/RTC/SCTP/packet/chunks/ShutdownChunk.cpp +2 -2
  247. package/worker/src/RTC/SCTP/packet/chunks/ShutdownCompleteChunk.cpp +2 -2
  248. package/worker/src/RTC/SCTP/packet/errorCauses/CookieReceivedWhileShuttingDownErrorCause.cpp +2 -2
  249. package/worker/src/RTC/SCTP/packet/errorCauses/InvalidMandatoryParameterErrorCause.cpp +2 -2
  250. package/worker/src/RTC/SCTP/packet/errorCauses/InvalidStreamIdentifierErrorCause.cpp +2 -2
  251. package/worker/src/RTC/SCTP/packet/errorCauses/MissingMandatoryParameterErrorCause.cpp +4 -4
  252. package/worker/src/RTC/SCTP/packet/errorCauses/NoUserDataErrorCause.cpp +2 -2
  253. package/worker/src/RTC/SCTP/packet/errorCauses/OutOfResourceErrorCause.cpp +2 -2
  254. package/worker/src/RTC/SCTP/packet/errorCauses/ProtocolViolationErrorCause.cpp +1 -1
  255. package/worker/src/RTC/SCTP/packet/errorCauses/RestartOfAnAssociationWithNewAddressesErrorCause.cpp +1 -1
  256. package/worker/src/RTC/SCTP/packet/errorCauses/StaleCookieErrorCause.cpp +2 -2
  257. package/worker/src/RTC/SCTP/packet/errorCauses/UnrecognizedChunkTypeErrorCause.cpp +1 -1
  258. package/worker/src/RTC/SCTP/packet/errorCauses/UnrecognizedParametersErrorCause.cpp +1 -1
  259. package/worker/src/RTC/SCTP/packet/errorCauses/UnresolvableAddressErrorCause.cpp +1 -1
  260. package/worker/src/RTC/SCTP/packet/errorCauses/UserInitiatedAbortErrorCause.cpp +1 -1
  261. package/worker/src/RTC/SCTP/packet/parameters/AddIncomingStreamsRequestParameter.cpp +2 -2
  262. package/worker/src/RTC/SCTP/packet/parameters/AddOutgoingStreamsRequestParameter.cpp +2 -2
  263. package/worker/src/RTC/SCTP/packet/parameters/CookiePreservativeParameter.cpp +2 -2
  264. package/worker/src/RTC/SCTP/packet/parameters/ForwardTsnSupportedParameter.cpp +2 -2
  265. package/worker/src/RTC/SCTP/packet/parameters/HeartbeatInfoParameter.cpp +1 -1
  266. package/worker/src/RTC/SCTP/packet/parameters/IPv4AddressParameter.cpp +2 -2
  267. package/worker/src/RTC/SCTP/packet/parameters/IPv6AddressParameter.cpp +2 -2
  268. package/worker/src/RTC/SCTP/packet/parameters/IncomingSsnResetRequestParameter.cpp +2 -2
  269. package/worker/src/RTC/SCTP/packet/parameters/OutgoingSsnResetRequestParameter.cpp +2 -2
  270. package/worker/src/RTC/SCTP/packet/parameters/ReconfigurationResponseParameter.cpp +3 -3
  271. package/worker/src/RTC/SCTP/packet/parameters/SsnTsnResetRequestParameter.cpp +2 -2
  272. package/worker/src/RTC/SCTP/packet/parameters/StateCookieParameter.cpp +3 -3
  273. package/worker/src/RTC/SCTP/packet/parameters/SupportedAddressTypesParameter.cpp +3 -3
  274. package/worker/src/RTC/SCTP/packet/parameters/SupportedExtensionsParameter.cpp +1 -1
  275. package/worker/src/RTC/SCTP/packet/parameters/UnrecognizedParameterParameter.cpp +1 -1
  276. package/worker/src/RTC/SCTP/packet/parameters/ZeroChecksumAcceptableParameter.cpp +3 -3
  277. package/worker/src/RTC/SCTP/rx/InterleavedReassemblyStreams.cpp +1 -0
  278. package/worker/src/RTC/SCTP/rx/TraditionalReassemblyStreams.cpp +1 -0
  279. package/worker/src/RTC/SCTP/tx/OutstandingData.cpp +8 -8
  280. package/worker/src/RTC/SCTP/tx/RoundRobinSendQueue.cpp +1 -1
  281. package/worker/src/RTC/SvcConsumer.cpp +6 -2
  282. package/worker/src/RTC/TcpServer.cpp +4 -4
  283. package/worker/src/RTC/Transport.cpp +42 -19
  284. package/worker/src/RTC/UdpSocket.cpp +4 -4
  285. package/worker/src/RTC/WebRtcServer.cpp +8 -8
  286. package/worker/src/RTC/WebRtcTransport.cpp +9 -8
  287. package/worker/src/Settings.cpp +2 -2
  288. package/worker/src/lib.cpp +1 -2
  289. package/worker/subprojects/packagefiles/ankerl-unordered-dense/meson.build +5 -0
  290. package/worker/subprojects/unordered-dense.wrap +9 -0
  291. package/worker/tasks.py +293 -196
  292. package/worker/test/src/RTC/ICE/TestStunPacket.cpp +22 -22
  293. package/worker/test/src/RTC/ICE/iceCommon.cpp +1 -1
  294. package/worker/test/src/RTC/RTCP/TestFeedbackRtpEcn.cpp +8 -8
  295. package/worker/test/src/RTC/RTCP/TestFeedbackRtpNack.cpp +1 -1
  296. package/worker/test/src/RTC/RTCP/TestFeedbackRtpSrReq.cpp +1 -1
  297. package/worker/test/src/RTC/RTCP/TestFeedbackRtpTllei.cpp +1 -1
  298. package/worker/test/src/RTC/RTCP/TestFeedbackRtpTmmb.cpp +1 -1
  299. package/worker/test/src/RTC/RTCP/TestSenderReport.cpp +1 -1
  300. package/worker/test/src/RTC/RTP/TestPacket.cpp +26 -26
  301. package/worker/test/src/RTC/RTP/TestSharedPacket.cpp +1 -1
  302. package/worker/test/src/RTC/RTP/rtpCommon.cpp +1 -1
  303. package/worker/test/src/RTC/SCTP/association/TestNegotiatedCapabilities.cpp +4 -4
  304. package/worker/test/src/RTC/SCTP/packet/TestPacket.cpp +14 -14
  305. package/worker/test/src/RTC/SCTP/packet/chunks/TestAbortAssociationChunk.cpp +4 -4
  306. package/worker/test/src/RTC/SCTP/packet/chunks/TestCookieAckChunk.cpp +1 -1
  307. package/worker/test/src/RTC/SCTP/packet/chunks/TestCookieEchoChunk.cpp +1 -1
  308. package/worker/test/src/RTC/SCTP/packet/chunks/TestForwardTsnChunk.cpp +3 -3
  309. package/worker/test/src/RTC/SCTP/packet/chunks/TestHeartbeatAckChunk.cpp +3 -3
  310. package/worker/test/src/RTC/SCTP/packet/chunks/TestHeartbeatRequestChunk.cpp +9 -9
  311. package/worker/test/src/RTC/SCTP/packet/chunks/TestIDataChunk.cpp +2 -2
  312. package/worker/test/src/RTC/SCTP/packet/chunks/TestIForwardTsnChunk.cpp +3 -3
  313. package/worker/test/src/RTC/SCTP/packet/chunks/TestInitAckChunk.cpp +3 -3
  314. package/worker/test/src/RTC/SCTP/packet/chunks/TestInitChunk.cpp +8 -8
  315. package/worker/test/src/RTC/SCTP/packet/chunks/TestOperationErrorChunk.cpp +7 -7
  316. package/worker/test/src/RTC/SCTP/packet/chunks/TestReConfigChunk.cpp +6 -6
  317. package/worker/test/src/RTC/SCTP/packet/chunks/TestSackChunk.cpp +2 -2
  318. package/worker/test/src/RTC/SCTP/packet/chunks/TestShutdownAckChunk.cpp +1 -1
  319. package/worker/test/src/RTC/SCTP/packet/chunks/TestShutdownCompleteChunk.cpp +1 -1
  320. package/worker/test/src/RTC/SCTP/packet/chunks/TestUnknownChunk.cpp +2 -2
  321. package/worker/test/src/RTC/SCTP/packet/errorCauses/TestCookieReceivedWhileShuttingDownErrorCause.cpp +1 -1
  322. package/worker/test/src/RTC/SCTP/packet/errorCauses/TestInvalidMandatoryParameterErrorCause.cpp +1 -1
  323. package/worker/test/src/RTC/SCTP/packet/errorCauses/TestInvalidStreamIdentifierErrorCause.cpp +6 -6
  324. package/worker/test/src/RTC/SCTP/packet/errorCauses/TestMissingMandatoryParameterErrorCause.cpp +11 -11
  325. package/worker/test/src/RTC/SCTP/packet/errorCauses/TestNoUserDataErrorCause.cpp +6 -6
  326. package/worker/test/src/RTC/SCTP/packet/errorCauses/TestOutOfResourceErrorCause.cpp +5 -5
  327. package/worker/test/src/RTC/SCTP/packet/errorCauses/TestProtocolViolationErrorCause.cpp +2 -2
  328. package/worker/test/src/RTC/SCTP/packet/errorCauses/TestRestartOfAnAssociationWithNewAddressesErrorCause.cpp +2 -2
  329. package/worker/test/src/RTC/SCTP/packet/errorCauses/TestStaleCookieErrorCause.cpp +6 -6
  330. package/worker/test/src/RTC/SCTP/packet/errorCauses/TestUnknownErrorCause.cpp +1 -1
  331. package/worker/test/src/RTC/SCTP/packet/errorCauses/TestUnrecognizedChunkTypeErrorCause.cpp +2 -2
  332. package/worker/test/src/RTC/SCTP/packet/errorCauses/TestUnrecognizedParametersErrorCause.cpp +1 -1
  333. package/worker/test/src/RTC/SCTP/packet/errorCauses/TestUnresolvableAddressErrorCause.cpp +2 -2
  334. package/worker/test/src/RTC/SCTP/packet/errorCauses/TestUserInitiatedAbortErrorCause.cpp +2 -2
  335. package/worker/test/src/RTC/SCTP/packet/parameters/TestAddIncomingStreamsRequestParameter.cpp +1 -1
  336. package/worker/test/src/RTC/SCTP/packet/parameters/TestAddOutgoingStreamsRequestParameter.cpp +1 -1
  337. package/worker/test/src/RTC/SCTP/packet/parameters/TestCookiePreservativeParameter.cpp +7 -7
  338. package/worker/test/src/RTC/SCTP/packet/parameters/TestForwardTsnSupportedParameter.cpp +1 -1
  339. package/worker/test/src/RTC/SCTP/packet/parameters/TestHeartbeatInfoParameter.cpp +2 -2
  340. package/worker/test/src/RTC/SCTP/packet/parameters/TestIPv4AddressParameter.cpp +7 -7
  341. package/worker/test/src/RTC/SCTP/packet/parameters/TestIPv6AddressParameter.cpp +7 -7
  342. package/worker/test/src/RTC/SCTP/packet/parameters/TestIncomingSsnResetRequestParameter.cpp +2 -2
  343. package/worker/test/src/RTC/SCTP/packet/parameters/TestOutgoingSsnResetRequestParameter.cpp +2 -2
  344. package/worker/test/src/RTC/SCTP/packet/parameters/TestReconfigurationResponseParameter.cpp +5 -5
  345. package/worker/test/src/RTC/SCTP/packet/parameters/TestSsnTsnResetRequestParameter.cpp +1 -1
  346. package/worker/test/src/RTC/SCTP/packet/parameters/TestStateCookieParameter.cpp +1 -1
  347. package/worker/test/src/RTC/SCTP/packet/parameters/TestSupportedAddressTypesParameter.cpp +6 -6
  348. package/worker/test/src/RTC/SCTP/packet/parameters/TestSupportedExtensionsParameter.cpp +3 -3
  349. package/worker/test/src/RTC/SCTP/packet/parameters/TestUnknownParameter.cpp +1 -1
  350. package/worker/test/src/RTC/SCTP/packet/parameters/TestUnrecognizedParameterParameter.cpp +1 -1
  351. package/worker/test/src/RTC/SCTP/packet/parameters/TestZeroChecksumAcceptableParameter.cpp +1 -1
  352. package/worker/test/src/RTC/SCTP/sctpCommon.cpp +1 -1
  353. package/worker/test/src/RTC/SCTP/tx/TestOutstandingData.cpp +3 -3
  354. package/worker/test/src/RTC/SCTP/tx/TestRetransmissionQueue.cpp +1 -1
  355. package/worker/test/src/RTC/TestNackGenerator.cpp +1 -1
  356. package/worker/test/src/RTC/TestPortManager.cpp +126 -0
  357. package/worker/test/src/RTC/TestTransportCongestionControlServer.cpp +2 -2
  358. package/worker/test/src/RTC/TestTransportTuple.cpp +3 -2
  359. package/worker/test/src/Utils/TestCrypto.cpp +3 -3
  360. package/worker/test/src/Utils/TestString.cpp +1 -1
@@ -3,6 +3,7 @@
3
3
 
4
4
  #include "common.hpp"
5
5
  #include "handles/UdpSocketHandle.hpp"
6
+ #include "RTC/PortManager.hpp"
6
7
  #include "RTC/Transport.hpp"
7
8
  #include <string>
8
9
 
@@ -33,7 +34,7 @@ namespace RTC
33
34
  uint16_t minPort,
34
35
  uint16_t maxPort,
35
36
  RTC::Transport::SocketFlags& flags,
36
- uint64_t& portRangeHash);
37
+ RTC::PortManager::PortRangeKey& portRangeKey);
37
38
  ~UdpSocket() override;
38
39
 
39
40
  /* Pure virtual methods inherited from ::UdpSocketHandle. */
@@ -45,7 +46,7 @@ namespace RTC
45
46
  // Passed by argument.
46
47
  Listener* listener{ nullptr };
47
48
  bool fixedPort{ false };
48
- uint64_t portRangeHash{ 0u };
49
+ RTC::PortManager::PortRangeKey portRangeKey{};
49
50
  };
50
51
  } // namespace RTC
51
52
 
@@ -11,8 +11,7 @@
11
11
  #include "RTC/WebRtcTransport.hpp"
12
12
  #include "SharedInterface.hpp"
13
13
  #include <flatbuffers/flatbuffers.h>
14
- #include <absl/container/flat_hash_map.h>
15
- #include <absl/container/flat_hash_set.h>
14
+ #include <ankerl/unordered_dense.h>
16
15
  #include <string>
17
16
  #include <vector>
18
17
 
@@ -116,11 +115,11 @@ namespace RTC
116
115
  // Vector of UdpSockets and TcpServers in the user given order.
117
116
  std::vector<UdpSocketOrTcpServer> udpSocketOrTcpServers;
118
117
  // Set of WebRtcTransports.
119
- absl::flat_hash_set<RTC::WebRtcTransport*> webRtcTransports;
118
+ ankerl::unordered_dense::set<RTC::WebRtcTransport*> webRtcTransports;
120
119
  // Map of WebRtcTransports indexed by local ICE usernameFragment.
121
- absl::flat_hash_map<std::string, RTC::WebRtcTransport*> mapLocalIceUsernameFragmentWebRtcTransport;
120
+ ankerl::unordered_dense::map<std::string, RTC::WebRtcTransport*> mapLocalIceUsernameFragmentWebRtcTransport;
122
121
  // Map of WebRtcTransports indexed by TransportTuple.hash.
123
- absl::flat_hash_map<uint64_t, RTC::WebRtcTransport*> mapTupleWebRtcTransport;
122
+ ankerl::unordered_dense::map<uint64_t, RTC::WebRtcTransport*> mapTupleWebRtcTransport;
124
123
  // Whether the destructor has been called.
125
124
  bool closing{ false };
126
125
  };
@@ -158,8 +158,8 @@ namespace RTC
158
158
  // Allocated by this.
159
159
  RTC::ICE::IceServer* iceServer{ nullptr };
160
160
  // Map of UdpSocket/TcpServer and local announced address (if any).
161
- absl::flat_hash_map<RTC::UdpSocket*, std::string> udpSockets;
162
- absl::flat_hash_map<RTC::TcpServer*, std::string> tcpServers;
161
+ ankerl::unordered_dense::map<RTC::UdpSocket*, std::string> udpSockets;
162
+ ankerl::unordered_dense::map<RTC::TcpServer*, std::string> tcpServers;
163
163
  RTC::DtlsTransport* dtlsTransport{ nullptr };
164
164
  RTC::SrtpSession* srtpRecvSession{ nullptr };
165
165
  RTC::SrtpSession* srtpSendSession{ nullptr };
@@ -4,7 +4,7 @@
4
4
  #include "common.hpp"
5
5
  #include "Channel/ChannelRequest.hpp"
6
6
  #include "LogLevel.hpp"
7
- #include <absl/container/flat_hash_map.h>
7
+ #include <ankerl/unordered_dense.h>
8
8
  #include <string>
9
9
  #include <vector>
10
10
 
@@ -56,8 +56,8 @@ public:
56
56
  static thread_local struct Configuration configuration;
57
57
 
58
58
  private:
59
- static const absl::flat_hash_map<std::string, LogLevel> String2LogLevel;
60
- static const absl::flat_hash_map<LogLevel, std::string> LogLevel2String;
59
+ static const ankerl::unordered_dense::map<std::string, LogLevel> String2LogLevel;
60
+ static const ankerl::unordered_dense::map<LogLevel, std::string> LogLevel2String;
61
61
  };
62
62
 
63
63
  #endif
@@ -9,7 +9,7 @@
9
9
  #include "RTC/WebRtcServer.hpp"
10
10
  #include "SharedInterface.hpp"
11
11
  #include <flatbuffers/flatbuffer_builder.h>
12
- #include <absl/container/flat_hash_map.h>
12
+ #include <ankerl/unordered_dense.h>
13
13
  #include <string>
14
14
 
15
15
  class Worker : public Channel::ChannelSocket::Listener,
@@ -54,8 +54,8 @@ private:
54
54
  // Allocated by this.
55
55
  SignalHandle* signalHandle{ nullptr };
56
56
  SharedInterface* shared{ nullptr };
57
- absl::flat_hash_map<std::string, RTC::WebRtcServer*> mapWebRtcServers;
58
- absl::flat_hash_map<std::string, RTC::Router*> mapRouters;
57
+ ankerl::unordered_dense::map<std::string, RTC::WebRtcServer*> mapWebRtcServers;
58
+ ankerl::unordered_dense::map<std::string, RTC::Router*> mapRouters;
59
59
  // Others.
60
60
  bool closed{ false };
61
61
  };
@@ -4,7 +4,7 @@
4
4
  #include "common.hpp"
5
5
  #include "handles/TcpConnectionHandle.hpp"
6
6
  #include <uv.h>
7
- #include <absl/container/flat_hash_set.h>
7
+ #include <ankerl/unordered_dense.h>
8
8
  #include <string>
9
9
 
10
10
  class TcpServerHandle : public TcpConnectionHandle::Listener
@@ -72,7 +72,7 @@ private:
72
72
  // Allocated by this (may be passed by argument).
73
73
  uv_tcp_t* uvHandle{ nullptr };
74
74
  // Others.
75
- absl::flat_hash_set<TcpConnectionHandle*> connections;
75
+ ankerl::unordered_dense::set<TcpConnectionHandle*> connections;
76
76
  bool closed{ false };
77
77
  };
78
78
 
@@ -314,6 +314,8 @@ abseil_cpp_proj = subproject(
314
314
  ],
315
315
  )
316
316
 
317
+ ankerl_unordered_dense_dep = dependency('unordered_dense')
318
+
317
319
  flatbuffers_proj = subproject(
318
320
  'flatbuffers',
319
321
  default_options: [
@@ -326,24 +328,26 @@ subdir('fbs')
326
328
 
327
329
  # Add current build directory so libwebrtc has access to FBS folder.
328
330
  libwebrtc_include_directories = include_directories('include', 'fbs')
331
+
329
332
  subdir('deps/libwebrtc')
330
333
 
331
334
  dependencies = [
332
- abseil_cpp_proj.get_variable('absl_container_dep'),
333
- openssl_proj.get_variable('openssl_dep'),
334
335
  libuv_proj.get_variable('libuv_dep'),
336
+ openssl_proj.get_variable('openssl_dep'),
335
337
  libsrtp3_proj.get_variable('libsrtp3_dep'),
338
+ abseil_cpp_proj.get_variable('absl_container_dep'),
339
+ ankerl_unordered_dense_dep,
336
340
  flatbuffers_proj.get_variable('flatbuffers_dep'),
337
341
  flatbuffers_generator_dep,
338
342
  libwebrtc_dep,
339
343
  ]
340
344
 
341
345
  link_whole = [
342
- abseil_cpp_proj.get_variable('absl_container_lib'),
346
+ libuv_proj.get_variable('libuv'),
343
347
  openssl_proj.get_variable('libcrypto_lib'),
344
348
  openssl_proj.get_variable('libssl_lib'),
345
- libuv_proj.get_variable('libuv'),
346
349
  libsrtp3_proj.get_variable('libsrtp3'),
350
+ abseil_cpp_proj.get_variable('absl_container_lib'),
347
351
  flatbuffers_proj.get_variable('flatbuffers_lib'),
348
352
  libwebrtc,
349
353
  ]
@@ -447,6 +451,7 @@ test_sources = [
447
451
  'test/src/testHelpers.cpp',
448
452
  'test/src/RTC/TestKeyFrameRequestManager.cpp',
449
453
  'test/src/RTC/TestNackGenerator.cpp',
454
+ 'test/src/RTC/TestPortManager.cpp',
450
455
  'test/src/RTC/TestRateCalculator.cpp',
451
456
  'test/src/RTC/TestRtpEncodingParameters.cpp',
452
457
  'test/src/RTC/TestSeqManager.cpp',
@@ -4,8 +4,8 @@
4
4
  #include "Channel/ChannelMessageRegistratorInterface.hpp"
5
5
  // TODO: We should have a ChannelSocketInterface class instead.
6
6
  #include "Channel/ChannelSocket.hpp"
7
+ #include <ankerl/unordered_dense.h>
7
8
  #include <string>
8
- #include <unordered_map>
9
9
 
10
10
  namespace mocks
11
11
  {
@@ -35,8 +35,9 @@ namespace mocks
35
35
  const std::string& id) override;
36
36
 
37
37
  private:
38
- std::unordered_map<std::string, ::Channel::ChannelSocket::RequestHandler*> mapChannelRequestHandlers;
39
- std::unordered_map<std::string, ::Channel::ChannelSocket::NotificationHandler*>
38
+ ankerl::unordered_dense::map<std::string, ::Channel::ChannelSocket::RequestHandler*>
39
+ mapChannelRequestHandlers;
40
+ ankerl::unordered_dense::map<std::string, ::Channel::ChannelSocket::NotificationHandler*>
40
41
  mapChannelNotificationHandlers;
41
42
  };
42
43
  } // namespace Channel
@@ -4,13 +4,14 @@
4
4
  #include "Channel/ChannelNotification.hpp"
5
5
  #include "Logger.hpp"
6
6
  #include "MediaSoupErrors.hpp"
7
+ #include <ankerl/unordered_dense.h>
7
8
 
8
9
  namespace Channel
9
10
  {
10
- /* Class variables. */
11
+ /* Static. */
11
12
 
12
13
  // clang-format off
13
- const absl::flat_hash_map<FBS::Notification::Event, const char*> ChannelNotification::Event2String =
14
+ static const ankerl::unordered_dense::map<FBS::Notification::Event, const char*> Event2String =
14
15
  {
15
16
  { FBS::Notification::Event::WORKER_CLOSE, "worker.close" },
16
17
  { FBS::Notification::Event::TRANSPORT_SEND_RTCP, "transport.sendRtcp" },
@@ -28,9 +29,9 @@ namespace Channel
28
29
  this->data = notification;
29
30
  this->event = notification->event();
30
31
 
31
- auto eventCStrIt = ChannelNotification::Event2String.find(this->event);
32
+ auto eventCStrIt = Event2String.find(this->event);
32
33
 
33
- if (eventCStrIt == ChannelNotification::Event2String.end())
34
+ if (eventCStrIt == Event2String.end())
34
35
  {
35
36
  MS_THROW_ERROR("unknown event '%" PRIu8 "'", static_cast<uint8_t>(this->event));
36
37
  }
@@ -4,15 +4,14 @@
4
4
  #include "Channel/ChannelRequest.hpp"
5
5
  #include "Logger.hpp"
6
6
  #include "MediaSoupErrors.hpp"
7
+ #include <ankerl/unordered_dense.h>
7
8
 
8
9
  namespace Channel
9
10
  {
10
- /* Class variables. */
11
-
12
- thread_local flatbuffers::FlatBufferBuilder ChannelRequest::bufferBuilder{};
11
+ /* Static. */
13
12
 
14
13
  // clang-format off
15
- const absl::flat_hash_map<FBS::Request::Method, const char*> ChannelRequest::Method2String =
14
+ static const ankerl::unordered_dense::map<FBS::Request::Method, const char*> Method2String =
16
15
  {
17
16
  { FBS::Request::Method::WORKER_DUMP, "worker.dump" },
18
17
  { FBS::Request::Method::WORKER_GET_RESOURCE_USAGE, "worker.getResourceUsage" },
@@ -85,6 +84,10 @@ namespace Channel
85
84
  };
86
85
  // clang-format on
87
86
 
87
+ /* Class variables. */
88
+
89
+ thread_local flatbuffers::FlatBufferBuilder ChannelRequest::bufferBuilder{};
90
+
88
91
  /* Instance methods. */
89
92
 
90
93
  /**
@@ -99,9 +102,9 @@ namespace Channel
99
102
  this->id = request->id();
100
103
  this->method = request->method();
101
104
 
102
- const auto methodCStrIt = ChannelRequest::Method2String.find(this->method);
105
+ const auto methodCStrIt = Method2String.find(this->method);
103
106
 
104
- if (methodCStrIt == ChannelRequest::Method2String.end())
107
+ if (methodCStrIt == Method2String.end())
105
108
  {
106
109
  Error("unknown method");
107
110
 
@@ -16,7 +16,7 @@ static size_t GlobalInstances = 0;
16
16
  // https://github.com/cisco/libsrtp/blob/main/include/srtp.h
17
17
  //
18
18
  // clang-format off
19
- const std::unordered_map<srtp_err_status_t, std::string> DepLibSRTP::ErrorCode2String =
19
+ const ankerl::unordered_dense::map<srtp_err_status_t, std::string> DepLibSRTP::ErrorCode2String =
20
20
  {
21
21
  { srtp_err_status_ok, "nothing to report" },
22
22
  { srtp_err_status_fail, "unspecified failure" },
@@ -5,8 +5,8 @@
5
5
  #include "Logger.hpp"
6
6
  #include "MediaSoupErrors.hpp"
7
7
  #include "RTC/RtpDictionaries.hpp"
8
- #include <absl/container/btree_map.h>
9
8
  #include <cmath> // std::lround()
9
+ #include <map> // std::multimap
10
10
 
11
11
  namespace RTC
12
12
  {
@@ -143,7 +143,7 @@ namespace RTC
143
143
  {
144
144
  MS_TRACE();
145
145
 
146
- absl::btree_multimap<int8_t, RTC::Producer*> mapDBovsProducer;
146
+ std::multimap<int8_t, RTC::Producer*> mapDBovsProducer;
147
147
 
148
148
  for (auto& kv : this->mapProducerDBovs)
149
149
  {
@@ -277,12 +277,22 @@ namespace RTC
277
277
  len);
278
278
  }
279
279
 
280
+ // NOTE: Capturing `this` and `request` (by reference) is safe here because the
281
+ // callback is always invoked synchronously within this same call stack (never
282
+ // deferred).
280
283
  const auto* cb = new onQueuedCallback(
281
- [&request](bool queued, bool sctpSendBufferFull)
284
+ [this, &request](bool queued, bool sctpSendBufferFull)
282
285
  {
283
286
  if (queued)
284
287
  {
285
- request->Accept();
288
+ uint32_t bufferedAmount{ 0 };
289
+
290
+ this->listener->OnDataConsumerNeedBufferedAmount(this, bufferedAmount);
291
+
292
+ auto responseOffset = FBS::DataConsumer::CreateGetBufferedAmountResponse(
293
+ request->GetBufferBuilder(), bufferedAmount);
294
+
295
+ request->Accept(FBS::Response::Body::DataConsumer_SendResponse, responseOffset);
286
296
  }
287
297
  else
288
298
  {
@@ -296,7 +306,7 @@ namespace RTC
296
306
  this->type == DataConsumer::Type::SCTP ? this->sctpStreamParameters.streamId : 0;
297
307
 
298
308
  // NOTE: We are creating a copy of the data here, otherwise we cannot
299
- // move the Message and pass its ownership to the SCTP stack.
309
+ // move the message and pass its ownership to the SCTP stack.
300
310
  RTC::SCTP::Message message(streamId, body->ppid(), std::vector<uint8_t>(data, data + len));
301
311
 
302
312
  SendMessage(std::move(message), emptySubchannels, std::nullopt, cb);
@@ -233,7 +233,7 @@ namespace RTC
233
233
  this->type == DataProducer::Type::SCTP ? this->sctpStreamParameters.streamId : 0;
234
234
 
235
235
  // NOTE: We are creating a copy of the data here, otherwise we cannot
236
- // move the Message and pass its ownership to the SCTP stack.
236
+ // move the message and pass its ownership to the SCTP stack.
237
237
  RTC::SCTP::Message message(streamId, body->ppid(), std::vector<uint8_t>(data, data + len));
238
238
 
239
239
  ReceiveMessage(std::move(message), subchannels, requiredSubchannel);
@@ -124,7 +124,7 @@ namespace RTC
124
124
  thread_local EVP_PKEY* DtlsTransport::privateKey{ nullptr };
125
125
  thread_local SSL_CTX* DtlsTransport::sslCtx{ nullptr };
126
126
  thread_local uint8_t DtlsTransport::sslReadBuffer[SslReadBufferSize];
127
- const absl::flat_hash_map<std::string, DtlsTransport::FingerprintAlgorithm>
127
+ const ankerl::unordered_dense::map<std::string, DtlsTransport::FingerprintAlgorithm>
128
128
  DtlsTransport::String2FingerprintAlgorithm = {
129
129
  { "sha-1", DtlsTransport::FingerprintAlgorithm::SHA1 },
130
130
  { "sha-224", DtlsTransport::FingerprintAlgorithm::SHA224 },
@@ -132,7 +132,7 @@ namespace RTC
132
132
  { "sha-384", DtlsTransport::FingerprintAlgorithm::SHA384 },
133
133
  { "sha-512", DtlsTransport::FingerprintAlgorithm::SHA512 }
134
134
  };
135
- const absl::flat_hash_map<DtlsTransport::FingerprintAlgorithm, std::string>
135
+ const ankerl::unordered_dense::map<DtlsTransport::FingerprintAlgorithm, std::string>
136
136
  DtlsTransport::FingerprintAlgorithm2String = {
137
137
  { DtlsTransport::FingerprintAlgorithm::SHA1, "sha-1" },
138
138
  { DtlsTransport::FingerprintAlgorithm::SHA224, "sha-224" },
@@ -140,7 +140,7 @@ namespace RTC
140
140
  { DtlsTransport::FingerprintAlgorithm::SHA384, "sha-384" },
141
141
  { DtlsTransport::FingerprintAlgorithm::SHA512, "sha-512" }
142
142
  };
143
- const absl::flat_hash_map<std::string, DtlsTransport::Role> DtlsTransport::String2Role = {
143
+ const ankerl::unordered_dense::map<std::string, DtlsTransport::Role> DtlsTransport::String2Role = {
144
144
  { "auto", DtlsTransport::Role::AUTO },
145
145
  { "client", DtlsTransport::Role::CLIENT },
146
146
  { "server", DtlsTransport::Role::SERVER }
@@ -20,7 +20,7 @@ namespace RTC
20
20
  /* Class variables. */
21
21
 
22
22
  // clang-format off
23
- std::unordered_map<IceServer::IceState, std::string> IceServer::iceStateToString =
23
+ ankerl::unordered_dense::map<IceServer::IceState, std::string> IceServer::iceStateToString =
24
24
  {
25
25
  { IceServer::IceState::NEW, "new" },
26
26
  { IceServer::IceState::CONNECTED, "connected" },