@matter/protocol 0.12.4-alpha.0-20250224-e0964a795 → 0.12.4-alpha.0-20250225-52ac4166b

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 (103) hide show
  1. package/dist/cjs/interaction/InteractionClient.d.ts +6 -2
  2. package/dist/cjs/interaction/InteractionClient.d.ts.map +1 -1
  3. package/dist/cjs/interaction/InteractionClient.js +3 -2
  4. package/dist/cjs/interaction/InteractionClient.js.map +1 -1
  5. package/dist/cjs/interaction/InteractionMessenger.d.ts +1 -1
  6. package/dist/cjs/interaction/InteractionMessenger.d.ts.map +1 -1
  7. package/dist/cjs/interaction/InteractionServer.d.ts +19 -2
  8. package/dist/cjs/interaction/InteractionServer.d.ts.map +1 -1
  9. package/dist/cjs/interaction/InteractionServer.js +123 -45
  10. package/dist/cjs/interaction/InteractionServer.js.map +1 -1
  11. package/dist/cjs/interaction/ServerSubscription.d.ts +8 -16
  12. package/dist/cjs/interaction/ServerSubscription.d.ts.map +1 -1
  13. package/dist/cjs/interaction/ServerSubscription.js +78 -55
  14. package/dist/cjs/interaction/ServerSubscription.js.map +1 -1
  15. package/dist/cjs/interaction/Subscription.d.ts +7 -1
  16. package/dist/cjs/interaction/Subscription.d.ts.map +1 -1
  17. package/dist/cjs/interaction/Subscription.js +25 -2
  18. package/dist/cjs/interaction/Subscription.js.map +1 -1
  19. package/dist/cjs/peer/ControllerCommissioner.d.ts.map +1 -1
  20. package/dist/cjs/peer/ControllerCommissioner.js +4 -5
  21. package/dist/cjs/peer/ControllerCommissioner.js.map +1 -1
  22. package/dist/cjs/peer/PeerAddress.d.ts +5 -0
  23. package/dist/cjs/peer/PeerAddress.d.ts.map +1 -1
  24. package/dist/cjs/peer/PeerAddress.js +13 -1
  25. package/dist/cjs/peer/PeerAddress.js.map +1 -1
  26. package/dist/cjs/peer/PeerSet.d.ts +6 -2
  27. package/dist/cjs/peer/PeerSet.d.ts.map +1 -1
  28. package/dist/cjs/peer/PeerSet.js +18 -8
  29. package/dist/cjs/peer/PeerSet.js.map +1 -1
  30. package/dist/cjs/securechannel/SecureChannelMessenger.d.ts +1 -0
  31. package/dist/cjs/securechannel/SecureChannelMessenger.d.ts.map +1 -1
  32. package/dist/cjs/securechannel/SecureChannelMessenger.js +3 -0
  33. package/dist/cjs/securechannel/SecureChannelMessenger.js.map +1 -1
  34. package/dist/cjs/session/SecureSession.d.ts +1 -1
  35. package/dist/cjs/session/SecureSession.d.ts.map +1 -1
  36. package/dist/cjs/session/SecureSession.js +3 -2
  37. package/dist/cjs/session/SecureSession.js.map +1 -1
  38. package/dist/cjs/session/Session.d.ts +1 -0
  39. package/dist/cjs/session/Session.d.ts.map +1 -1
  40. package/dist/cjs/session/Session.js +1 -0
  41. package/dist/cjs/session/Session.js.map +1 -1
  42. package/dist/cjs/session/SessionManager.d.ts +2 -2
  43. package/dist/cjs/session/SessionManager.d.ts.map +1 -1
  44. package/dist/cjs/session/SessionManager.js +5 -9
  45. package/dist/cjs/session/SessionManager.js.map +1 -1
  46. package/dist/esm/interaction/InteractionClient.d.ts +6 -2
  47. package/dist/esm/interaction/InteractionClient.d.ts.map +1 -1
  48. package/dist/esm/interaction/InteractionClient.js +3 -2
  49. package/dist/esm/interaction/InteractionClient.js.map +1 -1
  50. package/dist/esm/interaction/InteractionMessenger.d.ts +1 -1
  51. package/dist/esm/interaction/InteractionMessenger.d.ts.map +1 -1
  52. package/dist/esm/interaction/InteractionServer.d.ts +19 -2
  53. package/dist/esm/interaction/InteractionServer.d.ts.map +1 -1
  54. package/dist/esm/interaction/InteractionServer.js +124 -46
  55. package/dist/esm/interaction/InteractionServer.js.map +1 -1
  56. package/dist/esm/interaction/ServerSubscription.d.ts +8 -16
  57. package/dist/esm/interaction/ServerSubscription.d.ts.map +1 -1
  58. package/dist/esm/interaction/ServerSubscription.js +78 -55
  59. package/dist/esm/interaction/ServerSubscription.js.map +1 -1
  60. package/dist/esm/interaction/Subscription.d.ts +7 -1
  61. package/dist/esm/interaction/Subscription.d.ts.map +1 -1
  62. package/dist/esm/interaction/Subscription.js +26 -3
  63. package/dist/esm/interaction/Subscription.js.map +1 -1
  64. package/dist/esm/peer/ControllerCommissioner.d.ts.map +1 -1
  65. package/dist/esm/peer/ControllerCommissioner.js +4 -5
  66. package/dist/esm/peer/ControllerCommissioner.js.map +1 -1
  67. package/dist/esm/peer/PeerAddress.d.ts +5 -0
  68. package/dist/esm/peer/PeerAddress.d.ts.map +1 -1
  69. package/dist/esm/peer/PeerAddress.js +13 -1
  70. package/dist/esm/peer/PeerAddress.js.map +1 -1
  71. package/dist/esm/peer/PeerSet.d.ts +6 -2
  72. package/dist/esm/peer/PeerSet.d.ts.map +1 -1
  73. package/dist/esm/peer/PeerSet.js +18 -8
  74. package/dist/esm/peer/PeerSet.js.map +1 -1
  75. package/dist/esm/securechannel/SecureChannelMessenger.d.ts +1 -0
  76. package/dist/esm/securechannel/SecureChannelMessenger.d.ts.map +1 -1
  77. package/dist/esm/securechannel/SecureChannelMessenger.js +3 -0
  78. package/dist/esm/securechannel/SecureChannelMessenger.js.map +1 -1
  79. package/dist/esm/session/SecureSession.d.ts +1 -1
  80. package/dist/esm/session/SecureSession.d.ts.map +1 -1
  81. package/dist/esm/session/SecureSession.js +3 -2
  82. package/dist/esm/session/SecureSession.js.map +1 -1
  83. package/dist/esm/session/Session.d.ts +1 -0
  84. package/dist/esm/session/Session.d.ts.map +1 -1
  85. package/dist/esm/session/Session.js +1 -0
  86. package/dist/esm/session/Session.js.map +1 -1
  87. package/dist/esm/session/SessionManager.d.ts +2 -2
  88. package/dist/esm/session/SessionManager.d.ts.map +1 -1
  89. package/dist/esm/session/SessionManager.js +6 -10
  90. package/dist/esm/session/SessionManager.js.map +1 -1
  91. package/package.json +6 -6
  92. package/src/interaction/InteractionClient.ts +8 -3
  93. package/src/interaction/InteractionMessenger.ts +1 -1
  94. package/src/interaction/InteractionServer.ts +165 -50
  95. package/src/interaction/ServerSubscription.ts +87 -63
  96. package/src/interaction/Subscription.ts +34 -6
  97. package/src/peer/ControllerCommissioner.ts +4 -5
  98. package/src/peer/PeerAddress.ts +14 -0
  99. package/src/peer/PeerSet.ts +31 -9
  100. package/src/securechannel/SecureChannelMessenger.ts +4 -0
  101. package/src/session/SecureSession.ts +3 -2
  102. package/src/session/Session.ts +1 -0
  103. package/src/session/SessionManager.ts +5 -9
