@streamr/dht 103.1.2 → 103.2.0-experiment.0
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/exports-browser.cjs +7636 -0
- package/dist/exports-browser.cjs.map +1 -0
- package/dist/exports-browser.d.ts +1321 -0
- package/dist/exports-browser.js +7611 -0
- package/dist/exports-browser.js.map +1 -0
- package/dist/exports-nodejs.cjs +7833 -0
- package/dist/exports-nodejs.cjs.map +1 -0
- package/dist/exports-nodejs.d.ts +1321 -0
- package/dist/exports-nodejs.js +7808 -0
- package/dist/exports-nodejs.js.map +1 -0
- package/package.json +41 -25
- package/dist/generated/google/protobuf/any.d.ts +0 -180
- package/dist/generated/google/protobuf/any.js +0 -155
- package/dist/generated/google/protobuf/any.js.map +0 -1
- package/dist/generated/google/protobuf/empty.d.ts +0 -31
- package/dist/generated/google/protobuf/empty.js +0 -45
- package/dist/generated/google/protobuf/empty.js.map +0 -1
- package/dist/generated/google/protobuf/timestamp.d.ts +0 -156
- package/dist/generated/google/protobuf/timestamp.js +0 -136
- package/dist/generated/google/protobuf/timestamp.js.map +0 -1
- package/dist/generated/packages/dht/protos/DhtRpc.client.d.ts +0 -371
- package/dist/generated/packages/dht/protos/DhtRpc.client.js +0 -292
- package/dist/generated/packages/dht/protos/DhtRpc.client.js.map +0 -1
- package/dist/generated/packages/dht/protos/DhtRpc.d.ts +0 -1031
- package/dist/generated/packages/dht/protos/DhtRpc.js +0 -702
- package/dist/generated/packages/dht/protos/DhtRpc.js.map +0 -1
- package/dist/generated/packages/dht/protos/DhtRpc.server.d.ts +0 -168
- package/dist/generated/packages/dht/protos/DhtRpc.server.js +0 -3
- package/dist/generated/packages/dht/protos/DhtRpc.server.js.map +0 -1
- package/dist/generated/packages/proto-rpc/protos/ProtoRpc.d.ts +0 -87
- package/dist/generated/packages/proto-rpc/protos/ProtoRpc.js +0 -66
- package/dist/generated/packages/proto-rpc/protos/ProtoRpc.js.map +0 -1
- package/dist/package.json +0 -61
- package/dist/src/connection/Connection.d.ts +0 -12
- package/dist/src/connection/Connection.js +0 -30
- package/dist/src/connection/Connection.js.map +0 -1
- package/dist/src/connection/ConnectionLockRpcLocal.d.ts +0 -22
- package/dist/src/connection/ConnectionLockRpcLocal.js +0 -54
- package/dist/src/connection/ConnectionLockRpcLocal.js.map +0 -1
- package/dist/src/connection/ConnectionLockRpcRemote.d.ts +0 -10
- package/dist/src/connection/ConnectionLockRpcRemote.js +0 -61
- package/dist/src/connection/ConnectionLockRpcRemote.js.map +0 -1
- package/dist/src/connection/ConnectionLockStates.d.ts +0 -27
- package/dist/src/connection/ConnectionLockStates.js +0 -114
- package/dist/src/connection/ConnectionLockStates.js.map +0 -1
- package/dist/src/connection/ConnectionManager.d.ts +0 -85
- package/dist/src/connection/ConnectionManager.js +0 -569
- package/dist/src/connection/ConnectionManager.js.map +0 -1
- package/dist/src/connection/ConnectionsView.d.ts +0 -7
- package/dist/src/connection/ConnectionsView.js +0 -3
- package/dist/src/connection/ConnectionsView.js.map +0 -1
- package/dist/src/connection/ConnectorFacade.d.ts +0 -58
- package/dist/src/connection/ConnectorFacade.js +0 -154
- package/dist/src/connection/ConnectorFacade.js.map +0 -1
- package/dist/src/connection/Handshaker.d.ts +0 -27
- package/dist/src/connection/Handshaker.js +0 -179
- package/dist/src/connection/Handshaker.js.map +0 -1
- package/dist/src/connection/IConnection.d.ts +0 -32
- package/dist/src/connection/IConnection.js +0 -12
- package/dist/src/connection/IConnection.js.map +0 -1
- package/dist/src/connection/ManagedConnection.d.ts +0 -30
- package/dist/src/connection/ManagedConnection.js +0 -129
- package/dist/src/connection/ManagedConnection.js.map +0 -1
- package/dist/src/connection/OutputBuffer.d.ts +0 -9
- package/dist/src/connection/OutputBuffer.js +0 -26
- package/dist/src/connection/OutputBuffer.js.map +0 -1
- package/dist/src/connection/PendingConnection.d.ts +0 -19
- package/dist/src/connection/PendingConnection.js +0 -59
- package/dist/src/connection/PendingConnection.js.map +0 -1
- package/dist/src/connection/connectivityChecker.d.ts +0 -9
- package/dist/src/connection/connectivityChecker.js +0 -138
- package/dist/src/connection/connectivityChecker.js.map +0 -1
- package/dist/src/connection/connectivityRequestHandler.d.ts +0 -4
- package/dist/src/connection/connectivityRequestHandler.js +0 -108
- package/dist/src/connection/connectivityRequestHandler.js.map +0 -1
- package/dist/src/connection/simulator/Simulator.d.ts +0 -36
- package/dist/src/connection/simulator/Simulator.js +0 -290
- package/dist/src/connection/simulator/Simulator.js.map +0 -1
- package/dist/src/connection/simulator/SimulatorConnection.d.ts +0 -18
- package/dist/src/connection/simulator/SimulatorConnection.js +0 -123
- package/dist/src/connection/simulator/SimulatorConnection.js.map +0 -1
- package/dist/src/connection/simulator/SimulatorConnector.d.ts +0 -16
- package/dist/src/connection/simulator/SimulatorConnector.js +0 -80
- package/dist/src/connection/simulator/SimulatorConnector.js.map +0 -1
- package/dist/src/connection/simulator/SimulatorTransport.d.ts +0 -6
- package/dist/src/connection/simulator/SimulatorTransport.js +0 -17
- package/dist/src/connection/simulator/SimulatorTransport.js.map +0 -1
- package/dist/src/connection/simulator/pings.d.ts +0 -21
- package/dist/src/connection/simulator/pings.js +0 -61
- package/dist/src/connection/simulator/pings.js.map +0 -1
- package/dist/src/connection/webrtc/BrowserWebrtcConnection.d.ts +0 -37
- package/dist/src/connection/webrtc/BrowserWebrtcConnection.js +0 -229
- package/dist/src/connection/webrtc/BrowserWebrtcConnection.js.map +0 -1
- package/dist/src/connection/webrtc/IWebrtcConnection.d.ts +0 -21
- package/dist/src/connection/webrtc/IWebrtcConnection.js +0 -9
- package/dist/src/connection/webrtc/IWebrtcConnection.js.map +0 -1
- package/dist/src/connection/webrtc/NodeWebrtcConnection.d.ts +0 -45
- package/dist/src/connection/webrtc/NodeWebrtcConnection.js +0 -229
- package/dist/src/connection/webrtc/NodeWebrtcConnection.js.map +0 -1
- package/dist/src/connection/webrtc/WebrtcConnector.d.ts +0 -43
- package/dist/src/connection/webrtc/WebrtcConnector.js +0 -208
- package/dist/src/connection/webrtc/WebrtcConnector.js.map +0 -1
- package/dist/src/connection/webrtc/WebrtcConnectorRpcLocal.d.ts +0 -26
- package/dist/src/connection/webrtc/WebrtcConnectorRpcLocal.js +0 -82
- package/dist/src/connection/webrtc/WebrtcConnectorRpcLocal.js.map +0 -1
- package/dist/src/connection/webrtc/WebrtcConnectorRpcRemote.d.ts +0 -8
- package/dist/src/connection/webrtc/WebrtcConnectorRpcRemote.js +0 -50
- package/dist/src/connection/webrtc/WebrtcConnectorRpcRemote.js.map +0 -1
- package/dist/src/connection/webrtc/iceServerAsString.d.ts +0 -2
- package/dist/src/connection/webrtc/iceServerAsString.js +0 -17
- package/dist/src/connection/webrtc/iceServerAsString.js.map +0 -1
- package/dist/src/connection/websocket/AbstractWebsocketClientConnection.d.ts +0 -27
- package/dist/src/connection/websocket/AbstractWebsocketClientConnection.js +0 -107
- package/dist/src/connection/websocket/AbstractWebsocketClientConnection.js.map +0 -1
- package/dist/src/connection/websocket/AutoCertifierClientFacade.d.ts +0 -26
- package/dist/src/connection/websocket/AutoCertifierClientFacade.js +0 -39
- package/dist/src/connection/websocket/AutoCertifierClientFacade.js.map +0 -1
- package/dist/src/connection/websocket/BrowserWebsocketClientConnection.d.ts +0 -7
- package/dist/src/connection/websocket/BrowserWebsocketClientConnection.js +0 -44
- package/dist/src/connection/websocket/BrowserWebsocketClientConnection.js.map +0 -1
- package/dist/src/connection/websocket/NodeWebsocketClientConnection.d.ts +0 -7
- package/dist/src/connection/websocket/NodeWebsocketClientConnection.js +0 -39
- package/dist/src/connection/websocket/NodeWebsocketClientConnection.js.map +0 -1
- package/dist/src/connection/websocket/WebsocketClientConnector.d.ts +0 -26
- package/dist/src/connection/websocket/WebsocketClientConnector.js +0 -86
- package/dist/src/connection/websocket/WebsocketClientConnector.js.map +0 -1
- package/dist/src/connection/websocket/WebsocketClientConnectorRpcLocal.d.ts +0 -18
- package/dist/src/connection/websocket/WebsocketClientConnectorRpcLocal.js +0 -23
- package/dist/src/connection/websocket/WebsocketClientConnectorRpcLocal.js.map +0 -1
- package/dist/src/connection/websocket/WebsocketClientConnectorRpcRemote.d.ts +0 -5
- package/dist/src/connection/websocket/WebsocketClientConnectorRpcRemote.js +0 -17
- package/dist/src/connection/websocket/WebsocketClientConnectorRpcRemote.js.map +0 -1
- package/dist/src/connection/websocket/WebsocketServer.d.ts +0 -25
- package/dist/src/connection/websocket/WebsocketServer.js +0 -146
- package/dist/src/connection/websocket/WebsocketServer.js.map +0 -1
- package/dist/src/connection/websocket/WebsocketServerConnection.d.ts +0 -22
- package/dist/src/connection/websocket/WebsocketServerConnection.js +0 -101
- package/dist/src/connection/websocket/WebsocketServerConnection.js.map +0 -1
- package/dist/src/connection/websocket/WebsocketServerConnector.d.ts +0 -44
- package/dist/src/connection/websocket/WebsocketServerConnector.js +0 -279
- package/dist/src/connection/websocket/WebsocketServerConnector.js.map +0 -1
- package/dist/src/dht/DhtNode.d.ts +0 -119
- package/dist/src/dht/DhtNode.js +0 -500
- package/dist/src/dht/DhtNode.js.map +0 -1
- package/dist/src/dht/DhtNodeRpcLocal.d.ts +0 -23
- package/dist/src/dht/DhtNodeRpcLocal.js +0 -54
- package/dist/src/dht/DhtNodeRpcLocal.js.map +0 -1
- package/dist/src/dht/DhtNodeRpcRemote.d.ts +0 -25
- package/dist/src/dht/DhtNodeRpcRemote.js +0 -83
- package/dist/src/dht/DhtNodeRpcRemote.js.map +0 -1
- package/dist/src/dht/ExternalApiRpcLocal.d.ts +0 -18
- package/dist/src/dht/ExternalApiRpcLocal.js +0 -32
- package/dist/src/dht/ExternalApiRpcLocal.js.map +0 -1
- package/dist/src/dht/ExternalApiRpcRemote.d.ts +0 -10
- package/dist/src/dht/ExternalApiRpcRemote.js +0 -58
- package/dist/src/dht/ExternalApiRpcRemote.js.map +0 -1
- package/dist/src/dht/PeerManager.d.ts +0 -63
- package/dist/src/dht/PeerManager.js +0 -251
- package/dist/src/dht/PeerManager.js.map +0 -1
- package/dist/src/dht/contact/Contact.d.ts +0 -8
- package/dist/src/dht/contact/Contact.js +0 -18
- package/dist/src/dht/contact/Contact.js.map +0 -1
- package/dist/src/dht/contact/ContactList.d.ts +0 -19
- package/dist/src/dht/contact/ContactList.js +0 -35
- package/dist/src/dht/contact/ContactList.js.map +0 -1
- package/dist/src/dht/contact/RandomContactList.d.ts +0 -11
- package/dist/src/dht/contact/RandomContactList.js +0 -47
- package/dist/src/dht/contact/RandomContactList.js.map +0 -1
- package/dist/src/dht/contact/RingContactList.d.ts +0 -28
- package/dist/src/dht/contact/RingContactList.js +0 -126
- package/dist/src/dht/contact/RingContactList.js.map +0 -1
- package/dist/src/dht/contact/RpcRemote.d.ts +0 -19
- package/dist/src/dht/contact/RpcRemote.js +0 -61
- package/dist/src/dht/contact/RpcRemote.js.map +0 -1
- package/dist/src/dht/contact/SortedContactList.d.ts +0 -37
- package/dist/src/dht/contact/SortedContactList.js +0 -134
- package/dist/src/dht/contact/SortedContactList.js.map +0 -1
- package/dist/src/dht/contact/getClosestNodes.d.ts +0 -6
- package/dist/src/dht/contact/getClosestNodes.js +0 -19
- package/dist/src/dht/contact/getClosestNodes.js.map +0 -1
- package/dist/src/dht/contact/ringIdentifiers.d.ts +0 -16
- package/dist/src/dht/contact/ringIdentifiers.js +0 -54
- package/dist/src/dht/contact/ringIdentifiers.js.map +0 -1
- package/dist/src/dht/discovery/DiscoverySession.d.ts +0 -29
- package/dist/src/dht/discovery/DiscoverySession.js +0 -102
- package/dist/src/dht/discovery/DiscoverySession.js.map +0 -1
- package/dist/src/dht/discovery/PeerDiscovery.d.ts +0 -42
- package/dist/src/dht/discovery/PeerDiscovery.js +0 -193
- package/dist/src/dht/discovery/PeerDiscovery.js.map +0 -1
- package/dist/src/dht/discovery/RingDiscoverySession.d.ts +0 -28
- package/dist/src/dht/discovery/RingDiscoverySession.js +0 -116
- package/dist/src/dht/discovery/RingDiscoverySession.js.map +0 -1
- package/dist/src/dht/recursive-operation/RecursiveOperationManager.d.ts +0 -38
- package/dist/src/dht/recursive-operation/RecursiveOperationManager.js +0 -165
- package/dist/src/dht/recursive-operation/RecursiveOperationManager.js.map +0 -1
- package/dist/src/dht/recursive-operation/RecursiveOperationRpcLocal.d.ts +0 -14
- package/dist/src/dht/recursive-operation/RecursiveOperationRpcLocal.js +0 -26
- package/dist/src/dht/recursive-operation/RecursiveOperationRpcLocal.js.map +0 -1
- package/dist/src/dht/recursive-operation/RecursiveOperationRpcRemote.d.ts +0 -6
- package/dist/src/dht/recursive-operation/RecursiveOperationRpcRemote.js +0 -44
- package/dist/src/dht/recursive-operation/RecursiveOperationRpcRemote.js.map +0 -1
- package/dist/src/dht/recursive-operation/RecursiveOperationSession.d.ts +0 -45
- package/dist/src/dht/recursive-operation/RecursiveOperationSession.js +0 -185
- package/dist/src/dht/recursive-operation/RecursiveOperationSession.js.map +0 -1
- package/dist/src/dht/recursive-operation/RecursiveOperationSessionRpcLocal.d.ts +0 -14
- package/dist/src/dht/recursive-operation/RecursiveOperationSessionRpcLocal.js +0 -20
- package/dist/src/dht/recursive-operation/RecursiveOperationSessionRpcLocal.js.map +0 -1
- package/dist/src/dht/recursive-operation/RecursiveOperationSessionRpcRemote.d.ts +0 -6
- package/dist/src/dht/recursive-operation/RecursiveOperationSessionRpcRemote.js +0 -21
- package/dist/src/dht/recursive-operation/RecursiveOperationSessionRpcRemote.js.map +0 -1
- package/dist/src/dht/routing/DuplicateDetector.d.ts +0 -10
- package/dist/src/dht/routing/DuplicateDetector.js +0 -31
- package/dist/src/dht/routing/DuplicateDetector.js.map +0 -1
- package/dist/src/dht/routing/Router.d.ts +0 -35
- package/dist/src/dht/routing/Router.js +0 -204
- package/dist/src/dht/routing/Router.js.map +0 -1
- package/dist/src/dht/routing/RouterRpcLocal.d.ts +0 -20
- package/dist/src/dht/routing/RouterRpcLocal.js +0 -67
- package/dist/src/dht/routing/RouterRpcLocal.js.map +0 -1
- package/dist/src/dht/routing/RouterRpcRemote.d.ts +0 -8
- package/dist/src/dht/routing/RouterRpcRemote.js +0 -81
- package/dist/src/dht/routing/RouterRpcRemote.js.map +0 -1
- package/dist/src/dht/routing/RoutingSession.d.ts +0 -56
- package/dist/src/dht/routing/RoutingSession.js +0 -201
- package/dist/src/dht/routing/RoutingSession.js.map +0 -1
- package/dist/src/dht/routing/RoutingTablesCache.d.ts +0 -24
- package/dist/src/dht/routing/RoutingTablesCache.js +0 -46
- package/dist/src/dht/routing/RoutingTablesCache.js.map +0 -1
- package/dist/src/dht/routing/getPreviousPeer.d.ts +0 -2
- package/dist/src/dht/routing/getPreviousPeer.js +0 -12
- package/dist/src/dht/routing/getPreviousPeer.js.map +0 -1
- package/dist/src/dht/store/LocalDataStore.d.ts +0 -14
- package/dist/src/dht/store/LocalDataStore.js +0 -78
- package/dist/src/dht/store/LocalDataStore.js.map +0 -1
- package/dist/src/dht/store/StoreManager.d.ts +0 -32
- package/dist/src/dht/store/StoreManager.js +0 -126
- package/dist/src/dht/store/StoreManager.js.map +0 -1
- package/dist/src/dht/store/StoreRpcLocal.d.ts +0 -21
- package/dist/src/dht/store/StoreRpcLocal.js +0 -65
- package/dist/src/dht/store/StoreRpcLocal.js.map +0 -1
- package/dist/src/dht/store/StoreRpcRemote.d.ts +0 -7
- package/dist/src/dht/store/StoreRpcRemote.js +0 -29
- package/dist/src/dht/store/StoreRpcRemote.js.map +0 -1
- package/dist/src/exports.d.ts +0 -25
- package/dist/src/exports.js +0 -48
- package/dist/src/exports.js.map +0 -1
- package/dist/src/helpers/AddressTools.d.ts +0 -2
- package/dist/src/helpers/AddressTools.js +0 -32
- package/dist/src/helpers/AddressTools.js.map +0 -1
- package/dist/src/helpers/Connectivity.d.ts +0 -4
- package/dist/src/helpers/Connectivity.js +0 -24
- package/dist/src/helpers/Connectivity.js.map +0 -1
- package/dist/src/helpers/browser/isBrowserEnvironment.d.ts +0 -1
- package/dist/src/helpers/browser/isBrowserEnvironment.js +0 -6
- package/dist/src/helpers/browser/isBrowserEnvironment.js.map +0 -1
- package/dist/src/helpers/browser/isBrowserEnvironment_override.d.ts +0 -1
- package/dist/src/helpers/browser/isBrowserEnvironment_override.js +0 -7
- package/dist/src/helpers/browser/isBrowserEnvironment_override.js.map +0 -1
- package/dist/src/helpers/createPeerDescriptor.d.ts +0 -3
- package/dist/src/helpers/createPeerDescriptor.js +0 -58
- package/dist/src/helpers/createPeerDescriptor.js.map +0 -1
- package/dist/src/helpers/createPeerDescriptorSignaturePayload.d.ts +0 -2
- package/dist/src/helpers/createPeerDescriptorSignaturePayload.js +0 -30
- package/dist/src/helpers/createPeerDescriptorSignaturePayload.js.map +0 -1
- package/dist/src/helpers/debugHelpers.d.ts +0 -3
- package/dist/src/helpers/debugHelpers.js +0 -11
- package/dist/src/helpers/debugHelpers.js.map +0 -1
- package/dist/src/helpers/errors.d.ts +0 -72
- package/dist/src/helpers/errors.js +0 -97
- package/dist/src/helpers/errors.js.map +0 -1
- package/dist/src/helpers/offering.d.ts +0 -4
- package/dist/src/helpers/offering.js +0 -18
- package/dist/src/helpers/offering.js.map +0 -1
- package/dist/src/helpers/protoClasses.d.ts +0 -2
- package/dist/src/helpers/protoClasses.js +0 -32
- package/dist/src/helpers/protoClasses.js.map +0 -1
- package/dist/src/helpers/protoToString.d.ts +0 -2
- package/dist/src/helpers/protoToString.js +0 -19
- package/dist/src/helpers/protoToString.js.map +0 -1
- package/dist/src/helpers/version.d.ts +0 -6
- package/dist/src/helpers/version.js +0 -38
- package/dist/src/helpers/version.js.map +0 -1
- package/dist/src/identifiers.d.ts +0 -10
- package/dist/src/identifiers.js +0 -31
- package/dist/src/identifiers.js.map +0 -1
- package/dist/src/rpc-protocol/DhtCallContext.d.ts +0 -12
- package/dist/src/rpc-protocol/DhtCallContext.js +0 -17
- package/dist/src/rpc-protocol/DhtCallContext.js.map +0 -1
- package/dist/src/rpc-protocol/DhtRpcOptions.d.ts +0 -10
- package/dist/src/rpc-protocol/DhtRpcOptions.js +0 -3
- package/dist/src/rpc-protocol/DhtRpcOptions.js.map +0 -1
- package/dist/src/transport/ITransport.d.ts +0 -31
- package/dist/src/transport/ITransport.js +0 -9
- package/dist/src/transport/ITransport.js.map +0 -1
- package/dist/src/transport/ListeningRpcCommunicator.d.ts +0 -11
- package/dist/src/transport/ListeningRpcCommunicator.js +0 -31
- package/dist/src/transport/ListeningRpcCommunicator.js.map +0 -1
- package/dist/src/transport/RoutingRpcCommunicator.d.ts +0 -10
- package/dist/src/transport/RoutingRpcCommunicator.js +0 -60
- package/dist/src/transport/RoutingRpcCommunicator.js.map +0 -1
- package/dist/src/types/ServiceID.d.ts +0 -1
- package/dist/src/types/ServiceID.js +0 -3
- package/dist/src/types/ServiceID.js.map +0 -1
package/dist/src/dht/DhtNode.js
DELETED
|
@@ -1,500 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.DhtNode = exports.CONTROL_LAYER_NODE_SERVICE_ID = exports.NUMBER_OF_NODES_PER_KBUCKET_DEFAULT = void 0;
|
|
7
|
-
const utils_1 = require("@streamr/utils");
|
|
8
|
-
const eventemitter3_1 = require("eventemitter3");
|
|
9
|
-
const sample_1 = __importDefault(require("lodash/sample"));
|
|
10
|
-
const ConnectionManager_1 = require("../connection/ConnectionManager");
|
|
11
|
-
const ConnectorFacade_1 = require("../connection/ConnectorFacade");
|
|
12
|
-
const isBrowserEnvironment_1 = require("../helpers/browser/isBrowserEnvironment");
|
|
13
|
-
const createPeerDescriptor_1 = require("../helpers/createPeerDescriptor");
|
|
14
|
-
const identifiers_1 = require("../identifiers");
|
|
15
|
-
const DhtRpc_1 = require("../../generated/packages/dht/protos/DhtRpc");
|
|
16
|
-
const DhtRpc_client_1 = require("../../generated/packages/dht/protos/DhtRpc.client");
|
|
17
|
-
const RoutingRpcCommunicator_1 = require("../transport/RoutingRpcCommunicator");
|
|
18
|
-
const DhtNodeRpcLocal_1 = require("./DhtNodeRpcLocal");
|
|
19
|
-
const DhtNodeRpcRemote_1 = require("./DhtNodeRpcRemote");
|
|
20
|
-
const ExternalApiRpcLocal_1 = require("./ExternalApiRpcLocal");
|
|
21
|
-
const ExternalApiRpcRemote_1 = require("./ExternalApiRpcRemote");
|
|
22
|
-
const PeerManager_1 = require("./PeerManager");
|
|
23
|
-
const PeerDiscovery_1 = require("./discovery/PeerDiscovery");
|
|
24
|
-
const RecursiveOperationManager_1 = require("./recursive-operation/RecursiveOperationManager");
|
|
25
|
-
const Router_1 = require("./routing/Router");
|
|
26
|
-
const LocalDataStore_1 = require("./store/LocalDataStore");
|
|
27
|
-
const StoreManager_1 = require("./store/StoreManager");
|
|
28
|
-
const StoreRpcRemote_1 = require("./store/StoreRpcRemote");
|
|
29
|
-
const cdn_location_1 = require("@streamr/cdn-location");
|
|
30
|
-
const logger = new utils_1.Logger(module);
|
|
31
|
-
exports.NUMBER_OF_NODES_PER_KBUCKET_DEFAULT = 8;
|
|
32
|
-
const PERIODICAL_PING_INTERVAL = 60 * 1000;
|
|
33
|
-
// TODO move this to trackerless-network package and change serviceId to be a required paramater
|
|
34
|
-
exports.CONTROL_LAYER_NODE_SERVICE_ID = 'layer0';
|
|
35
|
-
class DhtNode extends eventemitter3_1.EventEmitter {
|
|
36
|
-
options;
|
|
37
|
-
rpcCommunicator;
|
|
38
|
-
transport;
|
|
39
|
-
localPeerDescriptor;
|
|
40
|
-
router;
|
|
41
|
-
storeManager;
|
|
42
|
-
localDataStore;
|
|
43
|
-
recursiveOperationManager;
|
|
44
|
-
peerDiscovery;
|
|
45
|
-
peerManager;
|
|
46
|
-
connectionsView;
|
|
47
|
-
connectionLocker;
|
|
48
|
-
started = false;
|
|
49
|
-
abortController = new AbortController();
|
|
50
|
-
constructor(conf) {
|
|
51
|
-
super();
|
|
52
|
-
this.options = (0, utils_1.merge)({
|
|
53
|
-
serviceId: exports.CONTROL_LAYER_NODE_SERVICE_ID,
|
|
54
|
-
joinParallelism: 3,
|
|
55
|
-
maxContactCount: 200,
|
|
56
|
-
numberOfNodesPerKBucket: exports.NUMBER_OF_NODES_PER_KBUCKET_DEFAULT,
|
|
57
|
-
joinNoProgressLimit: 5,
|
|
58
|
-
dhtJoinTimeout: 60000,
|
|
59
|
-
peerDiscoveryQueryBatchSize: 5,
|
|
60
|
-
maxConnections: 80,
|
|
61
|
-
storeHighestTtl: 60000,
|
|
62
|
-
storeMaxTtl: 60000,
|
|
63
|
-
networkConnectivityTimeout: 10000,
|
|
64
|
-
storageRedundancyFactor: 5, // TODO validate that this is > 1 (as each node should replicate the data to other node)
|
|
65
|
-
metricsContext: new utils_1.MetricsContext()
|
|
66
|
-
}, conf);
|
|
67
|
-
this.validateOptions();
|
|
68
|
-
this.localDataStore = new LocalDataStore_1.LocalDataStore(this.options.storeMaxTtl);
|
|
69
|
-
this.send = this.send.bind(this);
|
|
70
|
-
}
|
|
71
|
-
validateOptions() {
|
|
72
|
-
const expectedNodeIdLength = identifiers_1.KADEMLIA_ID_LENGTH_IN_BYTES * 2;
|
|
73
|
-
if (this.options.nodeId !== undefined) {
|
|
74
|
-
if (!/^[0-9a-fA-F]+$/.test(this.options.nodeId)) {
|
|
75
|
-
throw new Error('Invalid nodeId, the nodeId should be a hex string');
|
|
76
|
-
}
|
|
77
|
-
else if (this.options.nodeId.length !== expectedNodeIdLength) {
|
|
78
|
-
throw new Error(`Invalid nodeId, the length of the nodeId should be ${expectedNodeIdLength}`);
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
if (this.options.peerDescriptor !== undefined) {
|
|
82
|
-
if (this.options.peerDescriptor.nodeId.length !== identifiers_1.KADEMLIA_ID_LENGTH_IN_BYTES) {
|
|
83
|
-
throw new Error(`Invalid peerDescriptor, the length of the nodeId should be ${identifiers_1.KADEMLIA_ID_LENGTH_IN_BYTES} bytes`);
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
if (this.options.transport !== undefined && this.options.connectionsView === undefined) {
|
|
87
|
-
throw new Error('connectionsView is required when transport is given');
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
async start() {
|
|
91
|
-
if (this.started || this.abortController.signal.aborted) {
|
|
92
|
-
return;
|
|
93
|
-
}
|
|
94
|
-
logger.trace(`Starting new Streamr Network DHT Node with serviceId ${this.options.serviceId}`);
|
|
95
|
-
this.started = true;
|
|
96
|
-
if ((0, isBrowserEnvironment_1.isBrowserEnvironment)()) {
|
|
97
|
-
this.options.websocketPortRange = undefined;
|
|
98
|
-
if (this.options.peerDescriptor) {
|
|
99
|
-
this.options.peerDescriptor.websocket = undefined;
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
// If transport is given, do not create a ConnectionManager
|
|
103
|
-
if (this.options.transport) {
|
|
104
|
-
this.transport = this.options.transport;
|
|
105
|
-
this.connectionsView = this.options.connectionsView;
|
|
106
|
-
this.connectionLocker = this.options.connectionLocker;
|
|
107
|
-
this.localPeerDescriptor = this.transport.getLocalPeerDescriptor();
|
|
108
|
-
}
|
|
109
|
-
else {
|
|
110
|
-
const connectorFacadeOptions = {
|
|
111
|
-
transport: this,
|
|
112
|
-
entryPoints: this.options.entryPoints,
|
|
113
|
-
iceServers: this.options.iceServers,
|
|
114
|
-
webrtcAllowPrivateAddresses: this.options.webrtcAllowPrivateAddresses,
|
|
115
|
-
webrtcDatachannelBufferThresholdLow: this.options.webrtcDatachannelBufferThresholdLow,
|
|
116
|
-
webrtcDatachannelBufferThresholdHigh: this.options.webrtcDatachannelBufferThresholdHigh,
|
|
117
|
-
webrtcPortRange: this.options.webrtcPortRange,
|
|
118
|
-
maxMessageSize: this.options.maxMessageSize,
|
|
119
|
-
websocketServerEnableTls: this.options.websocketServerEnableTls,
|
|
120
|
-
tlsCertificate: this.options.tlsCertificate,
|
|
121
|
-
externalIp: this.options.externalIp,
|
|
122
|
-
autoCertifierUrl: this.options.autoCertifierUrl,
|
|
123
|
-
autoCertifierConfigFile: this.options.autoCertifierConfigFile,
|
|
124
|
-
geoIpDatabaseFolder: this.options.geoIpDatabaseFolder,
|
|
125
|
-
createLocalPeerDescriptor: (connectivityResponse) => this.generatePeerDescriptorCallBack(connectivityResponse)
|
|
126
|
-
};
|
|
127
|
-
// If own PeerDescriptor is given in options, create a ConnectionManager with ws server
|
|
128
|
-
if (this.options.peerDescriptor?.websocket) {
|
|
129
|
-
connectorFacadeOptions.websocketHost = this.options.peerDescriptor.websocket.host;
|
|
130
|
-
connectorFacadeOptions.websocketPortRange = {
|
|
131
|
-
min: this.options.peerDescriptor.websocket.port,
|
|
132
|
-
max: this.options.peerDescriptor.websocket.port
|
|
133
|
-
};
|
|
134
|
-
// If websocketPortRange is given, create ws server using it, websocketHost can be undefined
|
|
135
|
-
}
|
|
136
|
-
else if (this.options.websocketPortRange) {
|
|
137
|
-
connectorFacadeOptions.websocketHost = this.options.websocketHost;
|
|
138
|
-
connectorFacadeOptions.websocketPortRange = this.options.websocketPortRange;
|
|
139
|
-
}
|
|
140
|
-
const connectionManager = new ConnectionManager_1.ConnectionManager({
|
|
141
|
-
createConnectorFacade: () => new ConnectorFacade_1.DefaultConnectorFacade(connectorFacadeOptions),
|
|
142
|
-
maxConnections: this.options.maxConnections,
|
|
143
|
-
metricsContext: this.options.metricsContext,
|
|
144
|
-
allowIncomingPrivateConnections: this.options.allowIncomingPrivateConnections ?? false
|
|
145
|
-
});
|
|
146
|
-
await connectionManager.start();
|
|
147
|
-
this.connectionsView = connectionManager;
|
|
148
|
-
this.connectionLocker = connectionManager;
|
|
149
|
-
this.transport = connectionManager;
|
|
150
|
-
}
|
|
151
|
-
this.rpcCommunicator = new RoutingRpcCommunicator_1.RoutingRpcCommunicator(this.options.serviceId, (msg, opts) => this.transport.send(msg, opts), { rpcRequestTimeout: this.options.rpcRequestTimeout });
|
|
152
|
-
/* eslint-disable indent */
|
|
153
|
-
(0, utils_1.addManagedEventListener)(// TODO remove explicit type in NET-1449
|
|
154
|
-
this.transport, 'message', (message) => this.handleMessageFromTransport(message), this.abortController.signal);
|
|
155
|
-
this.initPeerManager();
|
|
156
|
-
this.peerDiscovery = new PeerDiscovery_1.PeerDiscovery({
|
|
157
|
-
localPeerDescriptor: this.localPeerDescriptor,
|
|
158
|
-
joinNoProgressLimit: this.options.joinNoProgressLimit,
|
|
159
|
-
joinTimeout: this.options.dhtJoinTimeout,
|
|
160
|
-
serviceId: this.options.serviceId,
|
|
161
|
-
parallelism: this.options.joinParallelism,
|
|
162
|
-
connectionLocker: this.connectionLocker,
|
|
163
|
-
peerManager: this.peerManager,
|
|
164
|
-
abortSignal: this.abortController.signal,
|
|
165
|
-
createDhtNodeRpcRemote: (peerDescriptor) => this.createDhtNodeRpcRemote(peerDescriptor),
|
|
166
|
-
});
|
|
167
|
-
this.router = new Router_1.Router({
|
|
168
|
-
rpcCommunicator: this.rpcCommunicator,
|
|
169
|
-
localPeerDescriptor: this.localPeerDescriptor,
|
|
170
|
-
handleMessage: (message) => this.handleMessageFromRouter(message),
|
|
171
|
-
getConnections: () => this.connectionsView.getConnections()
|
|
172
|
-
});
|
|
173
|
-
this.recursiveOperationManager = new RecursiveOperationManager_1.RecursiveOperationManager({
|
|
174
|
-
rpcCommunicator: this.rpcCommunicator,
|
|
175
|
-
router: this.router,
|
|
176
|
-
sessionTransport: this,
|
|
177
|
-
connectionsView: this.connectionsView,
|
|
178
|
-
localPeerDescriptor: this.localPeerDescriptor,
|
|
179
|
-
serviceId: this.options.serviceId,
|
|
180
|
-
localDataStore: this.localDataStore,
|
|
181
|
-
addContact: (contact) => this.peerManager.addContact(contact),
|
|
182
|
-
createDhtNodeRpcRemote: (peerDescriptor) => this.createDhtNodeRpcRemote(peerDescriptor),
|
|
183
|
-
});
|
|
184
|
-
this.storeManager = new StoreManager_1.StoreManager({
|
|
185
|
-
rpcCommunicator: this.rpcCommunicator,
|
|
186
|
-
recursiveOperationManager: this.recursiveOperationManager,
|
|
187
|
-
localPeerDescriptor: this.localPeerDescriptor,
|
|
188
|
-
serviceId: this.options.serviceId,
|
|
189
|
-
highestTtl: this.options.storeHighestTtl,
|
|
190
|
-
redundancyFactor: this.options.storageRedundancyFactor,
|
|
191
|
-
localDataStore: this.localDataStore,
|
|
192
|
-
getNeighbors: () => this.peerManager.getNeighbors().map((n) => n.getPeerDescriptor()),
|
|
193
|
-
createRpcRemote: (contact) => {
|
|
194
|
-
return new StoreRpcRemote_1.StoreRpcRemote(this.localPeerDescriptor, contact, this.rpcCommunicator, DhtRpc_client_1.StoreRpcClient, this.options.rpcRequestTimeout);
|
|
195
|
-
}
|
|
196
|
-
});
|
|
197
|
-
this.on('nearbyContactAdded', (peerDescriptor) => {
|
|
198
|
-
this.storeManager.onContactAdded(peerDescriptor);
|
|
199
|
-
});
|
|
200
|
-
this.bindRpcLocalMethods();
|
|
201
|
-
const pruneTargets = [];
|
|
202
|
-
if (this.options.periodicallyPingNeighbors === true) {
|
|
203
|
-
pruneTargets.push(() => this.peerManager.getNeighbors().map((node) => this.createDhtNodeRpcRemote(node.getPeerDescriptor())));
|
|
204
|
-
}
|
|
205
|
-
if (this.options.periodicallyPingRingContacts === true) {
|
|
206
|
-
pruneTargets.push(() => this.peerManager.getRingContacts().getAllContacts());
|
|
207
|
-
}
|
|
208
|
-
for (const pruneTarget of pruneTargets) {
|
|
209
|
-
await (0, utils_1.scheduleAtInterval)(async () => {
|
|
210
|
-
const nodes = pruneTarget();
|
|
211
|
-
await this.peerManager.pruneOfflineNodes(nodes);
|
|
212
|
-
}, PERIODICAL_PING_INTERVAL, false, this.abortController.signal);
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
initPeerManager() {
|
|
216
|
-
this.peerManager = new PeerManager_1.PeerManager({
|
|
217
|
-
numberOfNodesPerKBucket: this.options.numberOfNodesPerKBucket,
|
|
218
|
-
maxContactCount: this.options.maxContactCount,
|
|
219
|
-
localNodeId: this.getNodeId(),
|
|
220
|
-
localPeerDescriptor: this.localPeerDescriptor,
|
|
221
|
-
connectionLocker: this.connectionLocker,
|
|
222
|
-
lockId: this.options.serviceId,
|
|
223
|
-
createDhtNodeRpcRemote: (peerDescriptor) => this.createDhtNodeRpcRemote(peerDescriptor),
|
|
224
|
-
hasConnection: (nodeId) => this.connectionsView.hasConnection(nodeId),
|
|
225
|
-
neighborPingLimit: this.options.neighborPingLimit
|
|
226
|
-
});
|
|
227
|
-
this.peerManager.on('nearbyContactRemoved', (peerDescriptor) => {
|
|
228
|
-
this.emit('nearbyContactRemoved', peerDescriptor);
|
|
229
|
-
});
|
|
230
|
-
this.peerManager.on('nearbyContactAdded', (peerDescriptor) => this.emit('nearbyContactAdded', peerDescriptor));
|
|
231
|
-
this.peerManager.on('randomContactRemoved', (peerDescriptor) => this.emit('randomContactRemoved', peerDescriptor));
|
|
232
|
-
this.peerManager.on('randomContactAdded', (peerDescriptor) => this.emit('randomContactAdded', peerDescriptor));
|
|
233
|
-
this.peerManager.on('ringContactRemoved', (peerDescriptor) => {
|
|
234
|
-
this.emit('ringContactRemoved', peerDescriptor);
|
|
235
|
-
});
|
|
236
|
-
this.peerManager.on('ringContactAdded', (peerDescriptor) => {
|
|
237
|
-
this.emit('ringContactAdded', peerDescriptor);
|
|
238
|
-
});
|
|
239
|
-
this.peerManager.on('kBucketEmpty', () => {
|
|
240
|
-
if (!this.peerDiscovery.isJoinOngoing()) {
|
|
241
|
-
if (this.options.entryPoints && this.options.entryPoints.length > 0) {
|
|
242
|
-
setImmediate(async () => {
|
|
243
|
-
const contactedPeers = new Set();
|
|
244
|
-
const distantJoinContactPeers = new Set();
|
|
245
|
-
// TODO should we catch possible promise rejection?
|
|
246
|
-
await Promise.all(this.options.entryPoints.map((entryPoint) => this.peerDiscovery.rejoinDht(entryPoint, contactedPeers, distantJoinContactPeers)));
|
|
247
|
-
});
|
|
248
|
-
}
|
|
249
|
-
else {
|
|
250
|
-
this.emit('manualRejoinRequired');
|
|
251
|
-
}
|
|
252
|
-
}
|
|
253
|
-
});
|
|
254
|
-
/* eslint-disable indent */
|
|
255
|
-
(0, utils_1.addManagedEventListener)(// TODO remove explicit type in NET-1449
|
|
256
|
-
this.transport, 'connected', (peerDescriptor) => {
|
|
257
|
-
this.router.onNodeConnected(peerDescriptor);
|
|
258
|
-
this.emit('connected', peerDescriptor);
|
|
259
|
-
}, this.abortController.signal);
|
|
260
|
-
/* eslint-disable indent, max-len */
|
|
261
|
-
(0, utils_1.addManagedEventListener)(// TODO remove explicit type in NET-1449
|
|
262
|
-
this.transport, 'disconnected', (peerDescriptor, gracefulLeave) => {
|
|
263
|
-
const isControlLayerNode = (this.connectionLocker !== undefined);
|
|
264
|
-
if (isControlLayerNode) {
|
|
265
|
-
const nodeId = (0, identifiers_1.toNodeId)(peerDescriptor);
|
|
266
|
-
if (gracefulLeave) {
|
|
267
|
-
this.peerManager.removeContact(nodeId);
|
|
268
|
-
}
|
|
269
|
-
else {
|
|
270
|
-
this.peerManager.removeNeighbor(nodeId);
|
|
271
|
-
}
|
|
272
|
-
}
|
|
273
|
-
this.router.onNodeDisconnected(peerDescriptor);
|
|
274
|
-
this.emit('disconnected', peerDescriptor, gracefulLeave);
|
|
275
|
-
}, this.abortController.signal);
|
|
276
|
-
}
|
|
277
|
-
bindRpcLocalMethods() {
|
|
278
|
-
if (!this.started || this.abortController.signal.aborted) {
|
|
279
|
-
return;
|
|
280
|
-
}
|
|
281
|
-
const dhtNodeRpcLocal = new DhtNodeRpcLocal_1.DhtNodeRpcLocal({
|
|
282
|
-
peerDiscoveryQueryBatchSize: this.options.peerDiscoveryQueryBatchSize,
|
|
283
|
-
getNeighbors: () => this.peerManager.getNeighbors().map((n) => n.getPeerDescriptor()),
|
|
284
|
-
getClosestRingContactsTo: (ringIdRaw, limit) => {
|
|
285
|
-
return this.getClosestRingContactsTo(ringIdRaw, limit);
|
|
286
|
-
},
|
|
287
|
-
addContact: (contact) => this.peerManager.addContact(contact),
|
|
288
|
-
removeContact: (nodeId) => this.removeContact(nodeId)
|
|
289
|
-
});
|
|
290
|
-
this.rpcCommunicator.registerRpcMethod(DhtRpc_1.ClosestPeersRequest, DhtRpc_1.ClosestPeersResponse, 'getClosestPeers', (req, context) => dhtNodeRpcLocal.getClosestPeers(req, context));
|
|
291
|
-
this.rpcCommunicator.registerRpcMethod(DhtRpc_1.ClosestRingPeersRequest, DhtRpc_1.ClosestRingPeersResponse, 'getClosestRingPeers', (req, context) => dhtNodeRpcLocal.getClosestRingPeers(req, context));
|
|
292
|
-
this.rpcCommunicator.registerRpcMethod(DhtRpc_1.PingRequest, DhtRpc_1.PingResponse, 'ping', (req, context) => dhtNodeRpcLocal.ping(req, context));
|
|
293
|
-
this.rpcCommunicator.registerRpcNotification(DhtRpc_1.LeaveNotice, 'leaveNotice', (_req, context) => dhtNodeRpcLocal.leaveNotice(context));
|
|
294
|
-
const externalApiRpcLocal = new ExternalApiRpcLocal_1.ExternalApiRpcLocal({
|
|
295
|
-
executeRecursiveOperation: (key, operation, excludedPeer) => {
|
|
296
|
-
return this.recursiveOperationManager.execute(key, operation, excludedPeer);
|
|
297
|
-
},
|
|
298
|
-
storeDataToDht: (key, data, creator) => this.storeDataToDht(key, data, creator)
|
|
299
|
-
});
|
|
300
|
-
this.rpcCommunicator.registerRpcMethod(DhtRpc_1.ExternalFetchDataRequest, DhtRpc_1.ExternalFetchDataResponse, 'externalFetchData', (req, context) => externalApiRpcLocal.externalFetchData(req, context), { timeout: 10000 } // TODO use options option or named constant?
|
|
301
|
-
);
|
|
302
|
-
this.rpcCommunicator.registerRpcMethod(DhtRpc_1.ExternalStoreDataRequest, DhtRpc_1.ExternalStoreDataResponse, 'externalStoreData', (req, context) => externalApiRpcLocal.externalStoreData(req, context), { timeout: 10000 } // TODO use options option or named constant?
|
|
303
|
-
);
|
|
304
|
-
}
|
|
305
|
-
handleMessageFromTransport(message) {
|
|
306
|
-
if (message.serviceId === this.options.serviceId) {
|
|
307
|
-
this.rpcCommunicator?.handleMessageFromPeer(message);
|
|
308
|
-
}
|
|
309
|
-
}
|
|
310
|
-
handleMessageFromRouter(message) {
|
|
311
|
-
if (message.serviceId === this.options.serviceId) {
|
|
312
|
-
this.rpcCommunicator?.handleMessageFromPeer(message);
|
|
313
|
-
}
|
|
314
|
-
else {
|
|
315
|
-
this.emit('message', message);
|
|
316
|
-
}
|
|
317
|
-
}
|
|
318
|
-
async generatePeerDescriptorCallBack(connectivityResponse) {
|
|
319
|
-
if (this.options.peerDescriptor !== undefined) {
|
|
320
|
-
this.localPeerDescriptor = this.options.peerDescriptor;
|
|
321
|
-
}
|
|
322
|
-
else {
|
|
323
|
-
let region = undefined;
|
|
324
|
-
if (this.options.region !== undefined) {
|
|
325
|
-
region = this.options.region;
|
|
326
|
-
logger.debug(`Using region ${region} from options when generating local PeerDescriptor`);
|
|
327
|
-
}
|
|
328
|
-
else if (connectivityResponse.latitude !== undefined && connectivityResponse.longitude !== undefined) {
|
|
329
|
-
region = (0, cdn_location_1.getLocalRegionByCoordinates)(connectivityResponse.latitude, connectivityResponse.longitude);
|
|
330
|
-
logger.debug(`Using region ${region} from GeoIP when generating local PeerDescriptor`);
|
|
331
|
-
}
|
|
332
|
-
else {
|
|
333
|
-
// as a fallback get the region from the CDN
|
|
334
|
-
// and if it's not available, use a random region
|
|
335
|
-
region = await (0, cdn_location_1.getLocalRegionWithCache)();
|
|
336
|
-
logger.debug(`Using region ${region} from CDN when generating local PeerDescriptor`);
|
|
337
|
-
}
|
|
338
|
-
this.localPeerDescriptor = await (0, createPeerDescriptor_1.createPeerDescriptor)(connectivityResponse, region, this.options.nodeId);
|
|
339
|
-
}
|
|
340
|
-
return this.localPeerDescriptor;
|
|
341
|
-
}
|
|
342
|
-
getClosestContacts(limit) {
|
|
343
|
-
return this.peerManager.getNearbyContacts()
|
|
344
|
-
.getClosestContacts(limit)
|
|
345
|
-
.map((peer) => peer.getPeerDescriptor());
|
|
346
|
-
}
|
|
347
|
-
getRandomContacts(limit) {
|
|
348
|
-
return this.peerManager.getRandomContacts().getContacts(limit).map((c) => c.getPeerDescriptor());
|
|
349
|
-
}
|
|
350
|
-
getRingContacts() {
|
|
351
|
-
const contacts = this.peerManager.getRingContacts().getClosestContacts();
|
|
352
|
-
return {
|
|
353
|
-
left: contacts.left.map((c) => c.getPeerDescriptor()),
|
|
354
|
-
right: contacts.right.map((c) => c.getPeerDescriptor())
|
|
355
|
-
};
|
|
356
|
-
}
|
|
357
|
-
getClosestRingContactsTo(ringIdRaw, limit) {
|
|
358
|
-
const closest = this.peerManager.getClosestRingContactsTo(ringIdRaw, limit);
|
|
359
|
-
return {
|
|
360
|
-
left: closest.left.map((dhtPeer) => dhtPeer.getPeerDescriptor()),
|
|
361
|
-
right: closest.right.map((dhtPeer) => dhtPeer.getPeerDescriptor())
|
|
362
|
-
};
|
|
363
|
-
}
|
|
364
|
-
getNodeId() {
|
|
365
|
-
return (0, identifiers_1.toNodeId)(this.localPeerDescriptor);
|
|
366
|
-
}
|
|
367
|
-
getNeighborCount() {
|
|
368
|
-
return this.peerManager.getNeighborCount();
|
|
369
|
-
}
|
|
370
|
-
removeContact(nodeId) {
|
|
371
|
-
if (!this.started) { // the stopped state is checked in PeerManager
|
|
372
|
-
return;
|
|
373
|
-
}
|
|
374
|
-
this.peerManager.removeContact(nodeId);
|
|
375
|
-
}
|
|
376
|
-
async send(msg) {
|
|
377
|
-
if (!this.started || this.abortController.signal.aborted) {
|
|
378
|
-
return;
|
|
379
|
-
}
|
|
380
|
-
const reachableThrough = this.peerDiscovery.isJoinOngoing() ? this.getConnectedEntryPoints() : [];
|
|
381
|
-
this.router.send(msg, reachableThrough);
|
|
382
|
-
}
|
|
383
|
-
getConnectedEntryPoints() {
|
|
384
|
-
return this.options.entryPoints !== undefined ? this.options.entryPoints.filter((entryPoint) => this.connectionsView.hasConnection((0, identifiers_1.toNodeId)(entryPoint))) : [];
|
|
385
|
-
}
|
|
386
|
-
async joinDht(entryPointDescriptors, doAdditionalDistantPeerDiscovery, retry) {
|
|
387
|
-
if (!this.started) {
|
|
388
|
-
throw new Error('Cannot join DHT before calling start() on DhtNode');
|
|
389
|
-
}
|
|
390
|
-
await this.peerDiscovery.joinDht(entryPointDescriptors, doAdditionalDistantPeerDiscovery, retry);
|
|
391
|
-
}
|
|
392
|
-
async joinRing() {
|
|
393
|
-
if (!this.started) {
|
|
394
|
-
throw new Error('Cannot join ring before calling start() on DhtNode');
|
|
395
|
-
}
|
|
396
|
-
await this.peerDiscovery.joinRing();
|
|
397
|
-
}
|
|
398
|
-
async storeDataToDht(key, data, creator) {
|
|
399
|
-
return this.executeRecursiveOperation(() => this.storeManager.storeDataToDht(key, data, creator ?? this.getNodeId()), (connectedEntryPoint) => this.storeDataToDhtViaPeer(key, data, connectedEntryPoint));
|
|
400
|
-
}
|
|
401
|
-
async storeDataToDhtViaPeer(key, data, peer) {
|
|
402
|
-
const rpcRemote = new ExternalApiRpcRemote_1.ExternalApiRpcRemote(this.localPeerDescriptor, peer, this.rpcCommunicator, DhtRpc_client_1.ExternalApiRpcClient);
|
|
403
|
-
return await rpcRemote.storeData(key, data);
|
|
404
|
-
}
|
|
405
|
-
async fetchDataFromDht(key) {
|
|
406
|
-
return this.executeRecursiveOperation(async () => {
|
|
407
|
-
const result = await this.recursiveOperationManager.execute(key, DhtRpc_1.RecursiveOperation.FETCH_DATA);
|
|
408
|
-
return result.dataEntries ?? []; // TODO is this fallback needed?
|
|
409
|
-
}, (connectedEntryPoint) => this.fetchDataFromDhtViaPeer(key, connectedEntryPoint));
|
|
410
|
-
}
|
|
411
|
-
async fetchDataFromDhtViaPeer(key, peer) {
|
|
412
|
-
const rpcRemote = new ExternalApiRpcRemote_1.ExternalApiRpcRemote(this.localPeerDescriptor, peer, this.rpcCommunicator, DhtRpc_client_1.ExternalApiRpcClient);
|
|
413
|
-
return await rpcRemote.externalFetchData(key);
|
|
414
|
-
}
|
|
415
|
-
async executeRecursiveOperation(executeDirectly, executeViaPeer) {
|
|
416
|
-
const connectedEntryPoints = this.getConnectedEntryPoints();
|
|
417
|
-
if (this.peerDiscovery.isJoinOngoing() && connectedEntryPoints.length > 0) {
|
|
418
|
-
return executeViaPeer((0, sample_1.default)(connectedEntryPoints));
|
|
419
|
-
}
|
|
420
|
-
return executeDirectly();
|
|
421
|
-
}
|
|
422
|
-
async deleteDataFromDht(key, waitForCompletion) {
|
|
423
|
-
if (!this.abortController.signal.aborted) {
|
|
424
|
-
await this.recursiveOperationManager.execute(key, DhtRpc_1.RecursiveOperation.DELETE_DATA, undefined, waitForCompletion);
|
|
425
|
-
}
|
|
426
|
-
}
|
|
427
|
-
async findClosestNodesFromDht(key) {
|
|
428
|
-
return this.executeRecursiveOperation(async () => {
|
|
429
|
-
const result = await this.recursiveOperationManager.execute(key, DhtRpc_1.RecursiveOperation.FIND_CLOSEST_NODES);
|
|
430
|
-
return result.closestNodes;
|
|
431
|
-
}, (connectedEntryPoint) => this.findClosestNodesViaPeer(key, connectedEntryPoint));
|
|
432
|
-
}
|
|
433
|
-
async findClosestNodesViaPeer(key, peer) {
|
|
434
|
-
const rpcRemote = new ExternalApiRpcRemote_1.ExternalApiRpcRemote(this.localPeerDescriptor, peer, this.rpcCommunicator, DhtRpc_client_1.ExternalApiRpcClient);
|
|
435
|
-
return await rpcRemote.externalFindClosestNode(key);
|
|
436
|
-
}
|
|
437
|
-
getTransport() {
|
|
438
|
-
return this.transport;
|
|
439
|
-
}
|
|
440
|
-
getLocalPeerDescriptor() {
|
|
441
|
-
return this.localPeerDescriptor;
|
|
442
|
-
}
|
|
443
|
-
getNeighbors() {
|
|
444
|
-
return this.started ? this.peerManager.getNeighbors().map((remote) => remote.getPeerDescriptor()) : [];
|
|
445
|
-
}
|
|
446
|
-
getConnectionsView() {
|
|
447
|
-
return this.connectionsView;
|
|
448
|
-
}
|
|
449
|
-
getLocalLockedConnectionCount() {
|
|
450
|
-
return this.connectionLocker.getLocalLockedConnectionCount();
|
|
451
|
-
}
|
|
452
|
-
getRemoteLockedConnectionCount() {
|
|
453
|
-
return this.connectionLocker.getRemoteLockedConnectionCount();
|
|
454
|
-
}
|
|
455
|
-
getWeakLockedConnectionCount() {
|
|
456
|
-
return this.connectionLocker.getWeakLockedConnectionCount();
|
|
457
|
-
}
|
|
458
|
-
async waitForNetworkConnectivity() {
|
|
459
|
-
await (0, utils_1.until)(() => this.connectionsView.getConnectionCount() > 0, this.options.networkConnectivityTimeout, 100, this.abortController.signal);
|
|
460
|
-
}
|
|
461
|
-
hasJoined() {
|
|
462
|
-
return this.peerDiscovery.isJoinCalled();
|
|
463
|
-
}
|
|
464
|
-
getDiagnosticInfo() {
|
|
465
|
-
return {
|
|
466
|
-
localPeerDescriptor: this.localPeerDescriptor,
|
|
467
|
-
transport: this.transport.getDiagnosticInfo(),
|
|
468
|
-
router: this.router.getDiagnosticInfo(),
|
|
469
|
-
neighborCount: this.getNeighborCount(),
|
|
470
|
-
nearbyContactCount: Array.from(this.peerManager.getNearbyContacts().getAllContactsInUndefinedOrder()).length,
|
|
471
|
-
randomContactCount: this.peerManager.getRandomContacts().getSize()
|
|
472
|
-
};
|
|
473
|
-
}
|
|
474
|
-
async stop() {
|
|
475
|
-
if (this.abortController.signal.aborted || !this.started) {
|
|
476
|
-
return;
|
|
477
|
-
}
|
|
478
|
-
logger.trace('stop()');
|
|
479
|
-
this.abortController.abort();
|
|
480
|
-
await this.storeManager.destroy();
|
|
481
|
-
this.localDataStore.clear();
|
|
482
|
-
this.peerManager?.stop();
|
|
483
|
-
this.rpcCommunicator.stop();
|
|
484
|
-
this.router.stop();
|
|
485
|
-
this.recursiveOperationManager.stop();
|
|
486
|
-
if (this.options.transport === undefined) {
|
|
487
|
-
// if the transport was not given in options, the instance was created in start() and
|
|
488
|
-
// this component is responsible for stopping it
|
|
489
|
-
await this.transport.stop();
|
|
490
|
-
}
|
|
491
|
-
this.transport = undefined;
|
|
492
|
-
this.connectionLocker = undefined;
|
|
493
|
-
this.removeAllListeners();
|
|
494
|
-
}
|
|
495
|
-
createDhtNodeRpcRemote(peerDescriptor) {
|
|
496
|
-
return new DhtNodeRpcRemote_1.DhtNodeRpcRemote(this.localPeerDescriptor, peerDescriptor, this.options.serviceId, this.rpcCommunicator, this.options.rpcRequestTimeout);
|
|
497
|
-
}
|
|
498
|
-
}
|
|
499
|
-
exports.DhtNode = DhtNode;
|
|
500
|
-
//# sourceMappingURL=DhtNode.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DhtNode.js","sourceRoot":"","sources":["../../../src/dht/DhtNode.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { ServerCallContext } from '@protobuf-ts/runtime-rpc';
|
|
2
|
-
import { DhtAddress } from '../identifiers';
|
|
3
|
-
import { Empty } from '../../generated/google/protobuf/empty';
|
|
4
|
-
import { ClosestPeersRequest, ClosestPeersResponse, ClosestRingPeersRequest, ClosestRingPeersResponse, PeerDescriptor, PingRequest, PingResponse } from '../../generated/packages/dht/protos/DhtRpc';
|
|
5
|
-
import { IDhtNodeRpc } from '../../generated/packages/dht/protos/DhtRpc.server';
|
|
6
|
-
import { RingContacts } from './contact/RingContactList';
|
|
7
|
-
import { RingIdRaw } from './contact/ringIdentifiers';
|
|
8
|
-
interface DhtNodeRpcLocalOptions {
|
|
9
|
-
peerDiscoveryQueryBatchSize: number;
|
|
10
|
-
getNeighbors: () => readonly PeerDescriptor[];
|
|
11
|
-
getClosestRingContactsTo: (id: RingIdRaw, limit: number) => RingContacts;
|
|
12
|
-
addContact: (contact: PeerDescriptor) => void;
|
|
13
|
-
removeContact: (nodeId: DhtAddress) => void;
|
|
14
|
-
}
|
|
15
|
-
export declare class DhtNodeRpcLocal implements IDhtNodeRpc {
|
|
16
|
-
private readonly options;
|
|
17
|
-
constructor(options: DhtNodeRpcLocalOptions);
|
|
18
|
-
getClosestPeers(request: ClosestPeersRequest, context: ServerCallContext): Promise<ClosestPeersResponse>;
|
|
19
|
-
getClosestRingPeers(request: ClosestRingPeersRequest, context: ServerCallContext): Promise<ClosestRingPeersResponse>;
|
|
20
|
-
ping(request: PingRequest, context: ServerCallContext): Promise<PingResponse>;
|
|
21
|
-
leaveNotice(context: ServerCallContext): Promise<Empty>;
|
|
22
|
-
}
|
|
23
|
-
export {};
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.DhtNodeRpcLocal = void 0;
|
|
4
|
-
const utils_1 = require("@streamr/utils");
|
|
5
|
-
const identifiers_1 = require("../identifiers");
|
|
6
|
-
const getClosestNodes_1 = require("./contact/getClosestNodes");
|
|
7
|
-
const logger = new utils_1.Logger(module);
|
|
8
|
-
class DhtNodeRpcLocal {
|
|
9
|
-
options;
|
|
10
|
-
constructor(options) {
|
|
11
|
-
this.options = options;
|
|
12
|
-
}
|
|
13
|
-
// TODO rename to getClosestNeighbors (breaking change)
|
|
14
|
-
async getClosestPeers(request, context) {
|
|
15
|
-
this.options.addContact(context.incomingSourceDescriptor);
|
|
16
|
-
const peers = (0, getClosestNodes_1.getClosestNodes)((0, identifiers_1.toDhtAddress)(request.nodeId), this.options.getNeighbors(), { maxCount: this.options.peerDiscoveryQueryBatchSize });
|
|
17
|
-
const response = {
|
|
18
|
-
peers,
|
|
19
|
-
requestId: request.requestId
|
|
20
|
-
};
|
|
21
|
-
return response;
|
|
22
|
-
}
|
|
23
|
-
// TODO rename to getClosestRingContacts (breaking change)
|
|
24
|
-
async getClosestRingPeers(request, context) {
|
|
25
|
-
this.options.addContact(context.incomingSourceDescriptor);
|
|
26
|
-
const closestContacts = this.options.getClosestRingContactsTo(request.ringId, this.options.peerDiscoveryQueryBatchSize);
|
|
27
|
-
const response = {
|
|
28
|
-
leftPeers: closestContacts.left,
|
|
29
|
-
rightPeers: closestContacts.right,
|
|
30
|
-
requestId: request.requestId
|
|
31
|
-
};
|
|
32
|
-
return response;
|
|
33
|
-
}
|
|
34
|
-
async ping(request, context) {
|
|
35
|
-
logger.trace('received ping request: ' + (0, identifiers_1.toNodeId)(context.incomingSourceDescriptor));
|
|
36
|
-
setImmediate(() => {
|
|
37
|
-
this.options.addContact(context.incomingSourceDescriptor);
|
|
38
|
-
});
|
|
39
|
-
const response = {
|
|
40
|
-
requestId: request.requestId
|
|
41
|
-
};
|
|
42
|
-
return response;
|
|
43
|
-
}
|
|
44
|
-
async leaveNotice(context) {
|
|
45
|
-
// TODO check signature??
|
|
46
|
-
const sender = context.incomingSourceDescriptor;
|
|
47
|
-
const senderNodeId = (0, identifiers_1.toNodeId)(sender);
|
|
48
|
-
logger.trace('received leave notice: ' + senderNodeId);
|
|
49
|
-
this.options.removeContact(senderNodeId);
|
|
50
|
-
return {};
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
exports.DhtNodeRpcLocal = DhtNodeRpcLocal;
|
|
54
|
-
//# sourceMappingURL=DhtNodeRpcLocal.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DhtNodeRpcLocal.js","sourceRoot":"","sources":["../../../src/dht/DhtNodeRpcLocal.ts"],"names":[],"mappings":";;;AACA,0CAAuC;AACvC,gDAAmE;AAcnE,+DAA2D;AAW3D,MAAM,MAAM,GAAG,IAAI,cAAM,CAAC,MAAM,CAAC,CAAA;AAEjC,MAAa,eAAe;IAEP,OAAO,CAAwB;IAEhD,YAAY,OAA+B;QACvC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IAC1B,CAAC;IAED,uDAAuD;IACvD,KAAK,CAAC,eAAe,CAAC,OAA4B,EAAE,OAA0B;QAC1E,IAAI,CAAC,OAAO,CAAC,UAAU,CAAE,OAA0B,CAAC,wBAAyB,CAAC,CAAA;QAC9E,MAAM,KAAK,GAAG,IAAA,iCAAe,EACzB,IAAA,0BAAY,EAAC,OAAO,CAAC,MAAM,CAAC,EAC5B,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,EAC3B,EAAE,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,2BAA2B,EAAE,CACzD,CAAA;QACD,MAAM,QAAQ,GAAG;YACb,KAAK;YACL,SAAS,EAAE,OAAO,CAAC,SAAS;SAC/B,CAAA;QACD,OAAO,QAAQ,CAAA;IACnB,CAAC;IAED,0DAA0D;IAC1D,KAAK,CAAC,mBAAmB,CAAC,OAAgC,EAAE,OAA0B;QAClF,IAAI,CAAC,OAAO,CAAC,UAAU,CAAE,OAA0B,CAAC,wBAAyB,CAAC,CAAA;QAC9E,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,wBAAwB,CAAC,OAAO,CAAC,MAAmB,EAAE,IAAI,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAA;QACpI,MAAM,QAAQ,GAAG;YACb,SAAS,EAAE,eAAe,CAAC,IAAI;YAC/B,UAAU,EAAE,eAAe,CAAC,KAAK;YACjC,SAAS,EAAE,OAAO,CAAC,SAAS;SAC/B,CAAA;QACD,OAAO,QAAQ,CAAA;IACnB,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,OAAoB,EAAE,OAA0B;QACvD,MAAM,CAAC,KAAK,CAAC,yBAAyB,GAAG,IAAA,sBAAQ,EAAE,OAA0B,CAAC,wBAAyB,CAAC,CAAC,CAAA;QACzG,YAAY,CAAC,GAAG,EAAE;YACd,IAAI,CAAC,OAAO,CAAC,UAAU,CAAE,OAA0B,CAAC,wBAAyB,CAAC,CAAA;QAClF,CAAC,CAAC,CAAA;QACF,MAAM,QAAQ,GAAiB;YAC3B,SAAS,EAAE,OAAO,CAAC,SAAS;SAC/B,CAAA;QACD,OAAO,QAAQ,CAAA;IACnB,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,OAA0B;QACxC,yBAAyB;QACzB,MAAM,MAAM,GAAI,OAA0B,CAAC,wBAAyB,CAAA;QACpE,MAAM,YAAY,GAAG,IAAA,sBAAQ,EAAC,MAAM,CAAC,CAAA;QACrC,MAAM,CAAC,KAAK,CAAC,yBAAyB,GAAG,YAAY,CAAC,CAAA;QACtD,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,YAAY,CAAC,CAAA;QACxC,OAAO,EAAE,CAAA;IACb,CAAC;CACJ;AAtDD,0CAsDC"}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { RpcCommunicator } from '@streamr/proto-rpc';
|
|
2
|
-
import { DhtAddress, DhtAddressRaw } from '../identifiers';
|
|
3
|
-
import { PeerDescriptor } from '../../generated/packages/dht/protos/DhtRpc';
|
|
4
|
-
import { DhtNodeRpcClient } from '../../generated/packages/dht/protos/DhtRpc.client';
|
|
5
|
-
import { ServiceID } from '../types/ServiceID';
|
|
6
|
-
import { RpcRemote } from './contact/RpcRemote';
|
|
7
|
-
import { DhtCallContext } from '../rpc-protocol/DhtCallContext';
|
|
8
|
-
import { RingIdRaw } from './contact/ringIdentifiers';
|
|
9
|
-
import { RingContacts } from './contact/RingContactList';
|
|
10
|
-
export interface KBucketContact {
|
|
11
|
-
id: DhtAddressRaw;
|
|
12
|
-
vectorClock: number;
|
|
13
|
-
}
|
|
14
|
-
export declare class DhtNodeRpcRemote extends RpcRemote<DhtNodeRpcClient> implements KBucketContact {
|
|
15
|
-
private static counter;
|
|
16
|
-
vectorClock: number;
|
|
17
|
-
readonly id: DhtAddressRaw;
|
|
18
|
-
private readonly serviceId;
|
|
19
|
-
constructor(localPeerDescriptor: PeerDescriptor, peerDescriptor: PeerDescriptor, serviceId: ServiceID, rpcCommunicator: RpcCommunicator<DhtCallContext>, rpcRequestTimeout?: number);
|
|
20
|
-
getClosestPeers(nodeId: DhtAddress): Promise<PeerDescriptor[]>;
|
|
21
|
-
getClosestRingPeers(ringIdRaw: RingIdRaw): Promise<RingContacts>;
|
|
22
|
-
ping(): Promise<boolean>;
|
|
23
|
-
leaveNotice(): void;
|
|
24
|
-
getNodeId(): DhtAddress;
|
|
25
|
-
}
|