@matter/protocol 0.16.0-alpha.0-20251203-aaf94bca8 → 0.16.0-alpha.0-20251207-37e501b18
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.
- package/dist/cjs/action/client/ClientInteraction.d.ts.map +1 -1
- package/dist/cjs/action/client/ClientInteraction.js +82 -34
- package/dist/cjs/action/client/ClientInteraction.js.map +2 -2
- package/dist/cjs/action/client/subscription/ClientSubscription.d.ts +10 -5
- package/dist/cjs/action/client/subscription/ClientSubscription.d.ts.map +1 -1
- package/dist/cjs/action/client/subscription/ClientSubscription.js +21 -1
- package/dist/cjs/action/client/subscription/ClientSubscription.js.map +2 -2
- package/dist/cjs/action/client/subscription/ClientSubscriptionHandler.js +2 -3
- package/dist/cjs/action/client/subscription/ClientSubscriptionHandler.js.map +1 -1
- package/dist/cjs/action/client/subscription/ClientSubscriptions.d.ts +4 -2
- package/dist/cjs/action/client/subscription/ClientSubscriptions.d.ts.map +1 -1
- package/dist/cjs/action/client/subscription/ClientSubscriptions.js +68 -8
- package/dist/cjs/action/client/subscription/ClientSubscriptions.js.map +1 -1
- package/dist/cjs/action/client/subscription/PeerSubscription.d.ts +0 -1
- package/dist/cjs/action/client/subscription/PeerSubscription.d.ts.map +1 -1
- package/dist/cjs/action/client/subscription/PeerSubscription.js +1 -2
- package/dist/cjs/action/client/subscription/PeerSubscription.js.map +1 -1
- package/dist/cjs/action/client/subscription/SustainedSubscription.d.ts +0 -2
- package/dist/cjs/action/client/subscription/SustainedSubscription.d.ts.map +1 -1
- package/dist/cjs/action/client/subscription/SustainedSubscription.js +2 -4
- package/dist/cjs/action/client/subscription/SustainedSubscription.js.map +1 -1
- package/dist/cjs/action/request/Invoke.js +2 -2
- package/dist/cjs/action/request/Invoke.js.map +1 -1
- package/dist/cjs/action/server/AttributeReadResponse.d.ts.map +1 -1
- package/dist/cjs/action/server/AttributeReadResponse.js +78 -25
- package/dist/cjs/action/server/AttributeReadResponse.js.map +1 -1
- package/dist/cjs/action/server/AttributeWriteResponse.d.ts.map +1 -1
- package/dist/cjs/action/server/AttributeWriteResponse.js +70 -17
- package/dist/cjs/action/server/AttributeWriteResponse.js.map +1 -1
- package/dist/cjs/action/server/CommandInvokeResponse.d.ts.map +1 -1
- package/dist/cjs/action/server/CommandInvokeResponse.js +83 -30
- package/dist/cjs/action/server/CommandInvokeResponse.js.map +1 -1
- package/dist/cjs/action/server/DataResponse.d.ts +1 -0
- package/dist/cjs/action/server/DataResponse.d.ts.map +1 -1
- package/dist/cjs/action/server/DataResponse.js +3 -0
- package/dist/cjs/action/server/DataResponse.js.map +1 -1
- package/dist/cjs/action/server/ServerInteraction.d.ts.map +1 -1
- package/dist/cjs/action/server/ServerInteraction.js +4 -4
- package/dist/cjs/action/server/ServerInteraction.js.map +1 -1
- package/dist/cjs/advertisement/Advertisement.d.ts.map +1 -1
- package/dist/cjs/advertisement/Advertisement.js +66 -14
- package/dist/cjs/advertisement/Advertisement.js.map +1 -1
- package/dist/cjs/advertisement/Advertiser.d.ts +4 -1
- package/dist/cjs/advertisement/Advertiser.d.ts.map +1 -1
- package/dist/cjs/advertisement/Advertiser.js +63 -2
- package/dist/cjs/advertisement/Advertiser.js.map +1 -1
- package/dist/cjs/advertisement/ble/BleAdvertiser.d.ts +6 -1
- package/dist/cjs/advertisement/ble/BleAdvertiser.d.ts.map +1 -1
- package/dist/cjs/advertisement/ble/BleAdvertiser.js +1 -1
- package/dist/cjs/advertisement/ble/BleAdvertiser.js.map +1 -1
- package/dist/cjs/advertisement/mdns/MdnsAdvertiser.d.ts +5 -1
- package/dist/cjs/advertisement/mdns/MdnsAdvertiser.d.ts.map +1 -1
- package/dist/cjs/advertisement/mdns/MdnsAdvertiser.js +1 -1
- package/dist/cjs/advertisement/mdns/MdnsAdvertiser.js.map +1 -1
- package/dist/cjs/certificate/kinds/definitions/asn.js +1 -1
- package/dist/cjs/certificate/kinds/definitions/asn.js.map +1 -1
- package/dist/cjs/certificate/kinds/definitions/attestation.d.ts.map +1 -1
- package/dist/cjs/cluster/client/AttributeClient.d.ts.map +1 -1
- package/dist/cjs/cluster/client/AttributeClient.js +2 -2
- package/dist/cjs/cluster/client/AttributeClient.js.map +1 -1
- package/dist/cjs/codec/MessageCodec.d.ts +8 -1
- package/dist/cjs/codec/MessageCodec.d.ts.map +1 -1
- package/dist/cjs/codec/MessageCodec.js +38 -28
- package/dist/cjs/codec/MessageCodec.js.map +2 -2
- package/dist/cjs/common/FailsafeContext.d.ts +8 -9
- package/dist/cjs/common/FailsafeContext.d.ts.map +1 -1
- package/dist/cjs/common/FailsafeContext.js +27 -33
- package/dist/cjs/common/FailsafeContext.js.map +1 -1
- package/dist/cjs/common/FailsafeTimer.d.ts +4 -3
- package/dist/cjs/common/FailsafeTimer.d.ts.map +1 -1
- package/dist/cjs/common/FailsafeTimer.js +4 -4
- package/dist/cjs/common/FailsafeTimer.js.map +1 -1
- package/dist/cjs/common/Mark.d.ts +17 -0
- package/dist/cjs/common/Mark.d.ts.map +1 -0
- package/dist/cjs/{peer/OperationalPeer.js → common/Mark.js} +19 -3
- package/dist/cjs/common/Mark.js.map +6 -0
- package/dist/cjs/common/index.d.ts +1 -0
- package/dist/cjs/common/index.d.ts.map +1 -1
- package/dist/cjs/common/index.js +1 -0
- package/dist/cjs/common/index.js.map +1 -1
- package/dist/cjs/fabric/Fabric.d.ts +16 -8
- package/dist/cjs/fabric/Fabric.d.ts.map +1 -1
- package/dist/cjs/fabric/Fabric.js +35 -18
- package/dist/cjs/fabric/Fabric.js.map +1 -1
- package/dist/cjs/fabric/FabricAuthority.d.ts +2 -2
- package/dist/cjs/fabric/FabricAuthority.d.ts.map +1 -1
- package/dist/cjs/fabric/FabricAuthority.js +3 -3
- package/dist/cjs/fabric/FabricAuthority.js.map +1 -1
- package/dist/cjs/fabric/FabricManager.d.ts +10 -14
- package/dist/cjs/fabric/FabricManager.d.ts.map +1 -1
- package/dist/cjs/fabric/FabricManager.js +44 -40
- package/dist/cjs/fabric/FabricManager.js.map +2 -2
- package/dist/cjs/index.d.ts +1 -1
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/interaction/AttributeDataEncoder.d.ts +1 -1
- package/dist/cjs/interaction/InteractionClient.d.ts +2 -2
- package/dist/cjs/interaction/InteractionClient.d.ts.map +1 -1
- package/dist/cjs/interaction/InteractionClient.js +39 -22
- package/dist/cjs/interaction/InteractionClient.js.map +1 -1
- package/dist/cjs/interaction/InteractionMessenger.d.ts +2 -2
- package/dist/cjs/interaction/InteractionMessenger.d.ts.map +1 -1
- package/dist/cjs/interaction/InteractionMessenger.js +35 -27
- package/dist/cjs/interaction/InteractionMessenger.js.map +1 -1
- package/dist/cjs/interaction/Subscription.d.ts +16 -37
- package/dist/cjs/interaction/Subscription.d.ts.map +1 -1
- package/dist/cjs/interaction/Subscription.js +15 -68
- package/dist/cjs/interaction/Subscription.js.map +2 -2
- package/dist/cjs/interaction/SubscriptionClient.d.ts +2 -2
- package/dist/cjs/interaction/SubscriptionClient.d.ts.map +1 -1
- package/dist/cjs/interaction/SubscriptionClient.js +2 -2
- package/dist/cjs/interaction/SubscriptionClient.js.map +1 -1
- package/dist/cjs/mdns/MdnsClient.d.ts +10 -10
- package/dist/cjs/mdns/MdnsClient.d.ts.map +1 -1
- package/dist/cjs/mdns/MdnsClient.js +165 -80
- package/dist/cjs/mdns/MdnsClient.js.map +1 -1
- package/dist/cjs/mdns/MdnsServer.d.ts +2 -2
- package/dist/cjs/mdns/MdnsServer.d.ts.map +1 -1
- package/dist/cjs/mdns/MdnsServer.js +173 -94
- package/dist/cjs/mdns/MdnsServer.js.map +2 -2
- package/dist/cjs/mdns/MdnsService.d.ts.map +1 -1
- package/dist/cjs/mdns/MdnsService.js +3 -2
- package/dist/cjs/mdns/MdnsService.js.map +1 -1
- package/dist/cjs/mdns/MdnsSocket.d.ts +3 -2
- package/dist/cjs/mdns/MdnsSocket.d.ts.map +1 -1
- package/dist/cjs/mdns/MdnsSocket.js +2 -1
- package/dist/cjs/mdns/MdnsSocket.js.map +1 -1
- package/dist/cjs/peer/ControllerCommissioner.d.ts +2 -2
- package/dist/cjs/peer/ControllerCommissioner.d.ts.map +1 -1
- package/dist/cjs/peer/ControllerCommissioner.js +26 -28
- package/dist/cjs/peer/ControllerCommissioner.js.map +1 -1
- package/dist/cjs/peer/ControllerDiscovery.d.ts +1 -1
- package/dist/cjs/peer/ControllerDiscovery.d.ts.map +1 -1
- package/dist/cjs/peer/ControllerDiscovery.js +3 -3
- package/dist/cjs/peer/ControllerDiscovery.js.map +1 -1
- package/dist/cjs/peer/Peer.d.ts +57 -0
- package/dist/cjs/peer/Peer.d.ts.map +1 -0
- package/dist/cjs/peer/Peer.js +182 -0
- package/dist/cjs/peer/Peer.js.map +6 -0
- package/dist/cjs/peer/PeerAddress.d.ts.map +1 -1
- package/dist/cjs/peer/PeerAddress.js +5 -2
- package/dist/cjs/peer/PeerAddress.js.map +1 -1
- package/dist/cjs/peer/PeerAddressStore.d.ts +3 -3
- package/dist/cjs/peer/PeerAddressStore.d.ts.map +1 -1
- package/{src/peer/OperationalPeer.ts → dist/cjs/peer/PeerDescriptor.d.ts} +14 -12
- package/dist/cjs/peer/PeerDescriptor.d.ts.map +1 -0
- package/dist/cjs/peer/PeerDescriptor.js +71 -0
- package/dist/cjs/peer/PeerDescriptor.js.map +6 -0
- package/dist/cjs/peer/PeerSet.d.ts +23 -26
- package/dist/cjs/peer/PeerSet.d.ts.map +1 -1
- package/dist/cjs/peer/PeerSet.js +173 -173
- package/dist/cjs/peer/PeerSet.js.map +2 -2
- package/dist/cjs/peer/index.d.ts +1 -1
- package/dist/cjs/peer/index.d.ts.map +1 -1
- package/dist/cjs/peer/index.js +1 -1
- package/dist/cjs/peer/index.js.map +1 -1
- package/dist/cjs/protocol/DeviceAdvertiser.js +4 -4
- package/dist/cjs/protocol/DeviceAdvertiser.js.map +1 -1
- package/dist/cjs/protocol/ExchangeManager.d.ts +6 -9
- package/dist/cjs/protocol/ExchangeManager.d.ts.map +1 -1
- package/dist/cjs/protocol/ExchangeManager.js +306 -246
- package/dist/cjs/protocol/ExchangeManager.js.map +2 -2
- package/dist/cjs/protocol/ExchangeProvider.d.ts +9 -11
- package/dist/cjs/protocol/ExchangeProvider.d.ts.map +1 -1
- package/dist/cjs/protocol/ExchangeProvider.js +79 -32
- package/dist/cjs/protocol/ExchangeProvider.js.map +2 -2
- package/dist/cjs/protocol/MessageChannel.d.ts +6 -7
- package/dist/cjs/protocol/MessageChannel.d.ts.map +1 -1
- package/dist/cjs/protocol/MessageChannel.js +14 -16
- package/dist/cjs/protocol/MessageChannel.js.map +1 -1
- package/dist/cjs/protocol/MessageCounter.d.ts +4 -4
- package/dist/cjs/protocol/MessageCounter.d.ts.map +1 -1
- package/dist/cjs/protocol/MessageCounter.js +7 -7
- package/dist/cjs/protocol/MessageCounter.js.map +1 -1
- package/dist/cjs/protocol/MessageExchange.d.ts +31 -20
- package/dist/cjs/protocol/MessageExchange.d.ts.map +1 -1
- package/dist/cjs/protocol/MessageExchange.js +316 -231
- package/dist/cjs/protocol/MessageExchange.js.map +2 -2
- package/dist/cjs/protocol/ProtocolMocks.d.ts +100 -0
- package/dist/cjs/protocol/ProtocolMocks.d.ts.map +1 -0
- package/dist/cjs/protocol/ProtocolMocks.js +237 -0
- package/dist/cjs/protocol/ProtocolMocks.js.map +6 -0
- package/dist/cjs/protocol/errors.d.ts +35 -0
- package/dist/cjs/protocol/errors.d.ts.map +1 -0
- package/dist/cjs/protocol/errors.js +50 -0
- package/dist/cjs/protocol/errors.js.map +6 -0
- package/dist/cjs/protocol/index.d.ts +2 -1
- package/dist/cjs/protocol/index.d.ts.map +1 -1
- package/dist/cjs/protocol/index.js +2 -1
- package/dist/cjs/protocol/index.js.map +1 -1
- package/dist/cjs/securechannel/SecureChannelMessenger.d.ts +1 -0
- package/dist/cjs/securechannel/SecureChannelMessenger.d.ts.map +1 -1
- package/dist/cjs/securechannel/SecureChannelMessenger.js +3 -0
- package/dist/cjs/securechannel/SecureChannelMessenger.js.map +1 -1
- package/dist/cjs/securechannel/SecureChannelProtocol.js +2 -2
- package/dist/cjs/securechannel/SecureChannelProtocol.js.map +1 -1
- package/dist/cjs/session/GroupSession.d.ts +21 -10
- package/dist/cjs/session/GroupSession.d.ts.map +1 -1
- package/dist/cjs/session/GroupSession.js +37 -12
- package/dist/cjs/session/GroupSession.js.map +1 -1
- package/dist/cjs/session/NodeSession.d.ts +56 -50
- package/dist/cjs/session/NodeSession.d.ts.map +1 -1
- package/dist/cjs/session/NodeSession.js +95 -103
- package/dist/cjs/session/NodeSession.js.map +1 -1
- package/dist/cjs/session/SecureSession.d.ts +4 -4
- package/dist/cjs/session/SecureSession.d.ts.map +1 -1
- package/dist/cjs/session/SecureSession.js +1 -1
- package/dist/cjs/session/SecureSession.js.map +1 -1
- package/dist/cjs/session/Session.d.ts +82 -66
- package/dist/cjs/session/Session.d.ts.map +1 -1
- package/dist/cjs/session/Session.js +218 -45
- package/dist/cjs/session/Session.js.map +1 -1
- package/dist/cjs/session/SessionManager.d.ts +33 -36
- package/dist/cjs/session/SessionManager.d.ts.map +1 -1
- package/dist/cjs/session/SessionManager.js +112 -150
- package/dist/cjs/session/SessionManager.js.map +1 -1
- package/dist/cjs/session/SessionParameters.d.ts +87 -0
- package/dist/cjs/session/SessionParameters.d.ts.map +1 -0
- package/dist/cjs/session/SessionParameters.js +81 -0
- package/dist/cjs/session/SessionParameters.js.map +6 -0
- package/dist/{esm/session/InsecureSession.d.ts → cjs/session/UnsecuredSession.d.ts} +18 -16
- package/dist/cjs/session/UnsecuredSession.d.ts.map +1 -0
- package/dist/cjs/session/{InsecureSession.js → UnsecuredSession.js} +21 -21
- package/dist/cjs/session/UnsecuredSession.js.map +6 -0
- package/dist/cjs/session/case/CaseClient.d.ts.map +1 -1
- package/dist/cjs/session/case/CaseClient.js +6 -4
- package/dist/cjs/session/case/CaseClient.js.map +1 -1
- package/dist/cjs/session/case/CaseServer.d.ts.map +1 -1
- package/dist/cjs/session/case/CaseServer.js +14 -10
- package/dist/cjs/session/case/CaseServer.js.map +1 -1
- package/dist/cjs/session/index.d.ts +2 -1
- package/dist/cjs/session/index.d.ts.map +1 -1
- package/dist/cjs/session/index.js +2 -1
- package/dist/cjs/session/index.js.map +1 -1
- package/dist/cjs/session/pase/PaseClient.d.ts +3 -3
- package/dist/cjs/session/pase/PaseClient.d.ts.map +1 -1
- package/dist/cjs/session/pase/PaseClient.js +5 -3
- package/dist/cjs/session/pase/PaseClient.js.map +1 -1
- package/dist/cjs/session/pase/PaseServer.d.ts.map +1 -1
- package/dist/cjs/session/pase/PaseServer.js +13 -13
- package/dist/cjs/session/pase/PaseServer.js.map +1 -1
- package/dist/esm/action/client/ClientInteraction.d.ts.map +1 -1
- package/dist/esm/action/client/ClientInteraction.js +82 -34
- package/dist/esm/action/client/ClientInteraction.js.map +2 -2
- package/dist/esm/action/client/subscription/ClientSubscription.d.ts +10 -5
- package/dist/esm/action/client/subscription/ClientSubscription.d.ts.map +1 -1
- package/dist/esm/action/client/subscription/ClientSubscription.js +22 -2
- package/dist/esm/action/client/subscription/ClientSubscription.js.map +2 -2
- package/dist/esm/action/client/subscription/ClientSubscriptionHandler.js +2 -3
- package/dist/esm/action/client/subscription/ClientSubscriptionHandler.js.map +1 -1
- package/dist/esm/action/client/subscription/ClientSubscriptions.d.ts +4 -2
- package/dist/esm/action/client/subscription/ClientSubscriptions.d.ts.map +1 -1
- package/dist/esm/action/client/subscription/ClientSubscriptions.js +68 -8
- package/dist/esm/action/client/subscription/ClientSubscriptions.js.map +1 -1
- package/dist/esm/action/client/subscription/PeerSubscription.d.ts +0 -1
- package/dist/esm/action/client/subscription/PeerSubscription.d.ts.map +1 -1
- package/dist/esm/action/client/subscription/PeerSubscription.js +1 -2
- package/dist/esm/action/client/subscription/PeerSubscription.js.map +1 -1
- package/dist/esm/action/client/subscription/SustainedSubscription.d.ts +0 -2
- package/dist/esm/action/client/subscription/SustainedSubscription.d.ts.map +1 -1
- package/dist/esm/action/client/subscription/SustainedSubscription.js +2 -4
- package/dist/esm/action/client/subscription/SustainedSubscription.js.map +1 -1
- package/dist/esm/action/request/Invoke.js +2 -2
- package/dist/esm/action/request/Invoke.js.map +1 -1
- package/dist/esm/action/server/AttributeReadResponse.d.ts.map +1 -1
- package/dist/esm/action/server/AttributeReadResponse.js +78 -25
- package/dist/esm/action/server/AttributeReadResponse.js.map +1 -1
- package/dist/esm/action/server/AttributeWriteResponse.d.ts.map +1 -1
- package/dist/esm/action/server/AttributeWriteResponse.js +70 -17
- package/dist/esm/action/server/AttributeWriteResponse.js.map +1 -1
- package/dist/esm/action/server/CommandInvokeResponse.d.ts.map +1 -1
- package/dist/esm/action/server/CommandInvokeResponse.js +83 -30
- package/dist/esm/action/server/CommandInvokeResponse.js.map +1 -1
- package/dist/esm/action/server/DataResponse.d.ts +1 -0
- package/dist/esm/action/server/DataResponse.d.ts.map +1 -1
- package/dist/esm/action/server/DataResponse.js +3 -0
- package/dist/esm/action/server/DataResponse.js.map +1 -1
- package/dist/esm/action/server/ServerInteraction.d.ts.map +1 -1
- package/dist/esm/action/server/ServerInteraction.js +4 -4
- package/dist/esm/action/server/ServerInteraction.js.map +1 -1
- package/dist/esm/advertisement/Advertisement.d.ts.map +1 -1
- package/dist/esm/advertisement/Advertisement.js +66 -14
- package/dist/esm/advertisement/Advertisement.js.map +1 -1
- package/dist/esm/advertisement/Advertiser.d.ts +4 -1
- package/dist/esm/advertisement/Advertiser.d.ts.map +1 -1
- package/dist/esm/advertisement/Advertiser.js +63 -2
- package/dist/esm/advertisement/Advertiser.js.map +1 -1
- package/dist/esm/advertisement/ble/BleAdvertiser.d.ts +6 -1
- package/dist/esm/advertisement/ble/BleAdvertiser.d.ts.map +1 -1
- package/dist/esm/advertisement/ble/BleAdvertiser.js +1 -1
- package/dist/esm/advertisement/ble/BleAdvertiser.js.map +1 -1
- package/dist/esm/advertisement/mdns/MdnsAdvertiser.d.ts +5 -1
- package/dist/esm/advertisement/mdns/MdnsAdvertiser.d.ts.map +1 -1
- package/dist/esm/advertisement/mdns/MdnsAdvertiser.js +1 -1
- package/dist/esm/advertisement/mdns/MdnsAdvertiser.js.map +1 -1
- package/dist/esm/certificate/kinds/definitions/asn.js +2 -2
- package/dist/esm/certificate/kinds/definitions/asn.js.map +1 -1
- package/dist/esm/certificate/kinds/definitions/attestation.d.ts.map +1 -1
- package/dist/esm/cluster/client/AttributeClient.d.ts.map +1 -1
- package/dist/esm/cluster/client/AttributeClient.js +1 -1
- package/dist/esm/cluster/client/AttributeClient.js.map +1 -1
- package/dist/esm/codec/MessageCodec.d.ts +8 -1
- package/dist/esm/codec/MessageCodec.d.ts.map +1 -1
- package/dist/esm/codec/MessageCodec.js +39 -28
- package/dist/esm/codec/MessageCodec.js.map +2 -2
- package/dist/esm/common/FailsafeContext.d.ts +8 -9
- package/dist/esm/common/FailsafeContext.d.ts.map +1 -1
- package/dist/esm/common/FailsafeContext.js +27 -33
- package/dist/esm/common/FailsafeContext.js.map +1 -1
- package/dist/esm/common/FailsafeTimer.d.ts +4 -3
- package/dist/esm/common/FailsafeTimer.d.ts.map +1 -1
- package/dist/esm/common/FailsafeTimer.js +4 -4
- package/dist/esm/common/FailsafeTimer.js.map +1 -1
- package/dist/esm/common/Mark.d.ts +17 -0
- package/dist/esm/common/Mark.d.ts.map +1 -0
- package/dist/esm/common/Mark.js +18 -0
- package/dist/esm/common/Mark.js.map +6 -0
- package/dist/esm/common/index.d.ts +1 -0
- package/dist/esm/common/index.d.ts.map +1 -1
- package/dist/esm/common/index.js +1 -0
- package/dist/esm/common/index.js.map +1 -1
- package/dist/esm/fabric/Fabric.d.ts +16 -8
- package/dist/esm/fabric/Fabric.d.ts.map +1 -1
- package/dist/esm/fabric/Fabric.js +36 -18
- package/dist/esm/fabric/Fabric.js.map +1 -1
- package/dist/esm/fabric/FabricAuthority.d.ts +2 -2
- package/dist/esm/fabric/FabricAuthority.d.ts.map +1 -1
- package/dist/esm/fabric/FabricAuthority.js +5 -5
- package/dist/esm/fabric/FabricAuthority.js.map +1 -1
- package/dist/esm/fabric/FabricManager.d.ts +10 -14
- package/dist/esm/fabric/FabricManager.d.ts.map +1 -1
- package/dist/esm/fabric/FabricManager.js +45 -40
- package/dist/esm/fabric/FabricManager.js.map +2 -2
- package/dist/esm/index.d.ts +1 -1
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/interaction/AttributeDataEncoder.d.ts +1 -1
- package/dist/esm/interaction/InteractionClient.d.ts +2 -2
- package/dist/esm/interaction/InteractionClient.d.ts.map +1 -1
- package/dist/esm/interaction/InteractionClient.js +39 -22
- package/dist/esm/interaction/InteractionClient.js.map +1 -1
- package/dist/esm/interaction/InteractionMessenger.d.ts +2 -2
- package/dist/esm/interaction/InteractionMessenger.d.ts.map +1 -1
- package/dist/esm/interaction/InteractionMessenger.js +33 -28
- package/dist/esm/interaction/InteractionMessenger.js.map +1 -1
- package/dist/esm/interaction/Subscription.d.ts +16 -37
- package/dist/esm/interaction/Subscription.d.ts.map +1 -1
- package/dist/esm/interaction/Subscription.js +16 -69
- package/dist/esm/interaction/Subscription.js.map +2 -2
- package/dist/esm/interaction/SubscriptionClient.d.ts +2 -2
- package/dist/esm/interaction/SubscriptionClient.d.ts.map +1 -1
- package/dist/esm/interaction/SubscriptionClient.js +2 -2
- package/dist/esm/interaction/SubscriptionClient.js.map +1 -1
- package/dist/esm/mdns/MdnsClient.d.ts +10 -10
- package/dist/esm/mdns/MdnsClient.d.ts.map +1 -1
- package/dist/esm/mdns/MdnsClient.js +166 -80
- package/dist/esm/mdns/MdnsClient.js.map +1 -1
- package/dist/esm/mdns/MdnsServer.d.ts +2 -2
- package/dist/esm/mdns/MdnsServer.d.ts.map +1 -1
- package/dist/esm/mdns/MdnsServer.js +176 -94
- package/dist/esm/mdns/MdnsServer.js.map +2 -2
- package/dist/esm/mdns/MdnsService.d.ts.map +1 -1
- package/dist/esm/mdns/MdnsService.js +3 -2
- package/dist/esm/mdns/MdnsService.js.map +1 -1
- package/dist/esm/mdns/MdnsSocket.d.ts +3 -2
- package/dist/esm/mdns/MdnsSocket.d.ts.map +1 -1
- package/dist/esm/mdns/MdnsSocket.js +2 -1
- package/dist/esm/mdns/MdnsSocket.js.map +1 -1
- package/dist/esm/peer/ControllerCommissioner.d.ts +2 -2
- package/dist/esm/peer/ControllerCommissioner.d.ts.map +1 -1
- package/dist/esm/peer/ControllerCommissioner.js +26 -28
- package/dist/esm/peer/ControllerCommissioner.js.map +1 -1
- package/dist/esm/peer/ControllerDiscovery.d.ts +1 -1
- package/dist/esm/peer/ControllerDiscovery.d.ts.map +1 -1
- package/dist/esm/peer/ControllerDiscovery.js +1 -1
- package/dist/esm/peer/ControllerDiscovery.js.map +1 -1
- package/dist/esm/peer/Peer.d.ts +57 -0
- package/dist/esm/peer/Peer.d.ts.map +1 -0
- package/dist/esm/peer/Peer.js +162 -0
- package/dist/esm/peer/Peer.js.map +6 -0
- package/dist/esm/peer/PeerAddress.d.ts.map +1 -1
- package/dist/esm/peer/PeerAddress.js +5 -2
- package/dist/esm/peer/PeerAddress.js.map +1 -1
- package/dist/esm/peer/PeerAddressStore.d.ts +3 -3
- package/dist/esm/peer/PeerAddressStore.d.ts.map +1 -1
- package/dist/{cjs/peer/OperationalPeer.d.ts → esm/peer/PeerDescriptor.d.ts} +14 -7
- package/dist/esm/peer/PeerDescriptor.d.ts.map +1 -0
- package/dist/esm/peer/PeerDescriptor.js +51 -0
- package/dist/esm/peer/PeerDescriptor.js.map +6 -0
- package/dist/esm/peer/PeerSet.d.ts +23 -26
- package/dist/esm/peer/PeerSet.d.ts.map +1 -1
- package/dist/esm/peer/PeerSet.js +173 -175
- package/dist/esm/peer/PeerSet.js.map +2 -2
- package/dist/esm/peer/index.d.ts +1 -1
- package/dist/esm/peer/index.d.ts.map +1 -1
- package/dist/esm/peer/index.js +1 -1
- package/dist/esm/protocol/DeviceAdvertiser.js +4 -4
- package/dist/esm/protocol/DeviceAdvertiser.js.map +1 -1
- package/dist/esm/protocol/ExchangeManager.d.ts +6 -9
- package/dist/esm/protocol/ExchangeManager.d.ts.map +1 -1
- package/dist/esm/protocol/ExchangeManager.js +308 -251
- package/dist/esm/protocol/ExchangeManager.js.map +2 -2
- package/dist/esm/protocol/ExchangeProvider.d.ts +9 -11
- package/dist/esm/protocol/ExchangeProvider.d.ts.map +1 -1
- package/dist/esm/protocol/ExchangeProvider.js +81 -37
- package/dist/esm/protocol/ExchangeProvider.js.map +2 -2
- package/dist/esm/protocol/MessageChannel.d.ts +6 -7
- package/dist/esm/protocol/MessageChannel.d.ts.map +1 -1
- package/dist/esm/protocol/MessageChannel.js +22 -18
- package/dist/esm/protocol/MessageChannel.js.map +1 -1
- package/dist/esm/protocol/MessageCounter.d.ts +4 -4
- package/dist/esm/protocol/MessageCounter.d.ts.map +1 -1
- package/dist/esm/protocol/MessageCounter.js +7 -7
- package/dist/esm/protocol/MessageCounter.js.map +1 -1
- package/dist/esm/protocol/MessageExchange.d.ts +31 -20
- package/dist/esm/protocol/MessageExchange.d.ts.map +1 -1
- package/dist/esm/protocol/MessageExchange.js +318 -238
- package/dist/esm/protocol/MessageExchange.js.map +2 -2
- package/dist/esm/protocol/ProtocolMocks.d.ts +100 -0
- package/dist/esm/protocol/ProtocolMocks.d.ts.map +1 -0
- package/dist/esm/protocol/ProtocolMocks.js +230 -0
- package/dist/esm/protocol/ProtocolMocks.js.map +6 -0
- package/dist/esm/protocol/errors.d.ts +35 -0
- package/dist/esm/protocol/errors.d.ts.map +1 -0
- package/dist/esm/protocol/errors.js +30 -0
- package/dist/esm/protocol/errors.js.map +6 -0
- package/dist/esm/protocol/index.d.ts +2 -1
- package/dist/esm/protocol/index.d.ts.map +1 -1
- package/dist/esm/protocol/index.js +2 -1
- package/dist/esm/protocol/index.js.map +1 -1
- package/dist/esm/securechannel/SecureChannelMessenger.d.ts +1 -0
- package/dist/esm/securechannel/SecureChannelMessenger.d.ts.map +1 -1
- package/dist/esm/securechannel/SecureChannelMessenger.js +3 -0
- package/dist/esm/securechannel/SecureChannelMessenger.js.map +1 -1
- package/dist/esm/securechannel/SecureChannelProtocol.js +2 -2
- package/dist/esm/securechannel/SecureChannelProtocol.js.map +1 -1
- package/dist/esm/session/GroupSession.d.ts +21 -10
- package/dist/esm/session/GroupSession.d.ts.map +1 -1
- package/dist/esm/session/GroupSession.js +41 -12
- package/dist/esm/session/GroupSession.js.map +1 -1
- package/dist/esm/session/NodeSession.d.ts +56 -50
- package/dist/esm/session/NodeSession.d.ts.map +1 -1
- package/dist/esm/session/NodeSession.js +99 -105
- package/dist/esm/session/NodeSession.js.map +1 -1
- package/dist/esm/session/SecureSession.d.ts +4 -4
- package/dist/esm/session/SecureSession.d.ts.map +1 -1
- package/dist/esm/session/SecureSession.js +1 -1
- package/dist/esm/session/SecureSession.js.map +1 -1
- package/dist/esm/session/Session.d.ts +82 -66
- package/dist/esm/session/Session.d.ts.map +1 -1
- package/dist/esm/session/Session.js +223 -45
- package/dist/esm/session/Session.js.map +1 -1
- package/dist/esm/session/SessionManager.d.ts +33 -36
- package/dist/esm/session/SessionManager.d.ts.map +1 -1
- package/dist/esm/session/SessionManager.js +113 -157
- package/dist/esm/session/SessionManager.js.map +1 -1
- package/dist/esm/session/SessionParameters.d.ts +87 -0
- package/dist/esm/session/SessionParameters.d.ts.map +1 -0
- package/dist/esm/session/SessionParameters.js +61 -0
- package/dist/esm/session/SessionParameters.js.map +6 -0
- package/dist/{cjs/session/InsecureSession.d.ts → esm/session/UnsecuredSession.d.ts} +18 -16
- package/dist/esm/session/UnsecuredSession.d.ts.map +1 -0
- package/dist/esm/session/{InsecureSession.js → UnsecuredSession.js} +18 -18
- package/dist/esm/session/UnsecuredSession.js.map +6 -0
- package/dist/esm/session/case/CaseClient.d.ts.map +1 -1
- package/dist/esm/session/case/CaseClient.js +5 -3
- package/dist/esm/session/case/CaseClient.js.map +1 -1
- package/dist/esm/session/case/CaseServer.d.ts.map +1 -1
- package/dist/esm/session/case/CaseServer.js +14 -10
- package/dist/esm/session/case/CaseServer.js.map +1 -1
- package/dist/esm/session/index.d.ts +2 -1
- package/dist/esm/session/index.d.ts.map +1 -1
- package/dist/esm/session/index.js +2 -1
- package/dist/esm/session/index.js.map +1 -1
- package/dist/esm/session/pase/PaseClient.d.ts +3 -3
- package/dist/esm/session/pase/PaseClient.d.ts.map +1 -1
- package/dist/esm/session/pase/PaseClient.js +5 -3
- package/dist/esm/session/pase/PaseClient.js.map +1 -1
- package/dist/esm/session/pase/PaseServer.d.ts.map +1 -1
- package/dist/esm/session/pase/PaseServer.js +13 -13
- package/dist/esm/session/pase/PaseServer.js.map +1 -1
- package/package.json +6 -6
- package/src/action/client/ClientInteraction.ts +47 -13
- package/src/action/client/subscription/ClientSubscription.ts +30 -5
- package/src/action/client/subscription/ClientSubscriptionHandler.ts +2 -4
- package/src/action/client/subscription/ClientSubscriptions.ts +14 -3
- package/src/action/client/subscription/PeerSubscription.ts +2 -2
- package/src/action/client/subscription/SustainedSubscription.ts +2 -6
- package/src/action/request/Invoke.ts +2 -2
- package/src/action/server/AttributeReadResponse.ts +2 -0
- package/src/action/server/AttributeWriteResponse.ts +2 -0
- package/src/action/server/CommandInvokeResponse.ts +1 -0
- package/src/action/server/DataResponse.ts +4 -0
- package/src/action/server/ServerInteraction.ts +4 -4
- package/src/advertisement/Advertisement.ts +6 -7
- package/src/advertisement/Advertiser.ts +12 -1
- package/src/advertisement/ble/BleAdvertiser.ts +7 -2
- package/src/advertisement/mdns/MdnsAdvertiser.ts +7 -1
- package/src/certificate/kinds/definitions/asn.ts +2 -2
- package/src/certificate/kinds/definitions/attestation.ts +1 -0
- package/src/cluster/client/AttributeClient.ts +1 -1
- package/src/codec/MessageCodec.ts +39 -32
- package/src/common/FailsafeContext.ts +36 -39
- package/src/common/FailsafeTimer.ts +7 -6
- package/src/common/Mark.ts +17 -0
- package/src/common/index.ts +1 -0
- package/src/fabric/Fabric.ts +51 -23
- package/src/fabric/FabricAuthority.ts +4 -4
- package/src/fabric/FabricManager.ts +53 -40
- package/src/index.ts +3 -1
- package/src/interaction/InteractionClient.ts +40 -23
- package/src/interaction/InteractionMessenger.ts +38 -32
- package/src/interaction/Subscription.ts +20 -92
- package/src/interaction/SubscriptionClient.ts +3 -3
- package/src/mdns/MdnsClient.ts +20 -3
- package/src/mdns/MdnsServer.ts +13 -1
- package/src/mdns/MdnsService.ts +3 -2
- package/src/mdns/MdnsSocket.ts +9 -3
- package/src/peer/ControllerCommissioner.ts +35 -37
- package/src/peer/ControllerDiscovery.ts +1 -1
- package/src/peer/Peer.ts +161 -0
- package/src/peer/PeerAddress.ts +6 -2
- package/src/peer/PeerAddressStore.ts +3 -3
- package/src/peer/PeerDescriptor.ts +89 -0
- package/src/peer/PeerSet.ts +145 -213
- package/src/peer/index.ts +1 -1
- package/src/protocol/DeviceAdvertiser.ts +4 -4
- package/src/protocol/ExchangeManager.ts +161 -181
- package/src/protocol/ExchangeProvider.ts +31 -40
- package/src/protocol/MessageChannel.ts +29 -18
- package/src/protocol/MessageCounter.ts +8 -8
- package/src/protocol/MessageExchange.ts +181 -144
- package/src/protocol/ProtocolMocks.ts +302 -0
- package/src/protocol/errors.ts +44 -0
- package/src/protocol/index.ts +2 -1
- package/src/securechannel/SecureChannelMessenger.ts +4 -0
- package/src/securechannel/SecureChannelProtocol.ts +2 -2
- package/src/session/GroupSession.ts +67 -23
- package/src/session/NodeSession.ts +140 -136
- package/src/session/SecureSession.ts +6 -5
- package/src/session/Session.ts +234 -101
- package/src/session/SessionManager.ts +148 -187
- package/src/session/SessionParameters.ts +108 -0
- package/src/session/{InsecureSession.ts → UnsecuredSession.ts} +28 -26
- package/src/session/case/CaseClient.ts +6 -3
- package/src/session/case/CaseServer.ts +15 -11
- package/src/session/index.ts +2 -1
- package/src/session/pase/PaseClient.ts +12 -5
- package/src/session/pase/PaseServer.ts +14 -13
- package/dist/cjs/peer/OperationalPeer.d.ts.map +0 -1
- package/dist/cjs/peer/OperationalPeer.js.map +0 -6
- package/dist/cjs/protocol/ChannelManager.d.ts +0 -29
- package/dist/cjs/protocol/ChannelManager.d.ts.map +0 -1
- package/dist/cjs/protocol/ChannelManager.js +0 -178
- package/dist/cjs/protocol/ChannelManager.js.map +0 -6
- package/dist/cjs/session/InsecureSession.d.ts.map +0 -1
- package/dist/cjs/session/InsecureSession.js.map +0 -6
- package/dist/esm/peer/OperationalPeer.d.ts +0 -38
- package/dist/esm/peer/OperationalPeer.d.ts.map +0 -1
- package/dist/esm/peer/OperationalPeer.js +0 -6
- package/dist/esm/peer/OperationalPeer.js.map +0 -6
- package/dist/esm/protocol/ChannelManager.d.ts +0 -29
- package/dist/esm/protocol/ChannelManager.d.ts.map +0 -1
- package/dist/esm/protocol/ChannelManager.js +0 -158
- package/dist/esm/protocol/ChannelManager.js.map +0 -6
- package/dist/esm/session/InsecureSession.d.ts.map +0 -1
- package/dist/esm/session/InsecureSession.js.map +0 -6
- package/src/protocol/ChannelManager.ts +0 -180
|
@@ -4,111 +4,39 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import { TlvAttributePath, TlvDataVersionFilter, TlvEventFilter, TlvEventPath, TypeFromSchema } from "#types";
|
|
10
|
-
|
|
11
|
-
const logger = Logger.get("Subscription");
|
|
7
|
+
import { hex } from "#general";
|
|
8
|
+
import { Session } from "#session/Session.js";
|
|
12
9
|
|
|
13
10
|
export type SubscriptionId = number;
|
|
14
11
|
|
|
15
|
-
export interface SubscriptionCriteria {
|
|
16
|
-
attributeRequests?: TypeFromSchema<typeof TlvAttributePath>[];
|
|
17
|
-
dataVersionFilters?: TypeFromSchema<typeof TlvDataVersionFilter>[];
|
|
18
|
-
eventRequests?: TypeFromSchema<typeof TlvEventPath>[];
|
|
19
|
-
eventFilters?: TypeFromSchema<typeof TlvEventFilter>[];
|
|
20
|
-
isFabricFiltered: boolean;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
12
|
/**
|
|
24
13
|
* A single active subscription.
|
|
25
14
|
*/
|
|
26
|
-
export
|
|
27
|
-
|
|
28
|
-
#id: SubscriptionId;
|
|
29
|
-
#isClosed?: boolean;
|
|
30
|
-
#isCanceledByPeer?: boolean;
|
|
31
|
-
#criteria: SubscriptionCriteria;
|
|
32
|
-
#cancelled = AsyncObservable<[subscription: Subscription]>();
|
|
33
|
-
#maxInterval?: Duration;
|
|
34
|
-
|
|
35
|
-
constructor(session: NodeSession, id: SubscriptionId, criteria: SubscriptionCriteria) {
|
|
36
|
-
this.#session = session;
|
|
37
|
-
this.#id = id;
|
|
38
|
-
this.#criteria = criteria;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
get id() {
|
|
42
|
-
return this.#id;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
get criteria() {
|
|
46
|
-
return this.#criteria;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
get isClosed() {
|
|
50
|
-
return !!this.#isClosed;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
get isCanceledByPeer() {
|
|
54
|
-
return !!this.#isCanceledByPeer;
|
|
55
|
-
}
|
|
15
|
+
export interface Subscription {
|
|
16
|
+
subscriptionId: SubscriptionId;
|
|
56
17
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
return this.#cancelled;
|
|
63
|
-
}
|
|
18
|
+
// TODO - these should reside in a server-specific interface
|
|
19
|
+
isCanceledByPeer: boolean;
|
|
20
|
+
handlePeerCancel(): Promise<void>;
|
|
21
|
+
close(flushViaSession?: Session): Promise<void>;
|
|
22
|
+
}
|
|
64
23
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
24
|
+
export namespace Subscription {
|
|
25
|
+
export function idStrOf(subscription: undefined | number | { subscriptionId?: number }) {
|
|
26
|
+
if (typeof subscription === "object") {
|
|
27
|
+
subscription = subscription.subscriptionId;
|
|
68
28
|
}
|
|
69
|
-
return this.#maxInterval;
|
|
70
|
-
}
|
|
71
29
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
throw new InternalError("Subscription maxInterval set twice");
|
|
30
|
+
if (subscription === undefined) {
|
|
31
|
+
return undefined;
|
|
75
32
|
}
|
|
76
|
-
this.#maxInterval = value;
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
/**
|
|
80
|
-
* Update session state. This probably is meaningless except in a server context.
|
|
81
|
-
*/
|
|
82
|
-
async update() {}
|
|
83
|
-
|
|
84
|
-
/**
|
|
85
|
-
* This flag is set on closed sessions when the close was initiated by the peer.
|
|
86
|
-
*/
|
|
87
|
-
protected set isCanceledByPeer(value: boolean) {
|
|
88
|
-
this.#isCanceledByPeer = value;
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
protected set isClosed(value: boolean) {
|
|
92
|
-
this.#isClosed = value;
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
/** Close the subscription with the option to gracefully flush outstanding data. */
|
|
96
|
-
abstract close(graceful: boolean, cancelledByPeer?: boolean): Promise<void>;
|
|
97
|
-
|
|
98
|
-
/**
|
|
99
|
-
* Destroy the subscription. Unsubscribe from all attributes and events and stop all timers.
|
|
100
|
-
*/
|
|
101
|
-
protected async destroy(): Promise<void> {
|
|
102
|
-
this.#isClosed = true;
|
|
103
|
-
this.#session.subscriptions.delete(this);
|
|
104
|
-
logger.debug(`Removed subscription ${this.id} from ${this.#session.name}`);
|
|
105
33
|
|
|
106
|
-
|
|
34
|
+
return hex.fixed(subscription, 8);
|
|
107
35
|
}
|
|
108
36
|
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
37
|
+
export function diagnosticOf(subscription: undefined | number | { subscriptionId?: number }) {
|
|
38
|
+
return {
|
|
39
|
+
"sub#": idStrOf(subscription),
|
|
40
|
+
};
|
|
113
41
|
}
|
|
114
42
|
}
|
|
@@ -19,7 +19,7 @@ export interface RegisteredSubscription {
|
|
|
19
19
|
maximumPeerResponseTime: Duration;
|
|
20
20
|
maxInterval: Duration;
|
|
21
21
|
onData: (dataReport: DecodedDataReport) => MaybePromise<void>;
|
|
22
|
-
onTimeout?:
|
|
22
|
+
onTimeout?: Timer.Callback;
|
|
23
23
|
}
|
|
24
24
|
|
|
25
25
|
/**
|
|
@@ -51,10 +51,10 @@ export class SubscriptionClient implements ProtocolHandler {
|
|
|
51
51
|
|
|
52
52
|
const maxInterval = Millis(subscription.maxInterval + subscription.maximumPeerResponseTime);
|
|
53
53
|
|
|
54
|
-
timer = Time.getTimer("
|
|
54
|
+
timer = Time.getTimer("subscription timeout", maxInterval, lifetime => {
|
|
55
55
|
logger.info(`Subscription ${id} timed out after ${Duration.format(maxInterval)}`);
|
|
56
56
|
this.delete(id);
|
|
57
|
-
onTimeout();
|
|
57
|
+
onTimeout(lifetime);
|
|
58
58
|
}).start();
|
|
59
59
|
|
|
60
60
|
this.#timeouts.set(id, timer);
|
package/src/mdns/MdnsClient.ts
CHANGED
|
@@ -20,6 +20,7 @@ import {
|
|
|
20
20
|
Instant,
|
|
21
21
|
InternalError,
|
|
22
22
|
Lifespan,
|
|
23
|
+
Lifetime,
|
|
23
24
|
Logger,
|
|
24
25
|
Millis,
|
|
25
26
|
Minutes,
|
|
@@ -34,6 +35,7 @@ import {
|
|
|
34
35
|
createPromise,
|
|
35
36
|
isIPv6,
|
|
36
37
|
} from "#general";
|
|
38
|
+
import { PeerAddress } from "#peer/PeerAddress.js";
|
|
37
39
|
import { NodeId, VendorId } from "#types";
|
|
38
40
|
import {
|
|
39
41
|
CommissionableDevice,
|
|
@@ -122,6 +124,8 @@ export interface MdnsScannerTargetCriteria {
|
|
|
122
124
|
* queries to discover various types of Matter device types and listens for announcements.
|
|
123
125
|
*/
|
|
124
126
|
export class MdnsClient implements Scanner {
|
|
127
|
+
readonly #lifetime: Lifetime;
|
|
128
|
+
|
|
125
129
|
readonly type = ChannelType.UDP;
|
|
126
130
|
|
|
127
131
|
/** Active announces by queryId with queries and known answers */
|
|
@@ -164,7 +168,9 @@ export class MdnsClient implements Scanner {
|
|
|
164
168
|
/** True, if any node is interested in MDNS traffic, else we ignore all traffic */
|
|
165
169
|
#listening = false;
|
|
166
170
|
|
|
167
|
-
constructor(socket: MdnsSocket) {
|
|
171
|
+
constructor(socket: MdnsSocket, lifetime = Lifetime.process) {
|
|
172
|
+
this.#lifetime = lifetime.join("mdns client");
|
|
173
|
+
|
|
168
174
|
this.#socket = socket;
|
|
169
175
|
this.#observers.on(this.#socket.receipt, this.#handleMessage.bind(this));
|
|
170
176
|
this.#periodicTimer = Time.getPeriodicTimer("Discovered node expiration", Minutes.one, () =>
|
|
@@ -498,7 +504,7 @@ export class MdnsClient implements Scanner {
|
|
|
498
504
|
* IP/ports or an empty array if not found.
|
|
499
505
|
*/
|
|
500
506
|
async findOperationalDevice(
|
|
501
|
-
|
|
507
|
+
fabric: Fabric,
|
|
502
508
|
nodeId: NodeId,
|
|
503
509
|
timeout?: Duration,
|
|
504
510
|
ignoreExistingRecords = false,
|
|
@@ -506,10 +512,14 @@ export class MdnsClient implements Scanner {
|
|
|
506
512
|
if (this.#closing) {
|
|
507
513
|
throw new ImplementationError("Cannot discover operational device because scanner is closing.");
|
|
508
514
|
}
|
|
509
|
-
const deviceMatterQname = this.#createOperationalMatterQName(operationalId, nodeId);
|
|
515
|
+
const deviceMatterQname = this.#createOperationalMatterQName(fabric.operationalId, nodeId);
|
|
510
516
|
|
|
511
517
|
let storedDevice = ignoreExistingRecords ? undefined : this.#getOperationalDeviceRecords(deviceMatterQname);
|
|
512
518
|
if (storedDevice === undefined) {
|
|
519
|
+
using _finding = this.#lifetime.join(
|
|
520
|
+
"finding peer",
|
|
521
|
+
PeerAddress({ fabricIndex: fabric.fabricIndex, nodeId }),
|
|
522
|
+
);
|
|
513
523
|
const promise = this.#registerWaiterPromise(deviceMatterQname, false, timeout, () =>
|
|
514
524
|
this.#getOperationalDeviceRecords(deviceMatterQname),
|
|
515
525
|
);
|
|
@@ -737,6 +747,9 @@ export class MdnsClient implements Scanner {
|
|
|
737
747
|
? []
|
|
738
748
|
: this.#getCommissionableDeviceRecords(identifier).filter(({ addresses }) => addresses.length > 0);
|
|
739
749
|
if (storedRecords.length === 0) {
|
|
750
|
+
using finding = this.#lifetime.join("finding commissionable");
|
|
751
|
+
Object.assign(finding.details, identifier);
|
|
752
|
+
|
|
740
753
|
const queryId = this.#buildCommissionableQueryIdentifier(identifier);
|
|
741
754
|
const promise = this.#registerWaiterPromise(queryId, true, timeout, () =>
|
|
742
755
|
this.#getCommissionableDeviceRecords(identifier),
|
|
@@ -791,6 +804,9 @@ export class MdnsClient implements Scanner {
|
|
|
791
804
|
const criteria: MdnsScannerTargetCriteria = { commissionable: true, operationalTargets: [] };
|
|
792
805
|
this.targetCriteriaProviders.add(criteria);
|
|
793
806
|
|
|
807
|
+
using finding = this.#lifetime.join("finding commissionable");
|
|
808
|
+
Object.assign(finding.details, identifier);
|
|
809
|
+
|
|
794
810
|
try {
|
|
795
811
|
let lastDiscoveredDevices: CommissionableDevice[] | undefined = undefined;
|
|
796
812
|
while (!canceled) {
|
|
@@ -832,6 +848,7 @@ export class MdnsClient implements Scanner {
|
|
|
832
848
|
* Close all connects, end all timers and resolve all pending promises.
|
|
833
849
|
*/
|
|
834
850
|
async close() {
|
|
851
|
+
using _closing = this.#lifetime.closing();
|
|
835
852
|
this.#closing = true;
|
|
836
853
|
this.#observers.close();
|
|
837
854
|
this.#periodicTimer.stop();
|
package/src/mdns/MdnsServer.ts
CHANGED
|
@@ -6,12 +6,15 @@
|
|
|
6
6
|
|
|
7
7
|
import {
|
|
8
8
|
AsyncCache,
|
|
9
|
+
describeList,
|
|
10
|
+
Diagnostic,
|
|
9
11
|
DnsMessageType,
|
|
10
12
|
DnsMessageTypeFlag,
|
|
11
13
|
DnsRecord,
|
|
12
14
|
DnsRecordType,
|
|
13
15
|
Instant,
|
|
14
16
|
isDeepEqual,
|
|
17
|
+
Lifetime,
|
|
15
18
|
Logger,
|
|
16
19
|
MatterAggregateError,
|
|
17
20
|
Millis,
|
|
@@ -26,6 +29,7 @@ import { MdnsSocket } from "./MdnsSocket.js";
|
|
|
26
29
|
const logger = Logger.get("MdnsServer");
|
|
27
30
|
|
|
28
31
|
export class MdnsServer {
|
|
32
|
+
#lifetime: Lifetime;
|
|
29
33
|
#observers = new ObserverGroup();
|
|
30
34
|
#recordsGenerator = new Map<string, MdnsServer.RecordGenerator>();
|
|
31
35
|
readonly #records = new AsyncCache<Map<string, DnsRecord<any>[]>>(
|
|
@@ -50,8 +54,9 @@ export class MdnsServer {
|
|
|
50
54
|
|
|
51
55
|
readonly #socket: MdnsSocket;
|
|
52
56
|
|
|
53
|
-
constructor(socket: MdnsSocket) {
|
|
57
|
+
constructor(socket: MdnsSocket, lifetime = Lifetime.process) {
|
|
54
58
|
this.#socket = socket;
|
|
59
|
+
this.#lifetime = lifetime.join("mdns server");
|
|
55
60
|
this.#observers.on(this.#socket.receipt, this.#handleMessage.bind(this));
|
|
56
61
|
}
|
|
57
62
|
|
|
@@ -68,6 +73,8 @@ export class MdnsServer {
|
|
|
68
73
|
}
|
|
69
74
|
|
|
70
75
|
async #handleMessage(incomingMessage: MdnsSocket.Message) {
|
|
76
|
+
using _processing = this.#lifetime.join("processing message");
|
|
77
|
+
|
|
71
78
|
const records = await this.#records.get(incomingMessage.sourceIntf);
|
|
72
79
|
|
|
73
80
|
// Ignore if we have no records for interface
|
|
@@ -166,6 +173,8 @@ export class MdnsServer {
|
|
|
166
173
|
}
|
|
167
174
|
|
|
168
175
|
async broadcast(...services: string[]) {
|
|
176
|
+
using _broadcasting = this.#lifetime.join("broadcasting", Diagnostic.strong(describeList("and", ...services)));
|
|
177
|
+
|
|
169
178
|
await MatterAggregateError.allSettled(
|
|
170
179
|
(await this.#getMulticastInterfacesForAnnounce()).map(async ({ name: netInterface }) => {
|
|
171
180
|
const records = await this.#records.get(netInterface);
|
|
@@ -182,6 +191,8 @@ export class MdnsServer {
|
|
|
182
191
|
}
|
|
183
192
|
|
|
184
193
|
async expireAnnouncements(...services: string[]) {
|
|
194
|
+
using _expiring = this.#lifetime.join("expiring", Diagnostic.strong(describeList("and", ...services)));
|
|
195
|
+
|
|
185
196
|
await MatterAggregateError.allSettled(
|
|
186
197
|
this.#records.keys().map(async netInterface => {
|
|
187
198
|
const records = await this.#records.get(netInterface);
|
|
@@ -218,6 +229,7 @@ export class MdnsServer {
|
|
|
218
229
|
}
|
|
219
230
|
|
|
220
231
|
async close() {
|
|
232
|
+
using _closing = this.#lifetime.closing();
|
|
221
233
|
this.#observers.close();
|
|
222
234
|
await this.#records.close();
|
|
223
235
|
for (const { timer } of this.#truncatedQueryCache.values()) {
|
package/src/mdns/MdnsService.ts
CHANGED
|
@@ -45,12 +45,13 @@ export class MdnsService {
|
|
|
45
45
|
|
|
46
46
|
this.#construction = Construction(this, async () => {
|
|
47
47
|
this.#socket = await MdnsSocket.create(network, {
|
|
48
|
+
lifetime: this.#construction,
|
|
48
49
|
enableIpv4: this.enableIpv4,
|
|
49
50
|
netInterface: this.limitedToNetInterface,
|
|
50
51
|
});
|
|
51
52
|
|
|
52
|
-
this.#server = new MdnsServer(this.#socket);
|
|
53
|
-
this.#client = new MdnsClient(this.#socket);
|
|
53
|
+
this.#server = new MdnsServer(this.#socket, this.#construction);
|
|
54
|
+
this.#client = new MdnsClient(this.#socket, this.#construction);
|
|
54
55
|
});
|
|
55
56
|
}
|
|
56
57
|
|
package/src/mdns/MdnsSocket.ts
CHANGED
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
import {
|
|
8
|
+
AsyncObservable,
|
|
8
9
|
BasicObservable,
|
|
9
10
|
Bytes,
|
|
10
11
|
Diagnostic,
|
|
@@ -13,6 +14,7 @@ import {
|
|
|
13
14
|
DnsMessagePartiallyPreEncoded,
|
|
14
15
|
DnsMessageType,
|
|
15
16
|
DnsMessageTypeFlag,
|
|
17
|
+
Lifetime,
|
|
16
18
|
Logger,
|
|
17
19
|
MatterAggregateError,
|
|
18
20
|
MAX_MDNS_MESSAGE_SIZE,
|
|
@@ -31,15 +33,19 @@ export class MdnsSocket {
|
|
|
31
33
|
#socket: UdpMulticastServer;
|
|
32
34
|
#handlers?: Set<PromiseLike<void>>;
|
|
33
35
|
#isClosed = false;
|
|
34
|
-
#receipt
|
|
36
|
+
#receipt: AsyncObservable<[message: MdnsSocket.Message]> = new BasicObservable(
|
|
35
37
|
error => logger.error("Unhandled error in MDNS listener", error),
|
|
36
38
|
true,
|
|
37
39
|
);
|
|
38
40
|
|
|
39
|
-
static async create(
|
|
40
|
-
|
|
41
|
+
static async create(
|
|
42
|
+
network: Network,
|
|
43
|
+
options?: { enableIpv4?: boolean; netInterface?: string; lifetime?: Lifetime.Owner },
|
|
44
|
+
) {
|
|
45
|
+
const { enableIpv4 = true, netInterface, lifetime } = options ?? {};
|
|
41
46
|
const socket = new MdnsSocket(
|
|
42
47
|
await UdpMulticastServer.create({
|
|
48
|
+
lifetime,
|
|
43
49
|
network,
|
|
44
50
|
netInterface,
|
|
45
51
|
broadcastAddressIpv4: enableIpv4 ? MDNS_BROADCAST_IPV4 : undefined,
|
|
@@ -38,8 +38,8 @@ import {
|
|
|
38
38
|
import { ControllerDiscovery, PairRetransmissionLimitReachedError } from "#peer/ControllerDiscovery.js";
|
|
39
39
|
import { ExchangeManager } from "#protocol/ExchangeManager.js";
|
|
40
40
|
import { DedicatedChannelExchangeProvider } from "#protocol/ExchangeProvider.js";
|
|
41
|
-
import { MessageChannel } from "#protocol/MessageChannel.js";
|
|
42
41
|
import { ChannelStatusResponseError } from "#securechannel/SecureChannelMessenger.js";
|
|
42
|
+
import { NodeSession } from "#session/NodeSession.js";
|
|
43
43
|
import { PaseClient } from "#session/pase/PaseClient.js";
|
|
44
44
|
import { SessionManager } from "#session/SessionManager.js";
|
|
45
45
|
import { DiscoveryCapabilitiesBitmap, NodeId, SECURE_CHANNEL_PROTOCOL_ID, TypeFromPartialBitSchema } from "#types";
|
|
@@ -177,21 +177,21 @@ export class ControllerCommissioner {
|
|
|
177
177
|
addresses.sort(a => (a.type === "udp" ? -1 : 1));
|
|
178
178
|
|
|
179
179
|
// Attempt a connection on each known address
|
|
180
|
-
let
|
|
180
|
+
let session: NodeSession | undefined;
|
|
181
181
|
for (const address of addresses) {
|
|
182
182
|
try {
|
|
183
|
-
|
|
183
|
+
session = await this.#initializePaseSecureChannel(address, passcode, discoveryData);
|
|
184
184
|
} catch (e) {
|
|
185
185
|
NoResponseTimeoutError.accept(e);
|
|
186
186
|
logger.warn(`Could not connect to ${ServerAddress.urlFor(address)}: ${e.message}`);
|
|
187
187
|
}
|
|
188
188
|
}
|
|
189
189
|
|
|
190
|
-
if (
|
|
190
|
+
if (session === undefined) {
|
|
191
191
|
throw new NoResponseTimeoutError("Could not connect to device");
|
|
192
192
|
}
|
|
193
193
|
|
|
194
|
-
return await this.#commissionConnectedNode(
|
|
194
|
+
return await this.#commissionConnectedNode(session, options, discoveryData);
|
|
195
195
|
}
|
|
196
196
|
|
|
197
197
|
/**
|
|
@@ -199,7 +199,7 @@ export class ControllerCommissioner {
|
|
|
199
199
|
*/
|
|
200
200
|
async discoverAndEstablishPase(
|
|
201
201
|
options: DiscoveryAndCommissioningOptions,
|
|
202
|
-
): Promise<{
|
|
202
|
+
): Promise<{ paseSession: NodeSession; discoveryData?: DiscoveryData }> {
|
|
203
203
|
const {
|
|
204
204
|
discovery: { timeout = Seconds(30) },
|
|
205
205
|
passcode,
|
|
@@ -245,18 +245,18 @@ export class ControllerCommissioner {
|
|
|
245
245
|
);
|
|
246
246
|
|
|
247
247
|
// If we have a known address we try this first before we discover the device
|
|
248
|
-
let
|
|
248
|
+
let paseSession: NodeSession | undefined;
|
|
249
249
|
let discoveryData: DiscoveryData | undefined;
|
|
250
250
|
|
|
251
251
|
// If we have a last known address, try this first
|
|
252
252
|
if (knownAddress !== undefined) {
|
|
253
253
|
try {
|
|
254
|
-
|
|
254
|
+
paseSession = await this.#initializePaseSecureChannel(knownAddress, passcode);
|
|
255
255
|
} catch (error) {
|
|
256
256
|
NoResponseTimeoutError.accept(error);
|
|
257
257
|
}
|
|
258
258
|
}
|
|
259
|
-
if (
|
|
259
|
+
if (paseSession === undefined) {
|
|
260
260
|
const discoveredDevices = await ControllerDiscovery.discoverDeviceAddressesByIdentifier(
|
|
261
261
|
scannersToUse,
|
|
262
262
|
identifierData,
|
|
@@ -276,10 +276,10 @@ export class ControllerCommissioner {
|
|
|
276
276
|
);
|
|
277
277
|
|
|
278
278
|
// Pairing was successful, so store the address and assign the established secure channel
|
|
279
|
-
|
|
279
|
+
paseSession = result;
|
|
280
280
|
}
|
|
281
281
|
|
|
282
|
-
return {
|
|
282
|
+
return { paseSession, discoveryData };
|
|
283
283
|
}
|
|
284
284
|
|
|
285
285
|
/**
|
|
@@ -293,10 +293,10 @@ export class ControllerCommissioner {
|
|
|
293
293
|
}
|
|
294
294
|
|
|
295
295
|
// Establish PASE channel
|
|
296
|
-
const {
|
|
296
|
+
const { paseSession, discoveryData } = await this.discoverAndEstablishPase(options);
|
|
297
297
|
|
|
298
298
|
// Commission the node
|
|
299
|
-
return await this.#commissionConnectedNode(
|
|
299
|
+
return await this.#commissionConnectedNode(paseSession, options, discoveryData);
|
|
300
300
|
}
|
|
301
301
|
|
|
302
302
|
/**
|
|
@@ -308,7 +308,7 @@ export class ControllerCommissioner {
|
|
|
308
308
|
address: ServerAddress,
|
|
309
309
|
passcode: number,
|
|
310
310
|
device?: DiscoveryData,
|
|
311
|
-
): Promise<
|
|
311
|
+
): Promise<NodeSession> {
|
|
312
312
|
let paseChannel: Channel<Bytes>;
|
|
313
313
|
if (device !== undefined) {
|
|
314
314
|
logger.info(`Establish PASE to device`, MdnsClient.discoveryDataDiagnostics(device));
|
|
@@ -349,8 +349,9 @@ export class ControllerCommissioner {
|
|
|
349
349
|
);
|
|
350
350
|
}
|
|
351
351
|
|
|
352
|
-
// Do PASE
|
|
353
|
-
const
|
|
352
|
+
// Do PASE pairing
|
|
353
|
+
const unsecuredSession = this.#context.sessions.createUnsecuredSession({
|
|
354
|
+
channel: paseChannel,
|
|
354
355
|
// Use the session parameters from MDNS announcements when available and rest is assumed to be fallbacks
|
|
355
356
|
sessionParameters: {
|
|
356
357
|
idleInterval: Millis(device?.SII),
|
|
@@ -359,32 +360,31 @@ export class ControllerCommissioner {
|
|
|
359
360
|
},
|
|
360
361
|
isInitiator: true,
|
|
361
362
|
});
|
|
362
|
-
const
|
|
363
|
-
|
|
364
|
-
paseUnsecureMessageChannel,
|
|
363
|
+
const paseExchange = this.#context.exchanges.initiateExchangeForSession(
|
|
364
|
+
unsecuredSession,
|
|
365
365
|
SECURE_CHANNEL_PROTOCOL_ID,
|
|
366
366
|
);
|
|
367
367
|
|
|
368
|
-
let paseSecureSession;
|
|
369
368
|
try {
|
|
370
|
-
|
|
369
|
+
const caseSession = await this.#paseClient.pair(
|
|
371
370
|
this.#context.sessions.sessionParameters,
|
|
372
371
|
paseExchange,
|
|
372
|
+
paseChannel,
|
|
373
373
|
passcode,
|
|
374
374
|
);
|
|
375
|
+
unsecuredSession.detachChannel();
|
|
376
|
+
return caseSession;
|
|
375
377
|
} catch (e) {
|
|
376
378
|
// Close the exchange and rethrow
|
|
377
|
-
await paseExchange.close();
|
|
378
379
|
if (e instanceof ChannelStatusResponseError) {
|
|
379
380
|
throw new NoResponseTimeoutError(
|
|
380
381
|
`Establishing PASE channel failed with channel status response error ${e.message}`,
|
|
381
382
|
);
|
|
382
383
|
}
|
|
383
384
|
throw e;
|
|
385
|
+
} finally {
|
|
386
|
+
await unsecuredSession.initiateForceClose();
|
|
384
387
|
}
|
|
385
|
-
|
|
386
|
-
await unsecureSession.destroy();
|
|
387
|
-
return new MessageChannel(paseChannel, paseSecureSession);
|
|
388
388
|
}
|
|
389
389
|
|
|
390
390
|
/** Validate if a Peer Address is already known and commissioned */
|
|
@@ -415,7 +415,7 @@ export class ControllerCommissioner {
|
|
|
415
415
|
* success.
|
|
416
416
|
*/
|
|
417
417
|
async #commissionConnectedNode(
|
|
418
|
-
|
|
418
|
+
paseSession: NodeSession,
|
|
419
419
|
options: CommissioningOptions,
|
|
420
420
|
discoveryData?: DiscoveryData,
|
|
421
421
|
): Promise<PeerAddress> {
|
|
@@ -466,7 +466,7 @@ export class ControllerCommissioner {
|
|
|
466
466
|
const commissioningManager = new commissioningFlowImpl(
|
|
467
467
|
// Use the created secure session to do the commissioning
|
|
468
468
|
new InteractionClient(
|
|
469
|
-
new DedicatedChannelExchangeProvider(this.#context.exchanges,
|
|
469
|
+
new DedicatedChannelExchangeProvider(this.#context.exchanges, paseSession),
|
|
470
470
|
undefined,
|
|
471
471
|
address,
|
|
472
472
|
),
|
|
@@ -480,7 +480,7 @@ export class ControllerCommissioner {
|
|
|
480
480
|
commissioning flow the commissioning channel SHALL terminate after successful step 12 (trigger
|
|
481
481
|
joining of operational network at Commissionee).
|
|
482
482
|
*/
|
|
483
|
-
await
|
|
483
|
+
await paseSession.initiateClose(); // We reconnect using Case, so close PASE connection
|
|
484
484
|
}
|
|
485
485
|
|
|
486
486
|
if (performCaseCommissioning !== undefined) {
|
|
@@ -504,17 +504,15 @@ export class ControllerCommissioner {
|
|
|
504
504
|
await commissioningManager.executeCommissioning();
|
|
505
505
|
} catch (error) {
|
|
506
506
|
// We might have added data for an operational address that we need to cleanup
|
|
507
|
-
await this.#context.clients.peers.
|
|
507
|
+
await this.#context.clients.peers.get(address)?.delete();
|
|
508
508
|
throw error;
|
|
509
509
|
} finally {
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
await paseSecureMessageChannel.close(); // We are done, so close PASE session
|
|
517
|
-
}
|
|
510
|
+
/*
|
|
511
|
+
In concurrent connection commissioning flow the commissioning channel SHALL terminate after
|
|
512
|
+
successful step 15 (CommissioningComplete command invocation).
|
|
513
|
+
If PaseSecureMessageChannel is not already closed, we are in non-concurrent connection commissioning flow.
|
|
514
|
+
*/
|
|
515
|
+
await paseSession.initiateClose(); // We are done, so close PASE session
|
|
518
516
|
}
|
|
519
517
|
|
|
520
518
|
return address;
|
|
@@ -15,6 +15,7 @@ import {
|
|
|
15
15
|
ServerAddress,
|
|
16
16
|
} from "#general";
|
|
17
17
|
import { CommissionableDeviceDiscoveryFailedError } from "#peer/ControllerCommissioningFlow.js";
|
|
18
|
+
import { RetransmissionLimitReachedError } from "#protocol/errors.js";
|
|
18
19
|
import { NodeId } from "#types";
|
|
19
20
|
import {
|
|
20
21
|
AddressTypeFromDevice,
|
|
@@ -26,7 +27,6 @@ import {
|
|
|
26
27
|
} from "../common/Scanner.js";
|
|
27
28
|
import { Fabric } from "../fabric/Fabric.js";
|
|
28
29
|
import { MdnsClient } from "../mdns/MdnsClient.js";
|
|
29
|
-
import { RetransmissionLimitReachedError } from "../protocol/MessageExchange.js";
|
|
30
30
|
|
|
31
31
|
const logger = Logger.get("ControllerDiscovery");
|
|
32
32
|
|