@matter/node 0.16.0-alpha.0-20251205-dfb1e1556 → 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/behavior/Behavior.d.ts +5 -1
- package/dist/cjs/behavior/Behavior.d.ts.map +1 -1
- package/dist/cjs/behavior/Behavior.js +10 -0
- package/dist/cjs/behavior/Behavior.js.map +1 -1
- package/dist/cjs/behavior/Events.d.ts +7 -7
- package/dist/cjs/behavior/Events.d.ts.map +1 -1
- package/dist/cjs/behavior/Events.js.map +1 -1
- package/dist/cjs/behavior/Transitions.d.ts +2 -3
- package/dist/cjs/behavior/Transitions.d.ts.map +1 -1
- package/dist/cjs/behavior/Transitions.js +1 -2
- package/dist/cjs/behavior/Transitions.js.map +1 -1
- package/dist/cjs/behavior/cluster/ClusterBehaviorType.js.map +1 -1
- package/dist/cjs/behavior/cluster/ClusterEvents.d.ts +1 -1
- package/dist/cjs/behavior/cluster/ClusterEvents.d.ts.map +1 -1
- package/dist/cjs/behavior/context/NodeActivity.d.ts +2 -4
- package/dist/cjs/behavior/context/NodeActivity.d.ts.map +1 -1
- package/dist/cjs/behavior/context/NodeActivity.js +3 -10
- package/dist/cjs/behavior/context/NodeActivity.js.map +1 -1
- package/dist/cjs/behavior/context/server/LocalActorContext.d.ts +2 -3
- package/dist/cjs/behavior/context/server/LocalActorContext.d.ts.map +1 -1
- package/dist/cjs/behavior/context/server/LocalActorContext.js +3 -3
- package/dist/cjs/behavior/context/server/LocalActorContext.js.map +1 -1
- package/dist/cjs/behavior/context/server/RemoteActorContext.d.ts +2 -6
- package/dist/cjs/behavior/context/server/RemoteActorContext.d.ts.map +1 -1
- package/dist/cjs/behavior/context/server/RemoteActorContext.js +20 -22
- package/dist/cjs/behavior/context/server/RemoteActorContext.js.map +1 -1
- package/dist/cjs/behavior/internal/BehaviorBacking.d.ts +2 -1
- package/dist/cjs/behavior/internal/BehaviorBacking.d.ts.map +1 -1
- package/dist/cjs/behavior/internal/BehaviorBacking.js +3 -0
- package/dist/cjs/behavior/internal/BehaviorBacking.js.map +1 -1
- package/dist/cjs/behavior/internal/Reactors.d.ts.map +1 -1
- package/dist/cjs/behavior/internal/Reactors.js +2 -1
- package/dist/cjs/behavior/internal/Reactors.js.map +1 -1
- package/dist/cjs/behavior/state/managed/Datasource.d.ts.map +1 -1
- package/dist/cjs/behavior/state/managed/Datasource.js +1 -1
- package/dist/cjs/behavior/state/managed/Datasource.js.map +1 -1
- package/dist/cjs/behavior/system/commissioning/CommissioningClient.d.ts.map +1 -1
- package/dist/cjs/behavior/system/commissioning/CommissioningClient.js +5 -11
- package/dist/cjs/behavior/system/commissioning/CommissioningClient.js.map +1 -1
- package/dist/cjs/behavior/system/commissioning/CommissioningServer.d.ts +3 -2
- package/dist/cjs/behavior/system/commissioning/CommissioningServer.d.ts.map +1 -1
- package/dist/cjs/behavior/system/commissioning/CommissioningServer.js +3 -6
- package/dist/cjs/behavior/system/commissioning/CommissioningServer.js.map +1 -1
- package/dist/cjs/behavior/system/mqtt/MqttInterface.d.ts.map +1 -1
- package/dist/cjs/behavior/system/mqtt/MqttInterface.js +91 -30
- package/dist/cjs/behavior/system/mqtt/MqttInterface.js.map +1 -1
- package/dist/cjs/behavior/system/network/NetworkRuntime.d.ts.map +1 -1
- package/dist/cjs/behavior/system/network/NetworkRuntime.js +1 -3
- package/dist/cjs/behavior/system/network/NetworkRuntime.js.map +1 -1
- package/dist/cjs/behavior/system/network/ServerGroupNetworking.js +2 -2
- package/dist/cjs/behavior/system/network/ServerGroupNetworking.js.map +1 -1
- package/dist/cjs/behavior/system/network/ServerNetworkRuntime.d.ts.map +1 -1
- package/dist/cjs/behavior/system/network/ServerNetworkRuntime.js +152 -13
- package/dist/cjs/behavior/system/network/ServerNetworkRuntime.js.map +2 -2
- package/dist/cjs/behavior/system/remote/RemoteInterface.d.ts +3 -2
- package/dist/cjs/behavior/system/remote/RemoteInterface.d.ts.map +1 -1
- package/dist/cjs/behavior/system/remote/RemoteInterface.js +69 -10
- package/dist/cjs/behavior/system/remote/RemoteInterface.js.map +1 -1
- package/dist/cjs/behavior/system/remote/api/Api.d.ts.map +1 -1
- package/dist/cjs/behavior/system/remote/api/Api.js +4 -3
- package/dist/cjs/behavior/system/remote/api/Api.js.map +1 -1
- package/dist/cjs/behavior/system/sessions/SessionsBehavior.js +2 -2
- package/dist/cjs/behavior/system/sessions/SessionsBehavior.js.map +1 -1
- package/dist/cjs/behavior/system/subscriptions/SubscriptionsServer.d.ts.map +1 -1
- package/dist/cjs/behavior/system/subscriptions/SubscriptionsServer.js +14 -11
- package/dist/cjs/behavior/system/subscriptions/SubscriptionsServer.js.map +1 -1
- package/dist/cjs/behavior/system/websocket/WebSocketInterface.d.ts.map +1 -1
- package/dist/cjs/behavior/system/websocket/WebSocketInterface.js +11 -3
- package/dist/cjs/behavior/system/websocket/WebSocketInterface.js.map +1 -1
- package/dist/cjs/behaviors/access-control/AccessControlServer.js +1 -1
- package/dist/cjs/behaviors/access-control/AccessControlServer.js.map +1 -1
- package/dist/cjs/behaviors/administrator-commissioning/AdministratorCommissioningServer.d.ts.map +1 -1
- package/dist/cjs/behaviors/administrator-commissioning/AdministratorCommissioningServer.js +65 -7
- package/dist/cjs/behaviors/administrator-commissioning/AdministratorCommissioningServer.js.map +1 -1
- package/dist/cjs/behaviors/basic-information/BasicInformationServer.js +2 -2
- package/dist/cjs/behaviors/basic-information/BasicInformationServer.js.map +1 -1
- package/dist/cjs/behaviors/general-commissioning/GeneralCommissioningServer.d.ts.map +1 -1
- package/dist/cjs/behaviors/general-commissioning/GeneralCommissioningServer.js +12 -8
- package/dist/cjs/behaviors/general-commissioning/GeneralCommissioningServer.js.map +1 -1
- package/dist/cjs/behaviors/general-commissioning/ServerNodeFailsafeContext.d.ts +2 -3
- package/dist/cjs/behaviors/general-commissioning/ServerNodeFailsafeContext.d.ts.map +1 -1
- package/dist/cjs/behaviors/general-commissioning/ServerNodeFailsafeContext.js +2 -10
- package/dist/cjs/behaviors/general-commissioning/ServerNodeFailsafeContext.js.map +1 -1
- package/dist/cjs/behaviors/general-diagnostics/GeneralDiagnosticsServer.js +1 -1
- package/dist/cjs/behaviors/general-diagnostics/GeneralDiagnosticsServer.js.map +1 -1
- package/dist/cjs/behaviors/group-key-management/GroupKeyManagementServer.js +1 -1
- package/dist/cjs/behaviors/group-key-management/GroupKeyManagementServer.js.map +1 -1
- package/dist/cjs/behaviors/operational-credentials/OperationalCredentialsServer.d.ts +0 -1
- package/dist/cjs/behaviors/operational-credentials/OperationalCredentialsServer.d.ts.map +1 -1
- package/dist/cjs/behaviors/operational-credentials/OperationalCredentialsServer.js +15 -14
- package/dist/cjs/behaviors/operational-credentials/OperationalCredentialsServer.js.map +1 -1
- package/dist/cjs/behaviors/scenes-management/ScenesManagementServer.js +1 -1
- package/dist/cjs/behaviors/scenes-management/ScenesManagementServer.js.map +1 -1
- package/dist/cjs/behaviors/thermostat/AtomicWriteHandler.js +1 -1
- package/dist/cjs/behaviors/thermostat/AtomicWriteHandler.js.map +1 -1
- package/dist/cjs/behaviors/window-covering/WindowCoveringServer.d.ts.map +1 -1
- package/dist/cjs/behaviors/window-covering/WindowCoveringServer.js +21 -8
- package/dist/cjs/behaviors/window-covering/WindowCoveringServer.js.map +1 -1
- package/dist/cjs/endpoint/Endpoint.d.ts +2 -1
- package/dist/cjs/endpoint/Endpoint.d.ts.map +1 -1
- package/dist/cjs/endpoint/Endpoint.js +95 -8
- package/dist/cjs/endpoint/Endpoint.js.map +2 -2
- package/dist/cjs/endpoint/properties/Behaviors.d.ts.map +1 -1
- package/dist/cjs/endpoint/properties/Behaviors.js +11 -7
- package/dist/cjs/endpoint/properties/Behaviors.js.map +1 -1
- package/dist/cjs/endpoint/properties/Commands.js +1 -1
- package/dist/cjs/endpoint/properties/Commands.js.map +1 -1
- package/dist/cjs/endpoint/properties/EndpointLifecycle.d.ts.map +1 -1
- package/dist/cjs/endpoint/properties/EndpointLifecycle.js +3 -0
- package/dist/cjs/endpoint/properties/EndpointLifecycle.js.map +1 -1
- package/dist/cjs/node/ClientNode.d.ts.map +1 -1
- package/dist/cjs/node/ClientNode.js +2 -0
- package/dist/cjs/node/ClientNode.js.map +1 -1
- package/dist/cjs/node/Node.d.ts +2 -2
- package/dist/cjs/node/Node.d.ts.map +1 -1
- package/dist/cjs/node/Node.js +2 -1
- package/dist/cjs/node/Node.js.map +1 -1
- package/dist/cjs/node/ServerNode.d.ts.map +1 -1
- package/dist/cjs/node/ServerNode.js +54 -1
- package/dist/cjs/node/ServerNode.js.map +1 -1
- package/dist/cjs/node/client/ClientCommandMethod.d.ts.map +1 -1
- package/dist/cjs/node/client/ClientCommandMethod.js +26 -29
- package/dist/cjs/node/client/ClientCommandMethod.js.map +1 -1
- package/dist/cjs/node/client/NodePeerAddressStore.d.ts +3 -3
- package/dist/cjs/node/client/NodePeerAddressStore.d.ts.map +1 -1
- package/dist/cjs/node/client/NodePeerAddressStore.js.map +1 -1
- package/dist/cjs/node/client/Peers.d.ts.map +1 -1
- package/dist/cjs/node/client/Peers.js +14 -0
- package/dist/cjs/node/client/Peers.js.map +1 -1
- package/dist/cjs/node/integration/ProtocolService.d.ts.map +1 -1
- package/dist/cjs/node/integration/ProtocolService.js +3 -2
- package/dist/cjs/node/integration/ProtocolService.js.map +1 -1
- package/dist/cjs/node/server/InteractionServer.d.ts.map +1 -1
- package/dist/cjs/node/server/InteractionServer.js +54 -49
- package/dist/cjs/node/server/InteractionServer.js.map +2 -2
- package/dist/cjs/node/server/ServerEnvironment.js +1 -1
- package/dist/cjs/node/server/ServerEnvironment.js.map +1 -1
- package/dist/cjs/node/server/ServerSubscription.d.ts +61 -10
- package/dist/cjs/node/server/ServerSubscription.d.ts.map +1 -1
- package/dist/cjs/node/server/ServerSubscription.js +316 -157
- package/dist/cjs/node/server/ServerSubscription.js.map +2 -2
- package/dist/esm/behavior/Behavior.d.ts +5 -1
- package/dist/esm/behavior/Behavior.d.ts.map +1 -1
- package/dist/esm/behavior/Behavior.js +10 -0
- package/dist/esm/behavior/Behavior.js.map +1 -1
- package/dist/esm/behavior/Events.d.ts +7 -7
- package/dist/esm/behavior/Events.d.ts.map +1 -1
- package/dist/esm/behavior/Events.js.map +1 -1
- package/dist/esm/behavior/Transitions.d.ts +2 -3
- package/dist/esm/behavior/Transitions.d.ts.map +1 -1
- package/dist/esm/behavior/Transitions.js +1 -2
- package/dist/esm/behavior/Transitions.js.map +1 -1
- package/dist/esm/behavior/cluster/ClusterBehaviorType.js.map +1 -1
- package/dist/esm/behavior/cluster/ClusterEvents.d.ts +1 -1
- package/dist/esm/behavior/cluster/ClusterEvents.d.ts.map +1 -1
- package/dist/esm/behavior/context/NodeActivity.d.ts +2 -4
- package/dist/esm/behavior/context/NodeActivity.d.ts.map +1 -1
- package/dist/esm/behavior/context/NodeActivity.js +4 -11
- package/dist/esm/behavior/context/NodeActivity.js.map +1 -1
- package/dist/esm/behavior/context/server/LocalActorContext.d.ts +2 -3
- package/dist/esm/behavior/context/server/LocalActorContext.d.ts.map +1 -1
- package/dist/esm/behavior/context/server/LocalActorContext.js +5 -5
- package/dist/esm/behavior/context/server/LocalActorContext.js.map +1 -1
- package/dist/esm/behavior/context/server/RemoteActorContext.d.ts +2 -6
- package/dist/esm/behavior/context/server/RemoteActorContext.d.ts.map +1 -1
- package/dist/esm/behavior/context/server/RemoteActorContext.js +27 -24
- package/dist/esm/behavior/context/server/RemoteActorContext.js.map +1 -1
- package/dist/esm/behavior/internal/BehaviorBacking.d.ts +2 -1
- package/dist/esm/behavior/internal/BehaviorBacking.d.ts.map +1 -1
- package/dist/esm/behavior/internal/BehaviorBacking.js +4 -0
- package/dist/esm/behavior/internal/BehaviorBacking.js.map +1 -1
- package/dist/esm/behavior/internal/Reactors.d.ts.map +1 -1
- package/dist/esm/behavior/internal/Reactors.js +2 -1
- package/dist/esm/behavior/internal/Reactors.js.map +1 -1
- package/dist/esm/behavior/state/managed/Datasource.d.ts.map +1 -1
- package/dist/esm/behavior/state/managed/Datasource.js +2 -1
- package/dist/esm/behavior/state/managed/Datasource.js.map +1 -1
- package/dist/esm/behavior/system/commissioning/CommissioningClient.d.ts.map +1 -1
- package/dist/esm/behavior/system/commissioning/CommissioningClient.js +6 -13
- package/dist/esm/behavior/system/commissioning/CommissioningClient.js.map +1 -1
- package/dist/esm/behavior/system/commissioning/CommissioningServer.d.ts +3 -2
- package/dist/esm/behavior/system/commissioning/CommissioningServer.d.ts.map +1 -1
- package/dist/esm/behavior/system/commissioning/CommissioningServer.js +3 -7
- package/dist/esm/behavior/system/commissioning/CommissioningServer.js.map +1 -1
- package/dist/esm/behavior/system/mqtt/MqttInterface.d.ts.map +1 -1
- package/dist/esm/behavior/system/mqtt/MqttInterface.js +91 -30
- package/dist/esm/behavior/system/mqtt/MqttInterface.js.map +1 -1
- package/dist/esm/behavior/system/network/NetworkRuntime.d.ts.map +1 -1
- package/dist/esm/behavior/system/network/NetworkRuntime.js +1 -3
- package/dist/esm/behavior/system/network/NetworkRuntime.js.map +1 -1
- package/dist/esm/behavior/system/network/ServerGroupNetworking.js +2 -2
- package/dist/esm/behavior/system/network/ServerGroupNetworking.js.map +1 -1
- package/dist/esm/behavior/system/network/ServerNetworkRuntime.d.ts.map +1 -1
- package/dist/esm/behavior/system/network/ServerNetworkRuntime.js +152 -14
- package/dist/esm/behavior/system/network/ServerNetworkRuntime.js.map +2 -2
- package/dist/esm/behavior/system/remote/RemoteInterface.d.ts +3 -2
- package/dist/esm/behavior/system/remote/RemoteInterface.d.ts.map +1 -1
- package/dist/esm/behavior/system/remote/RemoteInterface.js +76 -11
- package/dist/esm/behavior/system/remote/RemoteInterface.js.map +1 -1
- package/dist/esm/behavior/system/remote/api/Api.d.ts.map +1 -1
- package/dist/esm/behavior/system/remote/api/Api.js +4 -3
- package/dist/esm/behavior/system/remote/api/Api.js.map +1 -1
- package/dist/esm/behavior/system/sessions/SessionsBehavior.js +2 -2
- package/dist/esm/behavior/system/sessions/SessionsBehavior.js.map +1 -1
- package/dist/esm/behavior/system/subscriptions/SubscriptionsServer.d.ts.map +1 -1
- package/dist/esm/behavior/system/subscriptions/SubscriptionsServer.js +17 -14
- package/dist/esm/behavior/system/subscriptions/SubscriptionsServer.js.map +1 -1
- package/dist/esm/behavior/system/websocket/WebSocketInterface.d.ts.map +1 -1
- package/dist/esm/behavior/system/websocket/WebSocketInterface.js +11 -3
- package/dist/esm/behavior/system/websocket/WebSocketInterface.js.map +1 -1
- package/dist/esm/behaviors/access-control/AccessControlServer.js +1 -1
- package/dist/esm/behaviors/access-control/AccessControlServer.js.map +1 -1
- package/dist/esm/behaviors/administrator-commissioning/AdministratorCommissioningServer.d.ts.map +1 -1
- package/dist/esm/behaviors/administrator-commissioning/AdministratorCommissioningServer.js +66 -8
- package/dist/esm/behaviors/administrator-commissioning/AdministratorCommissioningServer.js.map +1 -1
- package/dist/esm/behaviors/basic-information/BasicInformationServer.js +2 -2
- package/dist/esm/behaviors/basic-information/BasicInformationServer.js.map +1 -1
- package/dist/esm/behaviors/general-commissioning/GeneralCommissioningServer.d.ts.map +1 -1
- package/dist/esm/behaviors/general-commissioning/GeneralCommissioningServer.js +13 -9
- package/dist/esm/behaviors/general-commissioning/GeneralCommissioningServer.js.map +1 -1
- package/dist/esm/behaviors/general-commissioning/ServerNodeFailsafeContext.d.ts +2 -3
- package/dist/esm/behaviors/general-commissioning/ServerNodeFailsafeContext.d.ts.map +1 -1
- package/dist/esm/behaviors/general-commissioning/ServerNodeFailsafeContext.js +2 -10
- package/dist/esm/behaviors/general-commissioning/ServerNodeFailsafeContext.js.map +1 -1
- package/dist/esm/behaviors/general-diagnostics/GeneralDiagnosticsServer.js +1 -1
- package/dist/esm/behaviors/general-diagnostics/GeneralDiagnosticsServer.js.map +1 -1
- package/dist/esm/behaviors/group-key-management/GroupKeyManagementServer.js +1 -1
- package/dist/esm/behaviors/group-key-management/GroupKeyManagementServer.js.map +1 -1
- package/dist/esm/behaviors/operational-credentials/OperationalCredentialsServer.d.ts +0 -1
- package/dist/esm/behaviors/operational-credentials/OperationalCredentialsServer.d.ts.map +1 -1
- package/dist/esm/behaviors/operational-credentials/OperationalCredentialsServer.js +15 -15
- package/dist/esm/behaviors/operational-credentials/OperationalCredentialsServer.js.map +1 -1
- package/dist/esm/behaviors/scenes-management/ScenesManagementServer.js +1 -1
- package/dist/esm/behaviors/scenes-management/ScenesManagementServer.js.map +1 -1
- package/dist/esm/behaviors/thermostat/AtomicWriteHandler.js +1 -1
- package/dist/esm/behaviors/thermostat/AtomicWriteHandler.js.map +1 -1
- package/dist/esm/behaviors/window-covering/WindowCoveringServer.d.ts.map +1 -1
- package/dist/esm/behaviors/window-covering/WindowCoveringServer.js +22 -9
- package/dist/esm/behaviors/window-covering/WindowCoveringServer.js.map +1 -1
- package/dist/esm/endpoint/Endpoint.d.ts +2 -1
- package/dist/esm/endpoint/Endpoint.d.ts.map +1 -1
- package/dist/esm/endpoint/Endpoint.js +96 -8
- package/dist/esm/endpoint/Endpoint.js.map +2 -2
- package/dist/esm/endpoint/properties/Behaviors.d.ts.map +1 -1
- package/dist/esm/endpoint/properties/Behaviors.js +11 -7
- package/dist/esm/endpoint/properties/Behaviors.js.map +1 -1
- package/dist/esm/endpoint/properties/Commands.js +1 -1
- package/dist/esm/endpoint/properties/Commands.js.map +1 -1
- package/dist/esm/endpoint/properties/EndpointLifecycle.d.ts.map +1 -1
- package/dist/esm/endpoint/properties/EndpointLifecycle.js +3 -0
- package/dist/esm/endpoint/properties/EndpointLifecycle.js.map +1 -1
- package/dist/esm/node/ClientNode.d.ts.map +1 -1
- package/dist/esm/node/ClientNode.js +2 -0
- package/dist/esm/node/ClientNode.js.map +1 -1
- package/dist/esm/node/Node.d.ts +2 -2
- package/dist/esm/node/Node.d.ts.map +1 -1
- package/dist/esm/node/Node.js +4 -3
- package/dist/esm/node/Node.js.map +1 -1
- package/dist/esm/node/ServerNode.d.ts.map +1 -1
- package/dist/esm/node/ServerNode.js +54 -1
- package/dist/esm/node/ServerNode.js.map +1 -1
- package/dist/esm/node/client/ClientCommandMethod.d.ts.map +1 -1
- package/dist/esm/node/client/ClientCommandMethod.js +26 -29
- package/dist/esm/node/client/ClientCommandMethod.js.map +1 -1
- package/dist/esm/node/client/NodePeerAddressStore.d.ts +3 -3
- package/dist/esm/node/client/NodePeerAddressStore.d.ts.map +1 -1
- package/dist/esm/node/client/NodePeerAddressStore.js.map +1 -1
- package/dist/esm/node/client/Peers.d.ts.map +1 -1
- package/dist/esm/node/client/Peers.js +15 -1
- package/dist/esm/node/client/Peers.js.map +1 -1
- package/dist/esm/node/integration/ProtocolService.d.ts.map +1 -1
- package/dist/esm/node/integration/ProtocolService.js +4 -2
- package/dist/esm/node/integration/ProtocolService.js.map +1 -1
- package/dist/esm/node/server/InteractionServer.d.ts.map +1 -1
- package/dist/esm/node/server/InteractionServer.js +58 -50
- package/dist/esm/node/server/InteractionServer.js.map +2 -2
- package/dist/esm/node/server/ServerEnvironment.js +1 -1
- package/dist/esm/node/server/ServerEnvironment.js.map +1 -1
- package/dist/esm/node/server/ServerSubscription.d.ts +61 -10
- package/dist/esm/node/server/ServerSubscription.d.ts.map +1 -1
- package/dist/esm/node/server/ServerSubscription.js +321 -159
- package/dist/esm/node/server/ServerSubscription.js.map +2 -2
- package/package.json +7 -7
- package/src/behavior/Behavior.ts +12 -0
- package/src/behavior/Events.ts +12 -8
- package/src/behavior/Transitions.ts +3 -3
- package/src/behavior/cluster/ClusterBehaviorType.ts +2 -2
- package/src/behavior/cluster/ClusterEvents.ts +1 -1
- package/src/behavior/context/NodeActivity.ts +4 -13
- package/src/behavior/context/server/LocalActorContext.ts +6 -8
- package/src/behavior/context/server/RemoteActorContext.ts +34 -33
- package/src/behavior/internal/BehaviorBacking.ts +5 -0
- package/src/behavior/internal/Reactors.ts +1 -0
- package/src/behavior/state/managed/Datasource.ts +2 -1
- package/src/behavior/system/commissioning/CommissioningClient.ts +6 -13
- package/src/behavior/system/commissioning/CommissioningServer.ts +6 -8
- package/src/behavior/system/mqtt/MqttInterface.ts +6 -2
- package/src/behavior/system/network/NetworkRuntime.ts +1 -3
- package/src/behavior/system/network/ServerGroupNetworking.ts +2 -2
- package/src/behavior/system/network/ServerNetworkRuntime.ts +49 -15
- package/src/behavior/system/remote/RemoteInterface.ts +22 -4
- package/src/behavior/system/remote/api/Api.ts +4 -3
- package/src/behavior/system/sessions/SessionsBehavior.ts +2 -2
- package/src/behavior/system/subscriptions/SubscriptionsServer.ts +15 -13
- package/src/behavior/system/websocket/WebSocketInterface.ts +2 -1
- package/src/behaviors/access-control/AccessControlServer.ts +1 -1
- package/src/behaviors/administrator-commissioning/AdministratorCommissioningServer.ts +14 -7
- package/src/behaviors/basic-information/BasicInformationServer.ts +2 -2
- package/src/behaviors/general-commissioning/GeneralCommissioningServer.ts +14 -9
- package/src/behaviors/general-commissioning/ServerNodeFailsafeContext.ts +3 -15
- package/src/behaviors/general-diagnostics/GeneralDiagnosticsServer.ts +1 -1
- package/src/behaviors/group-key-management/GroupKeyManagementServer.ts +1 -1
- package/src/behaviors/operational-credentials/OperationalCredentialsServer.ts +22 -19
- package/src/behaviors/scenes-management/ScenesManagementServer.ts +1 -1
- package/src/behaviors/thermostat/AtomicWriteHandler.ts +1 -1
- package/src/behaviors/window-covering/WindowCoveringServer.ts +24 -9
- package/src/endpoint/Endpoint.ts +21 -4
- package/src/endpoint/properties/Behaviors.ts +11 -6
- package/src/endpoint/properties/Commands.ts +1 -1
- package/src/endpoint/properties/EndpointLifecycle.ts +4 -0
- package/src/node/ClientNode.ts +3 -0
- package/src/node/Node.ts +3 -2
- package/src/node/ServerNode.ts +1 -0
- package/src/node/client/ClientCommandMethod.ts +31 -38
- package/src/node/client/NodePeerAddressStore.ts +3 -3
- package/src/node/client/Peers.ts +19 -1
- package/src/node/integration/ProtocolService.ts +4 -2
- package/src/node/server/InteractionServer.ts +62 -51
- package/src/node/server/ServerEnvironment.ts +1 -1
- package/src/node/server/ServerSubscription.ts +225 -153
|
@@ -19,7 +19,6 @@ import {
|
|
|
19
19
|
DeviceCertification,
|
|
20
20
|
DeviceCommissioner,
|
|
21
21
|
Fabric,
|
|
22
|
-
FabricAction,
|
|
23
22
|
FabricManager,
|
|
24
23
|
FabricTableFullError,
|
|
25
24
|
MatterFabricConflictError,
|
|
@@ -269,19 +268,13 @@ export class OperationalCredentialsServer extends OperationalCredentialsBehavior
|
|
|
269
268
|
return this.#mapNocErrors(error);
|
|
270
269
|
}
|
|
271
270
|
|
|
272
|
-
// The receiver SHALL create and add a new Access Control Entry using the CaseAdminSubject field to grant
|
|
273
|
-
// subsequent Administer access to an Administrator member of the new Fabric.
|
|
274
|
-
await this.endpoint.act(agent => agent.get(AccessControlServer).addDefaultCaseAcl(fabric, [caseAdminSubject]));
|
|
275
|
-
|
|
276
271
|
const session = this.context.session;
|
|
277
272
|
NodeSession.assert(session);
|
|
278
273
|
|
|
279
|
-
await failsafeContext.addFabric(fabric);
|
|
280
|
-
|
|
281
274
|
try {
|
|
282
275
|
if (session.isPase) {
|
|
283
|
-
logger.debug(`Add Fabric ${fabric.fabricIndex} to PASE session ${session.
|
|
284
|
-
session.
|
|
276
|
+
logger.debug(`Add Fabric ${fabric.fabricIndex} to PASE session ${session.via}`);
|
|
277
|
+
session.fabric = fabric;
|
|
285
278
|
}
|
|
286
279
|
|
|
287
280
|
// Update attributes
|
|
@@ -294,10 +287,14 @@ export class OperationalCredentialsServer extends OperationalCredentialsBehavior
|
|
|
294
287
|
}
|
|
295
288
|
} catch (e) {
|
|
296
289
|
// Fabric insertion into FabricManager is not currently transactional so we need to remove manually
|
|
297
|
-
await fabric.
|
|
290
|
+
await fabric.delete(this.context.exchange);
|
|
298
291
|
throw e;
|
|
299
292
|
}
|
|
300
293
|
|
|
294
|
+
// The receiver SHALL create and add a new Access Control Entry using the CaseAdminSubject field to grant
|
|
295
|
+
// subsequent Administer access to an Administrator member of the new Fabric.
|
|
296
|
+
await this.endpoint.act(agent => agent.get(AccessControlServer).addDefaultCaseAcl(fabric, [caseAdminSubject]));
|
|
297
|
+
|
|
301
298
|
// TODO The incoming IPKValue SHALL be stored in the Fabric-scoped slot within the Group Key Management cluster
|
|
302
299
|
// (see KeySetWrite), for subsequent use during CASE.
|
|
303
300
|
|
|
@@ -363,7 +360,7 @@ export class OperationalCredentialsServer extends OperationalCredentialsBehavior
|
|
|
363
360
|
const updatedFabric = await timedOp.buildUpdatedFabric(nocValue, icacValue);
|
|
364
361
|
|
|
365
362
|
// update FabricManager and Resumption records but leave current session intact
|
|
366
|
-
await timedOp.
|
|
363
|
+
await timedOp.replaceFabric(updatedFabric);
|
|
367
364
|
|
|
368
365
|
return {
|
|
369
366
|
statusCode: OperationalCredentials.NodeOperationalCertStatus.Ok,
|
|
@@ -397,7 +394,7 @@ export class OperationalCredentialsServer extends OperationalCredentialsBehavior
|
|
|
397
394
|
override async removeFabric({ fabricIndex }: OperationalCredentials.RemoveFabricRequest) {
|
|
398
395
|
assertRemoteActor(this.context);
|
|
399
396
|
|
|
400
|
-
const fabric = this.env.get(FabricManager).
|
|
397
|
+
const fabric = this.env.get(FabricManager).maybeForIndex(fabricIndex);
|
|
401
398
|
|
|
402
399
|
if (fabric === undefined) {
|
|
403
400
|
return {
|
|
@@ -406,7 +403,11 @@ export class OperationalCredentialsServer extends OperationalCredentialsBehavior
|
|
|
406
403
|
};
|
|
407
404
|
}
|
|
408
405
|
|
|
409
|
-
|
|
406
|
+
// We do not handle fabric management transactionally because of legacy FabricManager implementation, and if
|
|
407
|
+
// we leave the transaction open it will cause deadlock
|
|
408
|
+
await this.context.transaction.rollback();
|
|
409
|
+
|
|
410
|
+
await fabric.leave(this.context.exchange);
|
|
410
411
|
// The state is updated on removal via commissionedFabricChanged event, see constructor
|
|
411
412
|
|
|
412
413
|
return {
|
|
@@ -507,6 +508,9 @@ export class OperationalCredentialsServer extends OperationalCredentialsBehavior
|
|
|
507
508
|
}
|
|
508
509
|
|
|
509
510
|
async #updateFabrics() {
|
|
511
|
+
await this.context.transaction.addResources(this);
|
|
512
|
+
await this.context.transaction.begin();
|
|
513
|
+
|
|
510
514
|
const fabrics = this.env.get(FabricManager);
|
|
511
515
|
this.state.fabrics = fabrics.map(fabric => ({
|
|
512
516
|
fabricId: fabric.fabricId,
|
|
@@ -548,17 +552,17 @@ export class OperationalCredentialsServer extends OperationalCredentialsBehavior
|
|
|
548
552
|
|
|
549
553
|
async #handleAddedFabric({ fabricIndex }: Fabric) {
|
|
550
554
|
await this.#updateFabrics();
|
|
551
|
-
this.agent.get(CommissioningServer).handleFabricChange(fabricIndex,
|
|
555
|
+
this.agent.get(CommissioningServer).handleFabricChange(fabricIndex, "added");
|
|
552
556
|
}
|
|
553
557
|
|
|
554
558
|
async #handleUpdatedFabric({ fabricIndex }: Fabric) {
|
|
555
559
|
await this.#updateFabrics();
|
|
556
|
-
this.agent.get(CommissioningServer).handleFabricChange(fabricIndex,
|
|
560
|
+
this.agent.get(CommissioningServer).handleFabricChange(fabricIndex, "updated");
|
|
557
561
|
}
|
|
558
562
|
|
|
559
563
|
async #handleRemovedFabric({ fabricIndex }: Fabric) {
|
|
560
564
|
await this.#updateFabrics();
|
|
561
|
-
this.agent.get(CommissioningServer).handleFabricChange(fabricIndex,
|
|
565
|
+
this.agent.get(CommissioningServer).handleFabricChange(fabricIndex, "deleted");
|
|
562
566
|
}
|
|
563
567
|
|
|
564
568
|
async #handleFailsafeClosed() {
|
|
@@ -568,8 +572,8 @@ export class OperationalCredentialsServer extends OperationalCredentialsBehavior
|
|
|
568
572
|
async #nodeOnline() {
|
|
569
573
|
const fabricManager = this.env.get(FabricManager);
|
|
570
574
|
this.reactTo(fabricManager.events.added, this.#handleAddedFabric, { lock: true });
|
|
571
|
-
this.reactTo(fabricManager.events.
|
|
572
|
-
this.reactTo(fabricManager.events.
|
|
575
|
+
this.reactTo(fabricManager.events.replaced, this.#handleUpdatedFabric, { lock: true });
|
|
576
|
+
this.reactTo(fabricManager.events.deleting, this.#handleRemovedFabric, { lock: true });
|
|
573
577
|
this.reactTo(fabricManager.events.failsafeClosed, this.#handleFailsafeClosed, { lock: true });
|
|
574
578
|
await this.#updateFabrics();
|
|
575
579
|
}
|
|
@@ -582,7 +586,6 @@ export class OperationalCredentialsServer extends OperationalCredentialsBehavior
|
|
|
582
586
|
export namespace OperationalCredentialsServer {
|
|
583
587
|
export class Internal {
|
|
584
588
|
certification?: DeviceCertification;
|
|
585
|
-
commissionedFabric?: FabricIndex;
|
|
586
589
|
}
|
|
587
590
|
|
|
588
591
|
export class State extends OperationalCredentialsBehavior.State {
|
|
@@ -218,7 +218,7 @@ export class ScenesManagementServer extends ScenesManagementBase {
|
|
|
218
218
|
|
|
219
219
|
// When a fabric git removed we need to check if the active scene is considered from that fabric
|
|
220
220
|
// Data cleanup happens automatically
|
|
221
|
-
this.reactTo(fabricManager.events.
|
|
221
|
+
this.reactTo(fabricManager.events.deleting, this.#handleDeleteFabric);
|
|
222
222
|
}
|
|
223
223
|
|
|
224
224
|
/**
|
|
@@ -48,7 +48,7 @@ export class AtomicWriteHandler {
|
|
|
48
48
|
#pendingWrites = new BasicSet<AtomicWriteState>();
|
|
49
49
|
|
|
50
50
|
constructor(fabricManager: FabricManager) {
|
|
51
|
-
this.#observers.on(fabricManager.events.
|
|
51
|
+
this.#observers.on(fabricManager.events.deleting, fabric => this.#handleFabricRemoval(fabric));
|
|
52
52
|
}
|
|
53
53
|
|
|
54
54
|
static [Environmental.create](env: Environment) {
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
import { WindowCovering } from "#clusters/window-covering";
|
|
8
|
-
import { Diagnostic, ImplementationError, isDeepEqual, Logger, MaybePromise } from "#general";
|
|
8
|
+
import { Diagnostic, ImplementationError, isDeepEqual, Logger, MaybePromise, Worker } from "#general";
|
|
9
9
|
import { ClusterType, StatusCode, StatusResponseError, TypeFromPartialBitSchema } from "#types";
|
|
10
10
|
import { WindowCoveringBehavior } from "./WindowCoveringBehavior.js";
|
|
11
11
|
|
|
@@ -383,7 +383,13 @@ export class WindowCoveringBaseServer extends WindowCoveringBase {
|
|
|
383
383
|
*/
|
|
384
384
|
#prepareMovement(type: MovementType, direction: MovementDirection, targetPercent100ths?: number): void {
|
|
385
385
|
if (this.internal.supportsCalibration && this.internal.calibrationMode === CalibrationMode.Enabled) {
|
|
386
|
-
return this.env.runtime.add(
|
|
386
|
+
return this.env.runtime.add(
|
|
387
|
+
Worker({
|
|
388
|
+
name: `calibrating ${this}`,
|
|
389
|
+
done: this.#executeCalibrationAndMove(type, direction, targetPercent100ths),
|
|
390
|
+
lifetime: this.lifetime,
|
|
391
|
+
}),
|
|
392
|
+
);
|
|
387
393
|
}
|
|
388
394
|
if (type === MovementType.Lift && this.state.configStatus.liftMovementReversed) {
|
|
389
395
|
logger.debug("Lift movement is reversed");
|
|
@@ -439,14 +445,22 @@ export class WindowCoveringBaseServer extends WindowCoveringBase {
|
|
|
439
445
|
break;
|
|
440
446
|
}
|
|
441
447
|
|
|
442
|
-
this.
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
targetPercent100ths,
|
|
448
|
-
),
|
|
448
|
+
const done = this.handleMovement(
|
|
449
|
+
type,
|
|
450
|
+
type === MovementType.Lift && !!this.state.configStatus.liftMovementReversed,
|
|
451
|
+
direction,
|
|
452
|
+
targetPercent100ths,
|
|
449
453
|
);
|
|
454
|
+
|
|
455
|
+
if (done) {
|
|
456
|
+
this.env.runtime.add(
|
|
457
|
+
Worker({
|
|
458
|
+
name: `moving ${this}`,
|
|
459
|
+
done,
|
|
460
|
+
lifetime: this.lifetime,
|
|
461
|
+
}),
|
|
462
|
+
);
|
|
463
|
+
}
|
|
450
464
|
}
|
|
451
465
|
|
|
452
466
|
#executeCalibrationAndMove(type: MovementType, direction: MovementDirection, targetPercent100ths?: number) {
|
|
@@ -455,6 +469,7 @@ export class WindowCoveringBaseServer extends WindowCoveringBase {
|
|
|
455
469
|
this.internal.calibrationMode = CalibrationMode.Running;
|
|
456
470
|
calibration = this.executeCalibration();
|
|
457
471
|
}
|
|
472
|
+
|
|
458
473
|
return MaybePromise.then(calibration, () => {
|
|
459
474
|
this.internal.calibrationMode = CalibrationMode.Disabled;
|
|
460
475
|
return this.#prepareMovement(type, direction, targetPercent100ths);
|
package/src/endpoint/Endpoint.ts
CHANGED
|
@@ -16,6 +16,7 @@ import {
|
|
|
16
16
|
Immutable,
|
|
17
17
|
ImplementationError,
|
|
18
18
|
Lifecycle,
|
|
19
|
+
Lifetime,
|
|
19
20
|
Logger,
|
|
20
21
|
MaybePromise,
|
|
21
22
|
Observable,
|
|
@@ -713,7 +714,7 @@ export class Endpoint<T extends EndpointType = EndpointType.Empty> {
|
|
|
713
714
|
context => {
|
|
714
715
|
return actor(this.agentFor(context));
|
|
715
716
|
},
|
|
716
|
-
{ activity: this.#activity },
|
|
717
|
+
{ activity: this.#activity, lifetime: this.construction },
|
|
717
718
|
);
|
|
718
719
|
}
|
|
719
720
|
|
|
@@ -721,18 +722,29 @@ export class Endpoint<T extends EndpointType = EndpointType.Empty> {
|
|
|
721
722
|
* Perform "soft" reset of the endpoint, reverting all in-memory structures to uninitialized.
|
|
722
723
|
*/
|
|
723
724
|
async reset() {
|
|
725
|
+
using _resetting = this.construction.join("resetting");
|
|
726
|
+
|
|
724
727
|
try {
|
|
725
728
|
// Revert lifecycle to uninitialized
|
|
726
729
|
this.lifecycle.resetting();
|
|
727
730
|
|
|
728
731
|
// Reset child parts
|
|
729
|
-
|
|
732
|
+
{
|
|
733
|
+
using _parts = _resetting.join("parts");
|
|
734
|
+
await this.parts.reset();
|
|
735
|
+
}
|
|
730
736
|
|
|
731
737
|
// Reset behaviors
|
|
732
|
-
|
|
738
|
+
{
|
|
739
|
+
using _behaviors = _resetting.join("behaviors");
|
|
740
|
+
await this.behaviors.close();
|
|
741
|
+
}
|
|
733
742
|
|
|
734
743
|
// Notify
|
|
735
|
-
|
|
744
|
+
{
|
|
745
|
+
using _lifecycle = _resetting.join("lifecycle");
|
|
746
|
+
await this.lifecycle.reset.emit();
|
|
747
|
+
}
|
|
736
748
|
|
|
737
749
|
// Set construction to inactive so we can restart
|
|
738
750
|
this.construction.setStatus(Lifecycle.Status.Inactive);
|
|
@@ -753,6 +765,7 @@ export class Endpoint<T extends EndpointType = EndpointType.Empty> {
|
|
|
753
765
|
* Erase all persisted data and destroy the endpoint.
|
|
754
766
|
*/
|
|
755
767
|
async delete() {
|
|
768
|
+
this.lifecycle.change(EndpointLifecycle.Change.Destroying);
|
|
756
769
|
await this.erase();
|
|
757
770
|
await this.close();
|
|
758
771
|
}
|
|
@@ -901,6 +914,10 @@ export class Endpoint<T extends EndpointType = EndpointType.Empty> {
|
|
|
901
914
|
];
|
|
902
915
|
}
|
|
903
916
|
|
|
917
|
+
get [Lifetime.owner](): Lifetime.Owner | undefined {
|
|
918
|
+
return this.#owner?.construction;
|
|
919
|
+
}
|
|
920
|
+
|
|
904
921
|
/**
|
|
905
922
|
* Diagnostic information regarding endpoint state.
|
|
906
923
|
*/
|
|
@@ -260,7 +260,10 @@ export class Behaviors {
|
|
|
260
260
|
const activity = this.#endpoint.env.get(NodeActivity);
|
|
261
261
|
|
|
262
262
|
// Perform initialization
|
|
263
|
-
let promise = LocalActorContext.act(`initialize<${this.#endpoint}>`, initializeBehaviors, {
|
|
263
|
+
let promise = LocalActorContext.act(`initialize<${this.#endpoint}>`, initializeBehaviors, {
|
|
264
|
+
activity,
|
|
265
|
+
lifetime: this.#endpoint.construction,
|
|
266
|
+
});
|
|
264
267
|
|
|
265
268
|
// Once behaviors are ready the endpoint we consider the endpoint "ready"
|
|
266
269
|
const onReady = () => {
|
|
@@ -443,10 +446,12 @@ export class Behaviors {
|
|
|
443
446
|
`close<${this.#endpoint}>`,
|
|
444
447
|
dispose,
|
|
445
448
|
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
449
|
+
{
|
|
450
|
+
lifetime: this.#endpoint.construction,
|
|
451
|
+
|
|
452
|
+
// Note - do not close in an activity because this can cause deadlock
|
|
453
|
+
// activity: this.#endpoint.env.get(NodeActivity),
|
|
454
|
+
},
|
|
450
455
|
);
|
|
451
456
|
}
|
|
452
457
|
|
|
@@ -649,7 +654,7 @@ export class Behaviors {
|
|
|
649
654
|
const backing = this.#backingFor(type);
|
|
650
655
|
return backing.construction.ready;
|
|
651
656
|
},
|
|
652
|
-
{ activity: this.#endpoint.env.get(NodeActivity) },
|
|
657
|
+
{ activity: this.#endpoint.env.get(NodeActivity), lifetime: this.#endpoint.construction },
|
|
653
658
|
);
|
|
654
659
|
|
|
655
660
|
if (MaybePromise.is(result)) {
|
|
@@ -58,7 +58,7 @@ function Implementation(endpoint: Endpoint, type: Behavior.Type, name: string):
|
|
|
58
58
|
}
|
|
59
59
|
|
|
60
60
|
// Invoke with a dedicated context
|
|
61
|
-
const context2 = LocalActorContext.open(`invoke-${name}
|
|
61
|
+
const context2 = LocalActorContext.open(`invoke-${name}`, { lifetime: endpoint.construction });
|
|
62
62
|
try {
|
|
63
63
|
return Promise.resolve(context2.resolve(invokerFor(context2)(input, context)));
|
|
64
64
|
} catch (e) {
|
|
@@ -171,6 +171,10 @@ export class EndpointLifecycle {
|
|
|
171
171
|
this.#isInstalled = true;
|
|
172
172
|
break;
|
|
173
173
|
|
|
174
|
+
case EndpointLifecycle.Change.Destroying:
|
|
175
|
+
this.#isReady = false;
|
|
176
|
+
break;
|
|
177
|
+
|
|
174
178
|
case EndpointLifecycle.Change.Ready:
|
|
175
179
|
// Sanity checks
|
|
176
180
|
if (!this.#hasId) {
|
package/src/node/ClientNode.ts
CHANGED
|
@@ -12,6 +12,7 @@ import { NetworkRuntime } from "#behavior/system/network/NetworkRuntime.js";
|
|
|
12
12
|
import { Agent } from "#endpoint/Agent.js";
|
|
13
13
|
import { ClientNodeEndpoints } from "#endpoint/properties/ClientNodeEndpoints.js";
|
|
14
14
|
import { EndpointInitializer } from "#endpoint/properties/EndpointInitializer.js";
|
|
15
|
+
import { EndpointLifecycle } from "#endpoint/properties/EndpointLifecycle.js";
|
|
15
16
|
import { EndpointType } from "#endpoint/type/EndpointType.js";
|
|
16
17
|
import { MutableEndpoint } from "#endpoint/type/MutableEndpoint.js";
|
|
17
18
|
import { Diagnostic, Identity, Lifecycle, Logger, MaybePromise } from "#general";
|
|
@@ -115,6 +116,8 @@ export class ClientNode extends Node<ClientNode.RootEndpoint> {
|
|
|
115
116
|
* If you can not reach the device, use {@link delete} instead.
|
|
116
117
|
*/
|
|
117
118
|
async decommission() {
|
|
119
|
+
this.lifecycle.change(EndpointLifecycle.Change.Destroying);
|
|
120
|
+
|
|
118
121
|
if (this.lifecycle.isCommissioned) {
|
|
119
122
|
this.statusUpdate("decommissioning");
|
|
120
123
|
|
package/src/node/Node.ts
CHANGED
|
@@ -17,12 +17,12 @@ import { MutableEndpoint } from "#endpoint/type/MutableEndpoint.js";
|
|
|
17
17
|
import {
|
|
18
18
|
Construction,
|
|
19
19
|
Diagnostic,
|
|
20
|
+
DiagnosticPresentation,
|
|
20
21
|
DiagnosticSource,
|
|
21
22
|
Environment,
|
|
22
23
|
Identity,
|
|
23
24
|
ImplementationError,
|
|
24
25
|
Logger,
|
|
25
|
-
RuntimeService,
|
|
26
26
|
} from "#general";
|
|
27
27
|
import { Interactable } from "#protocol";
|
|
28
28
|
import type { EndpointNumber } from "#types";
|
|
@@ -218,7 +218,7 @@ export abstract class Node<T extends Node.CommonRootEndpoint = Node.CommonRootEn
|
|
|
218
218
|
|
|
219
219
|
protected abstract prepareRuntimeShutdown(): Promise<void>;
|
|
220
220
|
|
|
221
|
-
get [
|
|
221
|
+
get [DiagnosticPresentation.name]() {
|
|
222
222
|
return ["Runtime for", Diagnostic.strong(this.toString())];
|
|
223
223
|
}
|
|
224
224
|
|
|
@@ -247,6 +247,7 @@ export abstract class Node<T extends Node.CommonRootEndpoint = Node.CommonRootEn
|
|
|
247
247
|
await this.cancelWithMutex();
|
|
248
248
|
await super[Construction.destruct]();
|
|
249
249
|
DiagnosticSource.delete(this);
|
|
250
|
+
this.#environment[Symbol.dispose]();
|
|
250
251
|
}
|
|
251
252
|
}
|
|
252
253
|
|
package/src/node/ServerNode.ts
CHANGED
|
@@ -121,6 +121,7 @@ export class ServerNode<T extends ServerNode.RootEndpoint = ServerNode.RootEndpo
|
|
|
121
121
|
* Perform a factory reset of the node.
|
|
122
122
|
*/
|
|
123
123
|
override async erase() {
|
|
124
|
+
using _erasing = this.construction.join("erasing");
|
|
124
125
|
await this.lifecycle.mutex.produce(this.eraseWithMutex.bind(this));
|
|
125
126
|
}
|
|
126
127
|
|
|
@@ -17,47 +17,40 @@ export function ClientCommandMethod(name: string) {
|
|
|
17
17
|
// This is our usual hack to give a function a proper name in stack traces
|
|
18
18
|
const temp = {
|
|
19
19
|
// The actual implementation
|
|
20
|
-
[name](this: ClusterBehavior, fields?: {}) {
|
|
21
|
-
|
|
22
|
-
},
|
|
23
|
-
};
|
|
24
|
-
|
|
25
|
-
return temp[name];
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
/**
|
|
29
|
-
* Invokes a command remotely on behalf of client behaviors.
|
|
30
|
-
*/
|
|
31
|
-
async function invokeOnPeer(behavior: ClusterBehavior, command: string, fields?: {}) {
|
|
32
|
-
const node = behavior.env.get(Node) as ClientNode;
|
|
20
|
+
async [name](this: ClusterBehavior, fields?: {}) {
|
|
21
|
+
const node = this.env.get(Node) as ClientNode;
|
|
33
22
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
23
|
+
// TODO when implementing TCP add needed logic for Large messages
|
|
24
|
+
const chunks = (node.interaction as ClientInteraction).invoke(
|
|
25
|
+
Invoke({
|
|
26
|
+
commands: [
|
|
27
|
+
Invoke.ConcreteCommandRequest<any>({
|
|
28
|
+
endpoint: this.endpoint,
|
|
29
|
+
cluster: this.cluster,
|
|
30
|
+
command: name,
|
|
31
|
+
fields,
|
|
32
|
+
}),
|
|
33
|
+
],
|
|
43
34
|
}),
|
|
44
|
-
|
|
45
|
-
}),
|
|
46
|
-
);
|
|
35
|
+
);
|
|
47
36
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
37
|
+
for await (const chunk of chunks) {
|
|
38
|
+
for (const entry of chunk) {
|
|
39
|
+
// We send only one command, so we only get one response back
|
|
40
|
+
switch (entry.kind) {
|
|
41
|
+
case "cmd-status":
|
|
42
|
+
if (entry.status !== Status.Success) {
|
|
43
|
+
throw StatusResponseError.create(entry.status, undefined, entry.clusterStatus);
|
|
44
|
+
}
|
|
45
|
+
return;
|
|
57
46
|
|
|
58
|
-
|
|
59
|
-
|
|
47
|
+
case "cmd-response":
|
|
48
|
+
return entry.data;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
60
51
|
}
|
|
61
|
-
}
|
|
62
|
-
}
|
|
52
|
+
},
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
return temp[name];
|
|
63
56
|
}
|
|
@@ -8,7 +8,7 @@ import { RemoteDescriptor } from "#behavior/system/commissioning/RemoteDescripto
|
|
|
8
8
|
import type { ClientNode } from "#node/ClientNode.js";
|
|
9
9
|
import { IdentityService } from "#node/server/IdentityService.js";
|
|
10
10
|
import type { ServerNode } from "#node/ServerNode.js";
|
|
11
|
-
import {
|
|
11
|
+
import { PeerAddress, PeerAddressMap, PeerAddressStore, PeerDescriptor } from "#protocol";
|
|
12
12
|
import { FabricIndex, NodeId } from "#types";
|
|
13
13
|
import { Crypto, ServerAddress, ServerAddressUdp } from "@matter/general";
|
|
14
14
|
|
|
@@ -50,7 +50,7 @@ export class NodePeerAddressStore extends PeerAddressStore {
|
|
|
50
50
|
return address;
|
|
51
51
|
}
|
|
52
52
|
|
|
53
|
-
loadPeers():
|
|
53
|
+
loadPeers(): PeerDescriptor[] {
|
|
54
54
|
this.#assignedAddresses = new PeerAddressMap();
|
|
55
55
|
return [...this.#owner.peers]
|
|
56
56
|
.map(node => {
|
|
@@ -72,7 +72,7 @@ export class NodePeerAddressStore extends PeerAddressStore {
|
|
|
72
72
|
.filter(addr => addr !== undefined);
|
|
73
73
|
}
|
|
74
74
|
|
|
75
|
-
async updatePeer(peer:
|
|
75
|
+
async updatePeer(peer: PeerDescriptor) {
|
|
76
76
|
const node = this.#owner.peers.get(peer.address);
|
|
77
77
|
if (!node) {
|
|
78
78
|
return;
|
package/src/node/client/Peers.ts
CHANGED
|
@@ -33,7 +33,7 @@ import {
|
|
|
33
33
|
} from "#general";
|
|
34
34
|
import { ClientGroup } from "#node/ClientGroup.js";
|
|
35
35
|
import { InteractionServer } from "#node/server/InteractionServer.js";
|
|
36
|
-
import { ClientSubscriptionHandler, ClientSubscriptions, FabricManager, PeerAddress } from "#protocol";
|
|
36
|
+
import { ClientSubscriptionHandler, ClientSubscriptions, FabricManager, PeerAddress, PeerSet } from "#protocol";
|
|
37
37
|
import { ServerNodeStore } from "#storage/server/ServerNodeStore.js";
|
|
38
38
|
import { FabricIndex } from "@matter/types";
|
|
39
39
|
import { ClientNode } from "../ClientNode.js";
|
|
@@ -351,12 +351,30 @@ export class Peers extends EndpointContainer<ClientNode> {
|
|
|
351
351
|
return;
|
|
352
352
|
}
|
|
353
353
|
|
|
354
|
+
setPeerLimits();
|
|
355
|
+
|
|
354
356
|
node.eventsOf(type).leave?.on(({ fabricIndex }) => this.#onLeave(node, fabricIndex));
|
|
355
357
|
node.eventsOf(type).shutDown?.on(() => this.#onShutdown(node));
|
|
358
|
+
node.eventsOf(type).capabilityMinima$Changed.on(setPeerLimits);
|
|
359
|
+
|
|
360
|
+
function setPeerLimits() {
|
|
361
|
+
const peerAddress = node.maybeStateOf(CommissioningClient)?.peerAddress;
|
|
362
|
+
if (peerAddress) {
|
|
363
|
+
node.env.get(PeerSet).for(peerAddress).limits = node.stateOf(type).capabilityMinima;
|
|
364
|
+
}
|
|
365
|
+
}
|
|
356
366
|
}
|
|
357
367
|
|
|
358
368
|
#onLeave(node: ClientNode, fabricIndex: FabricIndex) {
|
|
369
|
+
if (!node.lifecycle.isReady) {
|
|
370
|
+
return;
|
|
371
|
+
}
|
|
372
|
+
|
|
359
373
|
this.#mutex.run(async () => {
|
|
374
|
+
if (!node.lifecycle.isReady) {
|
|
375
|
+
return;
|
|
376
|
+
}
|
|
377
|
+
|
|
360
378
|
const { fabrics: peerFabrics } = node.maybeStateOf(OperationalCredentialsClient) ?? {};
|
|
361
379
|
const peerFabric = peerFabrics?.find(fabric => fabric.fabricIndex === fabricIndex);
|
|
362
380
|
if (!peerFabric) {
|
|
@@ -39,6 +39,7 @@ import {
|
|
|
39
39
|
EventTypeProtocol,
|
|
40
40
|
FabricManager,
|
|
41
41
|
hasRemoteActor,
|
|
42
|
+
Mark,
|
|
42
43
|
OccurrenceManager,
|
|
43
44
|
toWildcardOrHexPath,
|
|
44
45
|
Val,
|
|
@@ -148,7 +149,7 @@ class NodeState {
|
|
|
148
149
|
if (!fabrics) {
|
|
149
150
|
fabrics = node.env.get(FabricManager);
|
|
150
151
|
}
|
|
151
|
-
return fabrics.
|
|
152
|
+
return fabrics.maybeForIndex(index)?.nodeId;
|
|
152
153
|
},
|
|
153
154
|
|
|
154
155
|
get eventHandler() {
|
|
@@ -562,7 +563,8 @@ function invokeCommand(
|
|
|
562
563
|
const context = session as ActionContext;
|
|
563
564
|
|
|
564
565
|
logger.info(
|
|
565
|
-
"Invoke
|
|
566
|
+
"Invoke",
|
|
567
|
+
Mark.INBOUND,
|
|
566
568
|
Diagnostic.strong(`${path.toString()}.${command.name}`),
|
|
567
569
|
session.transaction.via,
|
|
568
570
|
requestDiagnostic,
|