@project-chip/matter.js 0.16.0-alpha.0-20250817-1b000357c → 0.16.0-alpha.0-20250820-24939dd26
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/CommissioningController.d.ts +3 -3
- package/dist/cjs/CommissioningController.d.ts.map +1 -1
- package/dist/cjs/CommissioningController.js +2 -2
- package/dist/cjs/CommissioningController.js.map +1 -1
- package/dist/cjs/MatterController.d.ts +2 -2
- package/dist/cjs/MatterController.d.ts.map +1 -1
- package/dist/cjs/MatterController.js +3 -3
- package/dist/cjs/MatterController.js.map +1 -1
- package/dist/cjs/PaseCommissioner.d.ts +1 -1
- package/dist/cjs/PaseCommissioner.d.ts.map +1 -1
- package/dist/cjs/PaseCommissioner.js +2 -2
- package/dist/cjs/PaseCommissioner.js.map +1 -1
- package/dist/cjs/cluster/server/EventServer.js +1 -1
- package/dist/cjs/cluster/server/EventServer.js.map +1 -1
- package/dist/cjs/device/PairedNode.d.ts.map +1 -1
- package/dist/cjs/device/PairedNode.js +10 -10
- package/dist/cjs/device/PairedNode.js.map +1 -1
- package/dist/esm/CommissioningController.d.ts +3 -3
- package/dist/esm/CommissioningController.d.ts.map +1 -1
- package/dist/esm/CommissioningController.js +3 -2
- package/dist/esm/CommissioningController.js.map +1 -1
- package/dist/esm/MatterController.d.ts +2 -2
- package/dist/esm/MatterController.d.ts.map +1 -1
- package/dist/esm/MatterController.js +5 -4
- package/dist/esm/MatterController.js.map +1 -1
- package/dist/esm/PaseCommissioner.d.ts +1 -1
- package/dist/esm/PaseCommissioner.d.ts.map +1 -1
- package/dist/esm/PaseCommissioner.js +3 -3
- package/dist/esm/PaseCommissioner.js.map +1 -1
- package/dist/esm/cluster/server/EventServer.js +1 -1
- package/dist/esm/cluster/server/EventServer.js.map +1 -1
- package/dist/esm/device/PairedNode.d.ts.map +1 -1
- package/dist/esm/device/PairedNode.js +14 -10
- package/dist/esm/device/PairedNode.js.map +1 -1
- package/package.json +8 -8
- package/src/CommissioningController.ts +3 -2
- package/src/MatterController.ts +5 -4
- package/src/PaseCommissioner.ts +3 -3
- package/src/cluster/server/EventServer.ts +1 -1
- package/src/device/PairedNode.ts +18 -17
package/src/device/PairedNode.ts
CHANGED
|
@@ -12,11 +12,15 @@ import {
|
|
|
12
12
|
Construction,
|
|
13
13
|
Crypto,
|
|
14
14
|
Diagnostic,
|
|
15
|
+
Duration,
|
|
15
16
|
ImplementationError,
|
|
16
17
|
InternalError,
|
|
17
18
|
Logger,
|
|
18
19
|
MatterError,
|
|
20
|
+
Millis,
|
|
21
|
+
Minutes,
|
|
19
22
|
Observable,
|
|
23
|
+
Seconds,
|
|
20
24
|
Time,
|
|
21
25
|
Timer,
|
|
22
26
|
} from "#general";
|
|
@@ -70,22 +74,22 @@ import { asClusterClientInternal, isClusterClient } from "./TypeHelpers.js";
|
|
|
70
74
|
const logger = Logger.get("PairedNode");
|
|
71
75
|
|
|
72
76
|
/** Delay after receiving a changed partList from a device to update the device structure */
|
|
73
|
-
const
|
|
77
|
+
const STRUCTURE_UPDATE_TIMEOUT = Seconds(5);
|
|
74
78
|
|
|
75
79
|
/** Delay after a disconnect to try to reconnect to the device */
|
|
76
|
-
const
|
|
80
|
+
const RECONNECT_DELAY = Seconds(15);
|
|
77
81
|
|
|
78
82
|
/** Delay after a shutdown event to try to reconnect to the device */
|
|
79
|
-
const
|
|
83
|
+
const RECONNECT_DELAY_AFTER_SHUTDOWN = Seconds(30); // Give device time to restart and maybe inform us about
|
|
80
84
|
|
|
81
85
|
/** Maximum delay after a disconnect to try to reconnect to the device */
|
|
82
|
-
const
|
|
86
|
+
const RECONNECT_MAX_DELAY = Minutes(10);
|
|
83
87
|
|
|
84
88
|
/**
|
|
85
89
|
* Delay after a new session was opened by the device while in discovery state.
|
|
86
90
|
* This usually happens for devices that support persisted subscriptions.
|
|
87
91
|
*/
|
|
88
|
-
const
|
|
92
|
+
const NEW_SESSION_WHILE_DISCOVERY_RECONNECT_DELAY = Seconds(5);
|
|
89
93
|
|
|
90
94
|
export enum NodeStates {
|
|
91
95
|
/**
|
|
@@ -221,7 +225,7 @@ export class PairedNode {
|
|
|
221
225
|
#reconnectDelayTimer?: Timer;
|
|
222
226
|
#newChannelReconnectDelayTimer = Time.getTimer(
|
|
223
227
|
"New Channel Reconnect Delay",
|
|
224
|
-
|
|
228
|
+
NEW_SESSION_WHILE_DISCOVERY_RECONNECT_DELAY,
|
|
225
229
|
() => {
|
|
226
230
|
if (
|
|
227
231
|
this.#connectionState === NodeStates.WaitingForDeviceDiscovery ||
|
|
@@ -237,13 +241,10 @@ export class PairedNode {
|
|
|
237
241
|
},
|
|
238
242
|
);
|
|
239
243
|
#reconnectErrorCount = 0;
|
|
240
|
-
readonly #updateEndpointStructureTimer = Time.getTimer(
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
this.#updateEndpointStructure().catch(error =>
|
|
245
|
-
logger.warn(`Node ${this.nodeId}: Error updating endpoint structure`, error),
|
|
246
|
-
),
|
|
244
|
+
readonly #updateEndpointStructureTimer = Time.getTimer("Endpoint structure update", STRUCTURE_UPDATE_TIMEOUT, () =>
|
|
245
|
+
this.#updateEndpointStructure().catch(error =>
|
|
246
|
+
logger.warn(`Node ${this.nodeId}: Error updating endpoint structure`, error),
|
|
247
|
+
),
|
|
247
248
|
);
|
|
248
249
|
#connectionState: NodeStates = NodeStates.Disconnected;
|
|
249
250
|
#reconnectionInProgress = false;
|
|
@@ -935,10 +936,10 @@ export class PairedNode {
|
|
|
935
936
|
/** Handles a node shutDown event (if supported by the node and received). */
|
|
936
937
|
#handleNodeShutdown() {
|
|
937
938
|
logger.info(`Node ${this.nodeId}: Node shutdown detected, trying to reconnect ...`);
|
|
938
|
-
this.#scheduleReconnect(
|
|
939
|
+
this.#scheduleReconnect(RECONNECT_DELAY_AFTER_SHUTDOWN);
|
|
939
940
|
}
|
|
940
941
|
|
|
941
|
-
#scheduleReconnect(delay?:
|
|
942
|
+
#scheduleReconnect(delay?: Duration) {
|
|
942
943
|
if (this.state !== NodeStates.WaitingForDeviceDiscovery) {
|
|
943
944
|
this.#setConnectionState(NodeStates.Reconnecting);
|
|
944
945
|
}
|
|
@@ -948,10 +949,10 @@ export class PairedNode {
|
|
|
948
949
|
}
|
|
949
950
|
if (delay === undefined) {
|
|
950
951
|
// Calculate a delay with a backoff strategy based on errorCount and maximum 10 minutes
|
|
951
|
-
delay =
|
|
952
|
+
delay = Duration.min(Millis(RECONNECT_DELAY * 2 ** this.#reconnectErrorCount), RECONNECT_MAX_DELAY);
|
|
952
953
|
}
|
|
953
954
|
|
|
954
|
-
logger.info(`Node ${this.nodeId}: Reconnecting in ${
|
|
955
|
+
logger.info(`Node ${this.nodeId}: Reconnecting ${delay ? `in ${Duration.format(delay)}` : "now"} ...`);
|
|
955
956
|
this.#reconnectDelayTimer = Time.getTimer("Reconnect delay", delay, async () => await this.reconnect());
|
|
956
957
|
this.#reconnectDelayTimer.start();
|
|
957
958
|
}
|