@matter/protocol 0.16.8 → 0.16.9-alpha.0-20260203-080317ea1

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 (78) hide show
  1. package/dist/cjs/action/client/ClientInteraction.d.ts.map +1 -1
  2. package/dist/cjs/action/client/ClientInteraction.js +11 -6
  3. package/dist/cjs/action/client/ClientInteraction.js.map +1 -1
  4. package/dist/cjs/common/Mark.d.ts +1 -0
  5. package/dist/cjs/common/Mark.d.ts.map +1 -1
  6. package/dist/cjs/common/Mark.js +1 -0
  7. package/dist/cjs/common/Mark.js.map +1 -1
  8. package/dist/cjs/interaction/InteractionMessenger.d.ts.map +1 -1
  9. package/dist/cjs/interaction/InteractionMessenger.js +4 -3
  10. package/dist/cjs/interaction/InteractionMessenger.js.map +1 -1
  11. package/dist/cjs/mdns/MdnsClient.d.ts.map +1 -1
  12. package/dist/cjs/mdns/MdnsClient.js +12 -9
  13. package/dist/cjs/mdns/MdnsClient.js.map +1 -1
  14. package/dist/cjs/peer/ControllerCommissioner.js +1 -1
  15. package/dist/cjs/peer/ControllerCommissioner.js.map +1 -1
  16. package/dist/cjs/peer/PeerSet.d.ts.map +1 -1
  17. package/dist/cjs/peer/PeerSet.js +2 -3
  18. package/dist/cjs/peer/PeerSet.js.map +1 -1
  19. package/dist/cjs/protocol/MessageExchange.d.ts +5 -0
  20. package/dist/cjs/protocol/MessageExchange.d.ts.map +1 -1
  21. package/dist/cjs/protocol/MessageExchange.js +20 -0
  22. package/dist/cjs/protocol/MessageExchange.js.map +1 -1
  23. package/dist/cjs/securechannel/SecureChannelMessenger.d.ts +1 -1
  24. package/dist/cjs/securechannel/SecureChannelMessenger.d.ts.map +1 -1
  25. package/dist/cjs/securechannel/SecureChannelMessenger.js.map +1 -1
  26. package/dist/cjs/session/NodeSession.d.ts.map +1 -1
  27. package/dist/cjs/session/NodeSession.js +1 -0
  28. package/dist/cjs/session/NodeSession.js.map +1 -1
  29. package/dist/cjs/session/pase/PaseClient.js +1 -1
  30. package/dist/cjs/session/pase/PaseClient.js.map +1 -1
  31. package/dist/cjs/session/pase/PaseServer.d.ts.map +1 -1
  32. package/dist/cjs/session/pase/PaseServer.js +7 -1
  33. package/dist/cjs/session/pase/PaseServer.js.map +1 -1
  34. package/dist/esm/action/client/ClientInteraction.d.ts.map +1 -1
  35. package/dist/esm/action/client/ClientInteraction.js +11 -6
  36. package/dist/esm/action/client/ClientInteraction.js.map +1 -1
  37. package/dist/esm/common/Mark.d.ts +1 -0
  38. package/dist/esm/common/Mark.d.ts.map +1 -1
  39. package/dist/esm/common/Mark.js +1 -0
  40. package/dist/esm/common/Mark.js.map +1 -1
  41. package/dist/esm/interaction/InteractionMessenger.d.ts.map +1 -1
  42. package/dist/esm/interaction/InteractionMessenger.js +4 -3
  43. package/dist/esm/interaction/InteractionMessenger.js.map +1 -1
  44. package/dist/esm/mdns/MdnsClient.d.ts.map +1 -1
  45. package/dist/esm/mdns/MdnsClient.js +12 -9
  46. package/dist/esm/mdns/MdnsClient.js.map +1 -1
  47. package/dist/esm/peer/ControllerCommissioner.js +1 -1
  48. package/dist/esm/peer/ControllerCommissioner.js.map +1 -1
  49. package/dist/esm/peer/PeerSet.d.ts.map +1 -1
  50. package/dist/esm/peer/PeerSet.js +2 -3
  51. package/dist/esm/peer/PeerSet.js.map +1 -1
  52. package/dist/esm/protocol/MessageExchange.d.ts +5 -0
  53. package/dist/esm/protocol/MessageExchange.d.ts.map +1 -1
  54. package/dist/esm/protocol/MessageExchange.js +20 -0
  55. package/dist/esm/protocol/MessageExchange.js.map +1 -1
  56. package/dist/esm/securechannel/SecureChannelMessenger.d.ts +1 -1
  57. package/dist/esm/securechannel/SecureChannelMessenger.d.ts.map +1 -1
  58. package/dist/esm/securechannel/SecureChannelMessenger.js.map +1 -1
  59. package/dist/esm/session/NodeSession.d.ts.map +1 -1
  60. package/dist/esm/session/NodeSession.js +1 -0
  61. package/dist/esm/session/NodeSession.js.map +1 -1
  62. package/dist/esm/session/pase/PaseClient.js +1 -1
  63. package/dist/esm/session/pase/PaseClient.js.map +1 -1
  64. package/dist/esm/session/pase/PaseServer.d.ts.map +1 -1
  65. package/dist/esm/session/pase/PaseServer.js +7 -1
  66. package/dist/esm/session/pase/PaseServer.js.map +1 -1
  67. package/package.json +6 -6
  68. package/src/action/client/ClientInteraction.ts +11 -6
  69. package/src/common/Mark.ts +1 -0
  70. package/src/interaction/InteractionMessenger.ts +4 -3
  71. package/src/mdns/MdnsClient.ts +14 -10
  72. package/src/peer/ControllerCommissioner.ts +1 -1
  73. package/src/peer/PeerSet.ts +2 -3
  74. package/src/protocol/MessageExchange.ts +24 -0
  75. package/src/securechannel/SecureChannelMessenger.ts +1 -1
  76. package/src/session/NodeSession.ts +1 -0
  77. package/src/session/pase/PaseClient.ts +1 -1
  78. package/src/session/pase/PaseServer.ts +7 -1
