@streamr/dht 100.0.0-testnet-one.4 → 100.0.0-testnet-two.1
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/package.json +66 -0
- package/dist/src/connection/ConnectionLockHandler.d.ts +11 -11
- package/dist/src/connection/ConnectionLockHandler.js.map +1 -1
- package/dist/src/connection/ConnectionLockRpcLocal.d.ts +3 -3
- package/dist/src/connection/ConnectionLockRpcLocal.js +4 -4
- package/dist/src/connection/ConnectionLockRpcLocal.js.map +1 -1
- package/dist/src/connection/ConnectionLockRpcRemote.d.ts +3 -5
- package/dist/src/connection/ConnectionLockRpcRemote.js +4 -7
- package/dist/src/connection/ConnectionLockRpcRemote.js.map +1 -1
- package/dist/src/connection/ConnectionManager.d.ts +4 -6
- package/dist/src/connection/ConnectionManager.js +48 -46
- package/dist/src/connection/ConnectionManager.js.map +1 -1
- package/dist/src/connection/ConnectorFacade.d.ts +2 -2
- package/dist/src/connection/ConnectorFacade.js +2 -1
- package/dist/src/connection/ConnectorFacade.js.map +1 -1
- package/dist/src/connection/Handshaker.d.ts +1 -1
- package/dist/src/connection/Handshaker.js +14 -5
- package/dist/src/connection/Handshaker.js.map +1 -1
- package/dist/src/connection/ManagedConnection.d.ts +4 -7
- package/dist/src/connection/ManagedConnection.js +9 -13
- package/dist/src/connection/ManagedConnection.js.map +1 -1
- package/dist/src/connection/connectivityChecker.js +1 -0
- package/dist/src/connection/connectivityChecker.js.map +1 -1
- package/dist/src/connection/simulator/Simulator.d.ts +0 -3
- package/dist/src/connection/simulator/Simulator.js +3 -51
- package/dist/src/connection/simulator/Simulator.js.map +1 -1
- package/dist/src/connection/simulator/SimulatorConnector.js +5 -5
- package/dist/src/connection/simulator/SimulatorConnector.js.map +1 -1
- package/dist/src/connection/webrtc/NodeWebrtcConnection.js +2 -2
- package/dist/src/connection/webrtc/NodeWebrtcConnection.js.map +1 -1
- package/dist/src/connection/webrtc/WebrtcConnector.d.ts +0 -1
- package/dist/src/connection/webrtc/WebrtcConnector.js +7 -9
- package/dist/src/connection/webrtc/WebrtcConnector.js.map +1 -1
- package/dist/src/connection/webrtc/WebrtcConnectorRpcLocal.d.ts +2 -2
- package/dist/src/connection/webrtc/WebrtcConnectorRpcLocal.js +21 -14
- package/dist/src/connection/webrtc/WebrtcConnectorRpcLocal.js.map +1 -1
- package/dist/src/connection/webrtc/WebrtcConnectorRpcRemote.d.ts +2 -5
- package/dist/src/connection/webrtc/WebrtcConnectorRpcRemote.js +1 -4
- package/dist/src/connection/webrtc/WebrtcConnectorRpcRemote.js.map +1 -1
- package/dist/src/connection/websocket/AutoCertifierClientFacade.d.ts +1 -2
- package/dist/src/connection/websocket/AutoCertifierClientFacade.js +3 -4
- package/dist/src/connection/websocket/AutoCertifierClientFacade.js.map +1 -1
- package/dist/src/connection/websocket/ClientWebsocket.js.map +1 -1
- package/dist/src/connection/websocket/WebsocketConnector.d.ts +2 -7
- package/dist/src/connection/websocket/WebsocketConnector.js +48 -44
- package/dist/src/connection/websocket/WebsocketConnector.js.map +1 -1
- package/dist/src/connection/websocket/WebsocketConnectorRpcLocal.d.ts +3 -2
- package/dist/src/connection/websocket/WebsocketConnectorRpcLocal.js +8 -10
- package/dist/src/connection/websocket/WebsocketConnectorRpcLocal.js.map +1 -1
- package/dist/src/connection/websocket/WebsocketConnectorRpcRemote.d.ts +3 -6
- package/dist/src/connection/websocket/WebsocketConnectorRpcRemote.js +0 -3
- package/dist/src/connection/websocket/WebsocketConnectorRpcRemote.js.map +1 -1
- package/dist/src/connection/websocket/WebsocketServer.d.ts +1 -4
- package/dist/src/connection/websocket/WebsocketServer.js +11 -12
- package/dist/src/connection/websocket/WebsocketServer.js.map +1 -1
- package/dist/src/dht/DhtNode.d.ts +10 -13
- package/dist/src/dht/DhtNode.js +41 -54
- package/dist/src/dht/DhtNode.js.map +1 -1
- package/dist/src/dht/DhtNodeRpcLocal.d.ts +2 -3
- package/dist/src/dht/DhtNodeRpcLocal.js +1 -1
- package/dist/src/dht/DhtNodeRpcLocal.js.map +1 -1
- package/dist/src/dht/DhtNodeRpcRemote.d.ts +7 -7
- package/dist/src/dht/DhtNodeRpcRemote.js +9 -11
- package/dist/src/dht/DhtNodeRpcRemote.js.map +1 -1
- package/dist/src/dht/ExternalApiRpcLocal.d.ts +5 -4
- package/dist/src/dht/ExternalApiRpcLocal.js +3 -2
- package/dist/src/dht/ExternalApiRpcLocal.js.map +1 -1
- package/dist/src/dht/ExternalApiRpcRemote.d.ts +2 -2
- package/dist/src/dht/ExternalApiRpcRemote.js +2 -0
- package/dist/src/dht/ExternalApiRpcRemote.js.map +1 -1
- package/dist/src/dht/PeerManager.d.ts +13 -14
- package/dist/src/dht/PeerManager.js +45 -60
- package/dist/src/dht/PeerManager.js.map +1 -1
- package/dist/src/dht/contact/Contact.d.ts +2 -2
- package/dist/src/dht/contact/Contact.js +2 -2
- package/dist/src/dht/contact/Contact.js.map +1 -1
- package/dist/src/dht/contact/ContactList.d.ts +7 -7
- package/dist/src/dht/contact/ContactList.js +3 -3
- package/dist/src/dht/contact/ContactList.js.map +1 -1
- package/dist/src/dht/contact/RandomContactList.d.ts +4 -4
- package/dist/src/dht/contact/RandomContactList.js +12 -11
- package/dist/src/dht/contact/RandomContactList.js.map +1 -1
- package/dist/src/dht/contact/RpcRemote.d.ts +7 -4
- package/dist/src/dht/contact/RpcRemote.js +5 -2
- package/dist/src/dht/contact/RpcRemote.js.map +1 -1
- package/dist/src/dht/contact/SortedContactList.d.ts +13 -13
- package/dist/src/dht/contact/SortedContactList.js +33 -29
- package/dist/src/dht/contact/SortedContactList.js.map +1 -1
- package/dist/src/dht/discovery/DiscoverySession.d.ts +2 -4
- package/dist/src/dht/discovery/DiscoverySession.js +19 -23
- package/dist/src/dht/discovery/DiscoverySession.js.map +1 -1
- package/dist/src/dht/discovery/PeerDiscovery.d.ts +2 -5
- package/dist/src/dht/discovery/PeerDiscovery.js +12 -20
- package/dist/src/dht/discovery/PeerDiscovery.js.map +1 -1
- package/dist/src/dht/recursive-operation/RecursiveOperationManager.d.ts +36 -0
- package/dist/src/dht/recursive-operation/RecursiveOperationManager.js +165 -0
- package/dist/src/dht/recursive-operation/RecursiveOperationManager.js.map +1 -0
- package/dist/src/dht/recursive-operation/RecursiveOperationRpcLocal.d.ts +14 -0
- package/dist/src/dht/{find/FindRpcLocal.js → recursive-operation/RecursiveOperationRpcLocal.js} +7 -7
- package/dist/src/dht/recursive-operation/RecursiveOperationRpcLocal.js.map +1 -0
- package/dist/src/dht/recursive-operation/RecursiveOperationRpcRemote.d.ts +6 -0
- package/dist/src/dht/{routing/FindRpcRemote.js → recursive-operation/RecursiveOperationRpcRemote.js} +11 -11
- package/dist/src/dht/recursive-operation/RecursiveOperationRpcRemote.js.map +1 -0
- package/dist/src/dht/recursive-operation/RecursiveOperationSession.d.ts +42 -0
- package/dist/src/dht/recursive-operation/RecursiveOperationSession.js +182 -0
- package/dist/src/dht/recursive-operation/RecursiveOperationSession.js.map +1 -0
- package/dist/src/dht/recursive-operation/RecursiveOperationSessionRpcLocal.d.ts +12 -0
- package/dist/src/dht/recursive-operation/RecursiveOperationSessionRpcLocal.js +17 -0
- package/dist/src/dht/recursive-operation/RecursiveOperationSessionRpcLocal.js.map +1 -0
- package/dist/src/dht/recursive-operation/RecursiveOperationSessionRpcRemote.d.ts +6 -0
- package/dist/src/dht/recursive-operation/RecursiveOperationSessionRpcRemote.js +21 -0
- package/dist/src/dht/recursive-operation/RecursiveOperationSessionRpcRemote.js.map +1 -0
- package/dist/src/dht/routing/Router.d.ts +4 -19
- package/dist/src/dht/routing/Router.js +41 -33
- package/dist/src/dht/routing/Router.js.map +1 -1
- package/dist/src/dht/routing/RouterRpcLocal.js +6 -5
- package/dist/src/dht/routing/RouterRpcLocal.js.map +1 -1
- package/dist/src/dht/routing/RouterRpcRemote.d.ts +2 -2
- package/dist/src/dht/routing/RouterRpcRemote.js +7 -7
- package/dist/src/dht/routing/RouterRpcRemote.js.map +1 -1
- package/dist/src/dht/routing/RoutingSession.d.ts +20 -16
- package/dist/src/dht/routing/RoutingSession.js +37 -45
- package/dist/src/dht/routing/RoutingSession.js.map +1 -1
- package/dist/src/dht/store/LocalDataStore.d.ts +11 -13
- package/dist/src/dht/store/LocalDataStore.js +36 -56
- package/dist/src/dht/store/LocalDataStore.js.map +1 -1
- package/dist/src/dht/store/StoreManager.d.ts +33 -0
- package/dist/src/dht/store/StoreManager.js +186 -0
- package/dist/src/dht/store/StoreManager.js.map +1 -0
- package/dist/src/dht/store/StoreRpcLocal.d.ts +8 -40
- package/dist/src/dht/store/StoreRpcLocal.js +13 -229
- package/dist/src/dht/store/StoreRpcLocal.js.map +1 -1
- package/dist/src/dht/store/StoreRpcRemote.d.ts +5 -5
- package/dist/src/dht/store/StoreRpcRemote.js +4 -5
- package/dist/src/dht/store/StoreRpcRemote.js.map +1 -1
- package/dist/src/exports.d.ts +2 -0
- package/dist/src/exports.js.map +1 -1
- package/dist/src/helpers/MapWithTtl.d.ts +14 -0
- package/dist/src/helpers/MapWithTtl.js +59 -0
- package/dist/src/helpers/MapWithTtl.js.map +1 -0
- package/dist/src/helpers/PeerID.d.ts +2 -0
- package/dist/src/helpers/PeerID.js +4 -0
- package/dist/src/helpers/PeerID.js.map +1 -1
- package/dist/src/helpers/nodeId.d.ts +5 -0
- package/dist/src/helpers/nodeId.js +18 -1
- package/dist/src/helpers/nodeId.js.map +1 -1
- package/dist/src/helpers/peerIdFromPeerDescriptor.d.ts +2 -1
- package/dist/src/helpers/peerIdFromPeerDescriptor.js +2 -1
- package/dist/src/helpers/peerIdFromPeerDescriptor.js.map +1 -1
- package/dist/src/helpers/protoClasses.js +2 -3
- package/dist/src/helpers/protoClasses.js.map +1 -1
- package/dist/src/helpers/versionCompatibility.d.ts +2 -0
- package/dist/src/helpers/versionCompatibility.js +18 -0
- package/dist/src/helpers/versionCompatibility.js.map +1 -0
- package/dist/src/proto/packages/dht/protos/DhtRpc.client.d.ts +21 -22
- package/dist/src/proto/packages/dht/protos/DhtRpc.client.js +18 -18
- package/dist/src/proto/packages/dht/protos/DhtRpc.client.js.map +1 -1
- package/dist/src/proto/packages/dht/protos/DhtRpc.d.ts +49 -65
- package/dist/src/proto/packages/dht/protos/DhtRpc.js +43 -58
- package/dist/src/proto/packages/dht/protos/DhtRpc.js.map +1 -1
- package/dist/src/proto/packages/dht/protos/DhtRpc.server.d.ts +11 -12
- package/dist/src/rpc-protocol/DhtCallContext.d.ts +2 -1
- package/dist/src/rpc-protocol/DhtCallContext.js.map +1 -1
- package/dist/src/rpc-protocol/DhtRpcOptions.d.ts +2 -1
- package/dist/src/transport/ITransport.d.ts +9 -1
- package/dist/src/transport/ITransport.js +5 -0
- package/dist/src/transport/ITransport.js.map +1 -1
- package/dist/src/transport/ListeningRpcCommunicator.js +1 -1
- package/dist/src/transport/ListeningRpcCommunicator.js.map +1 -1
- package/dist/src/transport/RoutingRpcCommunicator.d.ts +2 -1
- package/dist/src/transport/RoutingRpcCommunicator.js +16 -11
- package/dist/src/transport/RoutingRpcCommunicator.js.map +1 -1
- package/jest.config.js +4 -1
- package/karma-setup.js +2 -0
- package/karma.config.js +11 -7
- package/package.json +6 -7
- package/protos/DhtRpc.proto +20 -24
- package/src/connection/ConnectionLockHandler.ts +15 -15
- package/src/connection/ConnectionLockRpcLocal.ts +8 -9
- package/src/connection/ConnectionLockRpcRemote.ts +7 -16
- package/src/connection/ConnectionManager.ts +58 -55
- package/src/connection/ConnectorFacade.ts +3 -0
- package/src/connection/Handshaker.ts +21 -6
- package/src/connection/ManagedConnection.ts +20 -34
- package/src/connection/connectivityChecker.ts +1 -0
- package/src/connection/simulator/Simulator.ts +5 -36
- package/src/connection/simulator/SimulatorConnector.ts +8 -8
- package/src/connection/webrtc/BrowserWebrtcConnection.ts +0 -3
- package/src/connection/webrtc/NodeWebrtcConnection.ts +3 -4
- package/src/connection/webrtc/WebrtcConnector.ts +11 -13
- package/src/connection/webrtc/WebrtcConnectorRpcLocal.ts +25 -18
- package/src/connection/webrtc/WebrtcConnectorRpcRemote.ts +3 -13
- package/src/connection/websocket/AutoCertifierClientFacade.ts +4 -6
- package/src/connection/websocket/ClientWebsocket.ts +1 -0
- package/src/connection/websocket/WebsocketConnector.ts +57 -61
- package/src/connection/websocket/WebsocketConnectorRpcLocal.ts +11 -13
- package/src/connection/websocket/WebsocketConnectorRpcRemote.ts +4 -15
- package/src/connection/websocket/WebsocketServer.ts +14 -17
- package/src/dht/DhtNode.ts +69 -71
- package/src/dht/DhtNodeRpcLocal.ts +1 -3
- package/src/dht/DhtNodeRpcRemote.ts +14 -18
- package/src/dht/ExternalApiRpcLocal.ts +16 -6
- package/src/dht/ExternalApiRpcRemote.ts +5 -3
- package/src/dht/PeerManager.ts +73 -90
- package/src/dht/contact/Contact.ts +5 -4
- package/src/dht/contact/ContactList.ts +9 -9
- package/src/dht/contact/RandomContactList.ts +14 -14
- package/src/dht/contact/RpcRemote.ts +10 -7
- package/src/dht/contact/SortedContactList.ts +48 -45
- package/src/dht/discovery/DiscoverySession.ts +25 -27
- package/src/dht/discovery/PeerDiscovery.ts +16 -37
- package/src/dht/recursive-operation/RecursiveOperationManager.ts +240 -0
- package/src/dht/{find/FindRpcLocal.ts → recursive-operation/RecursiveOperationRpcLocal.ts} +9 -9
- package/src/dht/{routing/FindRpcRemote.ts → recursive-operation/RecursiveOperationRpcRemote.ts} +10 -10
- package/src/dht/recursive-operation/RecursiveOperationSession.ts +224 -0
- package/src/dht/recursive-operation/RecursiveOperationSessionRpcLocal.ts +25 -0
- package/src/dht/{find/FindSessionRpcRemote.ts → recursive-operation/RecursiveOperationSessionRpcRemote.ts} +8 -8
- package/src/dht/routing/Router.ts +45 -64
- package/src/dht/routing/RouterRpcLocal.ts +7 -6
- package/src/dht/routing/RouterRpcRemote.ts +9 -10
- package/src/dht/routing/RoutingSession.ts +59 -68
- package/src/dht/store/LocalDataStore.ts +47 -66
- package/src/dht/store/StoreManager.ts +217 -0
- package/src/dht/store/StoreRpcLocal.ts +26 -302
- package/src/dht/store/StoreRpcRemote.ts +9 -11
- package/src/exports.ts +2 -0
- package/src/helpers/MapWithTtl.ts +71 -0
- package/src/helpers/PeerID.ts +5 -0
- package/src/helpers/nodeId.ts +20 -0
- package/src/helpers/peerIdFromPeerDescriptor.ts +5 -3
- package/src/helpers/protoClasses.ts +4 -6
- package/src/helpers/versionCompatibility.ts +13 -0
- package/src/proto/packages/dht/protos/DhtRpc.client.ts +31 -32
- package/src/proto/packages/dht/protos/DhtRpc.server.ts +11 -12
- package/src/proto/packages/dht/protos/DhtRpc.ts +67 -90
- package/src/rpc-protocol/DhtCallContext.ts +2 -1
- package/src/rpc-protocol/DhtRpcOptions.ts +2 -1
- package/src/transport/ITransport.ts +10 -1
- package/src/transport/ListeningRpcCommunicator.ts +1 -1
- package/src/transport/RoutingRpcCommunicator.ts +18 -12
- package/test/benchmark/Find.test.ts +8 -21
- package/test/benchmark/KademliaCorrectness.test.ts +11 -20
- package/test/benchmark/SortedContactListBenchmark.test.ts +9 -9
- package/test/benchmark/kademlia-simulation/Contact.ts +9 -8
- package/test/benchmark/kademlia-simulation/KademliaSimulation.ts +2 -2
- package/test/benchmark/kademlia-simulation/SimulationNode.ts +17 -17
- package/test/end-to-end/Layer0-Layer1.test.ts +10 -14
- package/test/end-to-end/Layer0.test.ts +15 -18
- package/test/end-to-end/Layer0MixedConnectionTypes.test.ts +7 -9
- package/test/end-to-end/Layer0Webrtc-Layer1.test.ts +4 -10
- package/test/end-to-end/Layer0Webrtc.test.ts +5 -6
- package/test/end-to-end/Layer1-Scale-WebSocket.test.ts +8 -16
- package/test/end-to-end/Layer1-Scale-Webrtc.test.ts +6 -13
- package/test/end-to-end/WebsocketConnectionRequest.test.ts +5 -6
- package/test/end-to-end/memory-leak.test.ts +6 -8
- package/test/integration/ConnectionLocking.test.ts +6 -13
- package/test/integration/ConnectionManager.test.ts +26 -43
- package/test/integration/DhtJoinPeerDiscovery.test.ts +5 -10
- package/test/integration/DhtNodeExternalAPI.test.ts +16 -22
- package/test/integration/DhtNodeRpcRemote.test.ts +13 -22
- package/test/integration/DhtRpc.test.ts +13 -18
- package/test/integration/Find.test.ts +10 -10
- package/test/integration/Layer1-scale.test.ts +17 -28
- package/test/integration/Mock-Layer1-Layer0.test.ts +25 -43
- package/test/integration/MultipleEntryPointJoining.test.ts +7 -7
- package/test/integration/ReplicateData.test.ts +28 -30
- package/test/integration/RouteMessage.test.ts +30 -27
- package/test/integration/RouterRpcRemote.test.ts +12 -18
- package/test/integration/RpcErrors.test.ts +8 -21
- package/test/integration/ScaleDownDht.test.ts +11 -10
- package/test/integration/SimultaneousConnections.test.ts +43 -67
- package/test/integration/Store.test.ts +23 -36
- package/test/integration/StoreAndDelete.test.ts +30 -50
- package/test/integration/StoreOnDhtWithTwoNodes.test.ts +16 -37
- package/test/integration/StoreRpcRemote.test.ts +20 -30
- package/test/integration/WebrtcConnectionManagement.test.ts +3 -13
- package/test/integration/WebrtcConnectorRpc.test.ts +3 -9
- package/test/integration/WebsocketConnectionManagement.test.ts +7 -10
- package/test/integration/WebsocketConnectorRpc.test.ts +8 -17
- package/test/unit/ConnectivityHelpers.test.ts +9 -17
- package/test/unit/DuplicateDetector.test.ts +7 -4
- package/test/unit/LocalDataStore.test.ts +66 -77
- package/test/unit/PeerManager.test.ts +31 -0
- package/test/unit/RandomContactList.test.ts +13 -8
- package/test/unit/{Finder.test.ts → RecursiveOperationManager.test.ts} +38 -43
- package/test/unit/RecursiveOperationSession.test.ts +68 -0
- package/test/unit/Router.test.ts +15 -22
- package/test/unit/RoutingSession.test.ts +23 -25
- package/test/unit/SortedContactList.test.ts +41 -26
- package/test/unit/StoreManager.test.ts +132 -0
- package/test/unit/WebsocketConnector.test.ts +27 -35
- package/test/unit/customMatchers.test.ts +16 -0
- package/test/unit/versionCompatibility.test.ts +16 -0
- package/test/utils/FakeTransport.ts +44 -0
- package/test/utils/customMatchers.ts +70 -0
- package/test/utils/mock/MockRpcCommunicator.ts +7 -0
- package/test/utils/mock/Router.ts +3 -2
- package/test/utils/mock/mockDataEntry.ts +36 -0
- package/test/utils/utils.ts +49 -87
- package/tsconfig.browser.json +2 -1
- package/tsconfig.jest.json +2 -1
- package/tsconfig.node.json +2 -1
- package/dist/src/dht/find/FindRpcLocal.d.ts +0 -14
- package/dist/src/dht/find/FindRpcLocal.js.map +0 -1
- package/dist/src/dht/find/FindSession.d.ts +0 -44
- package/dist/src/dht/find/FindSession.js +0 -150
- package/dist/src/dht/find/FindSession.js.map +0 -1
- package/dist/src/dht/find/FindSessionRpcLocal.d.ts +0 -12
- package/dist/src/dht/find/FindSessionRpcLocal.js +0 -17
- package/dist/src/dht/find/FindSessionRpcLocal.js.map +0 -1
- package/dist/src/dht/find/FindSessionRpcRemote.d.ts +0 -6
- package/dist/src/dht/find/FindSessionRpcRemote.js +0 -21
- package/dist/src/dht/find/FindSessionRpcRemote.js.map +0 -1
- package/dist/src/dht/find/Finder.d.ts +0 -49
- package/dist/src/dht/find/Finder.js +0 -197
- package/dist/src/dht/find/Finder.js.map +0 -1
- package/dist/src/dht/routing/FindRpcRemote.d.ts +0 -6
- package/dist/src/dht/routing/FindRpcRemote.js.map +0 -1
- package/src/dht/find/FindSession.ts +0 -183
- package/src/dht/find/FindSessionRpcLocal.ts +0 -25
- package/src/dht/find/Finder.ts +0 -295
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/parameter-properties */
|
|
2
2
|
import EventEmitter from 'eventemitter3'
|
|
3
|
-
import { PeerIDKey } from '../../helpers/PeerID'
|
|
4
3
|
import { PeerDescriptor } from '../../proto/packages/dht/protos/DhtRpc'
|
|
5
4
|
import { ConnectionSourceEvents } from '../IConnectionSource'
|
|
6
5
|
import { SimulatorConnector } from './SimulatorConnector'
|
|
@@ -8,19 +7,10 @@ import { SimulatorConnection } from './SimulatorConnection'
|
|
|
8
7
|
import { ConnectionID } from '../IConnection'
|
|
9
8
|
import { Logger } from '@streamr/utils'
|
|
10
9
|
import { getRegionDelayMatrix } from './pings'
|
|
11
|
-
import {
|
|
10
|
+
import { getNodeIdFromPeerDescriptor } from '../../helpers/peerIdFromPeerDescriptor'
|
|
12
11
|
import Heap from 'heap'
|
|
13
12
|
import { debugVars } from '../../helpers/debugHelpers'
|
|
14
|
-
import
|
|
15
|
-
|
|
16
|
-
// TODO take this from @streamr/test-utils (we can't access devDependencies as Simulator
|
|
17
|
-
// is currently in "src" directory instead of "test" directory)
|
|
18
|
-
// eslint-disable-next-line no-underscore-dangle
|
|
19
|
-
declare let _streamr_electron_test: any
|
|
20
|
-
export function isRunningInElectron(): boolean {
|
|
21
|
-
// eslint-disable-next-line no-underscore-dangle
|
|
22
|
-
return typeof _streamr_electron_test !== 'undefined'
|
|
23
|
-
}
|
|
13
|
+
import { NodeID } from '../../helpers/nodeId'
|
|
24
14
|
|
|
25
15
|
const logger = new Logger(module)
|
|
26
16
|
|
|
@@ -102,7 +92,7 @@ class CloseOperation extends SimulatorOperation {
|
|
|
102
92
|
|
|
103
93
|
export class Simulator extends EventEmitter<ConnectionSourceEvents> {
|
|
104
94
|
private stopped = false
|
|
105
|
-
private connectors: Map<
|
|
95
|
+
private connectors: Map<NodeID, SimulatorConnector> = new Map()
|
|
106
96
|
private latencyTable?: Array<Array<number>>
|
|
107
97
|
private associations: Map<ConnectionID, Association> = new Map()
|
|
108
98
|
|
|
@@ -121,22 +111,6 @@ export class Simulator extends EventEmitter<ConnectionSourceEvents> {
|
|
|
121
111
|
})
|
|
122
112
|
|
|
123
113
|
private simulatorTimeout?: NodeJS.Timeout
|
|
124
|
-
private static clock: sinon.SinonFakeTimers | undefined
|
|
125
|
-
|
|
126
|
-
static useFakeTimers(on = true): void {
|
|
127
|
-
if (!isRunningInElectron()) { // never use fake timers in browser environment
|
|
128
|
-
if (on) {
|
|
129
|
-
if (!Simulator.clock) {
|
|
130
|
-
Simulator.clock = sinon.useFakeTimers()
|
|
131
|
-
}
|
|
132
|
-
} else {
|
|
133
|
-
if (Simulator.clock) {
|
|
134
|
-
Simulator.clock.restore()
|
|
135
|
-
Simulator.clock = undefined
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
114
|
|
|
141
115
|
constructor(latencyType: LatencyType = LatencyType.NONE, fixedLatency?: number) {
|
|
142
116
|
super()
|
|
@@ -214,11 +188,11 @@ export class Simulator extends EventEmitter<ConnectionSourceEvents> {
|
|
|
214
188
|
}
|
|
215
189
|
|
|
216
190
|
public addConnector(connector: SimulatorConnector): void {
|
|
217
|
-
this.connectors.set(
|
|
191
|
+
this.connectors.set(getNodeIdFromPeerDescriptor(connector.getPeerDescriptor()), connector)
|
|
218
192
|
}
|
|
219
193
|
|
|
220
194
|
private executeConnectOperation(operation: ConnectOperation): void {
|
|
221
|
-
const target = this.connectors.get(
|
|
195
|
+
const target = this.connectors.get(getNodeIdFromPeerDescriptor(operation.targetDescriptor))
|
|
222
196
|
|
|
223
197
|
if (!target) {
|
|
224
198
|
logger.error('Target connector not found when executing connect operation')
|
|
@@ -311,11 +285,6 @@ export class Simulator extends EventEmitter<ConnectionSourceEvents> {
|
|
|
311
285
|
const timeDifference = firstOperationTime - currentTime
|
|
312
286
|
|
|
313
287
|
this.simulatorTimeout = setTimeout(this.executeQueuedOperations, timeDifference)
|
|
314
|
-
|
|
315
|
-
if (Simulator.clock) {
|
|
316
|
-
// TODO should we have some handling for this floating promise?
|
|
317
|
-
Simulator.clock.runAllAsync()
|
|
318
|
-
}
|
|
319
288
|
}
|
|
320
289
|
|
|
321
290
|
private scheduleOperation(operation: SimulatorOperation) {
|
|
@@ -6,16 +6,16 @@ import {
|
|
|
6
6
|
} from '../../proto/packages/dht/protos/DhtRpc'
|
|
7
7
|
import { Logger } from '@streamr/utils'
|
|
8
8
|
import { ManagedConnection } from '../ManagedConnection'
|
|
9
|
-
import { PeerIDKey } from '../../helpers/PeerID'
|
|
10
9
|
import { Simulator } from './Simulator'
|
|
11
10
|
import { SimulatorConnection } from './SimulatorConnection'
|
|
12
|
-
import { getNodeIdFromPeerDescriptor
|
|
11
|
+
import { getNodeIdFromPeerDescriptor } from '../../helpers/peerIdFromPeerDescriptor'
|
|
12
|
+
import { NodeID } from '../../helpers/nodeId'
|
|
13
13
|
|
|
14
14
|
const logger = new Logger(module)
|
|
15
15
|
|
|
16
16
|
export class SimulatorConnector {
|
|
17
17
|
|
|
18
|
-
private connectingConnections: Map<
|
|
18
|
+
private connectingConnections: Map<NodeID, ManagedConnection> = new Map()
|
|
19
19
|
private stopped = false
|
|
20
20
|
private localPeerDescriptor: PeerDescriptor
|
|
21
21
|
private simulator: Simulator
|
|
@@ -33,8 +33,8 @@ export class SimulatorConnector {
|
|
|
33
33
|
|
|
34
34
|
public connect(targetPeerDescriptor: PeerDescriptor): ManagedConnection {
|
|
35
35
|
logger.trace('connect() ' + getNodeIdFromPeerDescriptor(targetPeerDescriptor))
|
|
36
|
-
const
|
|
37
|
-
const existingConnection = this.connectingConnections.get(
|
|
36
|
+
const nodeId = getNodeIdFromPeerDescriptor(targetPeerDescriptor)
|
|
37
|
+
const existingConnection = this.connectingConnections.get(nodeId)
|
|
38
38
|
if (existingConnection) {
|
|
39
39
|
return existingConnection
|
|
40
40
|
}
|
|
@@ -44,12 +44,12 @@ export class SimulatorConnector {
|
|
|
44
44
|
const managedConnection = new ManagedConnection(this.localPeerDescriptor, ConnectionType.SIMULATOR_CLIENT, connection, undefined)
|
|
45
45
|
managedConnection.setRemotePeerDescriptor(targetPeerDescriptor)
|
|
46
46
|
|
|
47
|
-
this.connectingConnections.set(
|
|
47
|
+
this.connectingConnections.set(nodeId, managedConnection)
|
|
48
48
|
connection.once('disconnected', () => {
|
|
49
|
-
this.connectingConnections.delete(
|
|
49
|
+
this.connectingConnections.delete(nodeId)
|
|
50
50
|
})
|
|
51
51
|
connection.once('connected', () => {
|
|
52
|
-
this.connectingConnections.delete(
|
|
52
|
+
this.connectingConnections.delete(nodeId)
|
|
53
53
|
})
|
|
54
54
|
|
|
55
55
|
connection.connect()
|
|
@@ -22,12 +22,9 @@ export class NodeWebrtcConnection extends EventEmitter<Events> implements IWebrt
|
|
|
22
22
|
|
|
23
23
|
public connectionId: ConnectionID
|
|
24
24
|
public readonly connectionType: ConnectionType = ConnectionType.WEBRTC
|
|
25
|
-
|
|
26
25
|
// We need to keep track of connection state ourselves because
|
|
27
26
|
// RTCPeerConnection.connectionState is not supported on Firefox
|
|
28
|
-
|
|
29
27
|
private lastState: RTCPeerConnectionState = 'connecting'
|
|
30
|
-
|
|
31
28
|
private readonly iceServers: IceServer[]
|
|
32
29
|
private peerConnection?: RTCPeerConnection
|
|
33
30
|
private dataChannel?: RTCDataChannel
|
|
@@ -5,7 +5,7 @@ import EventEmitter from 'eventemitter3'
|
|
|
5
5
|
import nodeDatachannel, { DataChannel, DescriptionType, PeerConnection } from 'node-datachannel'
|
|
6
6
|
import { Logger } from '@streamr/utils'
|
|
7
7
|
import { IllegalRtcPeerConnectionState } from '../../helpers/errors'
|
|
8
|
-
import { getNodeIdFromPeerDescriptor
|
|
8
|
+
import { getNodeIdFromPeerDescriptor } from '../../helpers/peerIdFromPeerDescriptor'
|
|
9
9
|
import { iceServerAsString } from './iceServerAsString'
|
|
10
10
|
import { IceServer } from './WebrtcConnector'
|
|
11
11
|
import { PortRange } from '../ConnectionManager'
|
|
@@ -55,7 +55,6 @@ export class NodeWebrtcConnection extends EventEmitter<Events> implements IConne
|
|
|
55
55
|
private lastState: RtcPeerConnectionState = 'connecting'
|
|
56
56
|
private remoteDescriptionSet = false
|
|
57
57
|
private connectingTimeoutRef?: NodeJS.Timeout
|
|
58
|
-
|
|
59
58
|
public readonly connectionType: ConnectionType = ConnectionType.WEBRTC
|
|
60
59
|
private readonly iceServers: IceServer[]
|
|
61
60
|
private readonly _bufferThresholdHigh: number // TODO: buffer handling must be implemented before production use (NET-938)
|
|
@@ -80,9 +79,9 @@ export class NodeWebrtcConnection extends EventEmitter<Events> implements IConne
|
|
|
80
79
|
}
|
|
81
80
|
|
|
82
81
|
public start(isOffering: boolean): void {
|
|
83
|
-
const
|
|
82
|
+
const nodeId = getNodeIdFromPeerDescriptor(this.remotePeerDescriptor)
|
|
84
83
|
logger.trace(`Starting new connection for peer ${getNodeIdFromPeerDescriptor(this.remotePeerDescriptor)}`, { isOffering })
|
|
85
|
-
this.connection = new PeerConnection(
|
|
84
|
+
this.connection = new PeerConnection(nodeId, {
|
|
86
85
|
iceServers: this.iceServers.map(iceServerAsString),
|
|
87
86
|
maxMessageSize: this.maxMessageSize,
|
|
88
87
|
portRangeBegin: this.portRange?.min,
|
|
@@ -9,21 +9,19 @@ import { ListeningRpcCommunicator } from '../../transport/ListeningRpcCommunicat
|
|
|
9
9
|
import { NodeWebrtcConnection } from './NodeWebrtcConnection'
|
|
10
10
|
import { WebrtcConnectorRpcRemote } from './WebrtcConnectorRpcRemote'
|
|
11
11
|
import { WebrtcConnectorRpcClient } from '../../proto/packages/dht/protos/DhtRpc.client'
|
|
12
|
-
import { PeerIDKey } from '../../helpers/PeerID'
|
|
13
12
|
import { ManagedWebrtcConnection } from '../ManagedWebrtcConnection'
|
|
14
13
|
import { Logger } from '@streamr/utils'
|
|
15
14
|
import * as Err from '../../helpers/errors'
|
|
16
15
|
import { ManagedConnection } from '../ManagedConnection'
|
|
17
|
-
import { toProtoRpcClient } from '@streamr/proto-rpc'
|
|
18
16
|
import {
|
|
19
17
|
areEqualPeerDescriptors,
|
|
20
18
|
getNodeIdFromPeerDescriptor,
|
|
21
|
-
keyFromPeerDescriptor,
|
|
22
19
|
peerIdFromPeerDescriptor
|
|
23
20
|
} from '../../helpers/peerIdFromPeerDescriptor'
|
|
24
21
|
import { PortRange } from '../ConnectionManager'
|
|
25
22
|
import { ServerCallContext } from '@protobuf-ts/runtime-rpc'
|
|
26
23
|
import { WebrtcConnectorRpcLocal } from './WebrtcConnectorRpcLocal'
|
|
24
|
+
import { NodeID } from '../../helpers/nodeId'
|
|
27
25
|
|
|
28
26
|
const logger = new Logger(module)
|
|
29
27
|
|
|
@@ -60,10 +58,9 @@ export class WebrtcConnector {
|
|
|
60
58
|
|
|
61
59
|
private static readonly WEBRTC_CONNECTOR_SERVICE_ID = 'system/webrtc-connector'
|
|
62
60
|
private readonly rpcCommunicator: ListeningRpcCommunicator
|
|
63
|
-
private readonly ongoingConnectAttempts: Map<
|
|
61
|
+
private readonly ongoingConnectAttempts: Map<NodeID, ManagedWebrtcConnection> = new Map()
|
|
64
62
|
private localPeerDescriptor?: PeerDescriptor
|
|
65
63
|
private stopped = false
|
|
66
|
-
private iceServers: IceServer[]
|
|
67
64
|
private config: WebrtcConnectorConfig
|
|
68
65
|
|
|
69
66
|
constructor(
|
|
@@ -71,9 +68,8 @@ export class WebrtcConnector {
|
|
|
71
68
|
onNewConnection: (connection: ManagedConnection) => boolean
|
|
72
69
|
) {
|
|
73
70
|
this.config = config
|
|
74
|
-
this.iceServers = config.iceServers ?? []
|
|
75
71
|
this.rpcCommunicator = new ListeningRpcCommunicator(WebrtcConnector.WEBRTC_CONNECTOR_SERVICE_ID, config.transport, {
|
|
76
|
-
rpcRequestTimeout: 15000
|
|
72
|
+
rpcRequestTimeout: 15000 // TODO use config option or named constant?
|
|
77
73
|
})
|
|
78
74
|
this.registerLocalRpcMethods(config, onNewConnection)
|
|
79
75
|
}
|
|
@@ -135,15 +131,15 @@ export class WebrtcConnector {
|
|
|
135
131
|
|
|
136
132
|
logger.trace(`Opening WebRTC connection to ${getNodeIdFromPeerDescriptor(targetPeerDescriptor)}`)
|
|
137
133
|
|
|
138
|
-
const
|
|
139
|
-
const existingConnection = this.ongoingConnectAttempts.get(
|
|
134
|
+
const nodeId = getNodeIdFromPeerDescriptor(targetPeerDescriptor)
|
|
135
|
+
const existingConnection = this.ongoingConnectAttempts.get(nodeId)
|
|
140
136
|
if (existingConnection) {
|
|
141
137
|
return existingConnection
|
|
142
138
|
}
|
|
143
139
|
|
|
144
140
|
const connection = new NodeWebrtcConnection({
|
|
145
141
|
remotePeerDescriptor: targetPeerDescriptor,
|
|
146
|
-
iceServers: this.iceServers,
|
|
142
|
+
iceServers: this.config.iceServers,
|
|
147
143
|
bufferThresholdLow: this.config.bufferThresholdLow,
|
|
148
144
|
bufferThresholdHigh: this.config.bufferThresholdHigh,
|
|
149
145
|
connectingTimeout: this.config.connectionTimeout,
|
|
@@ -161,10 +157,10 @@ export class WebrtcConnector {
|
|
|
161
157
|
|
|
162
158
|
managedConnection.setRemotePeerDescriptor(targetPeerDescriptor)
|
|
163
159
|
|
|
164
|
-
this.ongoingConnectAttempts.set(
|
|
160
|
+
this.ongoingConnectAttempts.set(getNodeIdFromPeerDescriptor(targetPeerDescriptor), managedConnection)
|
|
165
161
|
|
|
166
162
|
const delFunc = () => {
|
|
167
|
-
this.ongoingConnectAttempts.delete(
|
|
163
|
+
this.ongoingConnectAttempts.delete(nodeId)
|
|
168
164
|
connection.off('disconnected', delFunc)
|
|
169
165
|
managedConnection.off('handshakeCompleted', delFunc)
|
|
170
166
|
}
|
|
@@ -174,7 +170,9 @@ export class WebrtcConnector {
|
|
|
174
170
|
const remoteConnector = new WebrtcConnectorRpcRemote(
|
|
175
171
|
this.localPeerDescriptor!,
|
|
176
172
|
targetPeerDescriptor,
|
|
177
|
-
|
|
173
|
+
'DUMMY',
|
|
174
|
+
this.rpcCommunicator,
|
|
175
|
+
WebrtcConnectorRpcClient
|
|
178
176
|
)
|
|
179
177
|
|
|
180
178
|
connection.on('localCandidate', (candidate: string, mid: string) => {
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import { ServerCallContext } from '@protobuf-ts/runtime-rpc'
|
|
2
|
-
import { toProtoRpcClient } from '@streamr/proto-rpc'
|
|
3
2
|
import { Logger } from '@streamr/utils'
|
|
4
3
|
import { getAddressFromIceCandidate, isPrivateIPv4 } from '../../helpers/AddressTools'
|
|
5
|
-
import {
|
|
6
|
-
import { keyFromPeerDescriptor } from '../../helpers/peerIdFromPeerDescriptor'
|
|
4
|
+
import { getNodeIdFromPeerDescriptor } from '../../helpers/peerIdFromPeerDescriptor'
|
|
7
5
|
import { Empty } from '../../proto/google/protobuf/empty'
|
|
8
6
|
import {
|
|
7
|
+
HandshakeError,
|
|
9
8
|
IceCandidate,
|
|
10
9
|
PeerDescriptor,
|
|
11
10
|
RtcAnswer,
|
|
@@ -19,6 +18,9 @@ import { ManagedConnection } from '../ManagedConnection'
|
|
|
19
18
|
import { ManagedWebrtcConnection } from '../ManagedWebrtcConnection'
|
|
20
19
|
import { NodeWebrtcConnection } from './NodeWebrtcConnection'
|
|
21
20
|
import { WebrtcConnectorRpcRemote } from './WebrtcConnectorRpcRemote'
|
|
21
|
+
import { NodeID } from '../../helpers/nodeId'
|
|
22
|
+
import { version } from '../../../package.json'
|
|
23
|
+
import { isCompatibleVersion } from '../../helpers/versionCompatibility'
|
|
22
24
|
|
|
23
25
|
const logger = new Logger(module)
|
|
24
26
|
|
|
@@ -26,7 +28,7 @@ interface WebrtcConnectorRpcLocalConfig {
|
|
|
26
28
|
connect: (targetPeerDescriptor: PeerDescriptor) => ManagedConnection
|
|
27
29
|
onNewConnection: (connection: ManagedConnection) => boolean
|
|
28
30
|
// TODO pass accessor methods instead of passing a mutable entity
|
|
29
|
-
ongoingConnectAttempts: Map<
|
|
31
|
+
ongoingConnectAttempts: Map<NodeID, ManagedWebrtcConnection>
|
|
30
32
|
rpcCommunicator: ListeningRpcCommunicator
|
|
31
33
|
getLocalPeerDescriptor: () => PeerDescriptor
|
|
32
34
|
allowPrivateAddresses: boolean
|
|
@@ -42,7 +44,7 @@ export class WebrtcConnectorRpcLocal implements IWebrtcConnectorRpc {
|
|
|
42
44
|
|
|
43
45
|
async requestConnection(context: ServerCallContext): Promise<Empty> {
|
|
44
46
|
const targetPeerDescriptor = (context as DhtCallContext).incomingSourceDescriptor!
|
|
45
|
-
if (this.config.ongoingConnectAttempts.has(
|
|
47
|
+
if (this.config.ongoingConnectAttempts.has(getNodeIdFromPeerDescriptor(targetPeerDescriptor))) {
|
|
46
48
|
return {}
|
|
47
49
|
}
|
|
48
50
|
const managedConnection = this.config.connect(targetPeerDescriptor)
|
|
@@ -53,20 +55,22 @@ export class WebrtcConnectorRpcLocal implements IWebrtcConnectorRpc {
|
|
|
53
55
|
|
|
54
56
|
async rtcOffer(request: RtcOffer, context: ServerCallContext): Promise<Empty> {
|
|
55
57
|
const remotePeer = (context as DhtCallContext).incomingSourceDescriptor!
|
|
56
|
-
const
|
|
57
|
-
let managedConnection = this.config.ongoingConnectAttempts.get(
|
|
58
|
+
const nodeId = getNodeIdFromPeerDescriptor(remotePeer)
|
|
59
|
+
let managedConnection = this.config.ongoingConnectAttempts.get(nodeId)
|
|
58
60
|
let connection = managedConnection?.getWebrtcConnection()
|
|
59
61
|
|
|
60
62
|
if (!managedConnection) {
|
|
61
63
|
connection = new NodeWebrtcConnection({ remotePeerDescriptor: remotePeer })
|
|
62
64
|
managedConnection = new ManagedWebrtcConnection(this.config.getLocalPeerDescriptor(), undefined, connection)
|
|
63
65
|
managedConnection.setRemotePeerDescriptor(remotePeer)
|
|
64
|
-
this.config.ongoingConnectAttempts.set(
|
|
66
|
+
this.config.ongoingConnectAttempts.set(nodeId, managedConnection)
|
|
65
67
|
this.config.onNewConnection(managedConnection)
|
|
66
68
|
const remoteConnector = new WebrtcConnectorRpcRemote(
|
|
67
69
|
this.config.getLocalPeerDescriptor(),
|
|
68
70
|
remotePeer,
|
|
69
|
-
|
|
71
|
+
'DUMMY',
|
|
72
|
+
this.config.rpcCommunicator,
|
|
73
|
+
WebrtcConnectorRpcClient
|
|
70
74
|
)
|
|
71
75
|
connection.on('localCandidate', (candidate: string, mid: string) => {
|
|
72
76
|
remoteConnector.sendIceCandidate(candidate, mid, connection!.connectionId.toString())
|
|
@@ -81,19 +85,23 @@ export class WebrtcConnectorRpcLocal implements IWebrtcConnectorRpc {
|
|
|
81
85
|
connection!.setConnectionId(request.connectionId)
|
|
82
86
|
connection!.setRemoteDescription(request.description, 'offer')
|
|
83
87
|
|
|
84
|
-
managedConnection.on('handshakeRequest', () => {
|
|
85
|
-
if (this.config.ongoingConnectAttempts.has(
|
|
86
|
-
this.config.ongoingConnectAttempts.delete(
|
|
88
|
+
managedConnection.on('handshakeRequest', (_sourceDescriptor: PeerDescriptor, sourceVersion: string) => {
|
|
89
|
+
if (this.config.ongoingConnectAttempts.has(nodeId)) {
|
|
90
|
+
this.config.ongoingConnectAttempts.delete(nodeId)
|
|
91
|
+
}
|
|
92
|
+
if (!isCompatibleVersion(sourceVersion, version)) {
|
|
93
|
+
managedConnection!.rejectHandshake(HandshakeError.UNSUPPORTED_VERSION)
|
|
94
|
+
} else {
|
|
95
|
+
managedConnection!.acceptHandshake()
|
|
87
96
|
}
|
|
88
|
-
managedConnection!.acceptHandshake()
|
|
89
97
|
})
|
|
90
98
|
return {}
|
|
91
99
|
}
|
|
92
100
|
|
|
93
101
|
async rtcAnswer(request: RtcAnswer, context: ServerCallContext): Promise<Empty> {
|
|
94
102
|
const remotePeerDescriptor = (context as DhtCallContext).incomingSourceDescriptor!
|
|
95
|
-
const
|
|
96
|
-
const connection = this.config.ongoingConnectAttempts.get(
|
|
103
|
+
const nodeId = getNodeIdFromPeerDescriptor(remotePeerDescriptor)
|
|
104
|
+
const connection = this.config.ongoingConnectAttempts.get(nodeId)?.getWebrtcConnection()
|
|
97
105
|
if (!connection) {
|
|
98
106
|
return {}
|
|
99
107
|
} else if (connection.connectionId.toString() !== request.connectionId) {
|
|
@@ -106,9 +114,8 @@ export class WebrtcConnectorRpcLocal implements IWebrtcConnectorRpc {
|
|
|
106
114
|
|
|
107
115
|
async iceCandidate(request: IceCandidate, context: ServerCallContext): Promise<Empty> {
|
|
108
116
|
const remotePeerDescriptor = (context as DhtCallContext).incomingSourceDescriptor!
|
|
109
|
-
const
|
|
110
|
-
const connection = this.config.ongoingConnectAttempts.get(
|
|
111
|
-
|
|
117
|
+
const nodeId = getNodeIdFromPeerDescriptor(remotePeerDescriptor)
|
|
118
|
+
const connection = this.config.ongoingConnectAttempts.get(nodeId)?.getWebrtcConnection()
|
|
112
119
|
if (!connection) {
|
|
113
120
|
return {}
|
|
114
121
|
} else if (connection.connectionId.toString() !== request.connectionId) {
|
|
@@ -1,26 +1,16 @@
|
|
|
1
|
+
import { Logger } from '@streamr/utils'
|
|
1
2
|
import { RpcRemote } from '../../dht/contact/RpcRemote'
|
|
2
3
|
import {
|
|
3
4
|
IceCandidate,
|
|
4
|
-
PeerDescriptor,
|
|
5
5
|
RtcAnswer,
|
|
6
6
|
RtcOffer,
|
|
7
7
|
WebrtcConnectionRequest
|
|
8
8
|
} from '../../proto/packages/dht/protos/DhtRpc'
|
|
9
|
-
import {
|
|
10
|
-
import { ProtoRpcClient } from '@streamr/proto-rpc'
|
|
11
|
-
import { Logger } from '@streamr/utils'
|
|
9
|
+
import { WebrtcConnectorRpcClient } from '../../proto/packages/dht/protos/DhtRpc.client'
|
|
12
10
|
|
|
13
11
|
const logger = new Logger(module)
|
|
14
12
|
|
|
15
|
-
export class WebrtcConnectorRpcRemote extends RpcRemote<
|
|
16
|
-
|
|
17
|
-
constructor(
|
|
18
|
-
localPeerDescriptor: PeerDescriptor,
|
|
19
|
-
remotePeerDescriptor: PeerDescriptor,
|
|
20
|
-
client: ProtoRpcClient<IWebrtcConnectorRpcClient>
|
|
21
|
-
) {
|
|
22
|
-
super(localPeerDescriptor, remotePeerDescriptor, 'DUMMY', client)
|
|
23
|
-
}
|
|
13
|
+
export class WebrtcConnectorRpcRemote extends RpcRemote<WebrtcConnectorRpcClient> {
|
|
24
14
|
|
|
25
15
|
requestConnection(): void {
|
|
26
16
|
const request: WebrtcConnectionRequest = {
|
|
@@ -55,12 +55,10 @@ export class AutoCertifierClientFacade {
|
|
|
55
55
|
|
|
56
56
|
private autoCertifierClient: IAutoCertifierClient
|
|
57
57
|
private readonly rpcCommunicator: ListeningRpcCommunicator
|
|
58
|
-
private readonly
|
|
59
|
-
private readonly updateCertificate: (certificate: string, privateKey: string) => void
|
|
58
|
+
private readonly config: AutoCertifierClientFacadeConfig
|
|
60
59
|
|
|
61
60
|
constructor(config: AutoCertifierClientFacadeConfig) {
|
|
62
|
-
this.
|
|
63
|
-
this.updateCertificate = config.updateCertificate
|
|
61
|
+
this.config = config
|
|
64
62
|
this.rpcCommunicator = new ListeningRpcCommunicator(AUTO_CERTIFIER_SERVICE_ID, config.transport)
|
|
65
63
|
this.autoCertifierClient = config.createClientFactory ? config.createClientFactory()
|
|
66
64
|
: defaultAutoCertifierClientFactory(
|
|
@@ -73,8 +71,8 @@ export class AutoCertifierClientFacade {
|
|
|
73
71
|
|
|
74
72
|
async start(): Promise<void> {
|
|
75
73
|
this.autoCertifierClient.on('updatedCertificate', (subdomain: CertifiedSubdomain) => {
|
|
76
|
-
this.setHost(subdomain.fqdn)
|
|
77
|
-
this.updateCertificate(subdomain.certificate, subdomain.privateKey)
|
|
74
|
+
this.config.setHost(subdomain.fqdn)
|
|
75
|
+
this.config.updateCertificate(subdomain.certificate, subdomain.privateKey)
|
|
78
76
|
logger.trace(`Updated certificate`)
|
|
79
77
|
})
|
|
80
78
|
await Promise.all([
|
|
@@ -15,6 +15,7 @@ export const CUSTOM_GOING_AWAY = 3001
|
|
|
15
15
|
const BINARY_TYPE = 'arraybuffer'
|
|
16
16
|
|
|
17
17
|
export class ClientWebsocket extends EventEmitter<ConnectionEvents> implements IConnection {
|
|
18
|
+
|
|
18
19
|
public readonly connectionId: ConnectionID
|
|
19
20
|
private socket?: Websocket
|
|
20
21
|
public connectionType = ConnectionType.WEBSOCKET_CLIENT
|