@matter/protocol 0.16.0-alpha.0-20251203-aaf94bca8 → 0.16.0-alpha.0-20251207-37e501b18
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/action/client/ClientInteraction.d.ts.map +1 -1
- package/dist/cjs/action/client/ClientInteraction.js +82 -34
- package/dist/cjs/action/client/ClientInteraction.js.map +2 -2
- package/dist/cjs/action/client/subscription/ClientSubscription.d.ts +10 -5
- package/dist/cjs/action/client/subscription/ClientSubscription.d.ts.map +1 -1
- package/dist/cjs/action/client/subscription/ClientSubscription.js +21 -1
- package/dist/cjs/action/client/subscription/ClientSubscription.js.map +2 -2
- package/dist/cjs/action/client/subscription/ClientSubscriptionHandler.js +2 -3
- package/dist/cjs/action/client/subscription/ClientSubscriptionHandler.js.map +1 -1
- package/dist/cjs/action/client/subscription/ClientSubscriptions.d.ts +4 -2
- package/dist/cjs/action/client/subscription/ClientSubscriptions.d.ts.map +1 -1
- package/dist/cjs/action/client/subscription/ClientSubscriptions.js +68 -8
- package/dist/cjs/action/client/subscription/ClientSubscriptions.js.map +1 -1
- package/dist/cjs/action/client/subscription/PeerSubscription.d.ts +0 -1
- package/dist/cjs/action/client/subscription/PeerSubscription.d.ts.map +1 -1
- package/dist/cjs/action/client/subscription/PeerSubscription.js +1 -2
- package/dist/cjs/action/client/subscription/PeerSubscription.js.map +1 -1
- package/dist/cjs/action/client/subscription/SustainedSubscription.d.ts +0 -2
- package/dist/cjs/action/client/subscription/SustainedSubscription.d.ts.map +1 -1
- package/dist/cjs/action/client/subscription/SustainedSubscription.js +2 -4
- package/dist/cjs/action/client/subscription/SustainedSubscription.js.map +1 -1
- package/dist/cjs/action/request/Invoke.js +2 -2
- package/dist/cjs/action/request/Invoke.js.map +1 -1
- package/dist/cjs/action/server/AttributeReadResponse.d.ts.map +1 -1
- package/dist/cjs/action/server/AttributeReadResponse.js +78 -25
- package/dist/cjs/action/server/AttributeReadResponse.js.map +1 -1
- package/dist/cjs/action/server/AttributeWriteResponse.d.ts.map +1 -1
- package/dist/cjs/action/server/AttributeWriteResponse.js +70 -17
- package/dist/cjs/action/server/AttributeWriteResponse.js.map +1 -1
- package/dist/cjs/action/server/CommandInvokeResponse.d.ts.map +1 -1
- package/dist/cjs/action/server/CommandInvokeResponse.js +83 -30
- package/dist/cjs/action/server/CommandInvokeResponse.js.map +1 -1
- package/dist/cjs/action/server/DataResponse.d.ts +1 -0
- package/dist/cjs/action/server/DataResponse.d.ts.map +1 -1
- package/dist/cjs/action/server/DataResponse.js +3 -0
- package/dist/cjs/action/server/DataResponse.js.map +1 -1
- package/dist/cjs/action/server/ServerInteraction.d.ts.map +1 -1
- package/dist/cjs/action/server/ServerInteraction.js +4 -4
- package/dist/cjs/action/server/ServerInteraction.js.map +1 -1
- package/dist/cjs/advertisement/Advertisement.d.ts.map +1 -1
- package/dist/cjs/advertisement/Advertisement.js +66 -14
- package/dist/cjs/advertisement/Advertisement.js.map +1 -1
- package/dist/cjs/advertisement/Advertiser.d.ts +4 -1
- package/dist/cjs/advertisement/Advertiser.d.ts.map +1 -1
- package/dist/cjs/advertisement/Advertiser.js +63 -2
- package/dist/cjs/advertisement/Advertiser.js.map +1 -1
- package/dist/cjs/advertisement/ble/BleAdvertiser.d.ts +6 -1
- package/dist/cjs/advertisement/ble/BleAdvertiser.d.ts.map +1 -1
- package/dist/cjs/advertisement/ble/BleAdvertiser.js +1 -1
- package/dist/cjs/advertisement/ble/BleAdvertiser.js.map +1 -1
- package/dist/cjs/advertisement/mdns/MdnsAdvertiser.d.ts +5 -1
- package/dist/cjs/advertisement/mdns/MdnsAdvertiser.d.ts.map +1 -1
- package/dist/cjs/advertisement/mdns/MdnsAdvertiser.js +1 -1
- package/dist/cjs/advertisement/mdns/MdnsAdvertiser.js.map +1 -1
- package/dist/cjs/certificate/kinds/definitions/asn.js +1 -1
- package/dist/cjs/certificate/kinds/definitions/asn.js.map +1 -1
- package/dist/cjs/certificate/kinds/definitions/attestation.d.ts.map +1 -1
- package/dist/cjs/cluster/client/AttributeClient.d.ts.map +1 -1
- package/dist/cjs/cluster/client/AttributeClient.js +2 -2
- package/dist/cjs/cluster/client/AttributeClient.js.map +1 -1
- package/dist/cjs/codec/MessageCodec.d.ts +8 -1
- package/dist/cjs/codec/MessageCodec.d.ts.map +1 -1
- package/dist/cjs/codec/MessageCodec.js +38 -28
- package/dist/cjs/codec/MessageCodec.js.map +2 -2
- package/dist/cjs/common/FailsafeContext.d.ts +8 -9
- package/dist/cjs/common/FailsafeContext.d.ts.map +1 -1
- package/dist/cjs/common/FailsafeContext.js +27 -33
- package/dist/cjs/common/FailsafeContext.js.map +1 -1
- package/dist/cjs/common/FailsafeTimer.d.ts +4 -3
- package/dist/cjs/common/FailsafeTimer.d.ts.map +1 -1
- package/dist/cjs/common/FailsafeTimer.js +4 -4
- package/dist/cjs/common/FailsafeTimer.js.map +1 -1
- package/dist/cjs/common/Mark.d.ts +17 -0
- package/dist/cjs/common/Mark.d.ts.map +1 -0
- package/dist/cjs/{peer/OperationalPeer.js → common/Mark.js} +19 -3
- package/dist/cjs/common/Mark.js.map +6 -0
- package/dist/cjs/common/index.d.ts +1 -0
- package/dist/cjs/common/index.d.ts.map +1 -1
- package/dist/cjs/common/index.js +1 -0
- package/dist/cjs/common/index.js.map +1 -1
- package/dist/cjs/fabric/Fabric.d.ts +16 -8
- package/dist/cjs/fabric/Fabric.d.ts.map +1 -1
- package/dist/cjs/fabric/Fabric.js +35 -18
- package/dist/cjs/fabric/Fabric.js.map +1 -1
- package/dist/cjs/fabric/FabricAuthority.d.ts +2 -2
- package/dist/cjs/fabric/FabricAuthority.d.ts.map +1 -1
- package/dist/cjs/fabric/FabricAuthority.js +3 -3
- package/dist/cjs/fabric/FabricAuthority.js.map +1 -1
- package/dist/cjs/fabric/FabricManager.d.ts +10 -14
- package/dist/cjs/fabric/FabricManager.d.ts.map +1 -1
- package/dist/cjs/fabric/FabricManager.js +44 -40
- package/dist/cjs/fabric/FabricManager.js.map +2 -2
- package/dist/cjs/index.d.ts +1 -1
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/interaction/AttributeDataEncoder.d.ts +1 -1
- package/dist/cjs/interaction/InteractionClient.d.ts +2 -2
- package/dist/cjs/interaction/InteractionClient.d.ts.map +1 -1
- package/dist/cjs/interaction/InteractionClient.js +39 -22
- package/dist/cjs/interaction/InteractionClient.js.map +1 -1
- package/dist/cjs/interaction/InteractionMessenger.d.ts +2 -2
- package/dist/cjs/interaction/InteractionMessenger.d.ts.map +1 -1
- package/dist/cjs/interaction/InteractionMessenger.js +35 -27
- package/dist/cjs/interaction/InteractionMessenger.js.map +1 -1
- package/dist/cjs/interaction/Subscription.d.ts +16 -37
- package/dist/cjs/interaction/Subscription.d.ts.map +1 -1
- package/dist/cjs/interaction/Subscription.js +15 -68
- package/dist/cjs/interaction/Subscription.js.map +2 -2
- package/dist/cjs/interaction/SubscriptionClient.d.ts +2 -2
- package/dist/cjs/interaction/SubscriptionClient.d.ts.map +1 -1
- package/dist/cjs/interaction/SubscriptionClient.js +2 -2
- package/dist/cjs/interaction/SubscriptionClient.js.map +1 -1
- package/dist/cjs/mdns/MdnsClient.d.ts +10 -10
- package/dist/cjs/mdns/MdnsClient.d.ts.map +1 -1
- package/dist/cjs/mdns/MdnsClient.js +165 -80
- package/dist/cjs/mdns/MdnsClient.js.map +1 -1
- package/dist/cjs/mdns/MdnsServer.d.ts +2 -2
- package/dist/cjs/mdns/MdnsServer.d.ts.map +1 -1
- package/dist/cjs/mdns/MdnsServer.js +173 -94
- package/dist/cjs/mdns/MdnsServer.js.map +2 -2
- package/dist/cjs/mdns/MdnsService.d.ts.map +1 -1
- package/dist/cjs/mdns/MdnsService.js +3 -2
- package/dist/cjs/mdns/MdnsService.js.map +1 -1
- package/dist/cjs/mdns/MdnsSocket.d.ts +3 -2
- package/dist/cjs/mdns/MdnsSocket.d.ts.map +1 -1
- package/dist/cjs/mdns/MdnsSocket.js +2 -1
- package/dist/cjs/mdns/MdnsSocket.js.map +1 -1
- package/dist/cjs/peer/ControllerCommissioner.d.ts +2 -2
- package/dist/cjs/peer/ControllerCommissioner.d.ts.map +1 -1
- package/dist/cjs/peer/ControllerCommissioner.js +26 -28
- package/dist/cjs/peer/ControllerCommissioner.js.map +1 -1
- package/dist/cjs/peer/ControllerDiscovery.d.ts +1 -1
- package/dist/cjs/peer/ControllerDiscovery.d.ts.map +1 -1
- package/dist/cjs/peer/ControllerDiscovery.js +3 -3
- package/dist/cjs/peer/ControllerDiscovery.js.map +1 -1
- package/dist/cjs/peer/Peer.d.ts +57 -0
- package/dist/cjs/peer/Peer.d.ts.map +1 -0
- package/dist/cjs/peer/Peer.js +182 -0
- package/dist/cjs/peer/Peer.js.map +6 -0
- package/dist/cjs/peer/PeerAddress.d.ts.map +1 -1
- package/dist/cjs/peer/PeerAddress.js +5 -2
- package/dist/cjs/peer/PeerAddress.js.map +1 -1
- package/dist/cjs/peer/PeerAddressStore.d.ts +3 -3
- package/dist/cjs/peer/PeerAddressStore.d.ts.map +1 -1
- package/{src/peer/OperationalPeer.ts → dist/cjs/peer/PeerDescriptor.d.ts} +14 -12
- package/dist/cjs/peer/PeerDescriptor.d.ts.map +1 -0
- package/dist/cjs/peer/PeerDescriptor.js +71 -0
- package/dist/cjs/peer/PeerDescriptor.js.map +6 -0
- package/dist/cjs/peer/PeerSet.d.ts +23 -26
- package/dist/cjs/peer/PeerSet.d.ts.map +1 -1
- package/dist/cjs/peer/PeerSet.js +173 -173
- package/dist/cjs/peer/PeerSet.js.map +2 -2
- package/dist/cjs/peer/index.d.ts +1 -1
- package/dist/cjs/peer/index.d.ts.map +1 -1
- package/dist/cjs/peer/index.js +1 -1
- package/dist/cjs/peer/index.js.map +1 -1
- package/dist/cjs/protocol/DeviceAdvertiser.js +4 -4
- package/dist/cjs/protocol/DeviceAdvertiser.js.map +1 -1
- package/dist/cjs/protocol/ExchangeManager.d.ts +6 -9
- package/dist/cjs/protocol/ExchangeManager.d.ts.map +1 -1
- package/dist/cjs/protocol/ExchangeManager.js +306 -246
- package/dist/cjs/protocol/ExchangeManager.js.map +2 -2
- package/dist/cjs/protocol/ExchangeProvider.d.ts +9 -11
- package/dist/cjs/protocol/ExchangeProvider.d.ts.map +1 -1
- package/dist/cjs/protocol/ExchangeProvider.js +79 -32
- package/dist/cjs/protocol/ExchangeProvider.js.map +2 -2
- package/dist/cjs/protocol/MessageChannel.d.ts +6 -7
- package/dist/cjs/protocol/MessageChannel.d.ts.map +1 -1
- package/dist/cjs/protocol/MessageChannel.js +14 -16
- package/dist/cjs/protocol/MessageChannel.js.map +1 -1
- package/dist/cjs/protocol/MessageCounter.d.ts +4 -4
- package/dist/cjs/protocol/MessageCounter.d.ts.map +1 -1
- package/dist/cjs/protocol/MessageCounter.js +7 -7
- package/dist/cjs/protocol/MessageCounter.js.map +1 -1
- package/dist/cjs/protocol/MessageExchange.d.ts +31 -20
- package/dist/cjs/protocol/MessageExchange.d.ts.map +1 -1
- package/dist/cjs/protocol/MessageExchange.js +316 -231
- package/dist/cjs/protocol/MessageExchange.js.map +2 -2
- package/dist/cjs/protocol/ProtocolMocks.d.ts +100 -0
- package/dist/cjs/protocol/ProtocolMocks.d.ts.map +1 -0
- package/dist/cjs/protocol/ProtocolMocks.js +237 -0
- package/dist/cjs/protocol/ProtocolMocks.js.map +6 -0
- package/dist/cjs/protocol/errors.d.ts +35 -0
- package/dist/cjs/protocol/errors.d.ts.map +1 -0
- package/dist/cjs/protocol/errors.js +50 -0
- package/dist/cjs/protocol/errors.js.map +6 -0
- package/dist/cjs/protocol/index.d.ts +2 -1
- package/dist/cjs/protocol/index.d.ts.map +1 -1
- package/dist/cjs/protocol/index.js +2 -1
- package/dist/cjs/protocol/index.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/securechannel/SecureChannelProtocol.js +2 -2
- package/dist/cjs/securechannel/SecureChannelProtocol.js.map +1 -1
- package/dist/cjs/session/GroupSession.d.ts +21 -10
- package/dist/cjs/session/GroupSession.d.ts.map +1 -1
- package/dist/cjs/session/GroupSession.js +37 -12
- package/dist/cjs/session/GroupSession.js.map +1 -1
- package/dist/cjs/session/NodeSession.d.ts +56 -50
- package/dist/cjs/session/NodeSession.d.ts.map +1 -1
- package/dist/cjs/session/NodeSession.js +95 -103
- package/dist/cjs/session/NodeSession.js.map +1 -1
- package/dist/cjs/session/SecureSession.d.ts +4 -4
- package/dist/cjs/session/SecureSession.d.ts.map +1 -1
- package/dist/cjs/session/SecureSession.js +1 -1
- package/dist/cjs/session/SecureSession.js.map +1 -1
- package/dist/cjs/session/Session.d.ts +82 -66
- package/dist/cjs/session/Session.d.ts.map +1 -1
- package/dist/cjs/session/Session.js +218 -45
- package/dist/cjs/session/Session.js.map +1 -1
- package/dist/cjs/session/SessionManager.d.ts +33 -36
- package/dist/cjs/session/SessionManager.d.ts.map +1 -1
- package/dist/cjs/session/SessionManager.js +112 -150
- package/dist/cjs/session/SessionManager.js.map +1 -1
- package/dist/cjs/session/SessionParameters.d.ts +87 -0
- package/dist/cjs/session/SessionParameters.d.ts.map +1 -0
- package/dist/cjs/session/SessionParameters.js +81 -0
- package/dist/cjs/session/SessionParameters.js.map +6 -0
- package/dist/{esm/session/InsecureSession.d.ts → cjs/session/UnsecuredSession.d.ts} +18 -16
- package/dist/cjs/session/UnsecuredSession.d.ts.map +1 -0
- package/dist/cjs/session/{InsecureSession.js → UnsecuredSession.js} +21 -21
- package/dist/cjs/session/UnsecuredSession.js.map +6 -0
- package/dist/cjs/session/case/CaseClient.d.ts.map +1 -1
- package/dist/cjs/session/case/CaseClient.js +6 -4
- package/dist/cjs/session/case/CaseClient.js.map +1 -1
- package/dist/cjs/session/case/CaseServer.d.ts.map +1 -1
- package/dist/cjs/session/case/CaseServer.js +14 -10
- package/dist/cjs/session/case/CaseServer.js.map +1 -1
- package/dist/cjs/session/index.d.ts +2 -1
- package/dist/cjs/session/index.d.ts.map +1 -1
- package/dist/cjs/session/index.js +2 -1
- package/dist/cjs/session/index.js.map +1 -1
- package/dist/cjs/session/pase/PaseClient.d.ts +3 -3
- package/dist/cjs/session/pase/PaseClient.d.ts.map +1 -1
- package/dist/cjs/session/pase/PaseClient.js +5 -3
- package/dist/cjs/session/pase/PaseClient.js.map +1 -1
- package/dist/cjs/session/pase/PaseServer.d.ts.map +1 -1
- package/dist/cjs/session/pase/PaseServer.js +13 -13
- package/dist/cjs/session/pase/PaseServer.js.map +1 -1
- package/dist/esm/action/client/ClientInteraction.d.ts.map +1 -1
- package/dist/esm/action/client/ClientInteraction.js +82 -34
- package/dist/esm/action/client/ClientInteraction.js.map +2 -2
- package/dist/esm/action/client/subscription/ClientSubscription.d.ts +10 -5
- package/dist/esm/action/client/subscription/ClientSubscription.d.ts.map +1 -1
- package/dist/esm/action/client/subscription/ClientSubscription.js +22 -2
- package/dist/esm/action/client/subscription/ClientSubscription.js.map +2 -2
- package/dist/esm/action/client/subscription/ClientSubscriptionHandler.js +2 -3
- package/dist/esm/action/client/subscription/ClientSubscriptionHandler.js.map +1 -1
- package/dist/esm/action/client/subscription/ClientSubscriptions.d.ts +4 -2
- package/dist/esm/action/client/subscription/ClientSubscriptions.d.ts.map +1 -1
- package/dist/esm/action/client/subscription/ClientSubscriptions.js +68 -8
- package/dist/esm/action/client/subscription/ClientSubscriptions.js.map +1 -1
- package/dist/esm/action/client/subscription/PeerSubscription.d.ts +0 -1
- package/dist/esm/action/client/subscription/PeerSubscription.d.ts.map +1 -1
- package/dist/esm/action/client/subscription/PeerSubscription.js +1 -2
- package/dist/esm/action/client/subscription/PeerSubscription.js.map +1 -1
- package/dist/esm/action/client/subscription/SustainedSubscription.d.ts +0 -2
- package/dist/esm/action/client/subscription/SustainedSubscription.d.ts.map +1 -1
- package/dist/esm/action/client/subscription/SustainedSubscription.js +2 -4
- package/dist/esm/action/client/subscription/SustainedSubscription.js.map +1 -1
- package/dist/esm/action/request/Invoke.js +2 -2
- package/dist/esm/action/request/Invoke.js.map +1 -1
- package/dist/esm/action/server/AttributeReadResponse.d.ts.map +1 -1
- package/dist/esm/action/server/AttributeReadResponse.js +78 -25
- package/dist/esm/action/server/AttributeReadResponse.js.map +1 -1
- package/dist/esm/action/server/AttributeWriteResponse.d.ts.map +1 -1
- package/dist/esm/action/server/AttributeWriteResponse.js +70 -17
- package/dist/esm/action/server/AttributeWriteResponse.js.map +1 -1
- package/dist/esm/action/server/CommandInvokeResponse.d.ts.map +1 -1
- package/dist/esm/action/server/CommandInvokeResponse.js +83 -30
- package/dist/esm/action/server/CommandInvokeResponse.js.map +1 -1
- package/dist/esm/action/server/DataResponse.d.ts +1 -0
- package/dist/esm/action/server/DataResponse.d.ts.map +1 -1
- package/dist/esm/action/server/DataResponse.js +3 -0
- package/dist/esm/action/server/DataResponse.js.map +1 -1
- package/dist/esm/action/server/ServerInteraction.d.ts.map +1 -1
- package/dist/esm/action/server/ServerInteraction.js +4 -4
- package/dist/esm/action/server/ServerInteraction.js.map +1 -1
- package/dist/esm/advertisement/Advertisement.d.ts.map +1 -1
- package/dist/esm/advertisement/Advertisement.js +66 -14
- package/dist/esm/advertisement/Advertisement.js.map +1 -1
- package/dist/esm/advertisement/Advertiser.d.ts +4 -1
- package/dist/esm/advertisement/Advertiser.d.ts.map +1 -1
- package/dist/esm/advertisement/Advertiser.js +63 -2
- package/dist/esm/advertisement/Advertiser.js.map +1 -1
- package/dist/esm/advertisement/ble/BleAdvertiser.d.ts +6 -1
- package/dist/esm/advertisement/ble/BleAdvertiser.d.ts.map +1 -1
- package/dist/esm/advertisement/ble/BleAdvertiser.js +1 -1
- package/dist/esm/advertisement/ble/BleAdvertiser.js.map +1 -1
- package/dist/esm/advertisement/mdns/MdnsAdvertiser.d.ts +5 -1
- package/dist/esm/advertisement/mdns/MdnsAdvertiser.d.ts.map +1 -1
- package/dist/esm/advertisement/mdns/MdnsAdvertiser.js +1 -1
- package/dist/esm/advertisement/mdns/MdnsAdvertiser.js.map +1 -1
- package/dist/esm/certificate/kinds/definitions/asn.js +2 -2
- package/dist/esm/certificate/kinds/definitions/asn.js.map +1 -1
- package/dist/esm/certificate/kinds/definitions/attestation.d.ts.map +1 -1
- package/dist/esm/cluster/client/AttributeClient.d.ts.map +1 -1
- package/dist/esm/cluster/client/AttributeClient.js +1 -1
- package/dist/esm/cluster/client/AttributeClient.js.map +1 -1
- package/dist/esm/codec/MessageCodec.d.ts +8 -1
- package/dist/esm/codec/MessageCodec.d.ts.map +1 -1
- package/dist/esm/codec/MessageCodec.js +39 -28
- package/dist/esm/codec/MessageCodec.js.map +2 -2
- package/dist/esm/common/FailsafeContext.d.ts +8 -9
- package/dist/esm/common/FailsafeContext.d.ts.map +1 -1
- package/dist/esm/common/FailsafeContext.js +27 -33
- package/dist/esm/common/FailsafeContext.js.map +1 -1
- package/dist/esm/common/FailsafeTimer.d.ts +4 -3
- package/dist/esm/common/FailsafeTimer.d.ts.map +1 -1
- package/dist/esm/common/FailsafeTimer.js +4 -4
- package/dist/esm/common/FailsafeTimer.js.map +1 -1
- package/dist/esm/common/Mark.d.ts +17 -0
- package/dist/esm/common/Mark.d.ts.map +1 -0
- package/dist/esm/common/Mark.js +18 -0
- package/dist/esm/common/Mark.js.map +6 -0
- package/dist/esm/common/index.d.ts +1 -0
- package/dist/esm/common/index.d.ts.map +1 -1
- package/dist/esm/common/index.js +1 -0
- package/dist/esm/common/index.js.map +1 -1
- package/dist/esm/fabric/Fabric.d.ts +16 -8
- package/dist/esm/fabric/Fabric.d.ts.map +1 -1
- package/dist/esm/fabric/Fabric.js +36 -18
- package/dist/esm/fabric/Fabric.js.map +1 -1
- package/dist/esm/fabric/FabricAuthority.d.ts +2 -2
- package/dist/esm/fabric/FabricAuthority.d.ts.map +1 -1
- package/dist/esm/fabric/FabricAuthority.js +5 -5
- package/dist/esm/fabric/FabricAuthority.js.map +1 -1
- package/dist/esm/fabric/FabricManager.d.ts +10 -14
- package/dist/esm/fabric/FabricManager.d.ts.map +1 -1
- package/dist/esm/fabric/FabricManager.js +45 -40
- package/dist/esm/fabric/FabricManager.js.map +2 -2
- package/dist/esm/index.d.ts +1 -1
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/interaction/AttributeDataEncoder.d.ts +1 -1
- package/dist/esm/interaction/InteractionClient.d.ts +2 -2
- package/dist/esm/interaction/InteractionClient.d.ts.map +1 -1
- package/dist/esm/interaction/InteractionClient.js +39 -22
- package/dist/esm/interaction/InteractionClient.js.map +1 -1
- package/dist/esm/interaction/InteractionMessenger.d.ts +2 -2
- package/dist/esm/interaction/InteractionMessenger.d.ts.map +1 -1
- package/dist/esm/interaction/InteractionMessenger.js +33 -28
- package/dist/esm/interaction/InteractionMessenger.js.map +1 -1
- package/dist/esm/interaction/Subscription.d.ts +16 -37
- package/dist/esm/interaction/Subscription.d.ts.map +1 -1
- package/dist/esm/interaction/Subscription.js +16 -69
- package/dist/esm/interaction/Subscription.js.map +2 -2
- package/dist/esm/interaction/SubscriptionClient.d.ts +2 -2
- package/dist/esm/interaction/SubscriptionClient.d.ts.map +1 -1
- package/dist/esm/interaction/SubscriptionClient.js +2 -2
- package/dist/esm/interaction/SubscriptionClient.js.map +1 -1
- package/dist/esm/mdns/MdnsClient.d.ts +10 -10
- package/dist/esm/mdns/MdnsClient.d.ts.map +1 -1
- package/dist/esm/mdns/MdnsClient.js +166 -80
- package/dist/esm/mdns/MdnsClient.js.map +1 -1
- package/dist/esm/mdns/MdnsServer.d.ts +2 -2
- package/dist/esm/mdns/MdnsServer.d.ts.map +1 -1
- package/dist/esm/mdns/MdnsServer.js +176 -94
- package/dist/esm/mdns/MdnsServer.js.map +2 -2
- package/dist/esm/mdns/MdnsService.d.ts.map +1 -1
- package/dist/esm/mdns/MdnsService.js +3 -2
- package/dist/esm/mdns/MdnsService.js.map +1 -1
- package/dist/esm/mdns/MdnsSocket.d.ts +3 -2
- package/dist/esm/mdns/MdnsSocket.d.ts.map +1 -1
- package/dist/esm/mdns/MdnsSocket.js +2 -1
- package/dist/esm/mdns/MdnsSocket.js.map +1 -1
- package/dist/esm/peer/ControllerCommissioner.d.ts +2 -2
- package/dist/esm/peer/ControllerCommissioner.d.ts.map +1 -1
- package/dist/esm/peer/ControllerCommissioner.js +26 -28
- package/dist/esm/peer/ControllerCommissioner.js.map +1 -1
- package/dist/esm/peer/ControllerDiscovery.d.ts +1 -1
- package/dist/esm/peer/ControllerDiscovery.d.ts.map +1 -1
- package/dist/esm/peer/ControllerDiscovery.js +1 -1
- package/dist/esm/peer/ControllerDiscovery.js.map +1 -1
- package/dist/esm/peer/Peer.d.ts +57 -0
- package/dist/esm/peer/Peer.d.ts.map +1 -0
- package/dist/esm/peer/Peer.js +162 -0
- package/dist/esm/peer/Peer.js.map +6 -0
- package/dist/esm/peer/PeerAddress.d.ts.map +1 -1
- package/dist/esm/peer/PeerAddress.js +5 -2
- package/dist/esm/peer/PeerAddress.js.map +1 -1
- package/dist/esm/peer/PeerAddressStore.d.ts +3 -3
- package/dist/esm/peer/PeerAddressStore.d.ts.map +1 -1
- package/dist/{cjs/peer/OperationalPeer.d.ts → esm/peer/PeerDescriptor.d.ts} +14 -7
- package/dist/esm/peer/PeerDescriptor.d.ts.map +1 -0
- package/dist/esm/peer/PeerDescriptor.js +51 -0
- package/dist/esm/peer/PeerDescriptor.js.map +6 -0
- package/dist/esm/peer/PeerSet.d.ts +23 -26
- package/dist/esm/peer/PeerSet.d.ts.map +1 -1
- package/dist/esm/peer/PeerSet.js +173 -175
- package/dist/esm/peer/PeerSet.js.map +2 -2
- package/dist/esm/peer/index.d.ts +1 -1
- package/dist/esm/peer/index.d.ts.map +1 -1
- package/dist/esm/peer/index.js +1 -1
- package/dist/esm/protocol/DeviceAdvertiser.js +4 -4
- package/dist/esm/protocol/DeviceAdvertiser.js.map +1 -1
- package/dist/esm/protocol/ExchangeManager.d.ts +6 -9
- package/dist/esm/protocol/ExchangeManager.d.ts.map +1 -1
- package/dist/esm/protocol/ExchangeManager.js +308 -251
- package/dist/esm/protocol/ExchangeManager.js.map +2 -2
- package/dist/esm/protocol/ExchangeProvider.d.ts +9 -11
- package/dist/esm/protocol/ExchangeProvider.d.ts.map +1 -1
- package/dist/esm/protocol/ExchangeProvider.js +81 -37
- package/dist/esm/protocol/ExchangeProvider.js.map +2 -2
- package/dist/esm/protocol/MessageChannel.d.ts +6 -7
- package/dist/esm/protocol/MessageChannel.d.ts.map +1 -1
- package/dist/esm/protocol/MessageChannel.js +22 -18
- package/dist/esm/protocol/MessageChannel.js.map +1 -1
- package/dist/esm/protocol/MessageCounter.d.ts +4 -4
- package/dist/esm/protocol/MessageCounter.d.ts.map +1 -1
- package/dist/esm/protocol/MessageCounter.js +7 -7
- package/dist/esm/protocol/MessageCounter.js.map +1 -1
- package/dist/esm/protocol/MessageExchange.d.ts +31 -20
- package/dist/esm/protocol/MessageExchange.d.ts.map +1 -1
- package/dist/esm/protocol/MessageExchange.js +318 -238
- package/dist/esm/protocol/MessageExchange.js.map +2 -2
- package/dist/esm/protocol/ProtocolMocks.d.ts +100 -0
- package/dist/esm/protocol/ProtocolMocks.d.ts.map +1 -0
- package/dist/esm/protocol/ProtocolMocks.js +230 -0
- package/dist/esm/protocol/ProtocolMocks.js.map +6 -0
- package/dist/esm/protocol/errors.d.ts +35 -0
- package/dist/esm/protocol/errors.d.ts.map +1 -0
- package/dist/esm/protocol/errors.js +30 -0
- package/dist/esm/protocol/errors.js.map +6 -0
- package/dist/esm/protocol/index.d.ts +2 -1
- package/dist/esm/protocol/index.d.ts.map +1 -1
- package/dist/esm/protocol/index.js +2 -1
- package/dist/esm/protocol/index.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/securechannel/SecureChannelProtocol.js +2 -2
- package/dist/esm/securechannel/SecureChannelProtocol.js.map +1 -1
- package/dist/esm/session/GroupSession.d.ts +21 -10
- package/dist/esm/session/GroupSession.d.ts.map +1 -1
- package/dist/esm/session/GroupSession.js +41 -12
- package/dist/esm/session/GroupSession.js.map +1 -1
- package/dist/esm/session/NodeSession.d.ts +56 -50
- package/dist/esm/session/NodeSession.d.ts.map +1 -1
- package/dist/esm/session/NodeSession.js +99 -105
- package/dist/esm/session/NodeSession.js.map +1 -1
- package/dist/esm/session/SecureSession.d.ts +4 -4
- package/dist/esm/session/SecureSession.d.ts.map +1 -1
- package/dist/esm/session/SecureSession.js +1 -1
- package/dist/esm/session/SecureSession.js.map +1 -1
- package/dist/esm/session/Session.d.ts +82 -66
- package/dist/esm/session/Session.d.ts.map +1 -1
- package/dist/esm/session/Session.js +223 -45
- package/dist/esm/session/Session.js.map +1 -1
- package/dist/esm/session/SessionManager.d.ts +33 -36
- package/dist/esm/session/SessionManager.d.ts.map +1 -1
- package/dist/esm/session/SessionManager.js +113 -157
- package/dist/esm/session/SessionManager.js.map +1 -1
- package/dist/esm/session/SessionParameters.d.ts +87 -0
- package/dist/esm/session/SessionParameters.d.ts.map +1 -0
- package/dist/esm/session/SessionParameters.js +61 -0
- package/dist/esm/session/SessionParameters.js.map +6 -0
- package/dist/{cjs/session/InsecureSession.d.ts → esm/session/UnsecuredSession.d.ts} +18 -16
- package/dist/esm/session/UnsecuredSession.d.ts.map +1 -0
- package/dist/esm/session/{InsecureSession.js → UnsecuredSession.js} +18 -18
- package/dist/esm/session/UnsecuredSession.js.map +6 -0
- package/dist/esm/session/case/CaseClient.d.ts.map +1 -1
- package/dist/esm/session/case/CaseClient.js +5 -3
- package/dist/esm/session/case/CaseClient.js.map +1 -1
- package/dist/esm/session/case/CaseServer.d.ts.map +1 -1
- package/dist/esm/session/case/CaseServer.js +14 -10
- package/dist/esm/session/case/CaseServer.js.map +1 -1
- package/dist/esm/session/index.d.ts +2 -1
- package/dist/esm/session/index.d.ts.map +1 -1
- package/dist/esm/session/index.js +2 -1
- package/dist/esm/session/index.js.map +1 -1
- package/dist/esm/session/pase/PaseClient.d.ts +3 -3
- package/dist/esm/session/pase/PaseClient.d.ts.map +1 -1
- package/dist/esm/session/pase/PaseClient.js +5 -3
- package/dist/esm/session/pase/PaseClient.js.map +1 -1
- package/dist/esm/session/pase/PaseServer.d.ts.map +1 -1
- package/dist/esm/session/pase/PaseServer.js +13 -13
- package/dist/esm/session/pase/PaseServer.js.map +1 -1
- package/package.json +6 -6
- package/src/action/client/ClientInteraction.ts +47 -13
- package/src/action/client/subscription/ClientSubscription.ts +30 -5
- package/src/action/client/subscription/ClientSubscriptionHandler.ts +2 -4
- package/src/action/client/subscription/ClientSubscriptions.ts +14 -3
- package/src/action/client/subscription/PeerSubscription.ts +2 -2
- package/src/action/client/subscription/SustainedSubscription.ts +2 -6
- package/src/action/request/Invoke.ts +2 -2
- package/src/action/server/AttributeReadResponse.ts +2 -0
- package/src/action/server/AttributeWriteResponse.ts +2 -0
- package/src/action/server/CommandInvokeResponse.ts +1 -0
- package/src/action/server/DataResponse.ts +4 -0
- package/src/action/server/ServerInteraction.ts +4 -4
- package/src/advertisement/Advertisement.ts +6 -7
- package/src/advertisement/Advertiser.ts +12 -1
- package/src/advertisement/ble/BleAdvertiser.ts +7 -2
- package/src/advertisement/mdns/MdnsAdvertiser.ts +7 -1
- package/src/certificate/kinds/definitions/asn.ts +2 -2
- package/src/certificate/kinds/definitions/attestation.ts +1 -0
- package/src/cluster/client/AttributeClient.ts +1 -1
- package/src/codec/MessageCodec.ts +39 -32
- package/src/common/FailsafeContext.ts +36 -39
- package/src/common/FailsafeTimer.ts +7 -6
- package/src/common/Mark.ts +17 -0
- package/src/common/index.ts +1 -0
- package/src/fabric/Fabric.ts +51 -23
- package/src/fabric/FabricAuthority.ts +4 -4
- package/src/fabric/FabricManager.ts +53 -40
- package/src/index.ts +3 -1
- package/src/interaction/InteractionClient.ts +40 -23
- package/src/interaction/InteractionMessenger.ts +38 -32
- package/src/interaction/Subscription.ts +20 -92
- package/src/interaction/SubscriptionClient.ts +3 -3
- package/src/mdns/MdnsClient.ts +20 -3
- package/src/mdns/MdnsServer.ts +13 -1
- package/src/mdns/MdnsService.ts +3 -2
- package/src/mdns/MdnsSocket.ts +9 -3
- package/src/peer/ControllerCommissioner.ts +35 -37
- package/src/peer/ControllerDiscovery.ts +1 -1
- package/src/peer/Peer.ts +161 -0
- package/src/peer/PeerAddress.ts +6 -2
- package/src/peer/PeerAddressStore.ts +3 -3
- package/src/peer/PeerDescriptor.ts +89 -0
- package/src/peer/PeerSet.ts +145 -213
- package/src/peer/index.ts +1 -1
- package/src/protocol/DeviceAdvertiser.ts +4 -4
- package/src/protocol/ExchangeManager.ts +161 -181
- package/src/protocol/ExchangeProvider.ts +31 -40
- package/src/protocol/MessageChannel.ts +29 -18
- package/src/protocol/MessageCounter.ts +8 -8
- package/src/protocol/MessageExchange.ts +181 -144
- package/src/protocol/ProtocolMocks.ts +302 -0
- package/src/protocol/errors.ts +44 -0
- package/src/protocol/index.ts +2 -1
- package/src/securechannel/SecureChannelMessenger.ts +4 -0
- package/src/securechannel/SecureChannelProtocol.ts +2 -2
- package/src/session/GroupSession.ts +67 -23
- package/src/session/NodeSession.ts +140 -136
- package/src/session/SecureSession.ts +6 -5
- package/src/session/Session.ts +234 -101
- package/src/session/SessionManager.ts +148 -187
- package/src/session/SessionParameters.ts +108 -0
- package/src/session/{InsecureSession.ts → UnsecuredSession.ts} +28 -26
- package/src/session/case/CaseClient.ts +6 -3
- package/src/session/case/CaseServer.ts +15 -11
- package/src/session/index.ts +2 -1
- package/src/session/pase/PaseClient.ts +12 -5
- package/src/session/pase/PaseServer.ts +14 -13
- package/dist/cjs/peer/OperationalPeer.d.ts.map +0 -1
- package/dist/cjs/peer/OperationalPeer.js.map +0 -6
- package/dist/cjs/protocol/ChannelManager.d.ts +0 -29
- package/dist/cjs/protocol/ChannelManager.d.ts.map +0 -1
- package/dist/cjs/protocol/ChannelManager.js +0 -178
- package/dist/cjs/protocol/ChannelManager.js.map +0 -6
- package/dist/cjs/session/InsecureSession.d.ts.map +0 -1
- package/dist/cjs/session/InsecureSession.js.map +0 -6
- package/dist/esm/peer/OperationalPeer.d.ts +0 -38
- package/dist/esm/peer/OperationalPeer.d.ts.map +0 -1
- package/dist/esm/peer/OperationalPeer.js +0 -6
- package/dist/esm/peer/OperationalPeer.js.map +0 -6
- package/dist/esm/protocol/ChannelManager.d.ts +0 -29
- package/dist/esm/protocol/ChannelManager.d.ts.map +0 -1
- package/dist/esm/protocol/ChannelManager.js +0 -158
- package/dist/esm/protocol/ChannelManager.js.map +0 -6
- package/dist/esm/session/InsecureSession.d.ts.map +0 -1
- package/dist/esm/session/InsecureSession.js.map +0 -6
- package/src/protocol/ChannelManager.ts +0 -180
|
@@ -4,34 +4,30 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
import { Message,
|
|
7
|
+
import { Message, PacketHeader, SessionType } from "#codec/MessageCodec.js";
|
|
8
|
+
import { Mark } from "#common/Mark.js";
|
|
8
9
|
import {
|
|
9
|
-
|
|
10
|
+
AsyncObservableValue,
|
|
10
11
|
Bytes,
|
|
11
12
|
createPromise,
|
|
12
13
|
CRYPTO_AEAD_MIC_LENGTH_BYTES,
|
|
13
14
|
DataReadQueue,
|
|
14
15
|
Diagnostic,
|
|
15
16
|
Duration,
|
|
17
|
+
hex,
|
|
16
18
|
Instant,
|
|
17
19
|
InternalError,
|
|
20
|
+
Lifetime,
|
|
18
21
|
Logger,
|
|
19
|
-
MatterError,
|
|
20
22
|
MatterFlowError,
|
|
21
23
|
Millis,
|
|
22
|
-
NoResponseTimeoutError,
|
|
23
24
|
Time,
|
|
24
25
|
Timer,
|
|
25
26
|
} from "#general";
|
|
26
|
-
import {
|
|
27
|
-
ChannelNotConnectedError,
|
|
28
|
-
DEFAULT_EXPECTED_PROCESSING_TIME,
|
|
29
|
-
MessageChannel,
|
|
30
|
-
MRP,
|
|
31
|
-
} from "#protocol/MessageChannel.js";
|
|
32
27
|
import { GroupSession } from "#session/GroupSession.js";
|
|
33
|
-
import {
|
|
34
|
-
import {
|
|
28
|
+
import type { NodeSession } from "#session/NodeSession.js";
|
|
29
|
+
import { Session } from "#session/Session.js";
|
|
30
|
+
import { SessionParameters } from "#session/SessionParameters.js";
|
|
35
31
|
import {
|
|
36
32
|
GroupId,
|
|
37
33
|
NodeId,
|
|
@@ -40,20 +36,11 @@ import {
|
|
|
40
36
|
StatusCode,
|
|
41
37
|
StatusResponseError,
|
|
42
38
|
} from "#types";
|
|
39
|
+
import { RetransmissionLimitReachedError, SessionClosedError, UnexpectedMessageError } from "./errors.js";
|
|
40
|
+
import { DEFAULT_EXPECTED_PROCESSING_TIME, MRP } from "./MessageChannel.js";
|
|
43
41
|
|
|
44
42
|
const logger = Logger.get("MessageExchange");
|
|
45
43
|
|
|
46
|
-
export class RetransmissionLimitReachedError extends NoResponseTimeoutError {}
|
|
47
|
-
|
|
48
|
-
export class UnexpectedMessageError extends MatterError {
|
|
49
|
-
public constructor(
|
|
50
|
-
message: string,
|
|
51
|
-
public readonly receivedMessage: Message,
|
|
52
|
-
) {
|
|
53
|
-
super(`(${MessageCodec.messageDiagnostics(receivedMessage)}) ${message}`);
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
|
|
57
44
|
export type ExchangeLogContext = Record<string, unknown>;
|
|
58
45
|
|
|
59
46
|
export type ExchangeSendOptions = {
|
|
@@ -107,63 +94,65 @@ export const MATTER_MESSAGE_OVERHEAD = 26 + 12 + CRYPTO_AEAD_MIC_LENGTH_BYTES;
|
|
|
107
94
|
* Interfaces {@link MessageExchange} with other components.
|
|
108
95
|
*/
|
|
109
96
|
export interface MessageExchangeContext {
|
|
110
|
-
|
|
97
|
+
session: Session;
|
|
111
98
|
retry(number: number): void;
|
|
112
99
|
localSessionParameters: SessionParameters;
|
|
113
100
|
}
|
|
114
101
|
|
|
102
|
+
/**
|
|
103
|
+
* A Matter "message exchange" is a sequence of messages associated with a single interaction.
|
|
104
|
+
*
|
|
105
|
+
* TODO - rewrite using sleeps and abort controller
|
|
106
|
+
*/
|
|
115
107
|
export class MessageExchange {
|
|
116
108
|
static fromInitialMessage(context: MessageExchangeContext, initialMessage: Message) {
|
|
117
|
-
const {
|
|
118
|
-
|
|
119
|
-
} = context;
|
|
120
|
-
return new MessageExchange(
|
|
109
|
+
const { session } = context;
|
|
110
|
+
return new MessageExchange({
|
|
121
111
|
context,
|
|
122
|
-
false,
|
|
123
|
-
session.id,
|
|
124
|
-
initialMessage.packetHeader.destNodeId,
|
|
125
|
-
initialMessage.packetHeader.sourceNodeId,
|
|
126
|
-
initialMessage.payloadHeader.exchangeId,
|
|
127
|
-
initialMessage.payloadHeader.protocolId,
|
|
128
|
-
|
|
129
|
-
);
|
|
112
|
+
isInitiator: false,
|
|
113
|
+
peerSessionId: session.id,
|
|
114
|
+
nodeId: initialMessage.packetHeader.destNodeId,
|
|
115
|
+
peerNodeId: initialMessage.packetHeader.sourceNodeId,
|
|
116
|
+
exchangeId: initialMessage.payloadHeader.exchangeId,
|
|
117
|
+
protocolId: initialMessage.payloadHeader.protocolId,
|
|
118
|
+
});
|
|
130
119
|
}
|
|
131
120
|
|
|
132
121
|
static initiate(context: MessageExchangeContext, exchangeId: number, protocolId: number) {
|
|
133
|
-
const {
|
|
134
|
-
|
|
135
|
-
} = context;
|
|
136
|
-
return new MessageExchange(
|
|
122
|
+
const { session } = context;
|
|
123
|
+
return new MessageExchange({
|
|
137
124
|
context,
|
|
138
|
-
true,
|
|
139
|
-
session.peerSessionId,
|
|
140
|
-
session.nodeId,
|
|
141
|
-
session.peerNodeId,
|
|
125
|
+
isInitiator: true,
|
|
126
|
+
peerSessionId: session.peerSessionId,
|
|
127
|
+
nodeId: session.nodeId,
|
|
128
|
+
peerNodeId: session.peerNodeId,
|
|
142
129
|
exchangeId,
|
|
143
130
|
protocolId,
|
|
144
|
-
|
|
145
|
-
);
|
|
131
|
+
});
|
|
146
132
|
}
|
|
147
133
|
|
|
134
|
+
readonly #context: MessageExchangeContext;
|
|
135
|
+
readonly #isInitiator: boolean;
|
|
148
136
|
readonly #messagesQueue = new DataReadQueue<Message>();
|
|
137
|
+
readonly #lifetime: Lifetime;
|
|
149
138
|
#receivedMessageToAck: Message | undefined;
|
|
150
|
-
#receivedMessageAckTimer = Time.getTimer("
|
|
139
|
+
#receivedMessageAckTimer = Time.getTimer("ack receipt timeout", MRP.STANDALONE_ACK_TIMEOUT, () => {
|
|
151
140
|
if (this.#receivedMessageToAck !== undefined) {
|
|
152
141
|
const messageToAck = this.#receivedMessageToAck;
|
|
153
142
|
this.#receivedMessageToAck = undefined;
|
|
154
|
-
// TODO
|
|
155
|
-
this
|
|
143
|
+
// TODO await
|
|
144
|
+
this.#sendStandaloneAckForMessage(messageToAck).catch(error =>
|
|
156
145
|
logger.error("An error happened when sending a standalone ack", error),
|
|
157
146
|
);
|
|
158
147
|
}
|
|
159
148
|
});
|
|
160
149
|
#sentMessageToAck: Message | undefined;
|
|
161
|
-
#sentMessageAckSuccess: ((
|
|
150
|
+
#sentMessageAckSuccess: ((message: Message | undefined) => void) | undefined;
|
|
162
151
|
#sentMessageAckFailure: ((error?: Error) => void) | undefined;
|
|
163
152
|
#retransmissionTimer: Timer | undefined;
|
|
164
153
|
#retransmissionCounter = 0;
|
|
165
154
|
#closeTimer: Timer | undefined;
|
|
166
|
-
#
|
|
155
|
+
#isDestroyed = false;
|
|
167
156
|
#timedInteractionTimer: Timer | undefined;
|
|
168
157
|
#used: boolean;
|
|
169
158
|
|
|
@@ -172,21 +161,14 @@ export class MessageExchange {
|
|
|
172
161
|
readonly #peerNodeId: NodeId | undefined;
|
|
173
162
|
readonly #exchangeId: number;
|
|
174
163
|
readonly #protocolId: number;
|
|
175
|
-
readonly #closed =
|
|
176
|
-
readonly #closing =
|
|
177
|
-
|
|
178
|
-
constructor(
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
peerNodeId: NodeId | undefined,
|
|
184
|
-
exchangeId: number,
|
|
185
|
-
protocolId: number,
|
|
186
|
-
readonly requiresSecureSession: boolean,
|
|
187
|
-
) {
|
|
188
|
-
const { channel } = context;
|
|
189
|
-
const { session } = channel;
|
|
164
|
+
readonly #closed = AsyncObservableValue();
|
|
165
|
+
readonly #closing = AsyncObservableValue();
|
|
166
|
+
|
|
167
|
+
constructor(config: MessageExchange.Config) {
|
|
168
|
+
const { context, isInitiator, peerSessionId, nodeId, peerNodeId, exchangeId, protocolId } = config;
|
|
169
|
+
|
|
170
|
+
this.#context = context;
|
|
171
|
+
this.#isInitiator = isInitiator;
|
|
190
172
|
this.#peerSessionId = peerSessionId;
|
|
191
173
|
this.#nodeId = nodeId;
|
|
192
174
|
this.#peerNodeId = peerNodeId;
|
|
@@ -197,25 +179,37 @@ export class MessageExchange {
|
|
|
197
179
|
|
|
198
180
|
this.#used = !isInitiator; // If we are the initiator then exchange was not used yet, so track it
|
|
199
181
|
|
|
182
|
+
const { session } = context;
|
|
200
183
|
logger.debug(
|
|
201
184
|
"New exchange",
|
|
202
|
-
isInitiator ?
|
|
203
|
-
|
|
185
|
+
isInitiator ? Mark.OUTBOUND : Mark.INBOUND,
|
|
186
|
+
this.via,
|
|
204
187
|
Diagnostic.dict({
|
|
205
188
|
protocol: this.#protocolId,
|
|
206
|
-
|
|
207
|
-
sess: session.name,
|
|
208
|
-
peerSess: this.#peerSessionId,
|
|
189
|
+
peerSess: Session.idStrOf(this.#peerSessionId),
|
|
209
190
|
SAT: Duration.format(activeThreshold),
|
|
210
191
|
SAI: Duration.format(activeInterval),
|
|
211
192
|
SII: Duration.format(idleInterval),
|
|
212
193
|
maxTrans: MRP.MAX_TRANSMISSIONS,
|
|
213
194
|
exchangeFlags: Diagnostic.asFlags({
|
|
214
|
-
MRP: this.
|
|
195
|
+
MRP: this.session.usesMrp,
|
|
215
196
|
I: this.isInitiator,
|
|
216
197
|
}),
|
|
217
198
|
}),
|
|
218
199
|
);
|
|
200
|
+
|
|
201
|
+
session.addExchange(this);
|
|
202
|
+
|
|
203
|
+
// Only do partial via because other details are in parent lifetime
|
|
204
|
+
this.#lifetime = this.#context.session.join("exchange", Diagnostic.via(hex.word(this.id)));
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
get context() {
|
|
208
|
+
return this.#context;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
get isInitiator() {
|
|
212
|
+
return this.#isInitiator;
|
|
219
213
|
}
|
|
220
214
|
|
|
221
215
|
/** Emits when the exchange is actually closed. This happens after all Retries and Communication are done. */
|
|
@@ -232,19 +226,23 @@ export class MessageExchange {
|
|
|
232
226
|
}
|
|
233
227
|
|
|
234
228
|
get isClosing() {
|
|
235
|
-
return this.#
|
|
229
|
+
return this.#closing.value;
|
|
236
230
|
}
|
|
237
231
|
|
|
238
232
|
get id() {
|
|
239
233
|
return this.#exchangeId;
|
|
240
234
|
}
|
|
241
235
|
|
|
242
|
-
get
|
|
243
|
-
return this
|
|
236
|
+
get idStr() {
|
|
237
|
+
return hex.word(this.#exchangeId);
|
|
244
238
|
}
|
|
245
239
|
|
|
246
240
|
get session() {
|
|
247
|
-
return this.
|
|
241
|
+
return this.context.session;
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
get channel() {
|
|
245
|
+
return this.session.channel;
|
|
248
246
|
}
|
|
249
247
|
|
|
250
248
|
/**
|
|
@@ -257,24 +255,15 @@ export class MessageExchange {
|
|
|
257
255
|
return this.channel.maxPayloadSize - MATTER_MESSAGE_OVERHEAD;
|
|
258
256
|
}
|
|
259
257
|
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
packetHeader: { messageId },
|
|
263
|
-
payloadHeader: { requiresAck },
|
|
264
|
-
} = message;
|
|
265
|
-
if (!requiresAck || !this.channel.usesMrp) return;
|
|
266
|
-
|
|
267
|
-
await this.send(SecureMessageType.StandaloneAck, new Uint8Array(0), {
|
|
268
|
-
includeAcknowledgeMessageId: messageId,
|
|
269
|
-
protocolId: SECURE_CHANNEL_PROTOCOL_ID,
|
|
270
|
-
});
|
|
258
|
+
join(...name: unknown[]) {
|
|
259
|
+
return this.#lifetime.join(...name);
|
|
271
260
|
}
|
|
272
261
|
|
|
273
262
|
async onMessageReceived(message: Message, duplicate = false) {
|
|
274
|
-
logger.debug("Message
|
|
263
|
+
logger.debug("Message", Mark.INBOUND, Message.diagnosticsOf(this, message, { duplicate }));
|
|
275
264
|
|
|
276
265
|
// Adjust the incoming message when ack was required, but this exchange does not use it to skip all relevant logic
|
|
277
|
-
if (message.payloadHeader.requiresAck && !this.
|
|
266
|
+
if (message.payloadHeader.requiresAck && !this.session.usesMrp) {
|
|
278
267
|
logger.debug("Ignoring ack-required flag because MRP is not used for this exchange");
|
|
279
268
|
message.payloadHeader.requiresAck = false;
|
|
280
269
|
}
|
|
@@ -296,13 +285,14 @@ export class MessageExchange {
|
|
|
296
285
|
if (duplicate) {
|
|
297
286
|
// Received a message retransmission, but the reply is not ready yet, ignoring
|
|
298
287
|
if (requiresAck) {
|
|
299
|
-
await this
|
|
288
|
+
await this.#sendStandaloneAckForMessage(message);
|
|
300
289
|
}
|
|
301
290
|
return;
|
|
302
291
|
}
|
|
303
292
|
if (messageId === this.#sentMessageToAck?.payloadHeader.ackedMessageId) {
|
|
304
293
|
// Received a message retransmission. This means that the other side didn't get our ack
|
|
305
294
|
// Resending the previous reply message which contains the ack
|
|
295
|
+
using _acking = this.join("resending ack");
|
|
306
296
|
await this.channel.send(this.#sentMessageToAck);
|
|
307
297
|
return;
|
|
308
298
|
}
|
|
@@ -342,36 +332,37 @@ export class MessageExchange {
|
|
|
342
332
|
// We still have a message to ack, so ack this one as standalone ack directly
|
|
343
333
|
if (this.#receivedMessageToAck !== undefined) {
|
|
344
334
|
this.#receivedMessageAckTimer.stop();
|
|
345
|
-
await this
|
|
335
|
+
await this.#sendStandaloneAckForMessage(this.#receivedMessageToAck);
|
|
346
336
|
return;
|
|
347
337
|
}
|
|
348
338
|
this.#receivedMessageToAck = message;
|
|
349
339
|
this.#receivedMessageAckTimer.start();
|
|
350
340
|
}
|
|
351
|
-
|
|
341
|
+
this.#messagesQueue.write(message);
|
|
352
342
|
}
|
|
353
343
|
|
|
354
|
-
async send(messageType: number, payload: Bytes, options
|
|
355
|
-
if (options?.requiresAck && !this.channel.usesMrp) {
|
|
356
|
-
options.requiresAck = false;
|
|
357
|
-
}
|
|
358
|
-
|
|
344
|
+
async send(messageType: number, payload: Bytes, options: ExchangeSendOptions = {}) {
|
|
359
345
|
const {
|
|
360
346
|
expectAckOnly = false,
|
|
361
347
|
disableMrpLogic,
|
|
362
348
|
expectedProcessingTime = DEFAULT_EXPECTED_PROCESSING_TIME,
|
|
363
|
-
requiresAck,
|
|
364
349
|
includeAcknowledgeMessageId,
|
|
365
350
|
logContext,
|
|
366
351
|
protocolId = this.#protocolId,
|
|
367
|
-
} = options
|
|
368
|
-
|
|
352
|
+
} = options;
|
|
353
|
+
|
|
354
|
+
if (!this.session.usesMrp && includeAcknowledgeMessageId !== undefined) {
|
|
369
355
|
throw new InternalError("Cannot include an acknowledge message ID when MRP is not used");
|
|
370
356
|
}
|
|
371
|
-
const isStandaloneAck = SecureMessageType.isStandaloneAck(protocolId, messageType);
|
|
372
357
|
|
|
358
|
+
let { requiresAck } = options;
|
|
359
|
+
if (requiresAck && !(this.session.usesMrp || (this.session as NodeSession).isPeerLost)) {
|
|
360
|
+
requiresAck = false;
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
const isStandaloneAck = SecureMessageType.isStandaloneAck(protocolId, messageType);
|
|
373
364
|
if (isStandaloneAck) {
|
|
374
|
-
if (!this.
|
|
365
|
+
if (!this.session.usesMrp) {
|
|
375
366
|
return;
|
|
376
367
|
}
|
|
377
368
|
if (requiresAck) {
|
|
@@ -386,7 +377,7 @@ export class MessageExchange {
|
|
|
386
377
|
this.session.notifyActivity(false);
|
|
387
378
|
|
|
388
379
|
let ackedMessageId = includeAcknowledgeMessageId;
|
|
389
|
-
if (ackedMessageId === undefined && this.
|
|
380
|
+
if (ackedMessageId === undefined && this.session.usesMrp) {
|
|
390
381
|
ackedMessageId = this.#receivedMessageToAck?.packetHeader.messageId;
|
|
391
382
|
if (ackedMessageId !== undefined) {
|
|
392
383
|
this.#receivedMessageAckTimer.stop();
|
|
@@ -436,42 +427,49 @@ export class MessageExchange {
|
|
|
436
427
|
protocolId,
|
|
437
428
|
messageType,
|
|
438
429
|
isInitiatorMessage: this.isInitiator,
|
|
439
|
-
requiresAck: requiresAck ?? (this.
|
|
430
|
+
requiresAck: requiresAck ?? (this.session.usesMrp && !isStandaloneAck),
|
|
440
431
|
ackedMessageId,
|
|
441
432
|
hasSecuredExtension: false,
|
|
442
433
|
},
|
|
443
434
|
payload,
|
|
444
435
|
};
|
|
445
436
|
|
|
446
|
-
let ackPromise: Promise<Message> | undefined;
|
|
447
|
-
if (this.
|
|
437
|
+
let ackPromise: Promise<Message | undefined> | undefined;
|
|
438
|
+
if (this.session.usesMrp && message.payloadHeader.requiresAck && !disableMrpLogic) {
|
|
448
439
|
this.#sentMessageToAck = message;
|
|
449
440
|
this.#retransmissionTimer = Time.getTimer(
|
|
450
|
-
`
|
|
441
|
+
`retransmitting ${Message.via(this, message)}`,
|
|
451
442
|
this.channel.getMrpResubmissionBackOffTime(0),
|
|
452
443
|
() => this.#retransmitMessage(message, expectedProcessingTime),
|
|
453
444
|
);
|
|
454
|
-
const { promise, resolver, rejecter } = createPromise<Message>();
|
|
445
|
+
const { promise, resolver, rejecter } = createPromise<Message | undefined>();
|
|
455
446
|
ackPromise = promise;
|
|
456
447
|
this.#sentMessageAckSuccess = resolver;
|
|
457
448
|
this.#sentMessageAckFailure = rejecter;
|
|
458
449
|
}
|
|
459
450
|
|
|
451
|
+
using sending = this.join("sending", Diagnostic.strong(Message.via(this, message)));
|
|
460
452
|
await this.channel.send(message, logContext);
|
|
461
453
|
|
|
462
454
|
if (ackPromise !== undefined) {
|
|
463
455
|
this.#retransmissionCounter = 0;
|
|
464
456
|
this.#retransmissionTimer?.start();
|
|
465
|
-
|
|
457
|
+
|
|
458
|
+
// Await response. Resolves with message when received, undefined when aborted, and rejects on timeout
|
|
459
|
+
using _waiting = sending.join("waiting for ack");
|
|
466
460
|
const responseMessage = await ackPromise;
|
|
461
|
+
|
|
467
462
|
this.#sentMessageAckSuccess = undefined;
|
|
468
463
|
this.#sentMessageAckFailure = undefined;
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
464
|
+
|
|
465
|
+
if (responseMessage) {
|
|
466
|
+
// If we only expect an Ack without data but got data, throw an error
|
|
467
|
+
const {
|
|
468
|
+
payloadHeader: { protocolId, messageType },
|
|
469
|
+
} = responseMessage;
|
|
470
|
+
if (expectAckOnly && !SecureMessageType.isStandaloneAck(protocolId, messageType)) {
|
|
471
|
+
throw new UnexpectedMessageError("Expected ack only", this.session, responseMessage);
|
|
472
|
+
}
|
|
475
473
|
}
|
|
476
474
|
}
|
|
477
475
|
}
|
|
@@ -492,12 +490,25 @@ export class MessageExchange {
|
|
|
492
490
|
return this.#messagesQueue.read(timeout);
|
|
493
491
|
}
|
|
494
492
|
|
|
493
|
+
async #sendStandaloneAckForMessage(message: Message) {
|
|
494
|
+
const {
|
|
495
|
+
packetHeader: { messageId },
|
|
496
|
+
payloadHeader: { requiresAck },
|
|
497
|
+
} = message;
|
|
498
|
+
if (!requiresAck || !this.session.usesMrp) return;
|
|
499
|
+
|
|
500
|
+
await this.send(SecureMessageType.StandaloneAck, new Uint8Array(0), {
|
|
501
|
+
includeAcknowledgeMessageId: messageId,
|
|
502
|
+
protocolId: SECURE_CHANNEL_PROTOCOL_ID,
|
|
503
|
+
});
|
|
504
|
+
}
|
|
505
|
+
|
|
495
506
|
#retransmitMessage(message: Message, expectedProcessingTime?: Duration) {
|
|
496
507
|
this.#retransmissionCounter++;
|
|
497
|
-
if (this
|
|
508
|
+
if (this.isClosing || this.#retransmissionCounter >= MRP.MAX_TRANSMISSIONS) {
|
|
498
509
|
// Ok all 4 resubmissions are done, but we need to wait a bit longer because of processing time and
|
|
499
510
|
// the resubmissions from the other side
|
|
500
|
-
if (expectedProcessingTime && !this
|
|
511
|
+
if (expectedProcessingTime && !this.isClosing) {
|
|
501
512
|
// We already have waited after the last message was sent, so deduct this time from the final wait time
|
|
502
513
|
const finalWaitTime = Millis(
|
|
503
514
|
this.channel.calculateMaximumPeerResponseTime(
|
|
@@ -509,10 +520,10 @@ export class MessageExchange {
|
|
|
509
520
|
if (finalWaitTime > 0) {
|
|
510
521
|
this.#retransmissionCounter--; // We will not resubmit the message again
|
|
511
522
|
logger.debug(
|
|
512
|
-
`Message ${message
|
|
523
|
+
`Message ${Message.via(this, message)}: Wait additional ${Duration.format(finalWaitTime)} for processing time and peer resubmissions after all our resubmissions`,
|
|
513
524
|
);
|
|
514
525
|
this.#retransmissionTimer = Time.getTimer(
|
|
515
|
-
`
|
|
526
|
+
`waiting after resubmissions for ${Message.via(this, message)}`,
|
|
516
527
|
finalWaitTime,
|
|
517
528
|
() => this.#retransmitMessage(message),
|
|
518
529
|
).start();
|
|
@@ -529,7 +540,8 @@ export class MessageExchange {
|
|
|
529
540
|
}
|
|
530
541
|
if (this.#closeTimer !== undefined) {
|
|
531
542
|
// All resubmissions done and in closing, no need to wait further
|
|
532
|
-
|
|
543
|
+
// TODO await
|
|
544
|
+
this.#close().catch(error => logger.error("Error closing exchange", error));
|
|
533
545
|
}
|
|
534
546
|
return;
|
|
535
547
|
}
|
|
@@ -539,15 +551,16 @@ export class MessageExchange {
|
|
|
539
551
|
this.context.retry(this.#retransmissionCounter);
|
|
540
552
|
const resubmissionBackoffTime = this.channel.getMrpResubmissionBackOffTime(this.#retransmissionCounter);
|
|
541
553
|
logger.debug(
|
|
542
|
-
`
|
|
554
|
+
`Resubmitting ${Message.via(this, message)} (retransmission attempt ${this.#retransmissionCounter}, backoff time ${Duration.format(resubmissionBackoffTime)}))`,
|
|
543
555
|
);
|
|
544
556
|
|
|
557
|
+
// TODO await
|
|
545
558
|
this.channel
|
|
546
559
|
.send(message)
|
|
547
560
|
.then(() => this.#initializeResubmission(message, resubmissionBackoffTime, expectedProcessingTime))
|
|
548
561
|
.catch(error => {
|
|
549
|
-
logger.error(
|
|
550
|
-
if (error instanceof
|
|
562
|
+
logger.error(`Error retransmitting ${Message.via(this, message)}:`, error);
|
|
563
|
+
if (error instanceof SessionClosedError) {
|
|
551
564
|
this.#close().catch(error => logger.error("An error happened when closing the exchange", error));
|
|
552
565
|
} else {
|
|
553
566
|
this.#initializeResubmission(message, resubmissionBackoffTime, expectedProcessingTime);
|
|
@@ -561,13 +574,21 @@ export class MessageExchange {
|
|
|
561
574
|
).start();
|
|
562
575
|
}
|
|
563
576
|
|
|
577
|
+
[Symbol.asyncDispose]() {
|
|
578
|
+
return this.destroy();
|
|
579
|
+
}
|
|
580
|
+
|
|
564
581
|
async destroy() {
|
|
582
|
+
if (this.#isDestroyed) {
|
|
583
|
+
return;
|
|
584
|
+
}
|
|
585
|
+
this.#isDestroyed = true;
|
|
565
586
|
if (this.#closeTimer === undefined && this.#receivedMessageToAck !== undefined) {
|
|
566
587
|
this.#receivedMessageAckTimer.stop();
|
|
567
588
|
const messageToAck = this.#receivedMessageToAck;
|
|
568
589
|
this.#receivedMessageToAck = undefined;
|
|
569
590
|
try {
|
|
570
|
-
await this
|
|
591
|
+
await this.#sendStandaloneAckForMessage(messageToAck);
|
|
571
592
|
} catch (error) {
|
|
572
593
|
logger.error("An error happened when closing the exchange", error);
|
|
573
594
|
}
|
|
@@ -585,7 +606,8 @@ export class MessageExchange {
|
|
|
585
606
|
}
|
|
586
607
|
|
|
587
608
|
logger.debug(
|
|
588
|
-
"Starting timed interaction
|
|
609
|
+
"Starting timed interaction",
|
|
610
|
+
Mark.INBOUND,
|
|
589
611
|
this.channel.name,
|
|
590
612
|
Diagnostic.dict({ exId: this.#exchangeId, timeout: Duration.format(timeout) }),
|
|
591
613
|
);
|
|
@@ -620,7 +642,13 @@ export class MessageExchange {
|
|
|
620
642
|
return this.#timedInteractionTimer !== undefined && !this.#timedInteractionTimer.isRunning;
|
|
621
643
|
}
|
|
622
644
|
|
|
623
|
-
async close(force =
|
|
645
|
+
async close(force = this.isInitiator) {
|
|
646
|
+
if (this.#isDestroyed) {
|
|
647
|
+
return;
|
|
648
|
+
}
|
|
649
|
+
|
|
650
|
+
this.#lifetime.closing();
|
|
651
|
+
|
|
624
652
|
if (this.#closeTimer !== undefined) {
|
|
625
653
|
if (force) {
|
|
626
654
|
// Force close does not wait any longer
|
|
@@ -633,26 +661,22 @@ export class MessageExchange {
|
|
|
633
661
|
if (!this.#used) {
|
|
634
662
|
// The exchange was never in use, so we can close it directly
|
|
635
663
|
// If we see that in the wild we should fix the reasons
|
|
636
|
-
logger.info(
|
|
664
|
+
logger.info(this.via, `Exchange never used, closing directly`);
|
|
637
665
|
return this.#close();
|
|
638
666
|
}
|
|
639
|
-
this.#
|
|
640
|
-
this.#closing.emit();
|
|
667
|
+
await this.#closing.emit(true);
|
|
641
668
|
|
|
642
669
|
if (this.#receivedMessageToAck !== undefined) {
|
|
643
670
|
this.#receivedMessageAckTimer.stop();
|
|
644
671
|
const messageToAck = this.#receivedMessageToAck;
|
|
645
672
|
this.#receivedMessageToAck = undefined;
|
|
646
673
|
try {
|
|
647
|
-
await this
|
|
674
|
+
await this.#sendStandaloneAckForMessage(messageToAck);
|
|
648
675
|
} catch (error) {
|
|
649
|
-
logger.error(
|
|
650
|
-
`An error happened when closing the exchange ${this.session.name} / ${this.#exchangeId}`,
|
|
651
|
-
error,
|
|
652
|
-
);
|
|
676
|
+
logger.error(this.via, `Unhandled error closing exchange`, error);
|
|
653
677
|
}
|
|
654
678
|
if (force) {
|
|
655
|
-
// We have sent the Ack, so close here, no retries
|
|
679
|
+
// We have sent the Ack, so close here, no retries needed
|
|
656
680
|
return this.#close();
|
|
657
681
|
}
|
|
658
682
|
} else if (this.#sentMessageToAck === undefined || force) {
|
|
@@ -668,29 +692,42 @@ export class MessageExchange {
|
|
|
668
692
|
maxResubmissionTime = Millis(maxResubmissionTime + this.channel.getMrpResubmissionBackOffTime(i));
|
|
669
693
|
}
|
|
670
694
|
this.#closeTimer = Time.getTimer(
|
|
671
|
-
`
|
|
695
|
+
`Exchange ${this.via} close`,
|
|
672
696
|
maxResubmissionTime,
|
|
673
697
|
async () => await this.#close(),
|
|
674
698
|
).start();
|
|
675
699
|
}
|
|
676
700
|
|
|
677
701
|
async #close() {
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
}
|
|
681
|
-
this.#isClosing = true;
|
|
702
|
+
using _closing = this.#lifetime.closing();
|
|
703
|
+
|
|
682
704
|
this.#retransmissionTimer?.stop();
|
|
705
|
+
this.#sentMessageAckSuccess?.(undefined);
|
|
706
|
+
|
|
683
707
|
this.#closeTimer?.stop();
|
|
684
708
|
this.#timedInteractionTimer?.stop();
|
|
685
709
|
this.#messagesQueue.close();
|
|
686
|
-
|
|
710
|
+
|
|
711
|
+
await this.#closed.emit(true);
|
|
687
712
|
}
|
|
688
713
|
|
|
689
714
|
get via() {
|
|
690
|
-
if (this.session === undefined
|
|
691
|
-
return this.
|
|
715
|
+
if (this.session === undefined) {
|
|
716
|
+
return Diagnostic.via(`${Mark.EXCHANGE}${this.idStr}`);
|
|
692
717
|
}
|
|
693
718
|
|
|
694
|
-
return Diagnostic.via(`${
|
|
719
|
+
return Diagnostic.via(`${this.session.via}${Mark.EXCHANGE}${this.idStr}`);
|
|
720
|
+
}
|
|
721
|
+
}
|
|
722
|
+
|
|
723
|
+
export namespace MessageExchange {
|
|
724
|
+
export interface Config {
|
|
725
|
+
context: MessageExchangeContext;
|
|
726
|
+
isInitiator: boolean;
|
|
727
|
+
peerSessionId: number;
|
|
728
|
+
nodeId?: NodeId;
|
|
729
|
+
peerNodeId?: NodeId;
|
|
730
|
+
exchangeId: number;
|
|
731
|
+
protocolId: number;
|
|
695
732
|
}
|
|
696
733
|
}
|