@@ -20,7 +20,7 @@ import {
20
20
  StorageManager
21
21
  } from "#general";
22
22
  import { Specification } from "#model";
23
- import { PeerAddressMap } from "#peer/PeerAddress.js";
23
+ import { PeerAddress, PeerAddressMap } from "#peer/PeerAddress.js";
24
24
  import { DEFAULT_MAX_PATHS_PER_INVOKE, NodeId } from "#types";
25
25
  import { MessageCounter } from "../protocol/MessageCounter.js";
26
26
  import { InsecureSession } from "./InsecureSession.js";
@@ -256,10 +256,11 @@ class SessionManager {
256
256
  return secureSession.peerIs(address);
257
257
  });
258
258
  }
259
- async removeAllSessionsForNode(address, sendClose = false) {
259
+ async removeAllSessionsForNode(address, sendClose = false, closeBeforeCreatedTimestamp) {
260
260
  await this.#construction;
261
261
  for (const session of this.#sessions) {
262
262
  if (!session.isSecure) continue;
263
+ if (closeBeforeCreatedTimestamp !== void 0 && session.createdAt >= closeBeforeCreatedTimestamp) continue;
263
264
  const secureSession = session;
264
265
  if (secureSession.peerIs(address)) {
265
266
  await secureSession.destroy(sendClose, false);
@@ -415,17 +416,12 @@ class SessionManager {
415
416
  });
416
417
  }
417
418
  /** Clears all subscriptions for a given node and returns how many were cleared. */
418
- async clearSubscriptionsForNode(fabricIndex, nodeId, flushSubscriptions) {
419
+ async clearSubscriptionsForNode(peerAddress, flushSubscriptions) {
419
420
  let clearedCount = 0;
420
421
  for (const session of this.#sessions) {
421
- if (session.fabric?.fabricIndex !== fabricIndex) {
422
- continue;
422
+ if (PeerAddress.is(session.peerAddress, peerAddress)) {
423
+ clearedCount += await session.clearSubscriptions(flushSubscriptions, true);
423
424
  }
424
- if (session.peerNodeId !== nodeId) {
425
- continue;
426
- }
427
- await session.clearSubscriptions(flushSubscriptions);
428
- clearedCount++;
429
425
  }
430
426
  return clearedCount;
431
427
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/session/SessionManager.ts"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": ["fabric"]
6
6
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@matter/protocol",
3
- "version": "0.12.4-alpha.0-20250224-e0964a795",
3
+ "version": "0.12.4-alpha.0-20250225-52ac4166b",
4
4
  "description": "Low-level APIs for Matter interaction",
5
5
  "keywords": [
6
6
  "iot",
@@ -40,14 +40,14 @@
40
40
  "#*": "./src/*"
41
41
  },
42
42
  "dependencies": {
43
- "@matter/general": "0.12.4-alpha.0-20250224-e0964a795",
44
- "@matter/model": "0.12.4-alpha.0-20250224-e0964a795",
45
- "@matter/types": "0.12.4-alpha.0-20250224-e0964a795",
43
+ "@matter/general": "0.12.4-alpha.0-20250225-52ac4166b",
44
+ "@matter/model": "0.12.4-alpha.0-20250225-52ac4166b",
45
+ "@matter/types": "0.12.4-alpha.0-20250225-52ac4166b",
46
46
  "@noble/curves": "^1.8.1"
47
47
  },
48
48
  "devDependencies": {
49
- "@matter/tools": "0.12.4-alpha.0-20250224-e0964a795",
50
- "@matter/testing": "0.12.4-alpha.0-20250224-e0964a795"
49
+ "@matter/tools": "0.12.4-alpha.0-20250225-52ac4166b",
50
+ "@matter/testing": "0.12.4-alpha.0-20250225-52ac4166b"
51
51
  },
52
52
  "files": [
53
53
  "dist/**/*",
@@ -11,6 +11,7 @@ import {
11
11
  Logger,
12
12
  MatterFlowError,
13
13
  PromiseQueue,
14
+ ServerAddressIp,
14
15
  Timer,
15
16
  UnexpectedDataError,
16
17
  isDeepEqual,
@@ -90,11 +91,15 @@ export class InteractionClientProvider {
90
91
 
91
92
  async connect(
92
93
  address: PeerAddress,
93
- discoveryOptions: DiscoveryOptions,
94
- allowUnknownPeer = false,
94
+ options: {
95
+ discoveryOptions: DiscoveryOptions;
96
+ allowUnknownPeer?: boolean;
97
+ operationalAddress?: ServerAddressIp;
98
+ },
95
99
  ): Promise<InteractionClient> {
96
- await this.#peers.ensureConnection(address, discoveryOptions, allowUnknownPeer);
100
+ await this.#peers.ensureConnection(address, options);
97
101
 
102
+ const { discoveryOptions } = options;
98
103
  return this.getInteractionClient(address, discoveryOptions);
99
104
  }
100
105
 
@@ -197,7 +197,7 @@ export interface InteractionRecipient {
197
197
  exchange: MessageExchange,
198
198
  request: ReadRequest,
199
199
  message: Message,
200
- ): Promise<{ dataReport: DataReport; payload: DataReportPayloadIterator }>;
200
+ ): Promise<{ dataReport: DataReport; payload?: DataReportPayloadIterator }>;
201
201
  handleWriteRequest(exchange: MessageExchange, request: WriteRequest, message: Message): Promise<WriteResponse>;
202
202
  handleSubscribeRequest(
203
203
  exchange: MessageExchange,
@@ -4,7 +4,7 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
- import { Crypto, Diagnostic, InternalError, Logger, MatterFlowError } from "#general";
7
+ import { Crypto, Diagnostic, InternalError, Logger, MatterFlowError, Observable, ServerAddressIp } from "#general";
8
8
  import { AttributeModel, ClusterModel, CommandModel, GLOBAL_IDS, MatterModel, Specification } from "#model";
9
9
  import { PeerAddress } from "#peer/PeerAddress.js";
10
10
  import { SessionManager } from "#session/SessionManager.js";
@@ -67,6 +67,19 @@ import { ServerSubscriptionConfig } from "./SubscriptionOptions.js";
67
67
 
68
68
  const logger = Logger.get("InteractionServer");
69
69
 
70
+ export interface PeerSubscription {
71
+ subscriptionId: number;
72
+ peerAddress: PeerAddress;
73
+ minIntervalFloorSeconds: number;
74
+ maxIntervalCeilingSeconds: number;
75
+ attributeRequests?: TypeFromSchema<typeof TlvAttributePath>[];
76
+ eventRequests?: TypeFromSchema<typeof TlvEventPath>[];
77
+ isFabricFiltered: boolean;
78
+ maxInterval: number;
79
+ sendInterval: number;
80
+ operationalAddress?: ServerAddressIp;
81
+ }
82
+
70
83
  export interface CommandPath {
71
84
  nodeId?: NodeId;
72
85
  endpointId: EndpointNumber;
@@ -234,6 +247,7 @@ export class InteractionServer implements ProtocolHandler, InteractionRecipient
234
247
  #clientHandler?: ProtocolHandler;
235
248
  readonly #subscriptionConfig: ServerSubscriptionConfig;
236
249
  readonly #maxPathsPerInvoke;
250
+ readonly #subscriptionEstablishmentStarted = Observable<[peerAddress: PeerAddress]>();
237
251
 
238
252
  constructor(context: InteractionContext) {
239
253
  this.#context = context;
@@ -254,6 +268,10 @@ export class InteractionServer implements ProtocolHandler, InteractionRecipient
254
268
  return this.#maxPathsPerInvoke;
255
269
  }
256
270
 
271
+ get subscriptionEstablishmentStarted() {
272
+ return this.#subscriptionEstablishmentStarted;
273
+ }
274
+
257
275
  async onNewExchange(exchange: MessageExchange, message: Message) {
258
276
  // Note - changes here must be copied to TransactionalInteractionServer as it does not call super() to avoid
259
277
  // the stack frame
@@ -543,7 +561,7 @@ export class InteractionServer implements ProtocolHandler, InteractionRecipient
543
561
  exchange: MessageExchange,
544
562
  readRequest: ReadRequest,
545
563
  message: Message,
546
- ): Promise<{ dataReport: DataReport; payload: DataReportPayloadIterator }> {
564
+ ): Promise<{ dataReport: DataReport; payload?: DataReportPayloadIterator }> {
547
565
  const { attributeRequests, eventRequests, isFabricFiltered, interactionModelRevision } = readRequest;
548
566
  logger.debug(
549
567
  `Received read request from ${exchange.channel.name}: attributes:${
@@ -559,10 +577,12 @@ export class InteractionServer implements ProtocolHandler, InteractionRecipient
559
577
  );
560
578
  }
561
579
  if (attributeRequests === undefined && eventRequests === undefined) {
562
- throw new StatusResponseError(
563
- "Only Read requests with attributeRequests or eventRequests are supported right now",
564
- StatusCode.UnsupportedRead,
565
- );
580
+ return {
581
+ dataReport: {
582
+ interactionModelRevision: Specification.INTERACTION_MODEL_REVISION,
583
+ suppressResponse: true,
584
+ },
585
+ };
566
586
  }
567
587
 
568
588
  if (message.packetHeader.sessionType !== SessionType.Unicast) {
@@ -975,7 +995,11 @@ export class InteractionServer implements ProtocolHandler, InteractionRecipient
975
995
 
976
996
  async handleSubscribeRequest(
977
997
  exchange: MessageExchange,
978
- {
998
+ request: SubscribeRequest,
999
+ messenger: InteractionServerMessenger,
1000
+ message: Message,
1001
+ ): Promise<void> {
1002
+ const {
979
1003
  minIntervalFloorSeconds,
980
1004
  maxIntervalCeilingSeconds,
981
1005
  attributeRequests,
@@ -985,10 +1009,7 @@ export class InteractionServer implements ProtocolHandler, InteractionRecipient
985
1009
  keepSubscriptions,
986
1010
  isFabricFiltered,
987
1011
  interactionModelRevision,
988
- }: SubscribeRequest,
989
- messenger: InteractionServerMessenger,
990
- message: Message,
991
- ): Promise<void> {
1012
+ } = request;
992
1013
  logger.debug(
993
1014
  `Received subscribe request from ${exchange.channel.name} (keepSubscriptions=${keepSubscriptions}, isFabricFiltered=${isFabricFiltered})`,
994
1015
  );
@@ -1017,8 +1038,7 @@ export class InteractionServer implements ProtocolHandler, InteractionRecipient
1017
1038
 
1018
1039
  if (!keepSubscriptions) {
1019
1040
  const clearedCount = await this.#context.sessions.clearSubscriptionsForNode(
1020
- fabric.fabricIndex,
1021
- session.peerNodeId,
1041
+ fabric.addressOf(session.peerNodeId),
1022
1042
  true,
1023
1043
  );
1024
1044
  if (clearedCount > 0) {
@@ -1084,6 +1104,71 @@ export class InteractionServer implements ProtocolHandler, InteractionRecipient
1084
1104
  if (this.#nextSubscriptionId === 0xffffffff) this.#nextSubscriptionId = 0;
1085
1105
  const subscriptionId = this.#nextSubscriptionId++;
1086
1106
 
1107
+ this.#subscriptionEstablishmentStarted.emit(session.peerAddress);
1108
+ let subscription: ServerSubscription;
1109
+ try {
1110
+ subscription = await this.#establishSubscription(
1111
+ subscriptionId,
1112
+ request,
1113
+ messenger,
1114
+ session,
1115
+ exchange,
1116
+ message,
1117
+ );
1118
+ } catch (error: any) {
1119
+ logger.error(
1120
+ `Subscription ${subscriptionId} for Session ${session.id}: Error while sending initial data reports`,
1121
+ error,
1122
+ );
1123
+ if (error instanceof StatusResponseError) {
1124
+ logger.info(`Sending status response ${error.code} for interaction error: ${error.message}`);
1125
+ await messenger.sendStatus(error.code, {
1126
+ logContext: {
1127
+ for: "I/SubscriptionSeed-Status",
1128
+ },
1129
+ });
1130
+ }
1131
+ await messenger.close();
1132
+ return; // Make sure to not bubble up the exception
1133
+ }
1134
+
1135
+ const maxInterval = subscription.maxInterval;
1136
+ // Then send the subscription response
1137
+ await messenger.send(
1138
+ MessageType.SubscribeResponse,
1139
+ TlvSubscribeResponse.encode({
1140
+ subscriptionId,
1141
+ maxInterval,
1142
+ interactionModelRevision: Specification.INTERACTION_MODEL_REVISION,
1143
+ }),
1144
+ {
1145
+ logContext: {
1146
+ subId: subscriptionId,
1147
+ maxInterval,
1148
+ },
1149
+ },
1150
+ );
1151
+
1152
+ // When an error occurs while sending the response, the subscription is not yet active and will be cleaned up by GC
1153
+ subscription.activate();
1154
+ }
1155
+
1156
+ async #establishSubscription(
1157
+ id: number,
1158
+ {
1159
+ minIntervalFloorSeconds,
1160
+ maxIntervalCeilingSeconds,
1161
+ attributeRequests,
1162
+ dataVersionFilters,
1163
+ eventRequests,
1164
+ eventFilters,
1165
+ isFabricFiltered,
1166
+ }: SubscribeRequest,
1167
+ messenger: InteractionServerMessenger,
1168
+ session: SecureSession,
1169
+ exchange: MessageExchange,
1170
+ message: Message,
1171
+ ) {
1087
1172
  const context: ServerSubscriptionContext = {
1088
1173
  session,
1089
1174
  structure: this.#endpointStructure,
@@ -1101,7 +1186,7 @@ export class InteractionServer implements ProtocolHandler, InteractionRecipient
1101
1186
  };
1102
1187
 
1103
1188
  const subscription = new ServerSubscription({
1104
- id: subscriptionId,
1189
+ id,
1105
1190
  context,
1106
1191
  criteria: {
1107
1192
  attributeRequests,
@@ -1110,56 +1195,86 @@ export class InteractionServer implements ProtocolHandler, InteractionRecipient
1110
1195
  eventFilters,
1111
1196
  isFabricFiltered,
1112
1197
  },
1113
- minIntervalFloor: minIntervalFloorSeconds,
1114
- maxIntervalCeiling: maxIntervalCeilingSeconds,
1198
+ minIntervalFloorSeconds,
1199
+ maxIntervalCeilingSeconds,
1115
1200
  subscriptionOptions: this.#subscriptionConfig,
1116
1201
  });
1117
1202
 
1118
1203
  try {
1119
1204
  // Send initial data report to prime the subscription with initial data
1120
1205
  await subscription.sendInitialReport(messenger);
1121
- } catch (error: any) {
1122
- logger.error(
1123
- `Subscription ${subscriptionId} for Session ${session.id}: Error while sending initial data reports`,
1124
- error,
1125
- );
1206
+ } catch (error) {
1126
1207
  await subscription.close(); // Cleanup
1127
- if (error instanceof StatusResponseError) {
1128
- logger.info(`Sending status response ${error.code} for interaction error: ${error.message}`);
1129
- await messenger.sendStatus(error.code, {
1130
- logContext: {
1131
- for: "I/SubscriptionSeed-Status",
1132
- },
1133
- });
1134
- }
1135
- await messenger.close();
1136
- return; // Make sure to not bubble up the exception
1208
+ throw error;
1137
1209
  }
1138
1210
 
1139
- const maxInterval = subscription.maxInterval;
1140
1211
  logger.info(
1141
- `Successfully created subscription ${subscriptionId} for Session ${
1212
+ `Successfully created subscription ${id} for Session ${
1142
1213
  session.id
1143
- }. Updates: ${minIntervalFloorSeconds} - ${maxIntervalCeilingSeconds} => ${maxInterval} seconds (sendInterval = ${subscription.sendInterval} seconds)`,
1214
+ }. Updates: ${minIntervalFloorSeconds} - ${maxIntervalCeilingSeconds} => ${subscription.maxInterval} seconds (sendInterval = ${subscription.sendInterval} seconds)`,
1144
1215
  );
1145
- // Then send the subscription response
1146
- await messenger.send(
1147
- MessageType.SubscribeResponse,
1148
- TlvSubscribeResponse.encode({
1149
- subscriptionId,
1150
- maxInterval,
1151
- interactionModelRevision: Specification.INTERACTION_MODEL_REVISION,
1152
- }),
1153
- {
1154
- logContext: {
1155
- subId: subscriptionId,
1156
- maxInterval,
1157
- },
1158
- },
1216
+ return subscription;
1217
+ }
1218
+
1219
+ async establishFormerSubscription(
1220
+ {
1221
+ subscriptionId,
1222
+ attributeRequests,
1223
+ eventRequests,
1224
+ isFabricFiltered,
1225
+ minIntervalFloorSeconds,
1226
+ maxIntervalCeilingSeconds,
1227
+ maxInterval,
1228
+ sendInterval,
1229
+ }: PeerSubscription,
1230
+ session: SecureSession,
1231
+ ) {
1232
+ const exchange = this.#context.initiateExchange(session.peerAddress, INTERACTION_PROTOCOL_ID);
1233
+ const message = {} as Message;
1234
+ logger.debug(
1235
+ `Send DataReports to re-establish subscription ${subscriptionId} to `,
1236
+ Diagnostic.dict({ isFabricFiltered, maxInterval, sendInterval }),
1159
1237
  );
1238
+ const context: ServerSubscriptionContext = {
1239
+ session,
1240
+ structure: this.#endpointStructure,
1160
1241
 
1161
- // When an error occurs while sending the response, the subscription is not yet active and will be cleaned up by GC
1162
- subscription.activateSendingUpdates();
1242
+ readAttribute: (path, attribute, offline) =>
1243
+ this.readAttribute(path, attribute, exchange, isFabricFiltered, message, offline),
1244
+
1245
+ readEndpointAttributesForSubscription: attributes =>
1246
+ this.readEndpointAttributesForSubscription(attributes, exchange, isFabricFiltered, message),
1247
+
1248
+ readEvent: (path, event, eventFilters) =>
1249
+ this.readEvent(path, eventFilters, event, exchange, isFabricFiltered, message),
1250
+
1251
+ initiateExchange: (address: PeerAddress, protocolId) => this.#context.initiateExchange(address, protocolId),
1252
+ };
1253
+
1254
+ const subscription = new ServerSubscription({
1255
+ id: subscriptionId,
1256
+ context,
1257
+ minIntervalFloorSeconds,
1258
+ maxIntervalCeilingSeconds,
1259
+ criteria: {
1260
+ attributeRequests,
1261
+ eventRequests,
1262
+ isFabricFiltered,
1263
+ },
1264
+ subscriptionOptions: this.#subscriptionConfig,
1265
+ useAsMaxInterval: maxInterval,
1266
+ useAsSendInterval: sendInterval,
1267
+ });
1268
+
1269
+ try {
1270
+ // Send initial data report to prime the subscription with initial data
1271
+ await subscription.sendInitialReport(new InteractionServerMessenger(exchange));
1272
+ subscription.activate();
1273
+ } catch (error) {
1274
+ await subscription.close(); // Cleanup
1275
+ throw error;
1276
+ }
1277
+ return subscription;
1163
1278
  }
1164
1279
 
1165
1280
  async handleInvokeRequest(