@matter/protocol 0.16.0-alpha.0-20251210-206ca2db7 → 0.16.0-alpha.0-20251211-0f80042cf

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/dist/cjs/action/client/ClientInteraction.d.ts +10 -3
  2. package/dist/cjs/action/client/ClientInteraction.d.ts.map +1 -1
  3. package/dist/cjs/action/client/ClientInteraction.js +35 -14
  4. package/dist/cjs/action/client/ClientInteraction.js.map +1 -1
  5. package/dist/cjs/action/client/subscription/ClientSubscriptionHandler.d.ts.map +1 -1
  6. package/dist/cjs/action/client/subscription/ClientSubscriptionHandler.js +22 -23
  7. package/dist/cjs/action/client/subscription/ClientSubscriptionHandler.js.map +1 -1
  8. package/dist/cjs/action/client/subscription/PeerSubscription.d.ts +2 -0
  9. package/dist/cjs/action/client/subscription/PeerSubscription.d.ts.map +1 -1
  10. package/dist/cjs/action/client/subscription/PeerSubscription.js +7 -2
  11. package/dist/cjs/action/client/subscription/PeerSubscription.js.map +1 -1
  12. package/dist/cjs/action/request/Subscribe.d.ts +0 -1
  13. package/dist/cjs/action/request/Subscribe.d.ts.map +1 -1
  14. package/dist/cjs/action/request/Subscribe.js.map +1 -1
  15. package/dist/cjs/interaction/AttributeDataDecoder.d.ts +1 -2
  16. package/dist/cjs/interaction/AttributeDataDecoder.d.ts.map +1 -1
  17. package/dist/cjs/peer/index.d.ts +1 -0
  18. package/dist/cjs/peer/index.d.ts.map +1 -1
  19. package/dist/cjs/peer/index.js +1 -0
  20. package/dist/cjs/peer/index.js.map +1 -1
  21. package/dist/cjs/protocol/ExchangeManager.d.ts.map +1 -1
  22. package/dist/cjs/protocol/ExchangeManager.js +5 -6
  23. package/dist/cjs/protocol/ExchangeManager.js.map +1 -1
  24. package/dist/cjs/protocol/MessageExchange.d.ts +6 -1
  25. package/dist/cjs/protocol/MessageExchange.d.ts.map +1 -1
  26. package/dist/cjs/protocol/MessageExchange.js +11 -6
  27. package/dist/cjs/protocol/MessageExchange.js.map +1 -1
  28. package/dist/esm/action/client/ClientInteraction.d.ts +10 -3
  29. package/dist/esm/action/client/ClientInteraction.d.ts.map +1 -1
  30. package/dist/esm/action/client/ClientInteraction.js +35 -14
  31. package/dist/esm/action/client/ClientInteraction.js.map +1 -1
  32. package/dist/esm/action/client/subscription/ClientSubscriptionHandler.d.ts.map +1 -1
  33. package/dist/esm/action/client/subscription/ClientSubscriptionHandler.js +22 -23
  34. package/dist/esm/action/client/subscription/ClientSubscriptionHandler.js.map +1 -1
  35. package/dist/esm/action/client/subscription/PeerSubscription.d.ts +2 -0
  36. package/dist/esm/action/client/subscription/PeerSubscription.d.ts.map +1 -1
  37. package/dist/esm/action/client/subscription/PeerSubscription.js +7 -2
  38. package/dist/esm/action/client/subscription/PeerSubscription.js.map +1 -1
  39. package/dist/esm/action/request/Subscribe.d.ts +0 -1
  40. package/dist/esm/action/request/Subscribe.d.ts.map +1 -1
  41. package/dist/esm/action/request/Subscribe.js.map +1 -1
  42. package/dist/esm/interaction/AttributeDataDecoder.d.ts +1 -2
  43. package/dist/esm/interaction/AttributeDataDecoder.d.ts.map +1 -1
  44. package/dist/esm/peer/index.d.ts +1 -0
  45. package/dist/esm/peer/index.d.ts.map +1 -1
  46. package/dist/esm/peer/index.js +1 -0
  47. package/dist/esm/peer/index.js.map +1 -1
  48. package/dist/esm/protocol/ExchangeManager.d.ts.map +1 -1
  49. package/dist/esm/protocol/ExchangeManager.js +5 -6
  50. package/dist/esm/protocol/ExchangeManager.js.map +1 -1
  51. package/dist/esm/protocol/MessageExchange.d.ts +6 -1
  52. package/dist/esm/protocol/MessageExchange.d.ts.map +1 -1
  53. package/dist/esm/protocol/MessageExchange.js +11 -6
  54. package/dist/esm/protocol/MessageExchange.js.map +1 -1
  55. package/package.json +6 -6
  56. package/src/action/client/ClientInteraction.ts +45 -16
  57. package/src/action/client/subscription/ClientSubscriptionHandler.ts +29 -30
  58. package/src/action/client/subscription/PeerSubscription.ts +8 -2
  59. package/src/action/request/Subscribe.ts +0 -1
  60. package/src/interaction/AttributeDataDecoder.ts +1 -1
  61. package/src/peer/index.ts +1 -0
  62. package/src/protocol/ExchangeManager.ts +5 -6
  63. package/src/protocol/MessageExchange.ts +14 -9