@@ -152,6 +152,9 @@ export class MessageExchange {
152
152
  #sentMessageAckFailure: ((error?: Error) => void) | undefined;
153
153
  #retransmissionTimer: Timer | undefined;
154
154
  #retransmissionCounter = 0;
155
+ #totalRetransmissionCounter = 0; // counter for all messages within this exchange
156
+ #messageSendCounter = 0;
157
+ #messageReceivedCounter = 0;
155
158
  #closeTimer: Timer | undefined;
156
159
  #isDestroyed = false;
157
160
  #timedInteractionTimer: Timer | undefined;
@@ -266,6 +269,7 @@ export class MessageExchange {
266
269
 
267
270
  async onMessageReceived(message: Message, duplicate = false) {
268
271
  logger.debug("Message", Mark.INBOUND, Message.diagnosticsOf(this, message, { duplicate }));
272
+ this.#messageReceivedCounter++;
269
273
 
270
274
  // Adjust the incoming message when ack was required, but this exchange does not use it to skip all relevant logic
271
275
  if (message.payloadHeader.requiresAck && !this.session.usesMrp) {
@@ -298,6 +302,7 @@ export class MessageExchange {
298
302
  // Received a message retransmission. This means that the other side didn't get our ack
299
303
  // Resending the previous reply message which contains the ack
300
304
  using _acking = this.join("resending ack");
305
+ this.#messageSendCounter++;
301
306
  await this.channel.send(this.#sentMessageToAck);
302
307
  return;
303
308
  }
@@ -381,6 +386,7 @@ export class MessageExchange {
381
386
  }
382
387
 
383
388
  this.#used = true;
389
+ this.#messageSendCounter++;
384
390
  this.session.notifyActivity(false);
385
391
 
386
392
  let ackedMessageId = includeAcknowledgeMessageId;
@@ -512,6 +518,7 @@ export class MessageExchange {
512
518
 
513
519
  #retransmitMessage(message: Message, expectedProcessingTime?: Duration) {
514
520
  this.#retransmissionCounter++;
521
+ this.#totalRetransmissionCounter++;
515
522
  if (this.considerClosed || this.#retransmissionCounter >= MRP.MAX_TRANSMISSIONS) {
516
523
  // Ok all 4 resubmissions are done, but we need to wait a bit longer because of processing time and
517
524
  // the resubmissions from the other side
@@ -526,6 +533,7 @@ export class MessageExchange {
526
533
  );
527
534
  if (finalWaitTime > 0) {
528
535
  this.#retransmissionCounter--; // We will not resubmit the message again
536
+ this.#totalRetransmissionCounter--;
529
537
  logger.debug(
530
538
  `Message ${Message.via(this, message)}: Wait additional ${Duration.format(finalWaitTime)} for processing time and peer resubmissions after all our resubmissions`,
531
539
  );
@@ -553,6 +561,7 @@ export class MessageExchange {
553
561
  return;
554
562
  }
555
563
 
564
+ this.#messageSendCounter++;
556
565
  this.session.notifyActivity(false);
557
566
 
558
567
  this.context.retry(this.#retransmissionCounter);
@@ -730,6 +739,21 @@ export class MessageExchange {
730
739
 
731
740
  return Diagnostic.via(`${this.session.via}${Mark.EXCHANGE}${this.idStr}`);
732
741
  }
742
+
743
+ /**
744
+ * Expose some diagnostics for logging.
745
+ * For simply one message exchanges without retransmissions nothing will be exposed
746
+ */
747
+ get diagnostics() {
748
+ if (
749
+ this.#totalRetransmissionCounter === 0 &&
750
+ this.#messageSendCounter === 1 &&
751
+ this.#messageReceivedCounter === 1
752
+ ) {
753
+ return undefined;
754
+ }
755
+ return `${this.#messageReceivedCounter}${Mark.TRANSFERRED}${this.#messageSendCounter}${this.#totalRetransmissionCounter > 0 ? `+${this.#totalRetransmissionCounter}` : ""}`;
756
+ }
733
757
  }
734
758
 
735
759
  export namespace MessageExchange {
@@ -33,7 +33,7 @@ export class SecureChannelMessenger {
33
33
  #defaultExpectedProcessingTime: Duration;
34
34
 
35
35
  constructor(
36
- protected readonly exchange: MessageExchange,
36
+ readonly exchange: MessageExchange,
37
37
  defaultExpectedProcessingTime = EXPECTED_CRYPTO_PROCESSING_TIME,
38
38
  ) {
39
39
  this.#defaultExpectedProcessingTime = defaultExpectedProcessingTime;
@@ -389,6 +389,7 @@ export namespace NodeSession {
389
389
  session.via,
390
390
  `${operation} session with`,
391
391
  Diagnostic.strong(PeerAddress({ fabricIndex: fabric.fabricIndex, nodeId: peerNodeId }).toString()),
392
+ messenger.exchange.diagnostics,
392
393
  Diagnostic.dict({
393
394
  address: messenger.channelName,
394
395
  fabric: `${GlobalFabricId.strOf(fabric.globalId)} (#${fabric.fabricIndex})`,
@@ -118,7 +118,7 @@ export class PaseClient {
118
118
  peerSessionParameters,
119
119
  });
120
120
  await messenger.close();
121
- logger.info("Paired successfully", Mark.OUTBOUND, messenger.channelName);
121
+ logger.info("Paired successfully", Mark.OUTBOUND, messenger.channelName, exchange.diagnostics);
122
122
 
123
123
  return secureSession;
124
124
  }
@@ -96,6 +96,7 @@ export class PaseServer implements ProtocolHandler {
96
96
  this.#pairingErrors++;
97
97
  logger.error(
98
98
  `An error occurred during the PASE commissioning (${this.#pairingErrors}/${PASE_COMMISSIONING_MAX_ERRORS}):`,
99
+ this.#pairingMessenger?.exchange.diagnostics,
99
100
  error,
100
101
  );
101
102
 
@@ -189,7 +190,12 @@ export class PaseServer implements ProtocolHandler {
189
190
  isResumption: false,
190
191
  peerSessionParameters: initiatorSessionParams,
191
192
  });
192
- logger.info(session.via, "New session with", Diagnostic.strong(messenger.channelName));
193
+ logger.info(
194
+ session.via,
195
+ "New session with",
196
+ Diagnostic.strong(messenger.channelName),
197
+ messenger.exchange.diagnostics,
198
+ );
193
199
 
194
200
  await messenger.sendSuccess();
195
201
  await messenger.close();