@matter/protocol 0.16.0-alpha.0-20251205-dfb1e1556 → 0.16.0-alpha.0-20251209-d6072d23e

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 (586) hide show
  1. package/dist/cjs/action/Val.js +1 -1
  2. package/dist/cjs/action/Val.js.map +1 -1
  3. package/dist/cjs/action/client/ClientInteraction.d.ts.map +1 -1
  4. package/dist/cjs/action/client/ClientInteraction.js +83 -35
  5. package/dist/cjs/action/client/ClientInteraction.js.map +2 -2
  6. package/dist/cjs/action/client/subscription/ClientSubscription.d.ts +10 -5
  7. package/dist/cjs/action/client/subscription/ClientSubscription.d.ts.map +1 -1
  8. package/dist/cjs/action/client/subscription/ClientSubscription.js +21 -1
  9. package/dist/cjs/action/client/subscription/ClientSubscription.js.map +2 -2
  10. package/dist/cjs/action/client/subscription/ClientSubscriptionHandler.js +2 -3
  11. package/dist/cjs/action/client/subscription/ClientSubscriptionHandler.js.map +1 -1
  12. package/dist/cjs/action/client/subscription/ClientSubscriptions.d.ts +4 -2
  13. package/dist/cjs/action/client/subscription/ClientSubscriptions.d.ts.map +1 -1
  14. package/dist/cjs/action/client/subscription/ClientSubscriptions.js +68 -8
  15. package/dist/cjs/action/client/subscription/ClientSubscriptions.js.map +1 -1
  16. package/dist/cjs/action/client/subscription/PeerSubscription.d.ts +0 -1
  17. package/dist/cjs/action/client/subscription/PeerSubscription.d.ts.map +1 -1
  18. package/dist/cjs/action/client/subscription/PeerSubscription.js +1 -2
  19. package/dist/cjs/action/client/subscription/PeerSubscription.js.map +1 -1
  20. package/dist/cjs/action/client/subscription/SustainedSubscription.d.ts +0 -2
  21. package/dist/cjs/action/client/subscription/SustainedSubscription.d.ts.map +1 -1
  22. package/dist/cjs/action/client/subscription/SustainedSubscription.js +2 -4
  23. package/dist/cjs/action/client/subscription/SustainedSubscription.js.map +1 -1
  24. package/dist/cjs/action/request/Invoke.js +2 -2
  25. package/dist/cjs/action/request/Invoke.js.map +1 -1
  26. package/dist/cjs/action/response/ReadResult.d.ts +1 -1
  27. package/dist/cjs/action/response/ReadResult.d.ts.map +1 -1
  28. package/dist/cjs/action/server/AttributeReadResponse.d.ts.map +1 -1
  29. package/dist/cjs/action/server/AttributeReadResponse.js +78 -25
  30. package/dist/cjs/action/server/AttributeReadResponse.js.map +1 -1
  31. package/dist/cjs/action/server/AttributeWriteResponse.d.ts.map +1 -1
  32. package/dist/cjs/action/server/AttributeWriteResponse.js +70 -17
  33. package/dist/cjs/action/server/AttributeWriteResponse.js.map +1 -1
  34. package/dist/cjs/action/server/CommandInvokeResponse.d.ts.map +1 -1
  35. package/dist/cjs/action/server/CommandInvokeResponse.js +83 -30
  36. package/dist/cjs/action/server/CommandInvokeResponse.js.map +1 -1
  37. package/dist/cjs/action/server/DataResponse.d.ts +1 -0
  38. package/dist/cjs/action/server/DataResponse.d.ts.map +1 -1
  39. package/dist/cjs/action/server/DataResponse.js +3 -0
  40. package/dist/cjs/action/server/DataResponse.js.map +1 -1
  41. package/dist/cjs/action/server/ServerInteraction.d.ts.map +1 -1
  42. package/dist/cjs/action/server/ServerInteraction.js +4 -4
  43. package/dist/cjs/action/server/ServerInteraction.js.map +1 -1
  44. package/dist/cjs/advertisement/Advertisement.d.ts.map +1 -1
  45. package/dist/cjs/advertisement/Advertisement.js +66 -14
  46. package/dist/cjs/advertisement/Advertisement.js.map +1 -1
  47. package/dist/cjs/advertisement/Advertiser.d.ts +4 -1
  48. package/dist/cjs/advertisement/Advertiser.d.ts.map +1 -1
  49. package/dist/cjs/advertisement/Advertiser.js +63 -2
  50. package/dist/cjs/advertisement/Advertiser.js.map +1 -1
  51. package/dist/cjs/advertisement/ble/BleAdvertiser.d.ts +6 -1
  52. package/dist/cjs/advertisement/ble/BleAdvertiser.d.ts.map +1 -1
  53. package/dist/cjs/advertisement/ble/BleAdvertiser.js +1 -1
  54. package/dist/cjs/advertisement/ble/BleAdvertiser.js.map +1 -1
  55. package/dist/cjs/advertisement/mdns/MdnsAdvertiser.d.ts +5 -1
  56. package/dist/cjs/advertisement/mdns/MdnsAdvertiser.d.ts.map +1 -1
  57. package/dist/cjs/advertisement/mdns/MdnsAdvertiser.js +1 -1
  58. package/dist/cjs/advertisement/mdns/MdnsAdvertiser.js.map +1 -1
  59. package/dist/cjs/certificate/kinds/Noc.d.ts.map +1 -1
  60. package/dist/cjs/certificate/kinds/Noc.js +8 -6
  61. package/dist/cjs/certificate/kinds/Noc.js.map +1 -1
  62. package/dist/cjs/certificate/kinds/definitions/asn.js +1 -1
  63. package/dist/cjs/certificate/kinds/definitions/asn.js.map +1 -1
  64. package/dist/cjs/certificate/kinds/definitions/attestation.d.ts.map +1 -1
  65. package/dist/cjs/cluster/client/AttributeClient.d.ts.map +1 -1
  66. package/dist/cjs/cluster/client/AttributeClient.js +2 -2
  67. package/dist/cjs/cluster/client/AttributeClient.js.map +1 -1
  68. package/dist/cjs/codec/MessageCodec.d.ts +8 -1
  69. package/dist/cjs/codec/MessageCodec.d.ts.map +1 -1
  70. package/dist/cjs/codec/MessageCodec.js +38 -28
  71. package/dist/cjs/codec/MessageCodec.js.map +2 -2
  72. package/dist/cjs/common/FailsafeContext.d.ts +8 -9
  73. package/dist/cjs/common/FailsafeContext.d.ts.map +1 -1
  74. package/dist/cjs/common/FailsafeContext.js +27 -33
  75. package/dist/cjs/common/FailsafeContext.js.map +1 -1
  76. package/dist/cjs/common/FailsafeTimer.d.ts +4 -3
  77. package/dist/cjs/common/FailsafeTimer.d.ts.map +1 -1
  78. package/dist/cjs/common/FailsafeTimer.js +4 -4
  79. package/dist/cjs/common/FailsafeTimer.js.map +1 -1
  80. package/dist/cjs/common/Mark.d.ts +17 -0
  81. package/dist/cjs/common/Mark.d.ts.map +1 -0
  82. package/dist/cjs/{peer/OperationalPeer.js → common/Mark.js} +19 -3
  83. package/dist/cjs/common/Mark.js.map +6 -0
  84. package/dist/cjs/common/index.d.ts +1 -0
  85. package/dist/cjs/common/index.d.ts.map +1 -1
  86. package/dist/cjs/common/index.js +1 -0
  87. package/dist/cjs/common/index.js.map +1 -1
  88. package/dist/cjs/fabric/Fabric.d.ts +16 -8
  89. package/dist/cjs/fabric/Fabric.d.ts.map +1 -1
  90. package/dist/cjs/fabric/Fabric.js +35 -18
  91. package/dist/cjs/fabric/Fabric.js.map +1 -1
  92. package/dist/cjs/fabric/FabricAuthority.d.ts +2 -2
  93. package/dist/cjs/fabric/FabricAuthority.d.ts.map +1 -1
  94. package/dist/cjs/fabric/FabricAuthority.js +3 -3
  95. package/dist/cjs/fabric/FabricAuthority.js.map +1 -1
  96. package/dist/cjs/fabric/FabricManager.d.ts +10 -14
  97. package/dist/cjs/fabric/FabricManager.d.ts.map +1 -1
  98. package/dist/cjs/fabric/FabricManager.js +44 -40
  99. package/dist/cjs/fabric/FabricManager.js.map +2 -2
  100. package/dist/cjs/index.d.ts +1 -1
  101. package/dist/cjs/index.d.ts.map +1 -1
  102. package/dist/cjs/index.js +1 -1
  103. package/dist/cjs/index.js.map +1 -1
  104. package/dist/cjs/interaction/AttributeDataEncoder.d.ts +1 -1
  105. package/dist/cjs/interaction/InteractionClient.d.ts +2 -2
  106. package/dist/cjs/interaction/InteractionClient.d.ts.map +1 -1
  107. package/dist/cjs/interaction/InteractionClient.js +39 -22
  108. package/dist/cjs/interaction/InteractionClient.js.map +1 -1
  109. package/dist/cjs/interaction/InteractionMessenger.d.ts +2 -2
  110. package/dist/cjs/interaction/InteractionMessenger.d.ts.map +1 -1
  111. package/dist/cjs/interaction/InteractionMessenger.js +35 -27
  112. package/dist/cjs/interaction/InteractionMessenger.js.map +1 -1
  113. package/dist/cjs/interaction/Subscription.d.ts +16 -37
  114. package/dist/cjs/interaction/Subscription.d.ts.map +1 -1
  115. package/dist/cjs/interaction/Subscription.js +15 -68
  116. package/dist/cjs/interaction/Subscription.js.map +2 -2
  117. package/dist/cjs/interaction/SubscriptionClient.d.ts +2 -2
  118. package/dist/cjs/interaction/SubscriptionClient.d.ts.map +1 -1
  119. package/dist/cjs/interaction/SubscriptionClient.js +2 -2
  120. package/dist/cjs/interaction/SubscriptionClient.js.map +1 -1
  121. package/dist/cjs/mdns/MdnsClient.d.ts +10 -10
  122. package/dist/cjs/mdns/MdnsClient.d.ts.map +1 -1
  123. package/dist/cjs/mdns/MdnsClient.js +165 -80
  124. package/dist/cjs/mdns/MdnsClient.js.map +1 -1
  125. package/dist/cjs/mdns/MdnsServer.d.ts +2 -2
  126. package/dist/cjs/mdns/MdnsServer.d.ts.map +1 -1
  127. package/dist/cjs/mdns/MdnsServer.js +173 -94
  128. package/dist/cjs/mdns/MdnsServer.js.map +2 -2
  129. package/dist/cjs/mdns/MdnsService.d.ts.map +1 -1
  130. package/dist/cjs/mdns/MdnsService.js +3 -2
  131. package/dist/cjs/mdns/MdnsService.js.map +1 -1
  132. package/dist/cjs/mdns/MdnsSocket.d.ts +3 -2
  133. package/dist/cjs/mdns/MdnsSocket.d.ts.map +1 -1
  134. package/dist/cjs/mdns/MdnsSocket.js +2 -1
  135. package/dist/cjs/mdns/MdnsSocket.js.map +1 -1
  136. package/dist/cjs/peer/ControllerCommissioner.d.ts +2 -2
  137. package/dist/cjs/peer/ControllerCommissioner.d.ts.map +1 -1
  138. package/dist/cjs/peer/ControllerCommissioner.js +26 -28
  139. package/dist/cjs/peer/ControllerCommissioner.js.map +1 -1
  140. package/dist/cjs/peer/ControllerDiscovery.d.ts +1 -1
  141. package/dist/cjs/peer/ControllerDiscovery.d.ts.map +1 -1
  142. package/dist/cjs/peer/ControllerDiscovery.js +3 -3
  143. package/dist/cjs/peer/ControllerDiscovery.js.map +1 -1
  144. package/dist/cjs/peer/Peer.d.ts +57 -0
  145. package/dist/cjs/peer/Peer.d.ts.map +1 -0
  146. package/dist/cjs/peer/Peer.js +182 -0
  147. package/dist/cjs/peer/Peer.js.map +6 -0
  148. package/dist/cjs/peer/PeerAddress.d.ts.map +1 -1
  149. package/dist/cjs/peer/PeerAddress.js +6 -3
  150. package/dist/cjs/peer/PeerAddress.js.map +1 -1
  151. package/dist/cjs/peer/PeerAddressStore.d.ts +3 -3
  152. package/dist/cjs/peer/PeerAddressStore.d.ts.map +1 -1
  153. package/{src/peer/OperationalPeer.ts → dist/cjs/peer/PeerDescriptor.d.ts} +14 -12
  154. package/dist/cjs/peer/PeerDescriptor.d.ts.map +1 -0
  155. package/dist/cjs/peer/PeerDescriptor.js +71 -0
  156. package/dist/cjs/peer/PeerDescriptor.js.map +6 -0
  157. package/dist/cjs/peer/PeerSet.d.ts +23 -26
  158. package/dist/cjs/peer/PeerSet.d.ts.map +1 -1
  159. package/dist/cjs/peer/PeerSet.js +173 -173
  160. package/dist/cjs/peer/PeerSet.js.map +2 -2
  161. package/dist/cjs/peer/index.d.ts +1 -1
  162. package/dist/cjs/peer/index.d.ts.map +1 -1
  163. package/dist/cjs/peer/index.js +1 -1
  164. package/dist/cjs/peer/index.js.map +1 -1
  165. package/dist/cjs/protocol/DeviceAdvertiser.js +4 -4
  166. package/dist/cjs/protocol/DeviceAdvertiser.js.map +1 -1
  167. package/dist/cjs/protocol/ExchangeManager.d.ts +6 -9
  168. package/dist/cjs/protocol/ExchangeManager.d.ts.map +1 -1
  169. package/dist/cjs/protocol/ExchangeManager.js +301 -243
  170. package/dist/cjs/protocol/ExchangeManager.js.map +2 -2
  171. package/dist/cjs/protocol/ExchangeProvider.d.ts +9 -11
  172. package/dist/cjs/protocol/ExchangeProvider.d.ts.map +1 -1
  173. package/dist/cjs/protocol/ExchangeProvider.js +79 -32
  174. package/dist/cjs/protocol/ExchangeProvider.js.map +2 -2
  175. package/dist/cjs/protocol/MessageChannel.d.ts +6 -7
  176. package/dist/cjs/protocol/MessageChannel.d.ts.map +1 -1
  177. package/dist/cjs/protocol/MessageChannel.js +14 -16
  178. package/dist/cjs/protocol/MessageChannel.js.map +1 -1
  179. package/dist/cjs/protocol/MessageCounter.d.ts +4 -4
  180. package/dist/cjs/protocol/MessageCounter.d.ts.map +1 -1
  181. package/dist/cjs/protocol/MessageCounter.js +7 -7
  182. package/dist/cjs/protocol/MessageCounter.js.map +1 -1
  183. package/dist/cjs/protocol/MessageExchange.d.ts +31 -20
  184. package/dist/cjs/protocol/MessageExchange.d.ts.map +1 -1
  185. package/dist/cjs/protocol/MessageExchange.js +316 -231
  186. package/dist/cjs/protocol/MessageExchange.js.map +2 -2
  187. package/dist/cjs/protocol/ProtocolMocks.d.ts +100 -0
  188. package/dist/cjs/protocol/ProtocolMocks.d.ts.map +1 -0
  189. package/dist/cjs/protocol/ProtocolMocks.js +237 -0
  190. package/dist/cjs/protocol/ProtocolMocks.js.map +6 -0
  191. package/dist/cjs/protocol/errors.d.ts +35 -0
  192. package/dist/cjs/protocol/errors.d.ts.map +1 -0
  193. package/dist/cjs/protocol/errors.js +50 -0
  194. package/dist/cjs/protocol/errors.js.map +6 -0
  195. package/dist/cjs/protocol/index.d.ts +2 -1
  196. package/dist/cjs/protocol/index.d.ts.map +1 -1
  197. package/dist/cjs/protocol/index.js +2 -1
  198. package/dist/cjs/protocol/index.js.map +1 -1
  199. package/dist/cjs/securechannel/SecureChannelMessenger.d.ts +1 -0
  200. package/dist/cjs/securechannel/SecureChannelMessenger.d.ts.map +1 -1
  201. package/dist/cjs/securechannel/SecureChannelMessenger.js +3 -0
  202. package/dist/cjs/securechannel/SecureChannelMessenger.js.map +1 -1
  203. package/dist/cjs/securechannel/SecureChannelProtocol.js +2 -2
  204. package/dist/cjs/securechannel/SecureChannelProtocol.js.map +1 -1
  205. package/dist/cjs/session/GroupSession.d.ts +21 -10
  206. package/dist/cjs/session/GroupSession.d.ts.map +1 -1
  207. package/dist/cjs/session/GroupSession.js +37 -12
  208. package/dist/cjs/session/GroupSession.js.map +1 -1
  209. package/dist/cjs/session/NodeSession.d.ts +56 -50
  210. package/dist/cjs/session/NodeSession.d.ts.map +1 -1
  211. package/dist/cjs/session/NodeSession.js +95 -103
  212. package/dist/cjs/session/NodeSession.js.map +1 -1
  213. package/dist/cjs/session/SecureSession.d.ts +4 -4
  214. package/dist/cjs/session/SecureSession.d.ts.map +1 -1
  215. package/dist/cjs/session/SecureSession.js +1 -1
  216. package/dist/cjs/session/SecureSession.js.map +1 -1
  217. package/dist/cjs/session/Session.d.ts +82 -66
  218. package/dist/cjs/session/Session.d.ts.map +1 -1
  219. package/dist/cjs/session/Session.js +218 -45
  220. package/dist/cjs/session/Session.js.map +1 -1
  221. package/dist/cjs/session/SessionManager.d.ts +33 -36
  222. package/dist/cjs/session/SessionManager.d.ts.map +1 -1
  223. package/dist/cjs/session/SessionManager.js +112 -150
  224. package/dist/cjs/session/SessionManager.js.map +1 -1
  225. package/dist/cjs/session/SessionParameters.d.ts +87 -0
  226. package/dist/cjs/session/SessionParameters.d.ts.map +1 -0
  227. package/dist/cjs/session/SessionParameters.js +81 -0
  228. package/dist/cjs/session/SessionParameters.js.map +6 -0
  229. package/dist/{esm/session/InsecureSession.d.ts → cjs/session/UnsecuredSession.d.ts} +18 -16
  230. package/dist/cjs/session/UnsecuredSession.d.ts.map +1 -0
  231. package/dist/cjs/session/{InsecureSession.js → UnsecuredSession.js} +21 -21
  232. package/dist/cjs/session/UnsecuredSession.js.map +6 -0
  233. package/dist/cjs/session/case/CaseClient.d.ts.map +1 -1
  234. package/dist/cjs/session/case/CaseClient.js +6 -4
  235. package/dist/cjs/session/case/CaseClient.js.map +1 -1
  236. package/dist/cjs/session/case/CaseServer.d.ts.map +1 -1
  237. package/dist/cjs/session/case/CaseServer.js +14 -10
  238. package/dist/cjs/session/case/CaseServer.js.map +1 -1
  239. package/dist/cjs/session/index.d.ts +2 -1
  240. package/dist/cjs/session/index.d.ts.map +1 -1
  241. package/dist/cjs/session/index.js +2 -1
  242. package/dist/cjs/session/index.js.map +1 -1
  243. package/dist/cjs/session/pase/PaseClient.d.ts +3 -3
  244. package/dist/cjs/session/pase/PaseClient.d.ts.map +1 -1
  245. package/dist/cjs/session/pase/PaseClient.js +5 -3
  246. package/dist/cjs/session/pase/PaseClient.js.map +1 -1
  247. package/dist/cjs/session/pase/PaseServer.d.ts.map +1 -1
  248. package/dist/cjs/session/pase/PaseServer.js +13 -13
  249. package/dist/cjs/session/pase/PaseServer.js.map +1 -1
  250. package/dist/esm/action/Val.js +1 -1
  251. package/dist/esm/action/Val.js.map +1 -1
  252. package/dist/esm/action/client/ClientInteraction.d.ts.map +1 -1
  253. package/dist/esm/action/client/ClientInteraction.js +83 -35
  254. package/dist/esm/action/client/ClientInteraction.js.map +2 -2
  255. package/dist/esm/action/client/subscription/ClientSubscription.d.ts +10 -5
  256. package/dist/esm/action/client/subscription/ClientSubscription.d.ts.map +1 -1
  257. package/dist/esm/action/client/subscription/ClientSubscription.js +22 -2
  258. package/dist/esm/action/client/subscription/ClientSubscription.js.map +2 -2
  259. package/dist/esm/action/client/subscription/ClientSubscriptionHandler.js +2 -3
  260. package/dist/esm/action/client/subscription/ClientSubscriptionHandler.js.map +1 -1
  261. package/dist/esm/action/client/subscription/ClientSubscriptions.d.ts +4 -2
  262. package/dist/esm/action/client/subscription/ClientSubscriptions.d.ts.map +1 -1
  263. package/dist/esm/action/client/subscription/ClientSubscriptions.js +68 -8
  264. package/dist/esm/action/client/subscription/ClientSubscriptions.js.map +1 -1
  265. package/dist/esm/action/client/subscription/PeerSubscription.d.ts +0 -1
  266. package/dist/esm/action/client/subscription/PeerSubscription.d.ts.map +1 -1
  267. package/dist/esm/action/client/subscription/PeerSubscription.js +1 -2
  268. package/dist/esm/action/client/subscription/PeerSubscription.js.map +1 -1
  269. package/dist/esm/action/client/subscription/SustainedSubscription.d.ts +0 -2
  270. package/dist/esm/action/client/subscription/SustainedSubscription.d.ts.map +1 -1
  271. package/dist/esm/action/client/subscription/SustainedSubscription.js +2 -4
  272. package/dist/esm/action/client/subscription/SustainedSubscription.js.map +1 -1
  273. package/dist/esm/action/request/Invoke.js +2 -2
  274. package/dist/esm/action/request/Invoke.js.map +1 -1
  275. package/dist/esm/action/response/ReadResult.d.ts +1 -1
  276. package/dist/esm/action/response/ReadResult.d.ts.map +1 -1
  277. package/dist/esm/action/server/AttributeReadResponse.d.ts.map +1 -1
  278. package/dist/esm/action/server/AttributeReadResponse.js +78 -25
  279. package/dist/esm/action/server/AttributeReadResponse.js.map +1 -1
  280. package/dist/esm/action/server/AttributeWriteResponse.d.ts.map +1 -1
  281. package/dist/esm/action/server/AttributeWriteResponse.js +70 -17
  282. package/dist/esm/action/server/AttributeWriteResponse.js.map +1 -1
  283. package/dist/esm/action/server/CommandInvokeResponse.d.ts.map +1 -1
  284. package/dist/esm/action/server/CommandInvokeResponse.js +83 -30
  285. package/dist/esm/action/server/CommandInvokeResponse.js.map +1 -1
  286. package/dist/esm/action/server/DataResponse.d.ts +1 -0
  287. package/dist/esm/action/server/DataResponse.d.ts.map +1 -1
  288. package/dist/esm/action/server/DataResponse.js +3 -0
  289. package/dist/esm/action/server/DataResponse.js.map +1 -1
  290. package/dist/esm/action/server/ServerInteraction.d.ts.map +1 -1
  291. package/dist/esm/action/server/ServerInteraction.js +4 -4
  292. package/dist/esm/action/server/ServerInteraction.js.map +1 -1
  293. package/dist/esm/advertisement/Advertisement.d.ts.map +1 -1
  294. package/dist/esm/advertisement/Advertisement.js +66 -14
  295. package/dist/esm/advertisement/Advertisement.js.map +1 -1
  296. package/dist/esm/advertisement/Advertiser.d.ts +4 -1
  297. package/dist/esm/advertisement/Advertiser.d.ts.map +1 -1
  298. package/dist/esm/advertisement/Advertiser.js +63 -2
  299. package/dist/esm/advertisement/Advertiser.js.map +1 -1
  300. package/dist/esm/advertisement/ble/BleAdvertiser.d.ts +6 -1
  301. package/dist/esm/advertisement/ble/BleAdvertiser.d.ts.map +1 -1
  302. package/dist/esm/advertisement/ble/BleAdvertiser.js +1 -1
  303. package/dist/esm/advertisement/ble/BleAdvertiser.js.map +1 -1
  304. package/dist/esm/advertisement/mdns/MdnsAdvertiser.d.ts +5 -1
  305. package/dist/esm/advertisement/mdns/MdnsAdvertiser.d.ts.map +1 -1
  306. package/dist/esm/advertisement/mdns/MdnsAdvertiser.js +1 -1
  307. package/dist/esm/advertisement/mdns/MdnsAdvertiser.js.map +1 -1
  308. package/dist/esm/certificate/kinds/Noc.d.ts.map +1 -1
  309. package/dist/esm/certificate/kinds/Noc.js +8 -6
  310. package/dist/esm/certificate/kinds/Noc.js.map +1 -1
  311. package/dist/esm/certificate/kinds/definitions/asn.js +2 -2
  312. package/dist/esm/certificate/kinds/definitions/asn.js.map +1 -1
  313. package/dist/esm/certificate/kinds/definitions/attestation.d.ts.map +1 -1
  314. package/dist/esm/cluster/client/AttributeClient.d.ts.map +1 -1
  315. package/dist/esm/cluster/client/AttributeClient.js +1 -1
  316. package/dist/esm/cluster/client/AttributeClient.js.map +1 -1
  317. package/dist/esm/codec/MessageCodec.d.ts +8 -1
  318. package/dist/esm/codec/MessageCodec.d.ts.map +1 -1
  319. package/dist/esm/codec/MessageCodec.js +39 -28
  320. package/dist/esm/codec/MessageCodec.js.map +2 -2
  321. package/dist/esm/common/FailsafeContext.d.ts +8 -9
  322. package/dist/esm/common/FailsafeContext.d.ts.map +1 -1
  323. package/dist/esm/common/FailsafeContext.js +27 -33
  324. package/dist/esm/common/FailsafeContext.js.map +1 -1
  325. package/dist/esm/common/FailsafeTimer.d.ts +4 -3
  326. package/dist/esm/common/FailsafeTimer.d.ts.map +1 -1
  327. package/dist/esm/common/FailsafeTimer.js +4 -4
  328. package/dist/esm/common/FailsafeTimer.js.map +1 -1
  329. package/dist/esm/common/Mark.d.ts +17 -0
  330. package/dist/esm/common/Mark.d.ts.map +1 -0
  331. package/dist/esm/common/Mark.js +18 -0
  332. package/dist/esm/common/Mark.js.map +6 -0
  333. package/dist/esm/common/index.d.ts +1 -0
  334. package/dist/esm/common/index.d.ts.map +1 -1
  335. package/dist/esm/common/index.js +1 -0
  336. package/dist/esm/common/index.js.map +1 -1
  337. package/dist/esm/fabric/Fabric.d.ts +16 -8
  338. package/dist/esm/fabric/Fabric.d.ts.map +1 -1
  339. package/dist/esm/fabric/Fabric.js +36 -18
  340. package/dist/esm/fabric/Fabric.js.map +1 -1
  341. package/dist/esm/fabric/FabricAuthority.d.ts +2 -2
  342. package/dist/esm/fabric/FabricAuthority.d.ts.map +1 -1
  343. package/dist/esm/fabric/FabricAuthority.js +5 -5
  344. package/dist/esm/fabric/FabricAuthority.js.map +1 -1
  345. package/dist/esm/fabric/FabricManager.d.ts +10 -14
  346. package/dist/esm/fabric/FabricManager.d.ts.map +1 -1
  347. package/dist/esm/fabric/FabricManager.js +45 -40
  348. package/dist/esm/fabric/FabricManager.js.map +2 -2
  349. package/dist/esm/index.d.ts +1 -1
  350. package/dist/esm/index.d.ts.map +1 -1
  351. package/dist/esm/index.js +1 -1
  352. package/dist/esm/index.js.map +1 -1
  353. package/dist/esm/interaction/AttributeDataEncoder.d.ts +1 -1
  354. package/dist/esm/interaction/InteractionClient.d.ts +2 -2
  355. package/dist/esm/interaction/InteractionClient.d.ts.map +1 -1
  356. package/dist/esm/interaction/InteractionClient.js +39 -22
  357. package/dist/esm/interaction/InteractionClient.js.map +1 -1
  358. package/dist/esm/interaction/InteractionMessenger.d.ts +2 -2
  359. package/dist/esm/interaction/InteractionMessenger.d.ts.map +1 -1
  360. package/dist/esm/interaction/InteractionMessenger.js +33 -28
  361. package/dist/esm/interaction/InteractionMessenger.js.map +1 -1
  362. package/dist/esm/interaction/Subscription.d.ts +16 -37
  363. package/dist/esm/interaction/Subscription.d.ts.map +1 -1
  364. package/dist/esm/interaction/Subscription.js +16 -69
  365. package/dist/esm/interaction/Subscription.js.map +2 -2
  366. package/dist/esm/interaction/SubscriptionClient.d.ts +2 -2
  367. package/dist/esm/interaction/SubscriptionClient.d.ts.map +1 -1
  368. package/dist/esm/interaction/SubscriptionClient.js +2 -2
  369. package/dist/esm/interaction/SubscriptionClient.js.map +1 -1
  370. package/dist/esm/mdns/MdnsClient.d.ts +10 -10
  371. package/dist/esm/mdns/MdnsClient.d.ts.map +1 -1
  372. package/dist/esm/mdns/MdnsClient.js +166 -80
  373. package/dist/esm/mdns/MdnsClient.js.map +1 -1
  374. package/dist/esm/mdns/MdnsServer.d.ts +2 -2
  375. package/dist/esm/mdns/MdnsServer.d.ts.map +1 -1
  376. package/dist/esm/mdns/MdnsServer.js +176 -94
  377. package/dist/esm/mdns/MdnsServer.js.map +2 -2
  378. package/dist/esm/mdns/MdnsService.d.ts.map +1 -1
  379. package/dist/esm/mdns/MdnsService.js +3 -2
  380. package/dist/esm/mdns/MdnsService.js.map +1 -1
  381. package/dist/esm/mdns/MdnsSocket.d.ts +3 -2
  382. package/dist/esm/mdns/MdnsSocket.d.ts.map +1 -1
  383. package/dist/esm/mdns/MdnsSocket.js +2 -1
  384. package/dist/esm/mdns/MdnsSocket.js.map +1 -1
  385. package/dist/esm/peer/ControllerCommissioner.d.ts +2 -2
  386. package/dist/esm/peer/ControllerCommissioner.d.ts.map +1 -1
  387. package/dist/esm/peer/ControllerCommissioner.js +26 -28
  388. package/dist/esm/peer/ControllerCommissioner.js.map +1 -1
  389. package/dist/esm/peer/ControllerDiscovery.d.ts +1 -1
  390. package/dist/esm/peer/ControllerDiscovery.d.ts.map +1 -1
  391. package/dist/esm/peer/ControllerDiscovery.js +1 -1
  392. package/dist/esm/peer/ControllerDiscovery.js.map +1 -1
  393. package/dist/esm/peer/Peer.d.ts +57 -0
  394. package/dist/esm/peer/Peer.d.ts.map +1 -0
  395. package/dist/esm/peer/Peer.js +162 -0
  396. package/dist/esm/peer/Peer.js.map +6 -0
  397. package/dist/esm/peer/PeerAddress.d.ts.map +1 -1
  398. package/dist/esm/peer/PeerAddress.js +6 -3
  399. package/dist/esm/peer/PeerAddress.js.map +1 -1
  400. package/dist/esm/peer/PeerAddressStore.d.ts +3 -3
  401. package/dist/esm/peer/PeerAddressStore.d.ts.map +1 -1
  402. package/dist/{cjs/peer/OperationalPeer.d.ts → esm/peer/PeerDescriptor.d.ts} +14 -7
  403. package/dist/esm/peer/PeerDescriptor.d.ts.map +1 -0
  404. package/dist/esm/peer/PeerDescriptor.js +51 -0
  405. package/dist/esm/peer/PeerDescriptor.js.map +6 -0
  406. package/dist/esm/peer/PeerSet.d.ts +23 -26
  407. package/dist/esm/peer/PeerSet.d.ts.map +1 -1
  408. package/dist/esm/peer/PeerSet.js +173 -175
  409. package/dist/esm/peer/PeerSet.js.map +2 -2
  410. package/dist/esm/peer/index.d.ts +1 -1
  411. package/dist/esm/peer/index.d.ts.map +1 -1
  412. package/dist/esm/peer/index.js +1 -1
  413. package/dist/esm/protocol/DeviceAdvertiser.js +4 -4
  414. package/dist/esm/protocol/DeviceAdvertiser.js.map +1 -1
  415. package/dist/esm/protocol/ExchangeManager.d.ts +6 -9
  416. package/dist/esm/protocol/ExchangeManager.d.ts.map +1 -1
  417. package/dist/esm/protocol/ExchangeManager.js +303 -248
  418. package/dist/esm/protocol/ExchangeManager.js.map +2 -2
  419. package/dist/esm/protocol/ExchangeProvider.d.ts +9 -11
  420. package/dist/esm/protocol/ExchangeProvider.d.ts.map +1 -1
  421. package/dist/esm/protocol/ExchangeProvider.js +81 -37
  422. package/dist/esm/protocol/ExchangeProvider.js.map +2 -2
  423. package/dist/esm/protocol/MessageChannel.d.ts +6 -7
  424. package/dist/esm/protocol/MessageChannel.d.ts.map +1 -1
  425. package/dist/esm/protocol/MessageChannel.js +22 -18
  426. package/dist/esm/protocol/MessageChannel.js.map +1 -1
  427. package/dist/esm/protocol/MessageCounter.d.ts +4 -4
  428. package/dist/esm/protocol/MessageCounter.d.ts.map +1 -1
  429. package/dist/esm/protocol/MessageCounter.js +7 -7
  430. package/dist/esm/protocol/MessageCounter.js.map +1 -1
  431. package/dist/esm/protocol/MessageExchange.d.ts +31 -20
  432. package/dist/esm/protocol/MessageExchange.d.ts.map +1 -1
  433. package/dist/esm/protocol/MessageExchange.js +318 -238
  434. package/dist/esm/protocol/MessageExchange.js.map +2 -2
  435. package/dist/esm/protocol/ProtocolMocks.d.ts +100 -0
  436. package/dist/esm/protocol/ProtocolMocks.d.ts.map +1 -0
  437. package/dist/esm/protocol/ProtocolMocks.js +230 -0
  438. package/dist/esm/protocol/ProtocolMocks.js.map +6 -0
  439. package/dist/esm/protocol/errors.d.ts +35 -0
  440. package/dist/esm/protocol/errors.d.ts.map +1 -0
  441. package/dist/esm/protocol/errors.js +30 -0
  442. package/dist/esm/protocol/errors.js.map +6 -0
  443. package/dist/esm/protocol/index.d.ts +2 -1
  444. package/dist/esm/protocol/index.d.ts.map +1 -1
  445. package/dist/esm/protocol/index.js +2 -1
  446. package/dist/esm/protocol/index.js.map +1 -1
  447. package/dist/esm/securechannel/SecureChannelMessenger.d.ts +1 -0
  448. package/dist/esm/securechannel/SecureChannelMessenger.d.ts.map +1 -1
  449. package/dist/esm/securechannel/SecureChannelMessenger.js +3 -0
  450. package/dist/esm/securechannel/SecureChannelMessenger.js.map +1 -1
  451. package/dist/esm/securechannel/SecureChannelProtocol.js +2 -2
  452. package/dist/esm/securechannel/SecureChannelProtocol.js.map +1 -1
  453. package/dist/esm/session/GroupSession.d.ts +21 -10
  454. package/dist/esm/session/GroupSession.d.ts.map +1 -1
  455. package/dist/esm/session/GroupSession.js +41 -12
  456. package/dist/esm/session/GroupSession.js.map +1 -1
  457. package/dist/esm/session/NodeSession.d.ts +56 -50
  458. package/dist/esm/session/NodeSession.d.ts.map +1 -1
  459. package/dist/esm/session/NodeSession.js +99 -105
  460. package/dist/esm/session/NodeSession.js.map +1 -1
  461. package/dist/esm/session/SecureSession.d.ts +4 -4
  462. package/dist/esm/session/SecureSession.d.ts.map +1 -1
  463. package/dist/esm/session/SecureSession.js +1 -1
  464. package/dist/esm/session/SecureSession.js.map +1 -1
  465. package/dist/esm/session/Session.d.ts +82 -66
  466. package/dist/esm/session/Session.d.ts.map +1 -1
  467. package/dist/esm/session/Session.js +223 -45
  468. package/dist/esm/session/Session.js.map +1 -1
  469. package/dist/esm/session/SessionManager.d.ts +33 -36
  470. package/dist/esm/session/SessionManager.d.ts.map +1 -1
  471. package/dist/esm/session/SessionManager.js +113 -157
  472. package/dist/esm/session/SessionManager.js.map +1 -1
  473. package/dist/esm/session/SessionParameters.d.ts +87 -0
  474. package/dist/esm/session/SessionParameters.d.ts.map +1 -0
  475. package/dist/esm/session/SessionParameters.js +61 -0
  476. package/dist/esm/session/SessionParameters.js.map +6 -0
  477. package/dist/{cjs/session/InsecureSession.d.ts → esm/session/UnsecuredSession.d.ts} +18 -16
  478. package/dist/esm/session/UnsecuredSession.d.ts.map +1 -0
  479. package/dist/esm/session/{InsecureSession.js → UnsecuredSession.js} +18 -18
  480. package/dist/esm/session/UnsecuredSession.js.map +6 -0
  481. package/dist/esm/session/case/CaseClient.d.ts.map +1 -1
  482. package/dist/esm/session/case/CaseClient.js +5 -3
  483. package/dist/esm/session/case/CaseClient.js.map +1 -1
  484. package/dist/esm/session/case/CaseServer.d.ts.map +1 -1
  485. package/dist/esm/session/case/CaseServer.js +14 -10
  486. package/dist/esm/session/case/CaseServer.js.map +1 -1
  487. package/dist/esm/session/index.d.ts +2 -1
  488. package/dist/esm/session/index.d.ts.map +1 -1
  489. package/dist/esm/session/index.js +2 -1
  490. package/dist/esm/session/index.js.map +1 -1
  491. package/dist/esm/session/pase/PaseClient.d.ts +3 -3
  492. package/dist/esm/session/pase/PaseClient.d.ts.map +1 -1
  493. package/dist/esm/session/pase/PaseClient.js +5 -3
  494. package/dist/esm/session/pase/PaseClient.js.map +1 -1
  495. package/dist/esm/session/pase/PaseServer.d.ts.map +1 -1
  496. package/dist/esm/session/pase/PaseServer.js +13 -13
  497. package/dist/esm/session/pase/PaseServer.js.map +1 -1
  498. package/package.json +6 -6
  499. package/src/action/client/ClientInteraction.ts +47 -13
  500. package/src/action/client/subscription/ClientSubscription.ts +30 -5
  501. package/src/action/client/subscription/ClientSubscriptionHandler.ts +2 -4
  502. package/src/action/client/subscription/ClientSubscriptions.ts +14 -3
  503. package/src/action/client/subscription/PeerSubscription.ts +2 -2
  504. package/src/action/client/subscription/SustainedSubscription.ts +2 -6
  505. package/src/action/request/Invoke.ts +2 -2
  506. package/src/action/response/ReadResult.ts +1 -1
  507. package/src/action/server/AttributeReadResponse.ts +2 -0
  508. package/src/action/server/AttributeWriteResponse.ts +2 -0
  509. package/src/action/server/CommandInvokeResponse.ts +1 -0
  510. package/src/action/server/DataResponse.ts +4 -0
  511. package/src/action/server/ServerInteraction.ts +4 -4
  512. package/src/advertisement/Advertisement.ts +6 -7
  513. package/src/advertisement/Advertiser.ts +12 -1
  514. package/src/advertisement/ble/BleAdvertiser.ts +7 -2
  515. package/src/advertisement/mdns/MdnsAdvertiser.ts +7 -1
  516. package/src/certificate/kinds/Noc.ts +12 -7
  517. package/src/certificate/kinds/definitions/asn.ts +2 -2
  518. package/src/certificate/kinds/definitions/attestation.ts +1 -0
  519. package/src/cluster/client/AttributeClient.ts +1 -1
  520. package/src/codec/MessageCodec.ts +39 -32
  521. package/src/common/FailsafeContext.ts +36 -39
  522. package/src/common/FailsafeTimer.ts +7 -6
  523. package/src/common/Mark.ts +17 -0
  524. package/src/common/index.ts +1 -0
  525. package/src/fabric/Fabric.ts +51 -23
  526. package/src/fabric/FabricAuthority.ts +4 -4
  527. package/src/fabric/FabricManager.ts +53 -40
  528. package/src/index.ts +3 -1
  529. package/src/interaction/InteractionClient.ts +40 -23
  530. package/src/interaction/InteractionMessenger.ts +38 -32
  531. package/src/interaction/Subscription.ts +20 -92
  532. package/src/interaction/SubscriptionClient.ts +3 -3
  533. package/src/mdns/MdnsClient.ts +20 -3
  534. package/src/mdns/MdnsServer.ts +13 -1
  535. package/src/mdns/MdnsService.ts +3 -2
  536. package/src/mdns/MdnsSocket.ts +9 -3
  537. package/src/peer/ControllerCommissioner.ts +35 -37
  538. package/src/peer/ControllerDiscovery.ts +1 -1
  539. package/src/peer/Peer.ts +161 -0
  540. package/src/peer/PeerAddress.ts +6 -2
  541. package/src/peer/PeerAddressStore.ts +3 -3
  542. package/src/peer/PeerDescriptor.ts +89 -0
  543. package/src/peer/PeerSet.ts +145 -213
  544. package/src/peer/index.ts +1 -1
  545. package/src/protocol/DeviceAdvertiser.ts +4 -4
  546. package/src/protocol/ExchangeManager.ts +149 -178
  547. package/src/protocol/ExchangeProvider.ts +31 -40
  548. package/src/protocol/MessageChannel.ts +29 -18
  549. package/src/protocol/MessageCounter.ts +8 -8
  550. package/src/protocol/MessageExchange.ts +181 -144
  551. package/src/protocol/ProtocolMocks.ts +302 -0
  552. package/src/protocol/errors.ts +44 -0
  553. package/src/protocol/index.ts +2 -1
  554. package/src/securechannel/SecureChannelMessenger.ts +4 -0
  555. package/src/securechannel/SecureChannelProtocol.ts +2 -2
  556. package/src/session/GroupSession.ts +67 -23
  557. package/src/session/NodeSession.ts +140 -136
  558. package/src/session/SecureSession.ts +6 -5
  559. package/src/session/Session.ts +234 -101
  560. package/src/session/SessionManager.ts +148 -187
  561. package/src/session/SessionParameters.ts +108 -0
  562. package/src/session/{InsecureSession.ts → UnsecuredSession.ts} +28 -26
  563. package/src/session/case/CaseClient.ts +6 -3
  564. package/src/session/case/CaseServer.ts +15 -11
  565. package/src/session/index.ts +2 -1
  566. package/src/session/pase/PaseClient.ts +12 -5
  567. package/src/session/pase/PaseServer.ts +14 -13
  568. package/dist/cjs/peer/OperationalPeer.d.ts.map +0 -1
  569. package/dist/cjs/peer/OperationalPeer.js.map +0 -6
  570. package/dist/cjs/protocol/ChannelManager.d.ts +0 -29
  571. package/dist/cjs/protocol/ChannelManager.d.ts.map +0 -1
  572. package/dist/cjs/protocol/ChannelManager.js +0 -178
  573. package/dist/cjs/protocol/ChannelManager.js.map +0 -6
  574. package/dist/cjs/session/InsecureSession.d.ts.map +0 -1
  575. package/dist/cjs/session/InsecureSession.js.map +0 -6
  576. package/dist/esm/peer/OperationalPeer.d.ts +0 -38
  577. package/dist/esm/peer/OperationalPeer.d.ts.map +0 -1
  578. package/dist/esm/peer/OperationalPeer.js +0 -6
  579. package/dist/esm/peer/OperationalPeer.js.map +0 -6
  580. package/dist/esm/protocol/ChannelManager.d.ts +0 -29
  581. package/dist/esm/protocol/ChannelManager.d.ts.map +0 -1
  582. package/dist/esm/protocol/ChannelManager.js +0 -158
  583. package/dist/esm/protocol/ChannelManager.js.map +0 -6
  584. package/dist/esm/session/InsecureSession.d.ts.map +0 -1
  585. package/dist/esm/session/InsecureSession.js.map +0 -6
  586. package/src/protocol/ChannelManager.ts +0 -180