@@ -252,13 +252,13 @@ class ExchangeManager {
252
252
  });
253
253
  if (exchange !== void 0) {
254
254
  this.#lifetime.details.exchange = exchange.idStr;
255
- if (exchange.session.id !== packet.header.sessionId || exchange.isClosing && !isStandaloneAck) {
255
+ if (exchange.session.id !== packet.header.sessionId || exchange.considerClosed && !isStandaloneAck) {
256
256
  logger.debug(
257
257
  exchange.via,
258
258
  "Ignore",
259
259
  Mark.INBOUND,
260
260
  "message because",
261
- exchange.isClosing ? "exchange is closing" : `session ID mismatch (header session is ${Session.idStrOf(packet)}`,
261
+ exchange.considerClosed ? "exchange is closing" : `session ID mismatch (header session is ${Session.idStrOf(packet)}`,
262
262
  messageDiagnostics
263
263
  );
264
264
  await exchange.send(SecureMessageType.StandaloneAck, new Uint8Array(0), {
@@ -272,9 +272,8 @@ class ExchangeManager {
272
272
  } else {
273
273
  if (this.#isClosing) return;
274
274
  if (session.isClosing) {
275
- throw new MatterFlowError(
276
- `Declining new exchange because session ${Session.idStrOf(packet)} is closing`
277
- );
275
+ logger.debug(`Declining new exchange because session ${Session.idStrOf(packet)} is closing`);
276
+ return;
278
277
  }
279
278
  const protocolHandler = this.#protocols.get(message.payloadHeader.protocolId);
280
279
  const handlerSecurityMismatch = protocolHandler?.requiresSecureSession !== void 0 && protocolHandler.requiresSecureSession !== session.isSecure;
@@ -346,7 +345,7 @@ class ExchangeManager {
346
345
  return;
347
346
  }
348
347
  const sessionExchanges = Array.from(this.#exchanges.values()).filter(
349
- (exchange) => exchange.session.id === sessionId && !exchange.isClosing && exchange.isInitiator
348
+ (exchange) => exchange.session.id === sessionId && !exchange.considerClosed
350
349
  );
351
350
  if (sessionExchanges.length <= MAXIMUM_CONCURRENT_OUTGOING_EXCHANGES_PER_SESSION) {
352
351
  return;
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/protocol/ExchangeManager.ts"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": ["_stack", "_", "_error", "_hasError", "exchange"]
6
6
  }
@@ -67,12 +67,12 @@ export declare class MessageExchange {
67
67
  get isInitiator(): boolean;
68
68
  /** Emits when the exchange is actually closed. This happens after all Retries and Communication are done. */
69
69
  get closed(): AsyncObservableValue<[any, ...any[]]>;
70
+ get considerClosed(): any;
70
71
  /**
71
72
  * Emit when the exchange is closing, but not yet closed. We only wait for acks and retries to happen, but the
72
73
  * actual interaction logic is already done.
73
74
  */
74
75
  get closing(): AsyncObservableValue<[any, ...any[]]>;
75
- get isClosing(): any;
76
76
  get id(): number;
77
77
  get idStr(): string;
78
78
  get session(): Session;
@@ -96,6 +96,11 @@ export declare class MessageExchange {
96
96
  hasTimedInteraction(): boolean;
97
97
  hasActiveTimedInteraction(): boolean;
98
98
  hasExpiredTimedInteraction(): boolean;
99
+ /**
100
+ * Closes the exchange.
101
+ * If force is true, the exchange will be closed immediately, even if there are still messages to send.
102
+ * If force is false, the exchange will be closed only after all messages have been sent.
103
+ */
99
104
  close(force?: boolean): Promise<void>;
100
105
  get via(): string;
101
106
  }
@@ -1 +1 @@
1
- {"version":3,"file":"MessageExchange.d.ts","sourceRoot":"","sources":["../../../src/protocol/MessageExchange.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MessageExchange.d.ts","sourceRoot":"","sources":["../../../src/protocol/MessageExchange.ts"],"names":[],"mappings":"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"}
@@ -175,6 +175,9 @@ class MessageExchange {
175
175
  get closed() {
176
176
  return this.#closed;
177
177
  }
178
+ get considerClosed() {
179
+ return this.#closed.value || this.#isInitiator && this.#closing.value;
180
+ }
178
181
  /**
179
182
  * Emit when the exchange is closing, but not yet closed. We only wait for acks and retries to happen, but the
180
183
  * actual interaction logic is already done.
@@ -182,9 +185,6 @@ class MessageExchange {
182
185
  get closing() {
183
186
  return this.#closing;
184
187
  }
185
- get isClosing() {
186
- return this.#closing.value;
187
- }
188
188
  get id() {
189
189
  return this.#exchangeId;
190
190
  }
@@ -439,8 +439,8 @@ class MessageExchange {
439
439
  }
440
440
  #retransmitMessage(message, expectedProcessingTime) {
441
441
  this.#retransmissionCounter++;
442
- if (this.isClosing || this.#retransmissionCounter >= MRP.MAX_TRANSMISSIONS) {
443
- if (expectedProcessingTime && !this.isClosing) {
442
+ if (this.considerClosed || this.#retransmissionCounter >= MRP.MAX_TRANSMISSIONS) {
443
+ if (expectedProcessingTime && !this.considerClosed) {
444
444
  const finalWaitTime = Millis(
445
445
  this.channel.calculateMaximumPeerResponseTime(
446
446
  this.session.parameters,
@@ -554,7 +554,12 @@ class MessageExchange {
554
554
  hasExpiredTimedInteraction() {
555
555
  return this.#timedInteractionTimer !== void 0 && !this.#timedInteractionTimer.isRunning;
556
556
  }
557
- async close(force = this.isInitiator) {
557
+ /**
558
+ * Closes the exchange.
559
+ * If force is true, the exchange will be closed immediately, even if there are still messages to send.
560
+ * If force is false, the exchange will be closed only after all messages have been sent.
561
+ */
562
+ async close(force = false) {
558
563
  if (this.#isDestroyed) {
559
564
  return;
560
565
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/protocol/MessageExchange.ts"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": ["_stack", "protocolId", "messageType", "_", "_error", "_hasError", "error"]
6
6
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@matter/protocol",
3
- "version": "0.16.0-alpha.0-20251210-206ca2db7",
3
+ "version": "0.16.0-alpha.0-20251211-0f80042cf",
4
4
  "description": "Low-level APIs for Matter interaction",
5
5
  "keywords": [
6
6
  "iot",
@@ -40,13 +40,13 @@
40
40
  "#*": "./src/*"
41
41
  },
42
42
  "dependencies": {
43
- "@matter/general": "0.16.0-alpha.0-20251210-206ca2db7",
44
- "@matter/model": "0.16.0-alpha.0-20251210-206ca2db7",
45
- "@matter/types": "0.16.0-alpha.0-20251210-206ca2db7"
43
+ "@matter/general": "0.16.0-alpha.0-20251211-0f80042cf",
44
+ "@matter/model": "0.16.0-alpha.0-20251211-0f80042cf",
45
+ "@matter/types": "0.16.0-alpha.0-20251211-0f80042cf"
46
46
  },
47
47
  "devDependencies": {
48
- "@matter/tools": "0.16.0-alpha.0-20251210-206ca2db7",
49
- "@matter/testing": "0.16.0-alpha.0-20251210-206ca2db7"
48
+ "@matter/tools": "0.16.0-alpha.0-20251211-0f80042cf",
49
+ "@matter/testing": "0.16.0-alpha.0-20251211-0f80042cf"
50
50
  },
51
51
  "files": [
52
52
  "dist/**/*",
@@ -31,6 +31,7 @@ import {
31
31
  } from "#general";
32
32
  import { InteractionClientMessenger, MessageType } from "#interaction/InteractionMessenger.js";
33
33
  import { Subscription } from "#interaction/Subscription.js";
34
+ import { PeerAddress } from "#peer/index.js";
34
35
  import { ExchangeProvider } from "#protocol/ExchangeProvider.js";
35
36
  import { SecureSession } from "#session/SecureSession.js";
36
37
  import { Status, TlvAttributeReport, TlvNoResponse, TlvSubscribeResponse, TypeFromSchema } from "#types";
@@ -43,10 +44,15 @@ import { SustainedSubscription } from "./subscription/SustainedSubscription.js";
43
44
 
44
45
  const logger = Logger.get("ClientInteraction");
45
46
 
47
+ export type SubscriptionResult<T extends ClientSubscribe = ClientSubscribe> = Promise<
48
+ T extends { sustain: true } ? SustainedSubscription : PeerSubscription
49
+ >;
50
+
46
51
  export interface ClientInteractionContext {
47
52
  environment: Environment;
48
53
  abort?: Abort.Signal;
49
54
  sustainRetries?: RetrySchedule.Configuration;
55
+ exchangeProvider?: ExchangeProvider;
50
56
  }
51
57
 
52
58
  export const DEFAULT_MIN_INTERVAL_FLOOR = Seconds(1);
@@ -68,16 +74,20 @@ const DEFAULT_MINIMUM_RESPONSE_TIMEOUT_WITH_FAILSAFE = Seconds(30);
68
74
  export class ClientInteraction<
69
75
  SessionT extends InteractionSession = InteractionSession,
70
76
  > implements Interactable<SessionT> {
77
+ readonly #environment: Environment;
71
78
  readonly #lifetime: Lifetime;
72
79
  readonly #exchanges: ExchangeProvider;
73
- readonly #subscriptions: ClientSubscriptions;
74
80
  readonly #interactions = new BasicSet<Read | Write | Invoke | Subscribe>();
81
+ #subscriptions?: ClientSubscriptions;
75
82
  readonly #abort: Abort;
76
83
  readonly #sustainRetries: RetrySchedule;
77
84
 
78
- constructor({ environment, abort, sustainRetries }: ClientInteractionContext) {
79
- this.#exchanges = environment.get(ExchangeProvider);
80
- this.#subscriptions = environment.get(ClientSubscriptions);
85
+ constructor({ environment, abort, sustainRetries, exchangeProvider }: ClientInteractionContext) {
86
+ this.#environment = environment;
87
+ this.#exchanges = exchangeProvider ?? environment.get(ExchangeProvider);
88
+ if (environment.has(ClientSubscriptions)) {
89
+ this.#subscriptions = environment.get(ClientSubscriptions);
90
+ }
81
91
  this.#abort = Abort.subtask(abort);
82
92
  this.#sustainRetries = new RetrySchedule(
83
93
  environment.get(Entropy),
@@ -96,6 +106,10 @@ export class ClientInteraction<
96
106
  });
97
107
  }
98
108
 
109
+ get exchanges() {
110
+ return this.#exchanges;
111
+ }
112
+
99
113
  get session() {
100
114
  return this.#exchanges.session;
101
115
  }
@@ -111,6 +125,9 @@ export class ClientInteraction<
111
125
  }
112
126
 
113
127
  get subscriptions() {
128
+ if (this.#subscriptions === undefined) {
129
+ this.#subscriptions = this.#environment.get(ClientSubscriptions);
130
+ }
114
131
  return this.#subscriptions;
115
132
  }
116
133
 
@@ -119,6 +136,9 @@ export class ClientInteraction<
119
136
  */
120
137
  async *read(request: Read, session?: SessionT): ReadResult {
121
138
  const readPathsCount = (request.attributeRequests?.length ?? 0) + (request.eventRequests?.length ?? 0);
139
+ if (readPathsCount === 0) {
140
+ throw new ImplementationError("When reading attributes and events, at least one must be specified.");
141
+ }
122
142
  if (readPathsCount > 9) {
123
143
  logger.debug(
124
144
  "Read interactions with more then 9 paths might be not allowed by the device. Consider splitting then into several read requests.",
@@ -332,14 +352,25 @@ export class ClientInteraction<
332
352
  /**
333
353
  * Subscribe to attribute values and events.
334
354
  */
335
- async subscribe(request: ClientSubscribe, session?: SessionT) {
355
+ async subscribe<T extends ClientSubscribe>(request: T, session?: SessionT): SubscriptionResult<T> {
336
356
  const subscriptionPathsCount = (request.attributeRequests?.length ?? 0) + (request.eventRequests?.length ?? 0);
357
+ if (subscriptionPathsCount === 0) {
358
+ throw new ImplementationError("When subscribing to attributes and events, at least one must be specified.");
359
+ }
337
360
  if (subscriptionPathsCount > 3) {
338
361
  logger.debug("Subscribe interactions with more then 3 paths might be not allowed by the device.");
339
362
  }
340
363
 
364
+ SecureSession.assert(this.#exchanges.session);
365
+ const peer = this.#exchanges.session.peerAddress;
366
+
341
367
  if (!request.keepSubscriptions) {
342
- for (const subscription of this.#subscriptions) {
368
+ for (const subscription of this.subscriptions) {
369
+ // TODO Adjust this filtering when subscriptions move to Peer
370
+ if (!PeerAddress.is(peer, subscription.peer)) {
371
+ // Ignore subscriptions from other peers
372
+ continue;
373
+ }
343
374
  logger.debug(
344
375
  `Removing subscription with ID ${Subscription.idStrOf(subscription)} because new subscription replaces it`,
345
376
  );
@@ -360,9 +391,6 @@ export class ClientInteraction<
360
391
  );
361
392
  }
362
393
 
363
- SecureSession.assert(this.#exchanges.session);
364
- const peer = this.#exchanges.session.peerAddress;
365
-
366
394
  const subscribe = async (request: ClientSubscribe) => {
367
395
  await using context = await this.#begin("subscribing", request, session);
368
396
  const { checkAbort, messenger } = context;
@@ -402,14 +430,15 @@ export class ClientInteraction<
402
430
  );
403
431
 
404
432
  const subscription = new PeerSubscription({
405
- lifetime: this.#subscriptions,
433
+ lifetime: this.subscriptions,
406
434
  request,
407
435
  peer,
408
- closed: () => this.#subscriptions.delete(subscription),
436
+ closed: () => this.subscriptions.delete(subscription),
409
437
  response,
410
438
  abort: session?.abort,
439
+ maxPeerResponseTime: this.#exchanges.maximumPeerResponseTime(),
411
440
  });
412
- this.#subscriptions.addPeer(subscription);
441
+ this.subscriptions.addPeer(subscription);
413
442
 
414
443
  return subscription;
415
444
  };
@@ -417,10 +446,10 @@ export class ClientInteraction<
417
446
  let subscription: ClientSubscription;
418
447
  if (request.sustain) {
419
448
  subscription = new SustainedSubscription({
420
- lifetime: this.#subscriptions,
449
+ lifetime: this.subscriptions,
421
450
  subscribe,
422
451
  peer,
423
- closed: () => this.#subscriptions.delete(subscription),
452
+ closed: () => this.subscriptions.delete(subscription),
424
453
  request,
425
454
  abort: session?.abort,
426
455
  retries: this.#sustainRetries,
@@ -429,9 +458,9 @@ export class ClientInteraction<
429
458
  subscription = await subscribe(request);
430
459
  }
431
460
 
432
- this.#subscriptions.addActive(subscription);
461
+ this.subscriptions.addActive(subscription);
433
462
 
434
- return subscription;
463
+ return subscription as unknown as SubscriptionResult<T>;
435
464
  }
436
465
 
437
466
  async #handleSubscriptionResponse(request: Subscribe, result: ReadResult) {
@@ -6,13 +6,12 @@
6
6
 
7
7
  import { ReadResult } from "#action/response/ReadResult.js";
8
8
  import { Diagnostic, InternalError, Logger } from "#general";
9
- import { DecodedDataReport } from "#interaction/DecodedDataReport.js";
10
9
  import { IncomingInteractionClientMessenger } from "#interaction/InteractionMessenger.js";
11
10
  import { Subscription, SubscriptionId } from "#interaction/Subscription.js";
12
11
  import { MessageExchange } from "#protocol/MessageExchange.js";
13
12
  import { ProtocolHandler } from "#protocol/ProtocolHandler.js";
14
13
  import { SecureSession } from "#session/SecureSession.js";
15
- import { DataReport, INTERACTION_PROTOCOL_ID, Status } from "#types";
14
+ import { DataReport, INTERACTION_PROTOCOL_ID, Status, TlvAttributeReport, TypeFromSchema } from "#types";
16
15
  import { InputChunk } from "../InputChunk.js";
17
16
  import { ClientSubscriptions } from "./ClientSubscriptions.js";
18
17
 
@@ -55,36 +54,38 @@ export class ClientSubscriptionHandler implements ProtocolHandler {
55
54
  SecureSession.assert(session);
56
55
  const subscription = this.#subscriptions.getPeer(session.peerAddress, subscriptionId);
57
56
  if (subscription === undefined) {
58
- logger.debug("Ignoring data report for unknown subscription ID", Diagnostic.strong(subscriptionId));
57
+ logger.info("Ignoring data report for unknown subscription ID", Diagnostic.strong(subscriptionId));
59
58
  await sendInvalid(messenger, subscriptionId);
60
59
  return;
61
60
  }
62
61
 
63
- // If this is just a ping, only reset the timeout
64
- if (!initialReport.attributeReports?.length && !initialReport.eventReports?.length) {
65
- subscription.timeoutAt = undefined;
66
- this.#subscriptions.resetTimer();
67
- await exchange.close();
68
- return;
69
- }
70
-
71
62
  // Pass the data to the recipient
72
63
  try {
73
64
  subscription.isReading = true;
74
65
 
75
- if (subscription.request.updated) {
76
- await subscription.request.updated(processReports(initialReport, reports, messenger));
66
+ // If this is just a ping, only reset the timeout
67
+ if (!initialReport.attributeReports?.length && !initialReport.eventReports?.length) {
68
+ // Read the next report to trigger success message sent out
69
+ const ending = await reports.next();
70
+ if (!ending.done) {
71
+ logger.warn("Unexpected data reports after empty report", Diagnostic.strong(subscriptionId));
72
+ for await (const _chunk of reports); // Read over these extraneous reports
73
+ }
77
74
  } else {
78
- // It doesn't make sense to have the callback undefined but we allow it in the type because they may
79
- // be handled by intermediate interactables. So we handle the case here too, but just iterate and throw
80
- // away the reports
81
- for await (const _chunk of reports);
75
+ if (subscription.request.updated) {
76
+ await subscription.request.updated(processReports(initialReport, reports, messenger));
77
+ } else {
78
+ // It doesn't make sense to have the callback undefined, but we allow it in the type because they may
79
+ // be handled by intermediate interactables. So we handle the case here too, but just iterate and throw
80
+ // away the reports
81
+ for await (const _chunk of reports);
82
+ }
82
83
  }
83
84
  } finally {
84
85
  subscription.isReading = false;
85
86
  subscription.timeoutAt = undefined;
86
87
  this.#subscriptions.resetTimer();
87
- await exchange.close();
88
+ await messenger.close();
88
89
  }
89
90
  }
90
91
 
@@ -109,28 +110,26 @@ async function* processReports(
109
110
  otherReports: AsyncIterable<DataReport>,
110
111
  messenger: IncomingInteractionClientMessenger,
111
112
  ): ReadResult {
112
- yield InputChunk(initialReport);
113
+ const leftOverData = new Array<TypeFromSchema<typeof TlvAttributeReport>>();
114
+
115
+ yield InputChunk(initialReport, leftOverData);
113
116
 
114
117
  const { subscriptionId } = initialReport;
115
118
 
116
119
  for await (const report of otherReports) {
117
- const decoded = DecodedDataReport(report);
118
-
119
- if (decoded.subscriptionId === undefined) {
120
+ const { subscriptionId: reportSubscriptionId } = report;
121
+ if (reportSubscriptionId === undefined) {
120
122
  logger.debug("Ignoring data report with missing subscription id");
121
- await sendInvalid(messenger, decoded.subscriptionId);
123
+ await sendInvalid(messenger, reportSubscriptionId);
122
124
  continue;
123
125
  }
124
126
 
125
- if (decoded.subscriptionId !== subscriptionId) {
126
- logger.debug(
127
- "Ignoring data report for incorrect subscription id",
128
- Diagnostic.strong(decoded.subscriptionId),
129
- );
130
- await sendInvalid(messenger, decoded.subscriptionId);
127
+ if (reportSubscriptionId !== subscriptionId) {
128
+ logger.debug("Ignoring data report for incorrect subscription id", Diagnostic.strong(reportSubscriptionId));
129
+ await sendInvalid(messenger, reportSubscriptionId);
131
130
  continue;
132
131
  }
133
132
 
134
- yield InputChunk(report);
133
+ yield InputChunk(report, leftOverData);
135
134
  }
136
135
  }
@@ -14,22 +14,27 @@ import { ClientSubscription } from "./ClientSubscription.js";
14
14
  export class PeerSubscription extends ClientSubscription {
15
15
  readonly interactionModelRevision: number;
16
16
  readonly maxInterval: number;
17
+ readonly #maxPeerResponseTime: Duration;
17
18
  isReading = false;
18
19
 
19
20
  timeoutAt?: Timestamp;
20
21
 
21
22
  constructor(config: PeerSubscription.Configuration) {
22
- const { subscriptionId, interactionModelRevision, maxInterval } = config.response;
23
+ const {
24
+ maxPeerResponseTime,
25
+ response: { subscriptionId, interactionModelRevision, maxInterval },
26
+ } = config;
23
27
 
24
28
  super(config);
25
29
 
26
30
  this.subscriptionId = subscriptionId;
27
31
  this.interactionModelRevision = interactionModelRevision;
28
32
  this.maxInterval = maxInterval;
33
+ this.#maxPeerResponseTime = maxPeerResponseTime;
29
34
  }
30
35
 
31
36
  get timeout() {
32
- return Millis(Seconds(this.maxInterval) + (this.request.maxPeerResponseTime ?? 0));
37
+ return Millis(Seconds(this.maxInterval) + this.#maxPeerResponseTime * 2);
33
38
  }
34
39
 
35
40
  timedOut() {
@@ -47,5 +52,6 @@ export class PeerSubscription extends ClientSubscription {
47
52
  export namespace PeerSubscription {
48
53
  export interface Configuration extends ClientSubscription.Configuration {
49
54
  response: SubscribeResponse;
55
+ maxPeerResponseTime: Duration;
50
56
  }
51
57
  }
@@ -19,7 +19,6 @@ export interface Subscribe extends Read {
19
19
  keepSubscriptions: boolean;
20
20
  minIntervalFloor?: Duration;
21
21
  maxIntervalCeiling?: Duration;
22
- maxPeerResponseTime?: Duration;
23
22
 
24
23
  /**
25
24
  * Invoked when subscribed data changes.
@@ -28,7 +28,7 @@ import {
28
28
 
29
29
  const logger = Logger.get("AttributeDataDecoder");
30
30
 
31
- type DecodedAttributeReportEntry = {
31
+ export type DecodedAttributeReportEntry = {
32
32
  path: {
33
33
  nodeId?: NodeId;
34
34
  endpointId: EndpointNumber;
package/src/peer/index.ts CHANGED
@@ -7,6 +7,7 @@
7
7
  export * from "./ControllerCommissioner.js";
8
8
  export * from "./ControllerCommissioningFlow.js";
9
9
  export * from "./ControllerDiscovery.js";
10
+ export * from "./InteractionQueue.js";
10
11
  export * from "./PeerAddress.js";
11
12
  export * from "./PeerAddressStore.js";
12
13
  export * from "./PeerDescriptor.js";
@@ -253,13 +253,13 @@ export class ExchangeManager {
253
253
 
254
254
  if (exchange !== undefined) {
255
255
  this.#lifetime.details.exchange = exchange.idStr;
256
- if (exchange.session.id !== packet.header.sessionId || (exchange.isClosing && !isStandaloneAck)) {
256
+ if (exchange.session.id !== packet.header.sessionId || (exchange.considerClosed && !isStandaloneAck)) {
257
257
  logger.debug(
258
258
  exchange.via,
259
259
  "Ignore",
260
260
  Mark.INBOUND,
261
261
  "message because",
262
- exchange.isClosing
262
+ exchange.considerClosed
263
263
  ? "exchange is closing"
264
264
  : `session ID mismatch (header session is ${Session.idStrOf(packet)}`,
265
265
  messageDiagnostics,
@@ -277,9 +277,8 @@ export class ExchangeManager {
277
277
  } else {
278
278
  if (this.#isClosing) return;
279
279
  if (session.isClosing) {
280
- throw new MatterFlowError(
281
- `Declining new exchange because session ${Session.idStrOf(packet)} is closing`,
282
- );
280
+ logger.debug(`Declining new exchange because session ${Session.idStrOf(packet)} is closing`);
281
+ return;
283
282
  }
284
283
 
285
284
  const protocolHandler = this.#protocols.get(message.payloadHeader.protocolId);
@@ -368,7 +367,7 @@ export class ExchangeManager {
368
367
  return;
369
368
  }
370
369
  const sessionExchanges = Array.from(this.#exchanges.values()).filter(
371
- exchange => exchange.session.id === sessionId && !exchange.isClosing && exchange.isInitiator,
370
+ exchange => exchange.session.id === sessionId && !exchange.considerClosed,
372
371
  );
373
372
  if (sessionExchanges.length <= MAXIMUM_CONCURRENT_OUTGOING_EXCHANGES_PER_SESSION) {
374
373
  return;