@streamr/dht 100.0.0-pretestnet.2 → 100.0.0-pretestnet.3
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/src/connection/ConnectionLockHandler.d.ts +7 -8
- package/dist/src/connection/ConnectionLockHandler.js +16 -14
- package/dist/src/connection/ConnectionLockHandler.js.map +1 -1
- package/dist/src/connection/ConnectionLockRpcLocal.d.ts +20 -0
- package/dist/src/connection/ConnectionLockRpcLocal.js +47 -0
- package/dist/src/connection/ConnectionLockRpcLocal.js.map +1 -0
- package/dist/src/connection/ConnectionLockRpcRemote.d.ts +4 -3
- package/dist/src/connection/ConnectionLockRpcRemote.js +6 -6
- package/dist/src/connection/ConnectionLockRpcRemote.js.map +1 -1
- package/dist/src/connection/ConnectionManager.d.ts +5 -8
- package/dist/src/connection/ConnectionManager.js +77 -107
- package/dist/src/connection/ConnectionManager.js.map +1 -1
- package/dist/src/connection/ConnectivityChecker.d.ts +7 -6
- package/dist/src/connection/ConnectivityChecker.js +23 -20
- package/dist/src/connection/ConnectivityChecker.js.map +1 -1
- package/dist/src/connection/ConnectorFacade.d.ts +15 -12
- package/dist/src/connection/ConnectorFacade.js +61 -26
- package/dist/src/connection/ConnectorFacade.js.map +1 -1
- package/dist/src/connection/Handshaker.d.ts +2 -2
- package/dist/src/connection/Handshaker.js +28 -28
- package/dist/src/connection/Handshaker.js.map +1 -1
- package/dist/src/connection/IConnection.d.ts +5 -6
- package/dist/src/connection/IConnection.js.map +1 -1
- package/dist/src/connection/ManagedConnection.d.ts +3 -4
- package/dist/src/connection/ManagedConnection.js +30 -30
- package/dist/src/connection/ManagedConnection.js.map +1 -1
- package/dist/src/connection/ManagedWebrtcConnection.d.ts +7 -0
- package/dist/src/connection/ManagedWebrtcConnection.js +20 -0
- package/dist/src/connection/ManagedWebrtcConnection.js.map +1 -0
- package/dist/src/connection/{Simulator → simulator}/Simulator.js +3 -3
- package/dist/src/connection/{Simulator → simulator}/Simulator.js.map +1 -1
- package/dist/src/connection/{Simulator → simulator}/SimulatorConnection.d.ts +3 -4
- package/dist/src/connection/{Simulator → simulator}/SimulatorConnection.js +22 -22
- package/dist/src/connection/simulator/SimulatorConnection.js.map +1 -0
- package/dist/src/connection/{Simulator → simulator}/SimulatorConnector.d.ts +2 -2
- package/dist/src/connection/{Simulator → simulator}/SimulatorConnector.js +11 -11
- package/dist/src/connection/{Simulator → simulator}/SimulatorConnector.js.map +1 -1
- package/dist/src/connection/{Simulator → simulator}/SimulatorTransport.d.ts +1 -1
- package/dist/src/connection/{Simulator → simulator}/SimulatorTransport.js +2 -2
- package/dist/src/connection/simulator/SimulatorTransport.js.map +1 -0
- package/dist/src/connection/{Simulator → simulator}/pings.js.map +1 -1
- package/dist/src/connection/{WebRTC/IWebRtcConnection.d.ts → webrtc/IWebrtcConnection.d.ts} +2 -2
- package/dist/src/connection/{WebRTC/IWebRtcConnection.js → webrtc/IWebrtcConnection.js} +1 -1
- package/dist/src/connection/webrtc/IWebrtcConnection.js.map +1 -0
- package/dist/src/connection/{WebRTC/NodeWebRtcConnection.d.ts → webrtc/NodeWebrtcConnection.d.ts} +6 -7
- package/dist/src/connection/{WebRTC/NodeWebRtcConnection.js → webrtc/NodeWebrtcConnection.js} +36 -36
- package/dist/src/connection/webrtc/NodeWebrtcConnection.js.map +1 -0
- package/dist/src/connection/webrtc/WebrtcConnector.d.ts +38 -0
- package/dist/src/connection/webrtc/WebrtcConnector.js +178 -0
- package/dist/src/connection/webrtc/WebrtcConnector.js.map +1 -0
- package/dist/src/connection/webrtc/WebrtcConnectorRpcLocal.d.ts +26 -0
- package/dist/src/connection/webrtc/WebrtcConnectorRpcLocal.js +99 -0
- package/dist/src/connection/webrtc/WebrtcConnectorRpcLocal.js.map +1 -0
- package/dist/src/connection/{WebRTC/WebRtcConnectorRpcRemote.d.ts → webrtc/WebrtcConnectorRpcRemote.d.ts} +4 -4
- package/dist/src/connection/{WebRTC/WebRtcConnectorRpcRemote.js → webrtc/WebrtcConnectorRpcRemote.js} +6 -8
- package/dist/src/connection/webrtc/WebrtcConnectorRpcRemote.js.map +1 -0
- package/dist/src/connection/{WebRTC → webrtc}/iceServerAsString.d.ts +1 -1
- package/dist/src/connection/{WebRTC → webrtc}/iceServerAsString.js.map +1 -1
- package/dist/src/connection/websocket/AutoCertifierClientFacade.d.ts +26 -0
- package/dist/src/connection/websocket/AutoCertifierClientFacade.js +37 -0
- package/dist/src/connection/websocket/AutoCertifierClientFacade.js.map +1 -0
- package/dist/src/connection/{WebSocket/ClientWebSocket.d.ts → websocket/ClientWebsocket.d.ts} +5 -4
- package/dist/src/connection/{WebSocket/ClientWebSocket.js → websocket/ClientWebsocket.js} +20 -16
- package/dist/src/connection/websocket/ClientWebsocket.js.map +1 -0
- package/dist/src/connection/{WebSocket/ServerWebSocket.d.ts → websocket/ServerWebsocket.d.ts} +2 -2
- package/dist/src/connection/{WebSocket/ServerWebSocket.js → websocket/ServerWebsocket.js} +23 -27
- package/dist/src/connection/websocket/ServerWebsocket.js.map +1 -0
- package/dist/src/connection/{WebSocket/WebSocketConnectorRpcLocal.d.ts → websocket/WebsocketConnector.d.ts} +23 -15
- package/dist/src/connection/{WebSocket/WebSocketConnectorRpcLocal.js → websocket/WebsocketConnector.js} +107 -101
- package/dist/src/connection/websocket/WebsocketConnector.js.map +1 -0
- package/dist/src/connection/websocket/WebsocketConnectorRpcLocal.d.ts +17 -0
- package/dist/src/connection/websocket/WebsocketConnectorRpcLocal.js +26 -0
- package/dist/src/connection/websocket/WebsocketConnectorRpcLocal.js.map +1 -0
- package/dist/src/connection/{WebSocket/WebSocketConnectorRpcRemote.d.ts → websocket/WebsocketConnectorRpcRemote.d.ts} +3 -3
- package/dist/src/connection/{WebSocket/WebSocketConnectorRpcRemote.js → websocket/WebsocketConnectorRpcRemote.js} +5 -10
- package/dist/src/connection/{WebSocket/WebSocketConnectorRpcRemote.js.map → websocket/WebsocketConnectorRpcRemote.js.map} +1 -1
- package/dist/src/connection/{WebSocket/WebSocketServer.d.ts → websocket/WebsocketServer.d.ts} +6 -3
- package/dist/src/connection/{WebSocket/WebSocketServer.js → websocket/WebsocketServer.js} +39 -19
- package/dist/src/connection/websocket/WebsocketServer.js.map +1 -0
- package/dist/src/dht/DhtNode.d.ts +11 -19
- package/dist/src/dht/DhtNode.js +119 -150
- package/dist/src/dht/DhtNode.js.map +1 -1
- package/dist/src/dht/DhtNodeRpcLocal.d.ts +22 -0
- package/dist/src/dht/DhtNodeRpcLocal.js +42 -0
- package/dist/src/dht/DhtNodeRpcLocal.js.map +1 -0
- package/dist/src/dht/{RemoteDhtNode.d.ts → DhtNodeRpcRemote.d.ts} +5 -3
- package/dist/src/dht/{RemoteDhtNode.js → DhtNodeRpcRemote.js} +17 -21
- package/dist/src/dht/DhtNodeRpcRemote.js.map +1 -0
- package/dist/src/dht/ExternalApiRpcLocal.d.ts +16 -0
- package/dist/src/dht/ExternalApiRpcLocal.js +30 -0
- package/dist/src/dht/ExternalApiRpcLocal.js.map +1 -0
- package/dist/src/dht/ExternalApiRpcRemote.d.ts +1 -1
- package/dist/src/dht/ExternalApiRpcRemote.js +2 -2
- package/dist/src/dht/ExternalApiRpcRemote.js.map +1 -1
- package/dist/src/dht/contact/Remote.d.ts +4 -1
- package/dist/src/dht/contact/Remote.js +28 -2
- package/dist/src/dht/contact/Remote.js.map +1 -1
- package/dist/src/dht/contact/SortedContactList.d.ts +2 -2
- package/dist/src/dht/contact/SortedContactList.js +3 -3
- package/dist/src/dht/contact/SortedContactList.js.map +1 -1
- package/dist/src/dht/discovery/DiscoverySession.d.ts +9 -7
- package/dist/src/dht/discovery/DiscoverySession.js +8 -8
- package/dist/src/dht/discovery/DiscoverySession.js.map +1 -1
- package/dist/src/dht/discovery/PeerDiscovery.d.ts +7 -10
- package/dist/src/dht/discovery/PeerDiscovery.js +5 -5
- package/dist/src/dht/discovery/PeerDiscovery.js.map +1 -1
- package/dist/src/dht/find/FindRpcLocal.d.ts +14 -0
- package/dist/src/dht/find/FindRpcLocal.js +25 -0
- package/dist/src/dht/find/FindRpcLocal.js.map +1 -0
- package/dist/src/dht/find/{RecursiveFindSession.d.ts → FindSession.d.ts} +12 -13
- package/dist/src/dht/find/{RecursiveFindSession.js → FindSession.js} +17 -15
- package/dist/src/dht/find/FindSession.js.map +1 -0
- package/dist/src/dht/find/FindSessionRpcLocal.d.ts +12 -0
- package/dist/src/dht/find/FindSessionRpcLocal.js +17 -0
- package/dist/src/dht/find/FindSessionRpcLocal.js.map +1 -0
- package/dist/src/dht/find/{RemoteRecursiveFindSession.d.ts → FindSessionRpcRemote.d.ts} +2 -2
- package/dist/src/dht/find/{RemoteRecursiveFindSession.js → FindSessionRpcRemote.js} +5 -5
- package/dist/src/dht/find/FindSessionRpcRemote.js.map +1 -0
- package/dist/src/dht/find/{RecursiveFinder.d.ts → Finder.d.ts} +16 -19
- package/dist/src/dht/find/{RecursiveFinder.js → Finder.js} +50 -46
- package/dist/src/dht/find/Finder.js.map +1 -0
- package/dist/src/dht/routing/FindRpcRemote.d.ts +6 -0
- package/dist/src/dht/routing/FindRpcRemote.js +41 -0
- package/dist/src/dht/routing/FindRpcRemote.js.map +1 -0
- package/dist/src/dht/routing/Router.d.ts +10 -17
- package/dist/src/dht/routing/Router.js +47 -90
- package/dist/src/dht/routing/Router.js.map +1 -1
- package/dist/src/dht/routing/RouterRpcLocal.d.ts +22 -0
- package/dist/src/dht/routing/RouterRpcLocal.js +66 -0
- package/dist/src/dht/routing/RouterRpcLocal.js.map +1 -0
- package/dist/src/dht/routing/RouterRpcRemote.d.ts +0 -1
- package/dist/src/dht/routing/RouterRpcRemote.js +15 -43
- package/dist/src/dht/routing/RouterRpcRemote.js.map +1 -1
- package/dist/src/dht/routing/RoutingSession.d.ts +17 -8
- package/dist/src/dht/routing/RoutingSession.js +124 -131
- package/dist/src/dht/routing/RoutingSession.js.map +1 -1
- package/dist/src/dht/routing/getPreviousPeer.d.ts +2 -0
- package/dist/src/dht/routing/getPreviousPeer.js +9 -0
- package/dist/src/dht/routing/getPreviousPeer.js.map +1 -0
- package/dist/src/dht/store/StoreRpcLocal.d.ts +11 -8
- package/dist/src/dht/store/StoreRpcLocal.js +25 -24
- package/dist/src/dht/store/StoreRpcLocal.js.map +1 -1
- package/dist/src/dht/store/StoreRpcRemote.js +3 -7
- package/dist/src/dht/store/StoreRpcRemote.js.map +1 -1
- package/dist/src/exports.d.ts +11 -5
- package/dist/src/exports.js +17 -4
- package/dist/src/exports.js.map +1 -1
- package/dist/src/helpers/Connectivity.d.ts +4 -0
- package/dist/src/helpers/Connectivity.js +24 -0
- package/dist/src/helpers/Connectivity.js.map +1 -0
- package/dist/src/helpers/errors.d.ts +3 -3
- package/dist/src/helpers/errors.js +7 -7
- package/dist/src/helpers/protoClasses.js +3 -3
- package/dist/src/proto/packages/dht/protos/DhtRpc.client.d.ts +56 -39
- package/dist/src/proto/packages/dht/protos/DhtRpc.client.js +49 -36
- package/dist/src/proto/packages/dht/protos/DhtRpc.client.js.map +1 -1
- package/dist/src/proto/packages/dht/protos/DhtRpc.d.ts +64 -84
- package/dist/src/proto/packages/dht/protos/DhtRpc.js +64 -66
- package/dist/src/proto/packages/dht/protos/DhtRpc.js.map +1 -1
- package/dist/src/proto/packages/dht/protos/DhtRpc.server.d.ts +26 -21
- package/dist/src/rpc-protocol/DhtCallContext.d.ts +0 -1
- package/dist/src/rpc-protocol/DhtCallContext.js.map +1 -1
- package/dist/src/transport/ITransport.d.ts +5 -6
- package/dist/src/transport/ListeningRpcCommunicator.d.ts +2 -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 +0 -1
- package/dist/src/transport/RoutingRpcCommunicator.js.map +1 -1
- package/dist/src/types/ServiceID.d.ts +1 -0
- package/dist/src/types/ServiceID.js +3 -0
- package/dist/src/types/ServiceID.js.map +1 -0
- package/karma.config.js +4 -4
- package/package.json +10 -8
- package/protos/DhtRpc.proto +32 -35
- package/src/connection/ConnectionLockHandler.ts +19 -17
- package/src/connection/ConnectionLockRpcLocal.ts +74 -0
- package/src/connection/ConnectionLockRpcRemote.ts +7 -6
- package/src/connection/ConnectionManager.ts +59 -95
- package/src/connection/ConnectivityChecker.ts +30 -26
- package/src/connection/ConnectorFacade.ts +74 -34
- package/src/connection/Handshaker.ts +9 -9
- package/src/connection/IConnection.ts +5 -6
- package/src/connection/ManagedConnection.ts +21 -22
- package/src/connection/{ManagedWebRtcConnection.ts → ManagedWebrtcConnection.ts} +9 -9
- package/src/connection/{Simulator → simulator}/Simulator.ts +4 -4
- package/src/connection/{Simulator → simulator}/SimulatorConnection.ts +23 -24
- package/src/connection/{Simulator → simulator}/SimulatorConnector.ts +13 -13
- package/src/connection/{Simulator → simulator}/SimulatorTransport.ts +2 -2
- package/src/connection/{WebRTC/BrowserWebRtcConnection.ts → webrtc/BrowserWebrtcConnection.ts} +12 -13
- package/src/connection/{WebRTC/IWebRtcConnection.ts → webrtc/IWebrtcConnection.ts} +2 -2
- package/src/connection/{WebRTC/NodeWebRtcConnection.ts → webrtc/NodeWebrtcConnection.ts} +32 -33
- package/src/connection/webrtc/WebrtcConnector.ts +225 -0
- package/src/connection/webrtc/WebrtcConnectorRpcLocal.ts +132 -0
- package/src/connection/{WebRTC/WebRtcConnectorRpcRemote.ts → webrtc/WebrtcConnectorRpcRemote.ts} +6 -7
- package/src/connection/{WebRTC → webrtc}/iceServerAsString.ts +1 -1
- package/src/connection/websocket/AutoCertifierClientFacade.ts +91 -0
- package/src/connection/{WebSocket/ClientWebSocket.ts → websocket/ClientWebsocket.ts} +19 -17
- package/src/connection/{WebSocket/ServerWebSocket.ts → websocket/ServerWebsocket.ts} +21 -27
- package/src/connection/{WebSocket/WebSocketConnectorRpcLocal.ts → websocket/WebsocketConnector.ts} +109 -100
- package/src/connection/websocket/WebsocketConnectorRpcLocal.ts +41 -0
- package/src/connection/{WebSocket/WebSocketConnectorRpcRemote.ts → websocket/WebsocketConnectorRpcRemote.ts} +6 -12
- package/src/connection/{WebSocket/WebSocketServer.ts → websocket/WebsocketServer.ts} +40 -22
- package/src/dht/DhtNode.ts +144 -179
- package/src/dht/DhtNodeRpcLocal.ts +68 -0
- package/src/dht/{RemoteDhtNode.ts → DhtNodeRpcRemote.ts} +12 -13
- package/src/dht/ExternalApiRpcLocal.ts +46 -0
- package/src/dht/ExternalApiRpcRemote.ts +4 -4
- package/src/dht/contact/Remote.ts +32 -4
- package/src/dht/contact/SortedContactList.ts +4 -4
- package/src/dht/discovery/DiscoverySession.ts +23 -20
- package/src/dht/discovery/PeerDiscovery.ts +14 -17
- package/src/dht/find/FindRpcLocal.ts +35 -0
- package/src/dht/find/{RecursiveFindSession.ts → FindSession.ts} +25 -25
- package/src/dht/find/FindSessionRpcLocal.ts +25 -0
- package/src/dht/find/{RemoteRecursiveFindSession.ts → FindSessionRpcRemote.ts} +9 -5
- package/src/dht/find/{RecursiveFinder.ts → Finder.ts} +77 -71
- package/src/dht/routing/FindRpcRemote.ts +40 -0
- package/src/dht/routing/Router.ts +69 -105
- package/src/dht/routing/RouterRpcLocal.ts +81 -0
- package/src/dht/routing/RouterRpcRemote.ts +15 -45
- package/src/dht/routing/RoutingSession.ts +56 -61
- package/src/dht/routing/getPreviousPeer.ts +6 -0
- package/src/dht/store/StoreRpcLocal.ts +44 -37
- package/src/dht/store/StoreRpcRemote.ts +4 -8
- package/src/exports.ts +11 -5
- package/src/helpers/Connectivity.ts +19 -0
- package/src/helpers/errors.ts +3 -3
- package/src/helpers/protoClasses.ts +6 -6
- package/src/proto/packages/dht/protos/DhtRpc.client.ts +75 -59
- package/src/proto/packages/dht/protos/DhtRpc.server.ts +26 -21
- package/src/proto/packages/dht/protos/DhtRpc.ts +87 -114
- package/src/rpc-protocol/DhtCallContext.ts +0 -1
- package/src/transport/ITransport.ts +5 -8
- package/src/transport/ListeningRpcCommunicator.ts +2 -1
- package/src/transport/RoutingRpcCommunicator.ts +3 -4
- package/src/types/ServiceID.ts +1 -0
- package/test/benchmark/{RecursiveFind.test.ts → Find.test.ts} +6 -6
- package/test/benchmark/KademliaCorrectness.test.ts +2 -2
- package/test/benchmark/kademlia-simulation/SimulationNode.ts +3 -3
- package/test/end-to-end/Layer0-Layer1.test.ts +13 -5
- package/test/end-to-end/Layer0.test.ts +35 -17
- package/test/end-to-end/Layer0MixedConnectionTypes.test.ts +24 -6
- package/test/end-to-end/{Layer0WebRTC-Layer1.test.ts → Layer0Webrtc-Layer1.test.ts} +1 -1
- package/test/end-to-end/{Layer0WebRTC.test.ts → Layer0Webrtc.test.ts} +14 -10
- package/test/end-to-end/Layer1-Scale-WebSocket.test.ts +8 -4
- package/test/end-to-end/{Layer1-Scale-WebRTC.test.ts → Layer1-Scale-Webrtc.test.ts} +2 -2
- package/test/end-to-end/RecoveryFromFailedAutoCertification.test.ts +52 -0
- package/test/end-to-end/{WebSocketConnectionRequest.test.ts → WebsocketConnectionRequest.test.ts} +16 -8
- package/test/end-to-end/memory-leak.test.ts +85 -0
- package/test/integration/ConnectionLocking.test.ts +4 -4
- package/test/integration/ConnectionManager.test.ts +37 -28
- package/test/integration/DhtJoinPeerDiscovery.test.ts +2 -2
- package/test/integration/DhtNodeExternalAPI.test.ts +10 -10
- package/test/integration/{RemoteDhtNode.test.ts → DhtNodeRpcRemote.test.ts} +10 -10
- package/test/integration/DhtRpc.test.ts +5 -5
- package/test/integration/{RecursiveFind.test.ts → Find.test.ts} +3 -3
- package/test/integration/Layer1-scale.test.ts +1 -1
- package/test/integration/MigrateData.test.ts +6 -5
- package/test/integration/Mock-Layer1-Layer0.test.ts +1 -1
- package/test/integration/MultipleEntryPointJoining.test.ts +6 -6
- package/test/integration/RouteMessage.test.ts +26 -26
- package/test/integration/RpcErrors.test.ts +10 -10
- package/test/integration/ScaleDownDht.test.ts +3 -3
- package/test/integration/SimultaneousConnections.test.ts +10 -7
- package/test/integration/Store.test.ts +1 -1
- package/test/integration/StoreAndDelete.test.ts +1 -1
- package/test/integration/StoreOnDhtWithTwoNodes.test.ts +12 -12
- package/test/integration/{WebRtcConnectionManagement.test.ts → WebrtcConnectionManagement.test.ts} +4 -4
- package/test/integration/{WebRtcConnectorRpc.test.ts → WebrtcConnectorRpc.test.ts} +7 -8
- package/test/integration/{WebSocket.test.ts → Websocket.test.ts} +14 -13
- package/test/integration/{WebSocketConnectionManagement.test.ts → WebsocketConnectionManagement.test.ts} +4 -4
- package/test/integration/{WebSocketConnectorRpc.test.ts → WebsocketConnectorRpc.test.ts} +15 -15
- package/test/unit/AutoCertifierClientFacade.test.ts +58 -0
- package/test/unit/ConnectivityHelpers.test.ts +69 -0
- package/test/unit/{RecursiveFinder.test.ts → Finder.test.ts} +19 -17
- package/test/unit/Router.test.ts +26 -26
- package/test/unit/UUID.test.ts +1 -1
- package/test/unit/{WebSocketConnectorRpcLocal.test.ts → WebsocketConnector.test.ts} +8 -8
- package/test/unit/{WebSocketServer.test.ts → WebsocketServer.test.ts} +20 -14
- package/test/unit/webrtcReplaceInternalIpWithExternalIp.test.ts +1 -1
- package/test/utils/FakeRpcCommunicator.ts +23 -0
- package/test/utils/mock/Transport.ts +1 -1
- package/test/utils/utils.ts +14 -24
- package/tsconfig.browser.json +1 -1
- package/tsconfig.jest.json +3 -2
- package/tsconfig.node.json +3 -2
- package/dist/src/connection/ManagedWebRtcConnection.d.ts +0 -7
- package/dist/src/connection/ManagedWebRtcConnection.js +0 -20
- package/dist/src/connection/ManagedWebRtcConnection.js.map +0 -1
- package/dist/src/connection/Simulator/SimulatorConnection.js.map +0 -1
- package/dist/src/connection/Simulator/SimulatorTransport.js.map +0 -1
- package/dist/src/connection/WebRTC/IWebRtcConnection.js.map +0 -1
- package/dist/src/connection/WebRTC/NodeWebRtcConnection.js.map +0 -1
- package/dist/src/connection/WebRTC/WebRtcConnectorRpcLocal.d.ts +0 -51
- package/dist/src/connection/WebRTC/WebRtcConnectorRpcLocal.js +0 -249
- package/dist/src/connection/WebRTC/WebRtcConnectorRpcLocal.js.map +0 -1
- package/dist/src/connection/WebRTC/WebRtcConnectorRpcRemote.js.map +0 -1
- package/dist/src/connection/WebSocket/ClientWebSocket.js.map +0 -1
- package/dist/src/connection/WebSocket/ServerWebSocket.js.map +0 -1
- package/dist/src/connection/WebSocket/WebSocketConnectorRpcLocal.js.map +0 -1
- package/dist/src/connection/WebSocket/WebSocketServer.js.map +0 -1
- package/dist/src/dht/RemoteDhtNode.js.map +0 -1
- package/dist/src/dht/find/RecursiveFindSession.js.map +0 -1
- package/dist/src/dht/find/RecursiveFinder.js.map +0 -1
- package/dist/src/dht/find/RemoteRecursiveFindSession.js.map +0 -1
- package/dist/src/dht/registerExternalApiRpcMethods.d.ts +0 -2
- package/dist/src/dht/registerExternalApiRpcMethods.js +0 -32
- package/dist/src/dht/registerExternalApiRpcMethods.js.map +0 -1
- package/src/connection/WebRTC/WebRtcConnectorRpcLocal.ts +0 -335
- package/src/dht/registerExternalApiRpcMethods.ts +0 -44
- package/test/utils/mock/RecursiveFinder.ts +0 -19
- /package/dist/src/connection/{Simulator → simulator}/Simulator.d.ts +0 -0
- /package/dist/src/connection/{Simulator → simulator}/pings.d.ts +0 -0
- /package/dist/src/connection/{Simulator → simulator}/pings.js +0 -0
- /package/dist/src/connection/{WebRTC → webrtc}/iceServerAsString.js +0 -0
- /package/src/connection/{Simulator → simulator}/pings.ts +0 -0
|
@@ -6,23 +6,25 @@ import {
|
|
|
6
6
|
import { ITransport } from '../transport/ITransport'
|
|
7
7
|
import { PortRange, TlsCertificate } from './ConnectionManager'
|
|
8
8
|
import { ManagedConnection } from './ManagedConnection'
|
|
9
|
-
import { Simulator } from './
|
|
10
|
-
import { SimulatorConnector } from './
|
|
11
|
-
import { IceServer,
|
|
12
|
-
import {
|
|
9
|
+
import { Simulator } from './simulator/Simulator'
|
|
10
|
+
import { SimulatorConnector } from './simulator/SimulatorConnector'
|
|
11
|
+
import { IceServer, WebrtcConnector } from './webrtc/WebrtcConnector'
|
|
12
|
+
import { WebsocketConnector } from './websocket/WebsocketConnector'
|
|
13
13
|
|
|
14
14
|
export interface ConnectorFacade {
|
|
15
15
|
createConnection: (peerDescriptor: PeerDescriptor) => ManagedConnection
|
|
16
|
-
|
|
16
|
+
getLocalPeerDescriptor: () => PeerDescriptor | undefined
|
|
17
17
|
start: (
|
|
18
18
|
onIncomingConnection: (connection: ManagedConnection) => boolean,
|
|
19
|
-
canConnect: (peerDescriptor: PeerDescriptor) => boolean
|
|
19
|
+
canConnect: (peerDescriptor: PeerDescriptor) => boolean,
|
|
20
|
+
autoCertifierTransport: ITransport
|
|
20
21
|
) => Promise<void>
|
|
21
22
|
stop: () => Promise<void>
|
|
22
23
|
}
|
|
23
24
|
|
|
24
25
|
const logger = new Logger(module)
|
|
25
26
|
|
|
27
|
+
// TODO: Wrap component specific configs to their own objects.
|
|
26
28
|
export interface DefaultConnectorFacadeConfig {
|
|
27
29
|
transport: ITransport
|
|
28
30
|
websocketHost?: string
|
|
@@ -37,15 +39,18 @@ export interface DefaultConnectorFacadeConfig {
|
|
|
37
39
|
webrtcPortRange?: PortRange
|
|
38
40
|
maxMessageSize?: number
|
|
39
41
|
tlsCertificate?: TlsCertificate
|
|
40
|
-
|
|
42
|
+
websocketServerEnableTls?: boolean
|
|
43
|
+
autoCertifierUrl?: string
|
|
44
|
+
autoCertifierConfigFile?: string
|
|
45
|
+
createLocalPeerDescriptor: (connectivityResponse: ConnectivityResponse) => PeerDescriptor
|
|
41
46
|
}
|
|
42
47
|
|
|
43
48
|
export class DefaultConnectorFacade implements ConnectorFacade {
|
|
44
49
|
|
|
45
50
|
private readonly config: DefaultConnectorFacadeConfig
|
|
46
|
-
private
|
|
47
|
-
private
|
|
48
|
-
private webrtcConnector?:
|
|
51
|
+
private localPeerDescriptor?: PeerDescriptor
|
|
52
|
+
private websocketConnector?: WebsocketConnector
|
|
53
|
+
private webrtcConnector?: WebrtcConnector
|
|
49
54
|
|
|
50
55
|
constructor(config: DefaultConnectorFacadeConfig) {
|
|
51
56
|
this.config = config
|
|
@@ -53,22 +58,28 @@ export class DefaultConnectorFacade implements ConnectorFacade {
|
|
|
53
58
|
|
|
54
59
|
async start(
|
|
55
60
|
onIncomingConnection: (connection: ManagedConnection) => boolean,
|
|
56
|
-
canConnect: (peerDescriptor: PeerDescriptor) => boolean
|
|
61
|
+
canConnect: (peerDescriptor: PeerDescriptor) => boolean,
|
|
62
|
+
autoCertifierTransport: ITransport
|
|
57
63
|
): Promise<void> {
|
|
58
|
-
logger.trace(`Creating
|
|
59
|
-
|
|
64
|
+
logger.trace(`Creating WebsocketConnectorRpcLocal`)
|
|
65
|
+
const webSocketConnectorConfig = {
|
|
60
66
|
transport: this.config.transport!,
|
|
61
|
-
// TODO should we use canConnect also for
|
|
67
|
+
// TODO should we use canConnect also for WebrtcConnector? (NET-1142)
|
|
62
68
|
canConnect: (peerDescriptor: PeerDescriptor) => canConnect(peerDescriptor),
|
|
63
69
|
onIncomingConnection,
|
|
64
70
|
portRange: this.config.websocketPortRange,
|
|
65
71
|
host: this.config.websocketHost,
|
|
66
72
|
entrypoints: this.config.entryPoints,
|
|
67
73
|
tlsCertificate: this.config.tlsCertificate,
|
|
74
|
+
serverEnableTls: this.config.websocketServerEnableTls!,
|
|
75
|
+
autoCertifierUrl: this.config.autoCertifierUrl!,
|
|
76
|
+
autoCertifierConfigFile: this.config.autoCertifierConfigFile!,
|
|
77
|
+
autoCertifierTransport,
|
|
68
78
|
maxMessageSize: this.config.maxMessageSize
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
|
|
79
|
+
}
|
|
80
|
+
this.websocketConnector = new WebsocketConnector(webSocketConnectorConfig)
|
|
81
|
+
logger.trace(`Creating WebRtcConnectorRpcLocal`)
|
|
82
|
+
this.webrtcConnector = new WebrtcConnector({
|
|
72
83
|
transport: this.config.transport!,
|
|
73
84
|
iceServers: this.config.iceServers,
|
|
74
85
|
allowPrivateAddresses: this.config.webrtcAllowPrivateAddresses,
|
|
@@ -79,47 +90,76 @@ export class DefaultConnectorFacade implements ConnectorFacade {
|
|
|
79
90
|
portRange: this.config.webrtcPortRange,
|
|
80
91
|
maxMessageSize: this.config.maxMessageSize
|
|
81
92
|
}, onIncomingConnection)
|
|
82
|
-
await this.
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
this.
|
|
93
|
+
await this.websocketConnector.start()
|
|
94
|
+
// TODO: generate a PeerDescriptor in a single function. Requires changes to the createOwnPeerDescriptor
|
|
95
|
+
// function in the config. Currently it's given by the DhtNode and it sets the PeerDescriptor for the
|
|
96
|
+
// DhtNode in each call.
|
|
97
|
+
// LocalPeerDescriptor could be stored in one place and passed from there to the connectors
|
|
98
|
+
const temporarilySelfSigned = (!this.config.tlsCertificate && this.config.websocketServerEnableTls === true)
|
|
99
|
+
const connectivityResponse = await this.websocketConnector.checkConnectivity(temporarilySelfSigned)
|
|
100
|
+
let localPeerDescriptor = this.config.createLocalPeerDescriptor(connectivityResponse)
|
|
101
|
+
this.localPeerDescriptor = localPeerDescriptor
|
|
102
|
+
this.websocketConnector.setLocalPeerDescriptor(localPeerDescriptor)
|
|
103
|
+
if (localPeerDescriptor.websocket && !this.config.tlsCertificate && this.config.websocketServerEnableTls) {
|
|
104
|
+
try {
|
|
105
|
+
await this.websocketConnector!.autoCertify()
|
|
106
|
+
const connectivityResponse = await this.websocketConnector!.checkConnectivity(false)
|
|
107
|
+
localPeerDescriptor = this.config.createLocalPeerDescriptor(connectivityResponse)
|
|
108
|
+
this.localPeerDescriptor = localPeerDescriptor
|
|
109
|
+
if (localPeerDescriptor.websocket === undefined) {
|
|
110
|
+
logger.warn('ConnectivityCheck failed after autocertification, websocket server connectivity disabled')
|
|
111
|
+
}
|
|
112
|
+
this.websocketConnector!.setLocalPeerDescriptor(localPeerDescriptor)
|
|
113
|
+
} catch (err) {
|
|
114
|
+
logger.warn('Failed to autocertify, disabling websocket server TLS')
|
|
115
|
+
await this.websocketConnector.destroy()
|
|
116
|
+
this.websocketConnector = new WebsocketConnector({
|
|
117
|
+
...webSocketConnectorConfig,
|
|
118
|
+
serverEnableTls: false,
|
|
119
|
+
})
|
|
120
|
+
await this.websocketConnector.start()
|
|
121
|
+
const connectivityResponse = await this.websocketConnector.checkConnectivity(false)
|
|
122
|
+
localPeerDescriptor = this.config.createLocalPeerDescriptor(connectivityResponse)
|
|
123
|
+
this.localPeerDescriptor = localPeerDescriptor
|
|
124
|
+
this.websocketConnector.setLocalPeerDescriptor(localPeerDescriptor)
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
this.webrtcConnector.setLocalPeerDescriptor(localPeerDescriptor)
|
|
88
128
|
}
|
|
89
129
|
|
|
90
130
|
createConnection(peerDescriptor: PeerDescriptor): ManagedConnection {
|
|
91
|
-
if (this.
|
|
92
|
-
return this.
|
|
131
|
+
if (this.websocketConnector!.isPossibleToFormConnection(peerDescriptor)) {
|
|
132
|
+
return this.websocketConnector!.connect(peerDescriptor)
|
|
93
133
|
} else {
|
|
94
134
|
return this.webrtcConnector!.connect(peerDescriptor)
|
|
95
135
|
}
|
|
96
136
|
}
|
|
97
137
|
|
|
98
|
-
|
|
99
|
-
return this.
|
|
138
|
+
getLocalPeerDescriptor(): PeerDescriptor | undefined {
|
|
139
|
+
return this.localPeerDescriptor
|
|
100
140
|
}
|
|
101
141
|
|
|
102
142
|
async stop(): Promise<void> {
|
|
103
|
-
await this.
|
|
143
|
+
await this.websocketConnector!.destroy()
|
|
104
144
|
await this.webrtcConnector!.stop()
|
|
105
145
|
}
|
|
106
146
|
}
|
|
107
147
|
|
|
108
148
|
export class SimulatorConnectorFacade implements ConnectorFacade {
|
|
109
149
|
|
|
110
|
-
private readonly
|
|
150
|
+
private readonly localPeerDescriptor: PeerDescriptor
|
|
111
151
|
private simulatorConnector?: SimulatorConnector
|
|
112
152
|
private simulator: Simulator
|
|
113
153
|
|
|
114
|
-
constructor(
|
|
115
|
-
this.
|
|
154
|
+
constructor(localPeerDescriptor: PeerDescriptor, simulator: Simulator) {
|
|
155
|
+
this.localPeerDescriptor = localPeerDescriptor
|
|
116
156
|
this.simulator = simulator
|
|
117
157
|
}
|
|
118
158
|
|
|
119
159
|
async start(onIncomingConnection: (connection: ManagedConnection) => boolean): Promise<void> {
|
|
120
160
|
logger.trace(`Creating SimulatorConnector`)
|
|
121
161
|
this.simulatorConnector = new SimulatorConnector(
|
|
122
|
-
this.
|
|
162
|
+
this.localPeerDescriptor,
|
|
123
163
|
this.simulator,
|
|
124
164
|
onIncomingConnection
|
|
125
165
|
)
|
|
@@ -130,8 +170,8 @@ export class SimulatorConnectorFacade implements ConnectorFacade {
|
|
|
130
170
|
return this.simulatorConnector!.connect(peerDescriptor)
|
|
131
171
|
}
|
|
132
172
|
|
|
133
|
-
|
|
134
|
-
return this.
|
|
173
|
+
getLocalPeerDescriptor(): PeerDescriptor {
|
|
174
|
+
return this.localPeerDescriptor
|
|
135
175
|
}
|
|
136
176
|
|
|
137
177
|
async stop(): Promise<void> {
|
|
@@ -15,20 +15,20 @@ interface HandshakerEvents {
|
|
|
15
15
|
export class Handshaker extends EventEmitter<HandshakerEvents> {
|
|
16
16
|
|
|
17
17
|
private static readonly HANDSHAKER_SERVICE_ID = 'system/handshaker'
|
|
18
|
-
private
|
|
18
|
+
private localPeerDescriptor: PeerDescriptor
|
|
19
19
|
private connection: IConnection
|
|
20
20
|
|
|
21
21
|
constructor(
|
|
22
|
-
|
|
22
|
+
localPeerDescriptor: PeerDescriptor,
|
|
23
23
|
connection: IConnection
|
|
24
24
|
) {
|
|
25
25
|
super()
|
|
26
|
-
this.
|
|
26
|
+
this.localPeerDescriptor = localPeerDescriptor
|
|
27
27
|
this.connection = connection
|
|
28
|
-
this.connection.on('data', this.onData)
|
|
28
|
+
this.connection.on('data', (data: Uint8Array) => this.onData(data))
|
|
29
29
|
}
|
|
30
30
|
|
|
31
|
-
private onData
|
|
31
|
+
private onData(data: Uint8Array) {
|
|
32
32
|
try {
|
|
33
33
|
const message = Message.fromBinary(data)
|
|
34
34
|
if (message.body.oneofKind === 'handshakeRequest') {
|
|
@@ -53,8 +53,8 @@ export class Handshaker extends EventEmitter<HandshakerEvents> {
|
|
|
53
53
|
|
|
54
54
|
public sendHandshakeRequest(): void {
|
|
55
55
|
const outgoingHandshake: HandshakeRequest = {
|
|
56
|
-
sourceId: this.
|
|
57
|
-
peerDescriptor: this.
|
|
56
|
+
sourceId: this.localPeerDescriptor.kademliaId,
|
|
57
|
+
peerDescriptor: this.localPeerDescriptor
|
|
58
58
|
}
|
|
59
59
|
const msg: Message = {
|
|
60
60
|
serviceId: Handshaker.HANDSHAKER_SERVICE_ID,
|
|
@@ -71,8 +71,8 @@ export class Handshaker extends EventEmitter<HandshakerEvents> {
|
|
|
71
71
|
|
|
72
72
|
public sendHandshakeResponse(error?: string): void {
|
|
73
73
|
const outgoingHandshakeResponse: HandshakeResponse = {
|
|
74
|
-
sourceId: this.
|
|
75
|
-
peerDescriptor: this.
|
|
74
|
+
sourceId: this.localPeerDescriptor.kademliaId,
|
|
75
|
+
peerDescriptor: this.localPeerDescriptor
|
|
76
76
|
}
|
|
77
77
|
if (error) {
|
|
78
78
|
outgoingHandshakeResponse.responseError = error
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { UUID } from '../helpers/UUID'
|
|
2
|
-
import { DisconnectionType } from '../transport/ITransport'
|
|
3
2
|
|
|
4
3
|
export interface ConnectionEvents {
|
|
5
4
|
data: (bytes: Uint8Array) => void
|
|
6
5
|
connected: () => void
|
|
7
|
-
disconnected: (
|
|
6
|
+
disconnected: (gracefulLeave: boolean, code?: number, reason?: string) => void
|
|
8
7
|
error: (name: string) => void
|
|
9
8
|
}
|
|
10
9
|
|
|
@@ -29,19 +28,19 @@ export interface IConnection {
|
|
|
29
28
|
on(event: 'data', listener: (bytes: Uint8Array) => void): this
|
|
30
29
|
on(event: 'error', listener: (name: string) => void): this
|
|
31
30
|
on(event: 'connected', listener: () => void): this
|
|
32
|
-
on(event: 'disconnected', listener: (
|
|
31
|
+
on(event: 'disconnected', listener: (gracefulLeave: boolean, code?: number, reason?: string) => void): this
|
|
33
32
|
|
|
34
33
|
once(event: 'data', listener: (bytes: Uint8Array) => void): this
|
|
35
34
|
once(event: 'error', listener: (name: string) => void): this
|
|
36
35
|
once(event: 'connected', listener: () => void): this
|
|
37
|
-
once(event: 'disconnected', listener: (
|
|
36
|
+
once(event: 'disconnected', listener: (gracefulLeave: boolean, code?: number, reason?: string) => void): this
|
|
38
37
|
|
|
39
38
|
off(event: 'data', listener: (bytes: Uint8Array) => void): void
|
|
40
39
|
off(event: 'error', listener: (name: string) => void): void
|
|
41
40
|
off(event: 'connected', listener: () => void): void
|
|
42
|
-
off(event: 'disconnected', listener: (
|
|
41
|
+
off(event: 'disconnected', listener: (gracefulLeave: boolean, code?: number, reason?: string) => void): void
|
|
43
42
|
|
|
44
43
|
send(data: Uint8Array): void
|
|
45
|
-
close(
|
|
44
|
+
close(gracefulLeave: boolean): Promise<void>
|
|
46
45
|
destroy(): void
|
|
47
46
|
}
|
|
@@ -6,7 +6,6 @@ import { Logger, raceEvents3, runAndRaceEvents3, RunAndRaceEventsReturnType } fr
|
|
|
6
6
|
import EventEmitter from 'eventemitter3'
|
|
7
7
|
import { PeerIDKey } from '../helpers/PeerID'
|
|
8
8
|
import { keyFromPeerDescriptor } from '../helpers/peerIdFromPeerDescriptor'
|
|
9
|
-
import { DisconnectionType } from '../transport/ITransport'
|
|
10
9
|
import { keyOrUnknownFromPeerDescriptor } from './ConnectionManager'
|
|
11
10
|
|
|
12
11
|
export interface ManagedConnectionEvents {
|
|
@@ -44,12 +43,12 @@ export class ManagedConnection extends EventEmitter<Events> {
|
|
|
44
43
|
private bufferSentbyOtherConnection = false
|
|
45
44
|
private closing = false
|
|
46
45
|
public replacedByOtherConnection = false
|
|
47
|
-
private
|
|
46
|
+
private localPeerDescriptor: PeerDescriptor
|
|
48
47
|
protected outgoingConnection?: IConnection
|
|
49
48
|
protected incomingConnection?: IConnection
|
|
50
49
|
|
|
51
50
|
constructor(
|
|
52
|
-
|
|
51
|
+
localPeerDescriptor: PeerDescriptor,
|
|
53
52
|
connectionType: ConnectionType,
|
|
54
53
|
outgoingConnection?: IConnection,
|
|
55
54
|
incomingConnection?: IConnection,
|
|
@@ -58,7 +57,7 @@ export class ManagedConnection extends EventEmitter<Events> {
|
|
|
58
57
|
|
|
59
58
|
this.send = this.send.bind(this)
|
|
60
59
|
|
|
61
|
-
this.
|
|
60
|
+
this.localPeerDescriptor = localPeerDescriptor
|
|
62
61
|
this.outgoingConnection = outgoingConnection
|
|
63
62
|
this.incomingConnection = incomingConnection
|
|
64
63
|
this.connectionType = connectionType
|
|
@@ -72,7 +71,7 @@ export class ManagedConnection extends EventEmitter<Events> {
|
|
|
72
71
|
}
|
|
73
72
|
|
|
74
73
|
if (outgoingConnection) {
|
|
75
|
-
this.handshaker = new Handshaker(this.
|
|
74
|
+
this.handshaker = new Handshaker(this.localPeerDescriptor, outgoingConnection)
|
|
76
75
|
|
|
77
76
|
this.handshaker.once('handshakeFailed', (errorMessage) => {
|
|
78
77
|
logger.trace(keyOrUnknownFromPeerDescriptor(this.peerDescriptor) + ' handshakeFailed: ' + errorMessage)
|
|
@@ -95,7 +94,7 @@ export class ManagedConnection extends EventEmitter<Events> {
|
|
|
95
94
|
|
|
96
95
|
} else {
|
|
97
96
|
if (incomingConnection) {
|
|
98
|
-
this.handshaker = new Handshaker(this.
|
|
97
|
+
this.handshaker = new Handshaker(this.localPeerDescriptor, incomingConnection)
|
|
99
98
|
this.handshaker.on('handshakeRequest', (peerDescriptor: PeerDescriptor) => {
|
|
100
99
|
this.setPeerDescriptor(peerDescriptor)
|
|
101
100
|
this.emit('handshakeRequest', peerDescriptor)
|
|
@@ -165,7 +164,7 @@ export class ManagedConnection extends EventEmitter<Events> {
|
|
|
165
164
|
return this.peerDescriptor
|
|
166
165
|
}
|
|
167
166
|
|
|
168
|
-
private onHandshakeCompleted
|
|
167
|
+
private onHandshakeCompleted(peerDescriptor: PeerDescriptor) {
|
|
169
168
|
this.lastUsed = Date.now()
|
|
170
169
|
|
|
171
170
|
this.setPeerDescriptor(peerDescriptor)
|
|
@@ -186,7 +185,7 @@ export class ManagedConnection extends EventEmitter<Events> {
|
|
|
186
185
|
|
|
187
186
|
impl.on('data', (bytes: Uint8Array) => {
|
|
188
187
|
this.lastUsed = Date.now()
|
|
189
|
-
if (this.listenerCount('managedData')
|
|
188
|
+
if (this.listenerCount('managedData') === 0) {
|
|
190
189
|
|
|
191
190
|
this.inputBuffer.push(bytes)
|
|
192
191
|
} else {
|
|
@@ -207,13 +206,13 @@ export class ManagedConnection extends EventEmitter<Events> {
|
|
|
207
206
|
impl.on('disconnected', this.onDisconnected)
|
|
208
207
|
}
|
|
209
208
|
|
|
210
|
-
private onDisconnected(
|
|
211
|
-
logger.trace(keyOrUnknownFromPeerDescriptor(this.peerDescriptor) + ' onDisconnected() ' +
|
|
209
|
+
private onDisconnected(gracefulLeave: boolean): void {
|
|
210
|
+
logger.trace(keyOrUnknownFromPeerDescriptor(this.peerDescriptor) + ' onDisconnected() ' + gracefulLeave)
|
|
212
211
|
if (this.bufferSentbyOtherConnection) {
|
|
213
212
|
return
|
|
214
213
|
}
|
|
215
214
|
this.emit('internal_disconnected')
|
|
216
|
-
this.doDisconnect(
|
|
215
|
+
this.doDisconnect(gracefulLeave)
|
|
217
216
|
}
|
|
218
217
|
|
|
219
218
|
async send(data: Uint8Array, doNotConnect = false): Promise<void> {
|
|
@@ -246,14 +245,14 @@ export class ManagedConnection extends EventEmitter<Events> {
|
|
|
246
245
|
|
|
247
246
|
if (result.winnerName === 'internal_disconnected') {
|
|
248
247
|
this.doNotEmitDisconnected = false
|
|
249
|
-
this.doDisconnect(
|
|
248
|
+
this.doDisconnect(false)
|
|
250
249
|
} else if (result.winnerName === 'handshakeFailed') {
|
|
251
250
|
logger.trace(keyOrUnknownFromPeerDescriptor(this.peerDescriptor) + ' handshakeFailed received')
|
|
252
251
|
|
|
253
252
|
if (this.bufferSentbyOtherConnection) {
|
|
254
253
|
logger.trace('bufferSentByOtherConnection already true')
|
|
255
254
|
this.doNotEmitDisconnected = false
|
|
256
|
-
this.doDisconnect(
|
|
255
|
+
this.doDisconnect(false)
|
|
257
256
|
} else {
|
|
258
257
|
let result2: RunAndRaceEventsReturnType<Events>
|
|
259
258
|
|
|
@@ -268,7 +267,7 @@ export class ManagedConnection extends EventEmitter<Events> {
|
|
|
268
267
|
if (result2.winnerName === 'bufferSentByOtherConnection') {
|
|
269
268
|
logger.trace('bufferSentByOtherConnection received')
|
|
270
269
|
this.doNotEmitDisconnected = false
|
|
271
|
-
this.doDisconnect(
|
|
270
|
+
this.doDisconnect(false)
|
|
272
271
|
} else if (result2.winnerName === 'closing') {
|
|
273
272
|
logger.trace('bufferSentByOtherConnection not received, instead received a closing event')
|
|
274
273
|
} else if (result2.winnerName === 'disconnected') {
|
|
@@ -305,7 +304,7 @@ export class ManagedConnection extends EventEmitter<Events> {
|
|
|
305
304
|
// This happens when connectionRequest has been made and answered
|
|
306
305
|
if (this.implementation) {
|
|
307
306
|
if (!this.handshaker) {
|
|
308
|
-
this.handshaker = new Handshaker(this.
|
|
307
|
+
this.handshaker = new Handshaker(this.localPeerDescriptor, this.implementation)
|
|
309
308
|
}
|
|
310
309
|
|
|
311
310
|
this.handshaker.sendHandshakeResponse()
|
|
@@ -322,18 +321,18 @@ export class ManagedConnection extends EventEmitter<Events> {
|
|
|
322
321
|
this.handshaker!.sendHandshakeResponse(errorMessage)
|
|
323
322
|
}
|
|
324
323
|
|
|
325
|
-
private doDisconnect(
|
|
324
|
+
private doDisconnect(gracefulLeave: boolean) {
|
|
326
325
|
logger.trace(keyOrUnknownFromPeerDescriptor(this.peerDescriptor) + ' doDisconnect() emitting')
|
|
327
326
|
|
|
328
327
|
if (!this.doNotEmitDisconnected) {
|
|
329
328
|
logger.trace(keyOrUnknownFromPeerDescriptor(this.peerDescriptor) + ' emitting disconnected')
|
|
330
|
-
this.emit('disconnected',
|
|
329
|
+
this.emit('disconnected', gracefulLeave)
|
|
331
330
|
} else {
|
|
332
331
|
logger.trace(keyOrUnknownFromPeerDescriptor(this.peerDescriptor) + ' not emitting disconnected because doNotEmitDisconnected flag is set')
|
|
333
332
|
}
|
|
334
333
|
}
|
|
335
334
|
|
|
336
|
-
public async close(
|
|
335
|
+
public async close(gracefulLeave: boolean): Promise<void> {
|
|
337
336
|
if (this.replacedByOtherConnection) {
|
|
338
337
|
logger.trace('close() called on replaced connection')
|
|
339
338
|
}
|
|
@@ -341,13 +340,13 @@ export class ManagedConnection extends EventEmitter<Events> {
|
|
|
341
340
|
this.emit('closing')
|
|
342
341
|
this.doNotEmitDisconnected = false
|
|
343
342
|
if (this.implementation) {
|
|
344
|
-
await this.implementation?.close(
|
|
343
|
+
await this.implementation?.close(gracefulLeave)
|
|
345
344
|
} else if (this.outgoingConnection) {
|
|
346
|
-
await this.outgoingConnection?.close(
|
|
345
|
+
await this.outgoingConnection?.close(gracefulLeave)
|
|
347
346
|
} else if (this.incomingConnection) {
|
|
348
|
-
await this.incomingConnection?.close(
|
|
347
|
+
await this.incomingConnection?.close(gracefulLeave)
|
|
349
348
|
} else {
|
|
350
|
-
this.doDisconnect(
|
|
349
|
+
this.doDisconnect(gracefulLeave)
|
|
351
350
|
}
|
|
352
351
|
}
|
|
353
352
|
|
|
@@ -1,25 +1,25 @@
|
|
|
1
1
|
import { PeerDescriptor } from '../proto/packages/dht/protos/DhtRpc'
|
|
2
2
|
import { ConnectionType } from './IConnection'
|
|
3
3
|
import { ManagedConnection } from './ManagedConnection'
|
|
4
|
-
import {
|
|
4
|
+
import { NodeWebrtcConnection } from './webrtc/NodeWebrtcConnection'
|
|
5
5
|
|
|
6
|
-
export class
|
|
6
|
+
export class ManagedWebrtcConnection extends ManagedConnection {
|
|
7
7
|
|
|
8
|
-
constructor(
|
|
9
|
-
connectingConnection?:
|
|
10
|
-
connectedConnection?:
|
|
8
|
+
constructor(localPeerDescriptor: PeerDescriptor,
|
|
9
|
+
connectingConnection?: NodeWebrtcConnection,
|
|
10
|
+
connectedConnection?: NodeWebrtcConnection) {
|
|
11
11
|
super(
|
|
12
|
-
|
|
12
|
+
localPeerDescriptor,
|
|
13
13
|
ConnectionType.WEBRTC,
|
|
14
14
|
connectingConnection,
|
|
15
15
|
connectedConnection)
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
-
public
|
|
18
|
+
public getWebrtcConnection(): NodeWebrtcConnection {
|
|
19
19
|
if (this.outgoingConnection) {
|
|
20
|
-
return this.outgoingConnection as unknown as
|
|
20
|
+
return this.outgoingConnection as unknown as NodeWebrtcConnection
|
|
21
21
|
} else {
|
|
22
|
-
return this.incomingConnection as unknown as
|
|
22
|
+
return this.incomingConnection as unknown as NodeWebrtcConnection
|
|
23
23
|
}
|
|
24
24
|
}
|
|
25
25
|
}
|
|
@@ -333,7 +333,7 @@ export class Simulator extends EventEmitter<ConnectionSourceEvents> {
|
|
|
333
333
|
const association = new Association(sourceConnection, undefined, connectedCallback)
|
|
334
334
|
this.associations.set(sourceConnection.connectionId, association)
|
|
335
335
|
|
|
336
|
-
const executionTime = this.generateExecutionTime(association, sourceConnection.
|
|
336
|
+
const executionTime = this.generateExecutionTime(association, sourceConnection.localPeerDescriptor.region, targetDescriptor.region)
|
|
337
337
|
association.setLastOperationAt(executionTime)
|
|
338
338
|
|
|
339
339
|
const operation = new ConnectOperation(executionTime, association,
|
|
@@ -356,7 +356,7 @@ export class Simulator extends EventEmitter<ConnectionSourceEvents> {
|
|
|
356
356
|
association.setClosing()
|
|
357
357
|
|
|
358
358
|
const executionTime = this.generateExecutionTime(association,
|
|
359
|
-
sourceConnection.
|
|
359
|
+
sourceConnection.localPeerDescriptor.region,
|
|
360
360
|
sourceConnection.getPeerDescriptor()?.region)
|
|
361
361
|
association.setLastOperationAt(executionTime)
|
|
362
362
|
|
|
@@ -382,8 +382,8 @@ export class Simulator extends EventEmitter<ConnectionSourceEvents> {
|
|
|
382
382
|
}
|
|
383
383
|
|
|
384
384
|
const executionTime = this.generateExecutionTime(association,
|
|
385
|
-
sourceConnection.
|
|
386
|
-
association.destinationConnection!.
|
|
385
|
+
sourceConnection.localPeerDescriptor.region,
|
|
386
|
+
association.destinationConnection!.localPeerDescriptor.region)
|
|
387
387
|
|
|
388
388
|
association.setLastOperationAt(executionTime)
|
|
389
389
|
|
|
@@ -4,7 +4,6 @@ import { Message, PeerDescriptor } from '../../proto/packages/dht/protos/DhtRpc'
|
|
|
4
4
|
import { Connection } from '../Connection'
|
|
5
5
|
import { Logger } from '@streamr/utils'
|
|
6
6
|
import { protoToString } from '../../helpers/protoToString'
|
|
7
|
-
import { DisconnectionType } from '../../transport/ITransport'
|
|
8
7
|
import { keyFromPeerDescriptor } from '../../helpers/peerIdFromPeerDescriptor'
|
|
9
8
|
|
|
10
9
|
const logger = new Logger(module)
|
|
@@ -12,19 +11,19 @@ const logger = new Logger(module)
|
|
|
12
11
|
export class SimulatorConnection extends Connection implements IConnection {
|
|
13
12
|
|
|
14
13
|
private stopped = false
|
|
15
|
-
public
|
|
14
|
+
public localPeerDescriptor: PeerDescriptor
|
|
16
15
|
private targetPeerDescriptor: PeerDescriptor
|
|
17
16
|
private simulator: Simulator
|
|
18
17
|
|
|
19
18
|
constructor(
|
|
20
|
-
|
|
19
|
+
localPeerDescriptor: PeerDescriptor,
|
|
21
20
|
targetPeerDescriptor: PeerDescriptor,
|
|
22
21
|
connectionType: ConnectionType,
|
|
23
22
|
simulator: Simulator
|
|
24
23
|
) {
|
|
25
24
|
super(connectionType)
|
|
26
25
|
|
|
27
|
-
this.
|
|
26
|
+
this.localPeerDescriptor = localPeerDescriptor
|
|
28
27
|
this.setPeerDescriptor(targetPeerDescriptor)
|
|
29
28
|
this.targetPeerDescriptor = targetPeerDescriptor
|
|
30
29
|
this.connectionType = connectionType
|
|
@@ -46,36 +45,36 @@ export class SimulatorConnection extends Connection implements IConnection {
|
|
|
46
45
|
this.simulator.send(this, data)
|
|
47
46
|
|
|
48
47
|
} else {
|
|
49
|
-
logger.error(keyFromPeerDescriptor(this.
|
|
48
|
+
logger.error(keyFromPeerDescriptor(this.localPeerDescriptor) + ', ' + keyFromPeerDescriptor(this.targetPeerDescriptor) +
|
|
50
49
|
'tried to send() on a stopped connection')
|
|
51
50
|
}
|
|
52
51
|
}
|
|
53
52
|
|
|
54
|
-
public async close(
|
|
55
|
-
logger.trace(keyFromPeerDescriptor(this.
|
|
53
|
+
public async close(gracefulLeave: boolean): Promise<void> {
|
|
54
|
+
logger.trace(keyFromPeerDescriptor(this.localPeerDescriptor) + ', ' + keyFromPeerDescriptor(this.targetPeerDescriptor) + ' close()')
|
|
56
55
|
|
|
57
56
|
if (!this.stopped) {
|
|
58
|
-
logger.trace(keyFromPeerDescriptor(this.
|
|
57
|
+
logger.trace(keyFromPeerDescriptor(this.localPeerDescriptor) + ', '
|
|
59
58
|
+ keyFromPeerDescriptor(this.targetPeerDescriptor) + ' close() not stopped')
|
|
60
59
|
this.stopped = true
|
|
61
60
|
|
|
62
61
|
try {
|
|
63
|
-
logger.trace(keyFromPeerDescriptor(this.
|
|
62
|
+
logger.trace(keyFromPeerDescriptor(this.localPeerDescriptor) + ', ' + keyFromPeerDescriptor(this.targetPeerDescriptor) +
|
|
64
63
|
' close() calling simulator.disconnect()')
|
|
65
64
|
this.simulator.close(this)
|
|
66
|
-
logger.trace(keyFromPeerDescriptor(this.
|
|
65
|
+
logger.trace(keyFromPeerDescriptor(this.localPeerDescriptor) + ', ' + keyFromPeerDescriptor(this.targetPeerDescriptor) +
|
|
67
66
|
' close() simulator.disconnect returned')
|
|
68
67
|
} catch (e) {
|
|
69
|
-
logger.trace(keyFromPeerDescriptor(this.
|
|
68
|
+
logger.trace(keyFromPeerDescriptor(this.localPeerDescriptor) + ', ' + keyFromPeerDescriptor(this.targetPeerDescriptor) +
|
|
70
69
|
'close aborted' + e)
|
|
71
70
|
} finally {
|
|
72
|
-
logger.trace(keyFromPeerDescriptor(this.
|
|
71
|
+
logger.trace(keyFromPeerDescriptor(this.localPeerDescriptor) + ', ' + keyFromPeerDescriptor(this.targetPeerDescriptor) +
|
|
73
72
|
' calling this.doDisconnect')
|
|
74
|
-
this.doDisconnect(
|
|
73
|
+
this.doDisconnect(gracefulLeave)
|
|
75
74
|
}
|
|
76
75
|
|
|
77
76
|
} else {
|
|
78
|
-
logger.trace(keyFromPeerDescriptor(this.
|
|
77
|
+
logger.trace(keyFromPeerDescriptor(this.localPeerDescriptor) + ', ' + keyFromPeerDescriptor(this.targetPeerDescriptor) +
|
|
79
78
|
' close() tried to close a stopped connection')
|
|
80
79
|
}
|
|
81
80
|
}
|
|
@@ -87,7 +86,7 @@ export class SimulatorConnection extends Connection implements IConnection {
|
|
|
87
86
|
this.simulator.connect(this, this.targetPeerDescriptor, (error?: string) => {
|
|
88
87
|
if (error) {
|
|
89
88
|
logger.trace(error)
|
|
90
|
-
this.doDisconnect(
|
|
89
|
+
this.doDisconnect(false)
|
|
91
90
|
} else {
|
|
92
91
|
this.emit('connected')
|
|
93
92
|
}
|
|
@@ -109,9 +108,9 @@ export class SimulatorConnection extends Connection implements IConnection {
|
|
|
109
108
|
|
|
110
109
|
public handleIncomingDisconnection(): void {
|
|
111
110
|
if (!this.stopped) {
|
|
112
|
-
logger.trace(keyFromPeerDescriptor(this.
|
|
111
|
+
logger.trace(keyFromPeerDescriptor(this.localPeerDescriptor) + ' handleIncomingDisconnection()')
|
|
113
112
|
this.stopped = true
|
|
114
|
-
this.doDisconnect(
|
|
113
|
+
this.doDisconnect(false)
|
|
115
114
|
} else {
|
|
116
115
|
logger.trace('tried to call handleIncomingDisconnection() a stopped connection')
|
|
117
116
|
}
|
|
@@ -119,22 +118,22 @@ export class SimulatorConnection extends Connection implements IConnection {
|
|
|
119
118
|
|
|
120
119
|
public destroy(): void {
|
|
121
120
|
if (!this.stopped) {
|
|
122
|
-
logger.trace(keyFromPeerDescriptor(this.
|
|
121
|
+
logger.trace(keyFromPeerDescriptor(this.localPeerDescriptor) + ' destroy()')
|
|
123
122
|
this.removeAllListeners()
|
|
124
|
-
this.close(
|
|
123
|
+
this.close(false).catch((_e) => { })
|
|
125
124
|
} else {
|
|
126
|
-
logger.trace(keyFromPeerDescriptor(this.
|
|
125
|
+
logger.trace(keyFromPeerDescriptor(this.localPeerDescriptor) + ' tried to call destroy() a stopped connection')
|
|
127
126
|
}
|
|
128
127
|
}
|
|
129
128
|
|
|
130
|
-
private doDisconnect(
|
|
131
|
-
logger.trace(keyFromPeerDescriptor(this.
|
|
129
|
+
private doDisconnect(gracefulLeave: boolean) {
|
|
130
|
+
logger.trace(keyFromPeerDescriptor(this.localPeerDescriptor) + ' doDisconnect()')
|
|
132
131
|
this.stopped = true
|
|
133
132
|
|
|
134
|
-
logger.trace(keyFromPeerDescriptor(this.
|
|
133
|
+
logger.trace(keyFromPeerDescriptor(this.localPeerDescriptor) + ', '
|
|
135
134
|
+ keyFromPeerDescriptor(this.targetPeerDescriptor) + ' doDisconnect emitting')
|
|
136
135
|
|
|
137
|
-
this.emit('disconnected',
|
|
136
|
+
this.emit('disconnected', gracefulLeave)
|
|
138
137
|
|
|
139
138
|
}
|
|
140
139
|
}
|