@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.
- package/dist/cjs/interaction/InteractionClient.d.ts +6 -2
- package/dist/cjs/interaction/InteractionClient.d.ts.map +1 -1
- package/dist/cjs/interaction/InteractionClient.js +3 -2
- package/dist/cjs/interaction/InteractionClient.js.map +1 -1
- package/dist/cjs/interaction/InteractionMessenger.d.ts +1 -1
- package/dist/cjs/interaction/InteractionMessenger.d.ts.map +1 -1
- package/dist/cjs/interaction/InteractionServer.d.ts +19 -2
- package/dist/cjs/interaction/InteractionServer.d.ts.map +1 -1
- package/dist/cjs/interaction/InteractionServer.js +123 -45
- package/dist/cjs/interaction/InteractionServer.js.map +1 -1
- package/dist/cjs/interaction/ServerSubscription.d.ts +8 -16
- package/dist/cjs/interaction/ServerSubscription.d.ts.map +1 -1
- package/dist/cjs/interaction/ServerSubscription.js +78 -55
- package/dist/cjs/interaction/ServerSubscription.js.map +1 -1
- package/dist/cjs/interaction/Subscription.d.ts +7 -1
- package/dist/cjs/interaction/Subscription.d.ts.map +1 -1
- package/dist/cjs/interaction/Subscription.js +25 -2
- package/dist/cjs/interaction/Subscription.js.map +1 -1
- package/dist/cjs/peer/ControllerCommissioner.d.ts.map +1 -1
- package/dist/cjs/peer/ControllerCommissioner.js +4 -5
- package/dist/cjs/peer/ControllerCommissioner.js.map +1 -1
- package/dist/cjs/peer/PeerAddress.d.ts +5 -0
- package/dist/cjs/peer/PeerAddress.d.ts.map +1 -1
- package/dist/cjs/peer/PeerAddress.js +13 -1
- package/dist/cjs/peer/PeerAddress.js.map +1 -1
- package/dist/cjs/peer/PeerSet.d.ts +6 -2
- package/dist/cjs/peer/PeerSet.d.ts.map +1 -1
- package/dist/cjs/peer/PeerSet.js +18 -8
- package/dist/cjs/peer/PeerSet.js.map +1 -1
- package/dist/cjs/securechannel/SecureChannelMessenger.d.ts +1 -0
- package/dist/cjs/securechannel/SecureChannelMessenger.d.ts.map +1 -1
- package/dist/cjs/securechannel/SecureChannelMessenger.js +3 -0
- package/dist/cjs/securechannel/SecureChannelMessenger.js.map +1 -1
- package/dist/cjs/session/SecureSession.d.ts +1 -1
- package/dist/cjs/session/SecureSession.d.ts.map +1 -1
- package/dist/cjs/session/SecureSession.js +3 -2
- package/dist/cjs/session/SecureSession.js.map +1 -1
- package/dist/cjs/session/Session.d.ts +1 -0
- package/dist/cjs/session/Session.d.ts.map +1 -1
- package/dist/cjs/session/Session.js +1 -0
- package/dist/cjs/session/Session.js.map +1 -1
- package/dist/cjs/session/SessionManager.d.ts +2 -2
- package/dist/cjs/session/SessionManager.d.ts.map +1 -1
- package/dist/cjs/session/SessionManager.js +5 -9
- package/dist/cjs/session/SessionManager.js.map +1 -1
- package/dist/esm/interaction/InteractionClient.d.ts +6 -2
- package/dist/esm/interaction/InteractionClient.d.ts.map +1 -1
- package/dist/esm/interaction/InteractionClient.js +3 -2
- package/dist/esm/interaction/InteractionClient.js.map +1 -1
- package/dist/esm/interaction/InteractionMessenger.d.ts +1 -1
- package/dist/esm/interaction/InteractionMessenger.d.ts.map +1 -1
- package/dist/esm/interaction/InteractionServer.d.ts +19 -2
- package/dist/esm/interaction/InteractionServer.d.ts.map +1 -1
- package/dist/esm/interaction/InteractionServer.js +124 -46
- package/dist/esm/interaction/InteractionServer.js.map +1 -1
- package/dist/esm/interaction/ServerSubscription.d.ts +8 -16
- package/dist/esm/interaction/ServerSubscription.d.ts.map +1 -1
- package/dist/esm/interaction/ServerSubscription.js +78 -55
- package/dist/esm/interaction/ServerSubscription.js.map +1 -1
- package/dist/esm/interaction/Subscription.d.ts +7 -1
- package/dist/esm/interaction/Subscription.d.ts.map +1 -1
- package/dist/esm/interaction/Subscription.js +26 -3
- package/dist/esm/interaction/Subscription.js.map +1 -1
- package/dist/esm/peer/ControllerCommissioner.d.ts.map +1 -1
- package/dist/esm/peer/ControllerCommissioner.js +4 -5
- package/dist/esm/peer/ControllerCommissioner.js.map +1 -1
- package/dist/esm/peer/PeerAddress.d.ts +5 -0
- package/dist/esm/peer/PeerAddress.d.ts.map +1 -1
- package/dist/esm/peer/PeerAddress.js +13 -1
- package/dist/esm/peer/PeerAddress.js.map +1 -1
- package/dist/esm/peer/PeerSet.d.ts +6 -2
- package/dist/esm/peer/PeerSet.d.ts.map +1 -1
- package/dist/esm/peer/PeerSet.js +18 -8
- package/dist/esm/peer/PeerSet.js.map +1 -1
- package/dist/esm/securechannel/SecureChannelMessenger.d.ts +1 -0
- package/dist/esm/securechannel/SecureChannelMessenger.d.ts.map +1 -1
- package/dist/esm/securechannel/SecureChannelMessenger.js +3 -0
- package/dist/esm/securechannel/SecureChannelMessenger.js.map +1 -1
- package/dist/esm/session/SecureSession.d.ts +1 -1
- package/dist/esm/session/SecureSession.d.ts.map +1 -1
- package/dist/esm/session/SecureSession.js +3 -2
- package/dist/esm/session/SecureSession.js.map +1 -1
- package/dist/esm/session/Session.d.ts +1 -0
- package/dist/esm/session/Session.d.ts.map +1 -1
- package/dist/esm/session/Session.js +1 -0
- package/dist/esm/session/Session.js.map +1 -1
- package/dist/esm/session/SessionManager.d.ts +2 -2
- package/dist/esm/session/SessionManager.d.ts.map +1 -1
- package/dist/esm/session/SessionManager.js +6 -10
- package/dist/esm/session/SessionManager.js.map +1 -1
- package/package.json +6 -6
- package/src/interaction/InteractionClient.ts +8 -3
- package/src/interaction/InteractionMessenger.ts +1 -1
- package/src/interaction/InteractionServer.ts +165 -50
- package/src/interaction/ServerSubscription.ts +87 -63
- package/src/interaction/Subscription.ts +34 -6
- package/src/peer/ControllerCommissioner.ts +4 -5
- package/src/peer/PeerAddress.ts +14 -0
- package/src/peer/PeerSet.ts +31 -9
- package/src/securechannel/SecureChannelMessenger.ts +4 -0
- package/src/session/SecureSession.ts +3 -2
- package/src/session/Session.ts +1 -0
- 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(
|
|
419
|
+
async clearSubscriptionsForNode(peerAddress, flushSubscriptions) {
|
|
419
420
|
let clearedCount = 0;
|
|
420
421
|
for (const session of this.#sessions) {
|
|
421
|
-
if (session.
|
|
422
|
-
|
|
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": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,qBAAqB;AAC9B;AAAA,EACI;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,OACG;AAEP,SAAS,qBAAqB;AAC9B,
|
|
4
|
+
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,qBAAqB;AAC9B;AAAA,EACI;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,OACG;AAEP,SAAS,qBAAqB;AAC9B,SAAS,aAAa,sBAAsB;AAC5C,SAA+B,8BAAqD,cAAc;AAElG,SAAS,sBAAsB;AAC/B,SAAS,uBAAuB;AAChC,SAAS,qBAAqB;AAC9B;AAAA,EACI;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,OAGG;AAEP,MAAM,SAAS,OAAO,IAAI,gBAAgB;AAE1C,MAAM,6BAA6B;AAAA,EAC/B,gBAAgB;AAAA,EAChB,kBAAkB;AAAA,EAClB,mBAAmB;AAAA,EACnB,mBAAmB,cAAc;AAAA,EACjC,0BAA0B,cAAc;AAAA,EACxC,sBAAsB,cAAc;AAAA,EACpC,mBAAmB;AACvB;AAEO,MAAM,8BAA8B;AAoDpC,MAAM,eAAe;AAAA,EACf;AAAA,EACA,oBAAoB,oBAAI,IAA6B;AAAA,EACrD,YAAY,IAAI,SAAwB;AAAA,EACjD,iBAAiB,OAAO,gBAAgB;AAAA,EACxC,qBAAqB,IAAI,eAAiC;AAAA,EACjD,mCAAmC,IAAI,eAAe;AAAA,EACtD,wBAAwB,WAAiE;AAAA,EAClG;AAAA,EACS,uBAAuB,WAA+B;AAAA,EACtD;AAAA,EACA,aAAa,IAAI,cAAc;AAAA,EAC/B,2BAA2B,IAAI,MAAM,IAAI;AAAA,EAElD,YAAY,SAAgC;AACxC,SAAK,WAAW;AAChB,SAAK,qBAAqB,EAAE,GAAG,4BAA4B,GAAG,QAAQ,WAAW;AAGjF,SAAK,WAAW;AAAA,MAAG,QAAQ,QAAQ,OAAO;AAAA,MAAS,OAAM,WACrD,KAAK,iCAAiC,MAAM;AAAA,IAChD;AAEA,SAAK,gBAAgB,aAAa,MAAM,MAAM,KAAK,YAAY,CAAC;AAAA,EACpE;AAAA,EAEA,QAAQ,cAAc,MAAM,EAAE,KAAkB;AAC5C,UAAM,WAAW,IAAI,eAAe;AAAA,MAChC,SAAS,IAAI,IAAI,cAAc,EAAE,cAAc,UAAU;AAAA,MACzD,SAAS,IAAI,IAAI,aAAa;AAAA,IAClC,CAAC;AACD,QAAI,IAAI,gBAAgB,QAAQ;AAChC,WAAO;AAAA,EACX;AAAA,EAEA,IAAI,eAAe;AACf,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAI,UAAU;AACV,WAAO,KAAK;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,WAAW;AACX,WAAO,KAAK;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,mBAAmB;AACnB,WAAO,KAAK;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,IAAI,oBAAuC;AACvC,WAAO,KAAK;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,IAAI,kBAAkB,YAAwC;AAC1D,SAAK,qBAAqB;AAAA,MACtB,GAAG,KAAK;AAAA,MACR,GAAG;AAAA,IACP;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,uBAAuB;AACvB,WAAO,KAAK;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,sBAAsB;AACtB,WAAO,KAAK;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA,EAKA,UAAU,SAAoC;AAC1C,WAAO,KAAK,SAAS,QAAQ,IAAI,OAAO;AAAA,EAC5C;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,QAAQ;AACR,WAAO,KAAK,SAAS;AAAA,EACzB;AAAA,EAEA,sBAAsB,SAInB;AACC,SAAK,cAAc,OAAO;AAE1B,UAAM,EAAE,iBAAiB,mBAAmB,YAAY,IAAI;AAC5D,QAAI,oBAAoB,QAAW;AAC/B,UAAI,KAAK,kBAAkB,IAAI,eAAe,GAAG;AAC7C,cAAM,IAAI,gBAAgB,+BAA+B,eAAe,kBAAkB;AAAA,MAC9F;AAAA,IACJ;AACA,WAAO,MAAM;AACT,YAAM,UAAU,IAAI,gBAAgB;AAAA,QAChC,SAAS;AAAA,QACT,gBAAgB,KAAK;AAAA,QACrB;AAAA,QACA;AAAA,QACA,aAAa,eAAe;AAAA,MAChC,CAAC;AAED,YAAM,kBAAkB,QAAQ;AAChC,UAAI,KAAK,kBAAkB,IAAI,eAAe,EAAG;AAEjD,WAAK,kBAAkB,IAAI,iBAAiB,OAAO;AACnD,aAAO;AAAA,IACX;AAAA,EACJ;AAAA,EAEA,MAAM,oBAAoB,MAWvB;AACC,UAAM,KAAK;AAEX,UAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ,IAAI;AACJ,UAAM,UAAU,MAAM,cAAc,OAAO;AAAA,MACvC,SAAS;AAAA,MACT,IAAI;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ,CAAC;AAED,UAAM,uBAAuB,CAAC,iBAA+B;AACzD,UAAI,QAAQ,WAAW;AACnB;AAAA,MACJ;AAEA,WAAK,sBAAsB,KAAK,SAAS,YAAY;AAAA,IACzD;AAEA,YAAQ,cAAc,MAAM,GAAG,oBAAoB;AACnD,YAAQ,cAAc,QAAQ,GAAG,oBAAoB;AAErD,SAAK,UAAU,IAAI,OAAO;AAE1B,WAAO;AAAA,EACX;AAAA,EAEA,MAAM,uBAAuB,SAAsB;AAC/C,UAAM,KAAK;AAEX,SAAK,mBAAmB,OAAO,OAAO;AACtC,UAAM,KAAK,wBAAwB;AAAA,EACvC;AAAA,EAEA,MAAM,iCAAiC,QAAgB;AACnD,UAAM,KAAK;AAEX,eAAW,WAAW,KAAK,mBAAmB,KAAK,GAAG;AAClD,UAAI,QAAQ,gBAAgB,OAAO,aAAa;AAC5C,aAAK,mBAAmB,OAAO,OAAO;AAAA,MAC1C;AAAA,IACJ;AAEA,UAAM,KAAK,wBAAwB;AAAA,EACvC;AAAA,EAEA,4BAA4B;AACxB,SAAK,cAAc,OAAO;AAE1B,QAAI,gBAA2C;AAC/C,eAAW,WAAW,KAAK,WAAW;AAClC,UAAI,CAAC,iBAAiB,QAAQ,kBAAkB,cAAc,iBAAiB;AAC3E,wBAAgB;AAAA,MACpB;AAAA,IACJ;AACA,QAAI,kBAAkB,QAAW;AAC7B,YAAM,IAAI,gBAAgB,0DAA0D;AAAA,IACxF;AACA,WAAO;AAAA,EACX;AAAA,EAEA,MAAM,4BAA4B;AAC9B,UAAM,KAAK;AAEX,aAAS,IAAI,GAAG,IAAI,OAAQ,KAAK;AAC7B,YAAM,KAAK,KAAK;AAChB,WAAK,iBAAkB,KAAK,iBAAiB,IAAK;AAClD,UAAI,KAAK,mBAAmB,EAAG,MAAK;AAEpC,UAAI,KAAK,WAAW,EAAE,MAAM,QAAW;AACnC,eAAO;AAAA,MACX;AAAA,IACJ;AAGA,UAAM,gBAAgB,KAAK,0BAA0B;AACrD,UAAM,cAAc,IAAI,MAAM,KAAK;AACnC,SAAK,iBAAiB,cAAc;AACpC,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,WAAW,WAAmB;AAC1B,SAAK,cAAc,OAAO;AAE1B,WAAO,KAAK,UAAU,IAAI,MAAM,SAAS;AAAA,EAC7C;AAAA,EAEA,iBAAiB;AACb,SAAK,cAAc,OAAO;AAE1B,WAAO,CAAC,GAAG,KAAK,SAAS,EAAE;AAAA,MACvB,aAAW,QAAQ,YAAY,QAAQ,UAAU,CAAC,QAAQ;AAAA,IAC9D;AAAA,EACJ;AAAA,EAEA,kBAAkB,SAAsB;AACpC,SAAK,cAAc,OAAO;AAG1B,WAAO,CAAC,GAAG,KAAK,SAAS,EAAE,KAAK,aAAW;AACvC,UAAI,CAAC,QAAQ,SAAU,QAAO;AAC9B,YAAM,gBAAgB;AACtB,aAAO,cAAc,OAAO,OAAO;AAAA,IACvC,CAAC;AAAA,EACL;AAAA,EAEA,MAAM,yBAAyB,SAAsB,YAAY,OAAO,6BAAsC;AAC1G,UAAM,KAAK;AAEX,eAAW,WAAW,KAAK,WAAW;AAClC,UAAI,CAAC,QAAQ,SAAU;AACvB,UAAI,gCAAgC,UAAa,QAAQ,aAAa,4BAA6B;AACnG,YAAM,gBAAgB;AACtB,UAAI,cAAc,OAAO,OAAO,GAAG;AAC/B,cAAM,cAAc,QAAQ,WAAW,KAAK;AAC5C,aAAK,UAAU,OAAO,OAAO;AAAA,MACjC;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,mBAAmB,cAAuB;AACtC,SAAK,cAAc,OAAO;AAE1B,QAAI,iBAAiB,QAAW;AAC5B,aAAO,KAAK,kBAAkB,IAAI,OAAO,mBAAmB;AAAA,IAChE;AACA,WAAO,KAAK,kBAAkB,IAAI,YAAY;AAAA,EAClD;AAAA,EAEA,iBAAiB,SAAiB,gBAAwB;AACtD,SAAK,cAAc,OAAO;AAO1B,UAAM,IAAI,MAAM,mBAAmB,OAAO,IAAI,cAAc,EAAE;AAAA,EAClE;AAAA,EAEA,yBAAyB,cAA0B;AAC/C,SAAK,cAAc,OAAO;AAC1B,WAAO,CAAC,GAAG,KAAK,mBAAmB,OAAO,CAAC,EAAE,KAAK,YAAU,MAAM,SAAS,OAAO,cAAc,YAAY,CAAC;AAAA,EACjH;AAAA,EAEA,8BAA8B,SAAsB;AAChD,SAAK,cAAc,OAAO;AAC1B,WAAO,KAAK,mBAAmB,IAAI,OAAO;AAAA,EAC9C;AAAA,EAEA,MAAM,qBAAqB,kBAAoC;AAC3D,UAAM,KAAK;AACX,SAAK,mBAAmB,IAAI,iBAAiB,OAAO,UAAU,iBAAiB,UAAU,GAAG,gBAAgB;AAC5G,UAAM,KAAK,wBAAwB;AAAA,EACvC;AAAA,EAEA,MAAM,0BAA0B;AAC5B,UAAM,KAAK;AACX,UAAM,KAAK,SAAS,QAAQ;AAAA,MACxB;AAAA,MACA,CAAC,GAAG,KAAK,kBAAkB,EAAE;AAAA,QACzB,CAAC;AAAA,UACG;AAAA,UACA,EAAE,cAAc,cAAc,YAAY,QAAQ,mBAAmB,sBAAsB;AAAA,QAC/F,OACK;AAAA,UACG,QAAQ,QAAQ;AAAA,UAChB;AAAA,UACA;AAAA,UACA,UAAU,OAAO;AAAA,UACjB;AAAA,UACA;AAAA,UACA;AAAA,QACJ;AAAA,MACR;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,MAAM,cAAc;AAChB,UAAM,KAAK,SAAS,QAAQ;AAE5B,UAAM,0BAA0B,MAAM,KAAK,SAAS,QAAQ;AAAA,MACxD;AAAA,MACA,CAAC;AAAA,IACL;AAEA,4BAAwB;AAAA,MACpB,CAAC;AAAA,QACG;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,mBAAmB;AAAA,UACf;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACJ,IAAI,CAAC;AAAA,QACL;AAAA,MACJ,MAAM;AACF,cAAM,SAAS,KAAK,SAAS,QAAQ,KAAK,CAAAA,YAAUA,QAAO,aAAa,QAAQ;AAChF,eAAO;AAAA,UACH;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA,QAAQ;AAAA,QACZ;AACA,YAAI,CAAC,QAAQ;AACT,iBAAO,MAAM,0CAA0C,QAAQ;AAC/D;AAAA,QACJ;AACA,aAAK,mBAAmB,IAAI,OAAO,UAAU,MAAM,GAAG;AAAA,UAClD;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA,mBAAmB;AAAA;AAAA,YAEf,gBAAgB,kBAAkB;AAAA,YAClC,kBAAkB,oBAAoB;AAAA,YACtC,mBAAmB,qBAAqB;AAAA,YACxC,mBAAmB,qBAAqB;AAAA,YACxC,0BAA0B,4BAA4B;AAAA,YACtD,sBAAsB,wBAAwB;AAAA,YAC9C,mBAAmB,qBAAqB;AAAA,UAC5C;AAAA,UACA;AAAA,QACJ,CAAC;AAAA,MACL;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,8BAA8B;AAC1B,SAAK,cAAc,OAAO;AAC1B,WAAO,CAAC,GAAG,KAAK,SAAS,EACpB,OAAO,aAAW,QAAQ,YAAY,CAAC,QAAQ,MAAM,EACrD,IAAI,cAAY;AAAA,MACb,MAAM,QAAQ;AAAA,MACd,QAAQ,QAAQ;AAAA,MAChB,YAAY,QAAQ;AAAA,MACpB,QAAQ,mBAAmB,gBAAgB,QAAQ,QAAQ,sBAAsB;AAAA,MACjF,cAAc,QAAQ,aAAa;AAAA,MACnC,QAAQ,QAAQ;AAAA,MAChB,0BAA0B,mBAAmB,gBAAgB,QAAQ,YAAY;AAAA,MACjF,qBAAqB,mBAAmB,gBAAgB,QAAQ,kBAAkB;AAAA,MAClF,6BAA6B,mBAAmB,gBAAgB,QAAQ,cAAc,OAAO;AAAA,IACjG,EAAE;AAAA,EACV;AAAA,EAEA,MAAM,QAAQ;AACV,QAAI,KAAK,cAAc,WAAW,UAAU,OAAO,cAAc;AAC7D,YAAM,KAAK;AAAA,IACf;AAEA,UAAM,KAAK;AAEX,SAAK,WAAW,MAAM;AACtB,UAAM,KAAK,wBAAwB;AACnC,UAAM,gBAAgB,KAAK,UAAU,IAAI,OAAM,YAAW;AACtD,YAAM,SAAS,IAAI,KAAK;AACxB,WAAK,UAAU,OAAO,OAAO;AAAA,IACjC,CAAC;AACD,eAAW,WAAW,KAAK,kBAAkB,OAAO,GAAG;AACnD,oBAAc,KAAK,SAAS,IAAI,CAAC;AAAA,IACrC;AACA,UAAM,qBAAqB,WAAW,eAAe,wBAAwB,EAAE;AAAA,MAAM,WACjF,OAAO,MAAM,KAAK;AAAA,IACtB;AAAA,EACJ;AAAA,EAEA,MAAM,QAAQ;AACV,UAAM,KAAK,MAAM;AACjB,UAAM,KAAK,SAAS,QAAQ,MAAM;AAClC,SAAK,mBAAmB,MAAM;AAAA,EAClC;AAAA,EAEA,yBAAyB;AACrB,SAAK,yBAAyB,IAAI,YAAY;AAC1C,iBAAW,WAAW,KAAK,WAAW;AAClC,mBAAW,gBAAgB,QAAQ,eAAe;AAC9C,gBAAM,aAAa,OAAO;AAAA,QAC9B;AAAA,MACJ;AAAA,IACJ,CAAC;AAAA,EACL;AAAA;AAAA,EAGA,MAAM,0BAA0B,aAA0B,oBAA8B;AACpF,QAAI,eAAe;AACnB,eAAW,WAAW,KAAK,WAAW;AAClC,UAAI,YAAY,GAAG,QAAQ,aAAa,WAAW,GAAG;AAClD,wBAAgB,MAAM,QAAQ,mBAAmB,oBAAoB,IAAI;AAAA,MAC7E;AAAA,IACJ;AACA,WAAO;AAAA,EACX;AACJ;",
|
|
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-
|
|
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-
|
|
44
|
-
"@matter/model": "0.12.4-alpha.0-
|
|
45
|
-
"@matter/types": "0.12.4-alpha.0-
|
|
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-
|
|
50
|
-
"@matter/testing": "0.12.4-alpha.0-
|
|
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
|
-
|
|
94
|
-
|
|
94
|
+
options: {
|
|
95
|
+
discoveryOptions: DiscoveryOptions;
|
|
96
|
+
allowUnknownPeer?: boolean;
|
|
97
|
+
operationalAddress?: ServerAddressIp;
|
|
98
|
+
},
|
|
95
99
|
): Promise<InteractionClient> {
|
|
96
|
-
await this.#peers.ensureConnection(address,
|
|
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
|
|
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
|
|
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
|
-
|
|
563
|
-
|
|
564
|
-
|
|
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
|
-
}
|
|
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.
|
|
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
|
|
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
|
-
|
|
1114
|
-
|
|
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
|
|
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
|
-
|
|
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 ${
|
|
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
|
-
|
|
1146
|
-
|
|
1147
|
-
|
|
1148
|
-
|
|
1149
|
-
|
|
1150
|
-
|
|
1151
|
-
|
|
1152
|
-
|
|
1153
|
-
|
|
1154
|
-
|
|
1155
|
-
|
|
1156
|
-
|
|
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
|
-
|
|
1162
|
-
|
|
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(
|