@@ -3,6 +3,10 @@ var __defProp = Object.defineProperty;
3
3
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
5
5
  var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : /* @__PURE__ */ Symbol.for("Symbol." + name);
7
+ var __typeError = (msg) => {
8
+ throw TypeError(msg);
9
+ };
6
10
  var __export = (target, all) => {
7
11
  for (var name in all)
8
12
  __defProp(target, name, { get: all[name], enumerable: true });
@@ -16,6 +20,47 @@ var __copyProps = (to, from, except, desc) => {
16
20
  return to;
17
21
  };
18
22
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
23
+ var __using = (stack, value, async) => {
24
+ if (value != null) {
25
+ if (typeof value !== "object" && typeof value !== "function") __typeError("Object expected");
26
+ var dispose, inner;
27
+ if (async) dispose = value[__knownSymbol("asyncDispose")];
28
+ if (dispose === void 0) {
29
+ dispose = value[__knownSymbol("dispose")];
30
+ if (async) inner = dispose;
31
+ }
32
+ if (typeof dispose !== "function") __typeError("Object not disposable");
33
+ if (inner) dispose = function() {
34
+ try {
35
+ inner.call(this);
36
+ } catch (e) {
37
+ return Promise.reject(e);
38
+ }
39
+ };
40
+ stack.push([async, dispose, value]);
41
+ } else if (async) {
42
+ stack.push([async]);
43
+ }
44
+ return value;
45
+ };
46
+ var __callDispose = (stack, error, hasError) => {
47
+ var E = typeof SuppressedError === "function" ? SuppressedError : function(e, s, m, _) {
48
+ return _ = Error(m), _.name = "SuppressedError", _.error = e, _.suppressed = s, _;
49
+ };
50
+ var fail = (e) => error = hasError ? new E(e, error, "An error was suppressed during disposal") : (hasError = true, e);
51
+ var next = (it) => {
52
+ while (it = stack.pop()) {
53
+ try {
54
+ var result = it[1] && it[1].call(it[2]);
55
+ if (it[0]) return Promise.resolve(result).then(next, (e) => (fail(e), next()));
56
+ } catch (e) {
57
+ fail(e);
58
+ }
59
+ }
60
+ if (hasError) throw error;
61
+ };
62
+ return next();
63
+ };
19
64
  var ExchangeManager_exports = {};
20
65
  __export(ExchangeManager_exports, {
21
66
  ExchangeCounter: () => ExchangeCounter,
@@ -23,14 +68,15 @@ __export(ExchangeManager_exports, {
23
68
  });
24
69
  module.exports = __toCommonJS(ExchangeManager_exports);
25
70
  var import_MessageCodec = require("#codec/MessageCodec.js");
71
+ var import_Mark = require("#common/Mark.js");
26
72
  var import_general = require("#general");
27
73
  var import_MessageChannel = require("#protocol/MessageChannel.js");
28
74
  var import_SecureChannelMessenger = require("#securechannel/SecureChannelMessenger.js");
29
- var import_InsecureSession = require("#session/InsecureSession.js");
30
75
  var import_NodeSession = require("#session/NodeSession.js");
76
+ var import_Session = require("#session/Session.js");
31
77
  var import_SessionManager = require("#session/SessionManager.js");
78
+ var import_UnsecuredSession = require("#session/UnsecuredSession.js");
32
79
  var import_types = require("#types");
33
- var import_ChannelManager = require("./ChannelManager.js");
34
80
  var import_MessageExchange = require("./MessageExchange.js");
35
81
  var import_MessageReceptionState = require("./MessageReceptionState.js");
36
82
  /**
@@ -41,45 +87,41 @@ var import_MessageReceptionState = require("./MessageReceptionState.js");
41
87
  const logger = import_general.Logger.get("ExchangeManager");
42
88
  const MAXIMUM_CONCURRENT_OUTGOING_EXCHANGES_PER_SESSION = 30;
43
89
  class ExchangeManager {
90
+ #lifetime;
44
91
  #transports;
45
- #sessionManager;
46
- #channelManager;
92
+ #sessions;
47
93
  #exchangeCounter;
48
94
  #exchanges = /* @__PURE__ */ new Map();
49
95
  #protocols = /* @__PURE__ */ new Map();
50
96
  #listeners = /* @__PURE__ */ new Map();
51
- #closers = /* @__PURE__ */ new Set();
97
+ #workers;
52
98
  #observers = new import_general.ObserverGroup(this);
53
- #closing = false;
99
+ #sessionObservers = /* @__PURE__ */ new Map();
100
+ #isClosing = false;
54
101
  constructor(context) {
102
+ this.#lifetime = context.lifetime.join("exchanges");
103
+ this.#workers = new import_general.BasicMultiplex();
55
104
  this.#transports = context.netInterface;
56
- this.#sessionManager = context.sessionManager;
57
- this.#channelManager = context.channelManager;
105
+ this.#sessions = context.sessions;
58
106
  this.#exchangeCounter = new ExchangeCounter(context.entropy);
59
107
  for (const netInterface of this.#transports) {
60
- this.#addListener(netInterface);
108
+ this.#addTransport(netInterface);
61
109
  }
62
- this.#observers.on(this.#transports.added, this.#addListener);
63
- this.#observers.on(this.#transports.deleted, this.#deleteListener);
64
- this.#observers.on(this.#sessionManager.sessions.deleted, (session) => {
65
- if (!session.closingAfterExchangeFinished) {
66
- session.closer = this.#closeSession(session);
67
- }
68
- });
110
+ this.#observers.on(this.#transports.added, this.#addTransport);
111
+ this.#observers.on(this.#transports.deleted, this.#deleteTransport);
112
+ this.#observers.on(this.#sessions.sessions.added, this.#addSession);
113
+ this.#observers.on(this.#sessions.sessions.deleted, this.#deleteSession);
69
114
  }
70
115
  static [import_general.Environmental.create](env) {
71
116
  const instance = new ExchangeManager({
117
+ lifetime: env,
72
118
  entropy: env.get(import_general.Entropy),
73
119
  netInterface: env.get(import_general.ConnectionlessTransportSet),
74
- sessionManager: env.get(import_SessionManager.SessionManager),
75
- channelManager: env.get(import_ChannelManager.ChannelManager)
120
+ sessions: env.get(import_SessionManager.SessionManager)
76
121
  });
77
122
  env.set(ExchangeManager, instance);
78
123
  return instance;
79
124
  }
80
- get channels() {
81
- return this.#channelManager;
82
- }
83
125
  hasProtocolHandler(protocolId) {
84
126
  return this.#protocols.has(protocolId);
85
127
  }
@@ -93,226 +135,216 @@ class ExchangeManager {
93
135
  this.#protocols.set(protocol.id, protocol);
94
136
  }
95
137
  initiateExchange(address, protocolId) {
96
- return this.initiateExchangeWithChannel(this.#channelManager.getChannel(address), protocolId);
138
+ return this.initiateExchangeForSession(this.#sessions.sessionFor(address), protocolId);
97
139
  }
98
- initiateExchangeWithChannel(channel, protocolId) {
140
+ initiateExchangeForSession(session, protocolId) {
99
141
  const exchangeId = this.#exchangeCounter.getIncrementedCounter();
100
142
  const exchangeIndex = exchangeId | 65536;
101
- const exchange = import_MessageExchange.MessageExchange.initiate(this.#messageExchangeContextFor(channel), exchangeId, protocolId);
143
+ const exchange = import_MessageExchange.MessageExchange.initiate(this.#messageExchangeContextFor(session), exchangeId, protocolId);
102
144
  this.#addExchange(exchangeIndex, exchange);
103
145
  return exchange;
104
146
  }
105
147
  async close() {
106
- this.#closing = true;
107
- for (const protocol of this.#protocols.values()) {
108
- await protocol.close();
109
- }
110
- for (const listeners of this.#listeners.keys()) {
111
- this.#deleteListener(listeners);
112
- }
113
- await import_general.MatterAggregateError.allSettled(this.#closers, "Error closing exchanges").catch(
114
- (error) => logger.error(error)
115
- );
116
- await import_general.MatterAggregateError.allSettled(
117
- Array.from(this.#exchanges.values()).map((exchange) => exchange.close(true)),
118
- "Error closing exchanges"
119
- ).catch((error) => logger.error(error));
120
- this.#exchanges.clear();
121
- }
122
- async onMessage(channel, messageBytes) {
123
- const packet = import_MessageCodec.MessageCodec.decodePacket(messageBytes);
124
- const bytes = import_general.Bytes.of(messageBytes);
125
- const aad = bytes.slice(0, bytes.length - packet.applicationPayload.byteLength);
126
- const messageId = packet.header.messageId;
127
- let isDuplicate;
128
- let session;
129
- let message;
130
- if (packet.header.sessionType === import_MessageCodec.SessionType.Unicast) {
131
- if (packet.header.sessionId === import_InsecureSession.UNICAST_UNSECURE_SESSION_ID) {
132
- if (this.#closing) return;
133
- const initiatorNodeId = packet.header.sourceNodeId ?? import_types.NodeId.UNSPECIFIED_NODE_ID;
134
- session = this.#sessionManager.getUnsecureSession(initiatorNodeId) ?? this.#sessionManager.createInsecureSession({
135
- initiatorNodeId
136
- });
137
- } else {
138
- session = this.#sessionManager.getSession(packet.header.sessionId);
148
+ var _stack3 = [];
149
+ try {
150
+ if (this.#isClosing) {
151
+ return;
139
152
  }
140
- if (session === void 0) {
141
- throw new import_general.MatterFlowError(
142
- `Cannot find a session for ID ${packet.header.sessionId}${packet.header.sourceNodeId !== void 0 ? ` and source NodeId ${packet.header.sourceNodeId}` : ""}`
143
- );
153
+ const closing = __using(_stack3, this.#lifetime.closing());
154
+ this.#isClosing = true;
155
+ const exchangesClosed = new import_general.BasicMultiplex();
156
+ for (const exchange of this.#exchanges.values()) {
157
+ exchangesClosed.add(exchange.close(true));
144
158
  }
145
- message = session.decode(packet, aad);
146
- try {
147
- session.updateMessageCounter(messageId);
148
- isDuplicate = false;
149
- } catch (e) {
150
- import_MessageReceptionState.DuplicateMessageError.accept(e);
151
- isDuplicate = true;
159
+ {
160
+ var _stack = [];
161
+ try {
162
+ const _closing = __using(_stack, closing.join("exchanges"));
163
+ await exchangesClosed;
164
+ } catch (_) {
165
+ var _error = _, _hasError = true;
166
+ } finally {
167
+ __callDispose(_stack, _error, _hasError);
168
+ }
152
169
  }
153
- } else if (packet.header.sessionType === import_MessageCodec.SessionType.Group) {
154
- if (this.#closing) return;
155
- if (packet.header.sourceNodeId === void 0) {
156
- throw new import_general.UnexpectedDataError("Group session message must include a source NodeId");
170
+ for (const listener of this.#listeners.keys()) {
171
+ this.#deleteTransport(listener);
157
172
  }
158
- let key;
159
- ({ session, message, key } = this.#sessionManager.groupSessionFromPacket(packet, aad));
160
- try {
161
- session.updateMessageCounter(messageId, packet.header.sourceNodeId, key);
162
- isDuplicate = false;
163
- } catch (e) {
164
- import_MessageReceptionState.DuplicateMessageError.accept(e);
165
- isDuplicate = true;
173
+ for (const protocol of this.#protocols.values()) {
174
+ this.#workers.add(protocol.close());
166
175
  }
167
- } else {
168
- throw new import_general.MatterFlowError(`Unsupported session type: ${packet.header.sessionType}`);
169
- }
170
- const exchangeIndex = message.payloadHeader.isInitiatorMessage ? message.payloadHeader.exchangeId : message.payloadHeader.exchangeId | 65536;
171
- let exchange = this.#exchanges.get(exchangeIndex);
172
- if (exchange !== void 0 && (exchange.session.id !== session.id || exchange.isInitiator === message.payloadHeader.isInitiatorMessage)) {
173
- exchange = void 0;
174
- }
175
- const isStandaloneAck = import_types.SecureMessageType.isStandaloneAck(
176
- message.payloadHeader.protocolId,
177
- message.payloadHeader.messageType
178
- );
179
- const messageDiagnostics = import_general.Diagnostic.dict({
180
- message: messageId,
181
- protocol: message.payloadHeader.protocolId,
182
- exId: message.payloadHeader.exchangeId,
183
- via: channel.name
184
- });
185
- if (exchange !== void 0) {
186
- if (exchange.requiresSecureSession !== session.isSecure || exchange.session.id !== packet.header.sessionId || exchange.isClosing && !isStandaloneAck) {
187
- logger.debug(
188
- "Ignore \xAB message because",
189
- exchange.isClosing ? "exchange is closing" : exchange.session.id !== packet.header.sessionId ? `session ID mismatch ${exchange.session.id} vs ${packet.header.sessionId}` : `session security requirements (${exchange.requiresSecureSession}) not fulfilled`,
190
- messageDiagnostics
191
- );
192
- await exchange.send(import_types.SecureMessageType.StandaloneAck, new Uint8Array(0), {
193
- includeAcknowledgeMessageId: message.packetHeader.messageId,
194
- protocolId: import_types.SECURE_CHANNEL_PROTOCOL_ID
195
- });
196
- await exchange.close();
197
- return;
176
+ {
177
+ var _stack2 = [];
178
+ try {
179
+ const _closing = __using(_stack2, closing.join("workers"));
180
+ await this.#workers;
181
+ } catch (_2) {
182
+ var _error2 = _2, _hasError2 = true;
183
+ } finally {
184
+ __callDispose(_stack2, _error2, _hasError2);
185
+ }
198
186
  }
199
- await exchange.onMessageReceived(message, isDuplicate);
200
- } else {
201
- if (this.#closing) return;
202
- if (session.closingAfterExchangeFinished) {
203
- throw new import_general.MatterFlowError(
204
- `Session with ID ${packet.header.sessionId} marked for closure, decline new exchange creation.`
205
- );
187
+ this.#exchanges.clear();
188
+ this.#observers.close();
189
+ } catch (_3) {
190
+ var _error3 = _3, _hasError3 = true;
191
+ } finally {
192
+ __callDispose(_stack3, _error3, _hasError3);
193
+ }
194
+ }
195
+ async #onMessage(channel, messageBytes) {
196
+ var _stack = [];
197
+ try {
198
+ const _lifetime = __using(_stack, this.#lifetime.join("receiving from", import_general.Diagnostic.strong(channel.name)));
199
+ const packet = import_MessageCodec.MessageCodec.decodePacket(messageBytes);
200
+ const bytes = import_general.Bytes.of(messageBytes);
201
+ const aad = bytes.slice(0, bytes.length - packet.applicationPayload.byteLength);
202
+ const messageId = packet.header.messageId;
203
+ let isDuplicate;
204
+ let session;
205
+ let message;
206
+ if (packet.header.sessionType === import_MessageCodec.SessionType.Unicast) {
207
+ if (packet.header.sessionId === import_UnsecuredSession.UNICAST_UNSECURE_SESSION_ID) {
208
+ if (this.#isClosing) return;
209
+ const initiatorNodeId = packet.header.sourceNodeId ?? import_types.NodeId.UNSPECIFIED_NODE_ID;
210
+ session = this.#sessions.getUnsecuredSession(initiatorNodeId) ?? this.#sessions.createUnsecuredSession({
211
+ channel,
212
+ initiatorNodeId
213
+ });
214
+ } else {
215
+ session = this.#sessions.getSession(packet.header.sessionId);
216
+ }
217
+ if (session === void 0) {
218
+ logger.warn(
219
+ `Ignoring message for unknown session ${import_Session.Session.idStrOf(packet)}${packet.header.sourceNodeId !== void 0 ? ` from node ${import_general.hex.fixed(packet.header.sourceNodeId, 16)}` : ""}`
220
+ );
221
+ return;
222
+ }
223
+ message = session.decode(packet, aad);
224
+ try {
225
+ session.updateMessageCounter(messageId);
226
+ isDuplicate = false;
227
+ } catch (e) {
228
+ import_MessageReceptionState.DuplicateMessageError.accept(e);
229
+ isDuplicate = true;
230
+ }
231
+ } else if (packet.header.sessionType === import_MessageCodec.SessionType.Group) {
232
+ if (this.#isClosing) return;
233
+ if (packet.header.sourceNodeId === void 0) {
234
+ throw new import_general.UnexpectedDataError("Group session message must include a source NodeId");
235
+ }
236
+ let key;
237
+ ({ session, message, key } = this.#sessions.groupSessionFromPacket(packet, aad));
238
+ try {
239
+ session.updateMessageCounter(messageId, packet.header.sourceNodeId, key);
240
+ isDuplicate = false;
241
+ } catch (e) {
242
+ import_MessageReceptionState.DuplicateMessageError.accept(e);
243
+ isDuplicate = true;
244
+ }
245
+ } else {
246
+ throw new import_general.MatterFlowError(`Unsupported session type: ${packet.header.sessionType}`);
206
247
  }
207
- const protocolHandler = this.#protocols.get(message.payloadHeader.protocolId);
208
- const handlerSecurityMismatch = protocolHandler?.requiresSecureSession !== void 0 && protocolHandler.requiresSecureSession !== session.isSecure;
209
- if (handlerSecurityMismatch) {
210
- logger.debug(
211
- `Ignore \xAB message because not matching the security requirements (${protocolHandler.requiresSecureSession} vs. ${session.isSecure})`,
212
- messageDiagnostics
213
- );
248
+ const exchangeIndex = message.payloadHeader.isInitiatorMessage ? message.payloadHeader.exchangeId : message.payloadHeader.exchangeId | 65536;
249
+ let exchange = this.#exchanges.get(exchangeIndex);
250
+ if (exchange !== void 0 && (exchange.session.id !== session.id || exchange.isInitiator === message.payloadHeader.isInitiatorMessage)) {
251
+ exchange = void 0;
214
252
  }
215
- if (protocolHandler !== void 0 && message.payloadHeader.isInitiatorMessage && !isDuplicate && !handlerSecurityMismatch) {
216
- if (isStandaloneAck && !message.payloadHeader.requiresAck) {
217
- logger.debug("Ignore \xAB unsolicited standalone ack message", messageDiagnostics);
253
+ const isStandaloneAck = import_types.SecureMessageType.isStandaloneAck(
254
+ message.payloadHeader.protocolId,
255
+ message.payloadHeader.messageType
256
+ );
257
+ const messageDiagnostics = import_general.Diagnostic.dict({
258
+ message: messageId,
259
+ protocol: message.payloadHeader.protocolId,
260
+ exId: message.payloadHeader.exchangeId,
261
+ via: channel.name
262
+ });
263
+ if (exchange !== void 0) {
264
+ this.#lifetime.details.exchange = exchange.idStr;
265
+ if (exchange.session.id !== packet.header.sessionId || exchange.isClosing && !isStandaloneAck) {
266
+ logger.debug(
267
+ exchange.via,
268
+ "Ignore",
269
+ import_Mark.Mark.INBOUND,
270
+ "message because",
271
+ exchange.isClosing ? "exchange is closing" : `session ID mismatch (header session is ${import_Session.Session.idStrOf(packet)}`,
272
+ messageDiagnostics
273
+ );
274
+ await exchange.send(import_types.SecureMessageType.StandaloneAck, new Uint8Array(0), {
275
+ includeAcknowledgeMessageId: message.packetHeader.messageId,
276
+ protocolId: import_types.SECURE_CHANNEL_PROTOCOL_ID
277
+ });
278
+ await exchange.close();
218
279
  return;
219
280
  }
220
- const exchange2 = import_MessageExchange.MessageExchange.fromInitialMessage(
221
- this.#messageExchangeContextFor(await this.#channelManager.getOrCreateChannel(channel, session)),
222
- message
223
- );
224
- this.#addExchange(exchangeIndex, exchange2);
225
- await exchange2.onMessageReceived(message);
226
- await protocolHandler.onNewExchange(exchange2, message);
227
- } else if (message.payloadHeader.requiresAck) {
228
- const exchange2 = import_MessageExchange.MessageExchange.fromInitialMessage(
229
- this.#messageExchangeContextFor(await this.#channelManager.getOrCreateChannel(channel, session)),
230
- message
231
- );
232
- this.#addExchange(exchangeIndex, exchange2);
233
- await exchange2.send(import_types.SecureMessageType.StandaloneAck, new Uint8Array(0), {
234
- includeAcknowledgeMessageId: message.packetHeader.messageId,
235
- protocolId: import_types.SECURE_CHANNEL_PROTOCOL_ID
236
- });
237
- await exchange2.close();
238
- logger.debug("Ignore \xAB unsolicited message", messageDiagnostics);
281
+ await exchange.onMessageReceived(message, isDuplicate);
239
282
  } else {
240
- if (protocolHandler === void 0) {
241
- throw new import_general.MatterFlowError(`Unsupported protocol ${message.payloadHeader.protocolId}`);
283
+ if (this.#isClosing) return;
284
+ if (session.isClosing) {
285
+ throw new import_general.MatterFlowError(
286
+ `Declining new exchange because session ${import_Session.Session.idStrOf(packet)} is closing`
287
+ );
242
288
  }
243
- if (isDuplicate) {
244
- if (message.packetHeader.destGroupId === void 0) {
245
- logger.debug("Ignore \xAB duplicate message", messageDiagnostics);
246
- }
247
- return;
289
+ const protocolHandler = this.#protocols.get(message.payloadHeader.protocolId);
290
+ const handlerSecurityMismatch = protocolHandler?.requiresSecureSession !== void 0 && protocolHandler.requiresSecureSession !== session.isSecure;
291
+ if (handlerSecurityMismatch) {
292
+ logger.debug(
293
+ "Ignore",
294
+ import_Mark.Mark.INBOUND,
295
+ `message because not matching the security requirements (${protocolHandler.requiresSecureSession} vs. ${session.isSecure})`,
296
+ messageDiagnostics
297
+ );
248
298
  }
249
- if (!isStandaloneAck) {
250
- logger.info("Discard \xAB unexpected message", messageDiagnostics, import_general.Diagnostic.json(message));
299
+ if (protocolHandler !== void 0 && message.payloadHeader.isInitiatorMessage && !isDuplicate && !handlerSecurityMismatch) {
300
+ if (isStandaloneAck && !message.payloadHeader.requiresAck) {
301
+ logger.debug("Ignore", import_Mark.Mark.INBOUND, "unsolicited standalone ack message", messageDiagnostics);
302
+ return;
303
+ }
304
+ const exchange2 = import_MessageExchange.MessageExchange.fromInitialMessage(this.#messageExchangeContextFor(session), message);
305
+ this.#lifetime.details.exchange = exchange2.idStr;
306
+ this.#addExchange(exchangeIndex, exchange2);
307
+ await exchange2.onMessageReceived(message);
308
+ await protocolHandler.onNewExchange(exchange2, message);
309
+ } else if (message.payloadHeader.requiresAck) {
310
+ const exchange2 = import_MessageExchange.MessageExchange.fromInitialMessage(this.#messageExchangeContextFor(session), message);
311
+ this.#lifetime.details.exchange = exchange2.idStr;
312
+ this.#addExchange(exchangeIndex, exchange2);
313
+ await exchange2.send(import_types.SecureMessageType.StandaloneAck, new Uint8Array(0), {
314
+ includeAcknowledgeMessageId: message.packetHeader.messageId,
315
+ protocolId: import_types.SECURE_CHANNEL_PROTOCOL_ID
316
+ });
317
+ await exchange2.close();
318
+ logger.debug("Ignore", import_Mark.Mark.INBOUND, "unsolicited message", messageDiagnostics);
319
+ } else {
320
+ if (protocolHandler === void 0) {
321
+ throw new import_general.MatterFlowError(`Unsupported protocol ${message.payloadHeader.protocolId}`);
322
+ }
323
+ if (isDuplicate) {
324
+ if (message.packetHeader.destGroupId === void 0) {
325
+ logger.debug("Ignore", import_Mark.Mark.INBOUND, "duplicate message", messageDiagnostics);
326
+ }
327
+ return;
328
+ }
329
+ if (!isStandaloneAck) {
330
+ logger.info(
331
+ "Discard",
332
+ import_Mark.Mark.INBOUND,
333
+ "unexpected message",
334
+ messageDiagnostics,
335
+ import_general.Diagnostic.json(message)
336
+ );
337
+ }
251
338
  }
252
339
  }
340
+ } catch (_) {
341
+ var _error = _, _hasError = true;
342
+ } finally {
343
+ __callDispose(_stack, _error, _hasError);
253
344
  }
254
345
  }
255
346
  async deleteExchange(exchangeIndex) {
256
- const exchange = this.#exchanges.get(exchangeIndex);
257
- if (exchange === void 0) {
258
- logger.info(`Exchange with index ${exchangeIndex} to delete not found or already deleted.`);
259
- return;
260
- }
261
- const { session } = exchange;
262
347
  this.#exchanges.delete(exchangeIndex);
263
- if (import_NodeSession.NodeSession.is(session) && session.closingAfterExchangeFinished) {
264
- logger.debug(
265
- `Exchange index ${exchangeIndex} on Session ${session.name} is already marked for closure. Close session now.`
266
- );
267
- try {
268
- await this.#closeSession(session);
269
- } catch (error) {
270
- logger.error(`Error closing session ${session.name}. Ignoring.`, error);
271
- }
272
- }
273
- }
274
- async #closeSession(session) {
275
- const sessionId = session.id;
276
- const sessionName = session.name;
277
- const asExchangeSession = session;
278
- if (asExchangeSession.closedByExchange) {
279
- return;
280
- }
281
- asExchangeSession.closedByExchange = true;
282
- for (const [_exchangeIndex, exchange] of this.#exchanges.entries()) {
283
- if (exchange.session.id === sessionId) {
284
- await exchange.destroy();
285
- }
286
- }
287
- if (session.sendCloseMessageWhenClosing) {
288
- let channel;
289
- try {
290
- channel = this.#channelManager.getChannelForSession(session);
291
- } catch (e) {
292
- logger.debug(`Not sending close for session ${sessionName}:`, e);
293
- return;
294
- }
295
- logger.debug(`Channel for session ${sessionName} is ${channel?.name}`);
296
- if (channel !== void 0) {
297
- const exchange = this.initiateExchangeWithChannel(channel, import_types.SECURE_CHANNEL_PROTOCOL_ID);
298
- logger.debug(`Initiated exchange ${exchange.id} to close session ${sessionName}`);
299
- try {
300
- const messenger = new import_SecureChannelMessenger.SecureChannelMessenger(exchange);
301
- await messenger.sendCloseSession();
302
- await messenger.close();
303
- } catch (error) {
304
- if (error instanceof import_MessageChannel.ChannelNotConnectedError) {
305
- logger.debug("Session already closed because channel is disconnected.");
306
- } else {
307
- logger.error("Error closing session", error);
308
- }
309
- }
310
- await exchange.destroy();
311
- }
312
- }
313
- if (session.closingAfterExchangeFinished) {
314
- await session.destroy(false, false);
315
- }
316
348
  }
317
349
  #addExchange(exchangeIndex, exchange) {
318
350
  exchange.closed.on(() => this.deleteExchange(exchangeIndex));
@@ -320,7 +352,7 @@ class ExchangeManager {
320
352
  this.#cleanupSessionExchanges(exchange.session.id);
321
353
  }
322
354
  #cleanupSessionExchanges(sessionId) {
323
- if (sessionId === import_InsecureSession.UNICAST_UNSECURE_SESSION_ID) {
355
+ if (sessionId === import_UnsecuredSession.UNICAST_UNSECURE_SESSION_ID) {
324
356
  return;
325
357
  }
326
358
  const sessionExchanges = Array.from(this.#exchanges.values()).filter(
@@ -331,25 +363,27 @@ class ExchangeManager {
331
363
  }
332
364
  const exchangeToClose = sessionExchanges[0];
333
365
  logger.info(
334
- `Closing oldest exchange ${exchangeToClose.id} for session ${sessionId} because of too many concurrent outgoing exchanges. Ensure to not send that many parallel messages to one peer.`
366
+ exchangeToClose.via,
367
+ `Closing oldest exchange for session because of too many concurrent outgoing exchanges. Ensure to not send that many parallel messages to one peer.`
335
368
  );
336
- exchangeToClose.close().catch((error) => logger.error("Error closing exchange", error));
369
+ logger.debug(exchangeToClose.via, "Closing oldest exchange");
370
+ this.#workers.add(exchangeToClose.close());
337
371
  }
338
- calculateMaximumPeerResponseTimeMsFor(channel, expectedProcessingTime = import_MessageChannel.DEFAULT_EXPECTED_PROCESSING_TIME) {
339
- return channel.calculateMaximumPeerResponseTime(
340
- channel.session.parameters,
341
- this.#sessionManager.sessionParameters,
372
+ calculateMaximumPeerResponseTimeMsFor(session, expectedProcessingTime = import_MessageChannel.DEFAULT_EXPECTED_PROCESSING_TIME) {
373
+ return session.channel.calculateMaximumPeerResponseTime(
374
+ session.parameters,
375
+ this.#sessions.sessionParameters,
342
376
  expectedProcessingTime
343
377
  );
344
378
  }
345
- #messageExchangeContextFor(channel) {
379
+ #messageExchangeContextFor(session) {
346
380
  return {
347
- channel,
348
- localSessionParameters: this.#sessionManager.sessionParameters,
349
- retry: (number) => this.#sessionManager.retry.emit(channel.session, number)
381
+ session,
382
+ localSessionParameters: this.#sessions.sessionParameters,
383
+ retry: (number) => this.#sessions.retry.emit(session, number)
350
384
  };
351
385
  }
352
- #addListener(netInterface) {
386
+ #addTransport(netInterface) {
353
387
  const udpInterface = netInterface instanceof import_general.UdpInterface;
354
388
  this.#listeners.set(
355
389
  netInterface,
@@ -360,30 +394,54 @@ class ExchangeManager {
360
394
  );
361
395
  return;
362
396
  }
363
- try {
364
- this.onMessage(socket, data).catch(
365
- (error) => logger.info(
366
- `Error on channel ${socket.name}:`,
367
- error instanceof import_general.MatterError ? error.message : error
368
- )
369
- );
370
- } catch (error) {
371
- logger.info(
372
- `Ignoring UDP message on channel ${socket.name} with error`,
373
- error instanceof import_general.MatterError ? error.message : error
374
- );
375
- }
397
+ this.#workers.add(this.#onMessage(socket, data));
376
398
  })
377
399
  );
378
400
  }
379
- #deleteListener(netInterface) {
401
+ #deleteTransport(netInterface) {
380
402
  const listener = this.#listeners.get(netInterface);
381
403
  if (listener === void 0) {
382
404
  return;
383
405
  }
384
406
  this.#listeners.delete(netInterface);
385
- const closer = listener.close().catch((e) => logger.error("Error closing network listener", e)).finally(() => this.#closers.delete(closer));
386
- this.#closers.add(closer);
407
+ this.#workers.add(listener.close());
408
+ }
409
+ #addSession(session) {
410
+ if (!(session instanceof import_NodeSession.NodeSession)) {
411
+ return;
412
+ }
413
+ let observers = this.#sessionObservers.get(session);
414
+ if (!observers) {
415
+ this.#sessionObservers.set(session, observers = new import_general.ObserverGroup());
416
+ }
417
+ observers.on(session.gracefulClose, () => this.#sendCloseSession(session));
418
+ }
419
+ #deleteSession(session) {
420
+ const observers = this.#sessionObservers.get(session);
421
+ if (!observers) {
422
+ return;
423
+ }
424
+ observers.close();
425
+ this.#sessionObservers.delete(session);
426
+ }
427
+ async #sendCloseSession(session) {
428
+ var _stack = [];
429
+ try {
430
+ const exchange = __using(_stack, this.initiateExchangeForSession(session, import_types.SECURE_CHANNEL_PROTOCOL_ID), true);
431
+ logger.debug(exchange.via, "Closing session");
432
+ try {
433
+ const messenger = new import_SecureChannelMessenger.SecureChannelMessenger(exchange);
434
+ await messenger.sendCloseSession();
435
+ await messenger.close();
436
+ } catch (error) {
437
+ logger.error(exchange.via, "Error closing session:", error);
438
+ }
439
+ } catch (_) {
440
+ var _error = _, _hasError = true;
441
+ } finally {
442
+ var _promise = __callDispose(_stack, _error, _hasError);
443
+ _promise && await _promise;
444
+ }
387
445
  }
388
446
  }
389
447
  class ExchangeCounter {