@streamr/dht 100.2.4-beta.0 → 100.2.5-beta.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/package.json +8 -9
- package/dist/src/connection/ConnectionManager.d.ts +2 -1
- package/dist/src/connection/ConnectionManager.js +2 -10
- package/dist/src/connection/ConnectionManager.js.map +1 -1
- package/dist/src/connection/ConnectionsView.d.ts +7 -0
- package/dist/src/connection/ConnectionsView.js +3 -0
- package/dist/src/connection/ConnectionsView.js.map +1 -0
- package/dist/src/connection/ConnectorFacade.d.ts +2 -1
- package/dist/src/connection/ConnectorFacade.js +5 -4
- package/dist/src/connection/ConnectorFacade.js.map +1 -1
- package/dist/src/connection/connectivityChecker.d.ts +3 -3
- package/dist/src/connection/connectivityChecker.js +3 -3
- package/dist/src/connection/connectivityChecker.js.map +1 -1
- package/dist/src/connection/connectivityRequestHandler.d.ts +2 -1
- package/dist/src/connection/connectivityRequestHandler.js +13 -6
- package/dist/src/connection/connectivityRequestHandler.js.map +1 -1
- package/dist/src/connection/{ManagedWebrtcConnection.d.ts → webrtc/ManagedWebrtcConnection.d.ts} +3 -3
- package/dist/src/connection/{ManagedWebrtcConnection.js → webrtc/ManagedWebrtcConnection.js} +2 -2
- package/dist/src/connection/webrtc/ManagedWebrtcConnection.js.map +1 -0
- package/dist/src/connection/webrtc/NodeWebrtcConnection.js +3 -26
- package/dist/src/connection/webrtc/NodeWebrtcConnection.js.map +1 -1
- package/dist/src/connection/webrtc/WebrtcConnector.js +1 -1
- package/dist/src/connection/webrtc/WebrtcConnector.js.map +1 -1
- package/dist/src/connection/webrtc/WebrtcConnectorRpcLocal.d.ts +1 -1
- package/dist/src/connection/webrtc/WebrtcConnectorRpcLocal.js +1 -1
- package/dist/src/connection/webrtc/WebrtcConnectorRpcLocal.js.map +1 -1
- package/dist/src/connection/websocket/AbstractWebsocketClientConnection.d.ts +1 -1
- package/dist/src/connection/websocket/WebsocketConnector.d.ts +3 -1
- package/dist/src/connection/websocket/WebsocketConnector.js +26 -18
- package/dist/src/connection/websocket/WebsocketConnector.js.map +1 -1
- package/dist/src/connection/websocket/WebsocketServerConnection.d.ts +2 -1
- package/dist/src/connection/websocket/WebsocketServerConnection.js +4 -0
- package/dist/src/connection/websocket/WebsocketServerConnection.js.map +1 -1
- package/dist/src/dht/DhtNode.d.ts +14 -11
- package/dist/src/dht/DhtNode.js +74 -61
- package/dist/src/dht/DhtNode.js.map +1 -1
- package/dist/src/dht/DhtNodeRpcLocal.d.ts +3 -3
- package/dist/src/dht/DhtNodeRpcLocal.js +5 -2
- package/dist/src/dht/DhtNodeRpcLocal.js.map +1 -1
- package/dist/src/dht/PeerManager.d.ts +14 -14
- package/dist/src/dht/PeerManager.js +51 -42
- package/dist/src/dht/PeerManager.js.map +1 -1
- package/dist/src/dht/contact/ContactList.d.ts +1 -2
- package/dist/src/dht/contact/ContactList.js +1 -3
- package/dist/src/dht/contact/ContactList.js.map +1 -1
- package/dist/src/dht/contact/RandomContactList.d.ts +1 -1
- package/dist/src/dht/contact/RandomContactList.js +7 -4
- package/dist/src/dht/contact/RandomContactList.js.map +1 -1
- package/dist/src/dht/contact/getClosestNodes.d.ts +6 -0
- package/dist/src/dht/contact/{getClosestContacts.js → getClosestNodes.js} +7 -6
- package/dist/src/dht/contact/getClosestNodes.js.map +1 -0
- package/dist/src/dht/discovery/DiscoverySession.d.ts +4 -0
- package/dist/src/dht/discovery/DiscoverySession.js +27 -21
- package/dist/src/dht/discovery/DiscoverySession.js.map +1 -1
- package/dist/src/dht/discovery/PeerDiscovery.d.ts +8 -5
- package/dist/src/dht/discovery/PeerDiscovery.js +34 -24
- package/dist/src/dht/discovery/PeerDiscovery.js.map +1 -1
- package/dist/src/dht/discovery/RingDiscoverySession.d.ts +4 -4
- package/dist/src/dht/discovery/RingDiscoverySession.js +10 -19
- package/dist/src/dht/discovery/RingDiscoverySession.js.map +1 -1
- package/dist/src/dht/recursive-operation/RecursiveOperationManager.d.ts +2 -0
- package/dist/src/dht/recursive-operation/RecursiveOperationManager.js +3 -3
- package/dist/src/dht/recursive-operation/RecursiveOperationManager.js.map +1 -1
- package/dist/src/dht/store/StoreManager.d.ts +5 -6
- package/dist/src/dht/store/StoreManager.js +21 -76
- package/dist/src/dht/store/StoreManager.js.map +1 -1
- package/dist/src/dht/store/StoreRpcLocal.d.ts +5 -2
- package/dist/src/dht/store/StoreRpcLocal.js +22 -5
- package/dist/src/dht/store/StoreRpcLocal.js.map +1 -1
- package/dist/src/exports.d.ts +2 -1
- package/dist/src/exports.js.map +1 -1
- package/dist/src/helpers/version.d.ts +1 -1
- package/dist/src/helpers/version.js +1 -1
- package/dist/src/proto/google/protobuf/any.d.ts +8 -5
- package/dist/src/proto/google/protobuf/any.js.map +1 -1
- package/dist/src/proto/google/protobuf/empty.d.ts +0 -1
- package/dist/src/proto/google/protobuf/empty.js.map +1 -1
- package/dist/src/proto/google/protobuf/timestamp.d.ts +10 -1
- package/dist/src/proto/google/protobuf/timestamp.js.map +1 -1
- package/dist/src/proto/packages/dht/protos/DhtRpc.d.ts +10 -2
- package/dist/src/proto/packages/dht/protos/DhtRpc.js +4 -2
- package/dist/src/proto/packages/dht/protos/DhtRpc.js.map +1 -1
- package/dist/src/transport/ITransport.d.ts +0 -4
- package/dist/src/transport/ITransport.js.map +1 -1
- package/karma.config.js +2 -2
- package/package.json +8 -9
- package/protos/DhtRpc.proto +3 -1
- package/src/connection/ConnectionManager.ts +4 -10
- package/src/connection/ConnectionsView.ts +8 -0
- package/src/connection/ConnectorFacade.ts +7 -5
- package/src/connection/connectivityChecker.ts +4 -4
- package/src/connection/connectivityRequestHandler.ts +19 -6
- package/src/connection/{ManagedWebrtcConnection.ts → webrtc/ManagedWebrtcConnection.ts} +4 -4
- package/src/connection/webrtc/NodeWebrtcConnection.ts +3 -3
- package/src/connection/webrtc/WebrtcConnector.ts +1 -1
- package/src/connection/webrtc/WebrtcConnectorRpcLocal.ts +3 -3
- package/src/connection/websocket/AbstractWebsocketClientConnection.ts +1 -1
- package/src/connection/websocket/WebsocketConnector.ts +33 -21
- package/src/connection/websocket/WebsocketServerConnection.ts +6 -1
- package/src/dht/DhtNode.ts +102 -74
- package/src/dht/DhtNodeRpcLocal.ts +12 -5
- package/src/dht/PeerManager.ts +58 -49
- package/src/dht/contact/ContactList.ts +1 -4
- package/src/dht/contact/RandomContactList.ts +7 -5
- package/src/dht/contact/{getClosestContacts.ts → getClosestNodes.ts} +8 -6
- package/src/dht/discovery/DiscoverySession.ts +34 -22
- package/src/dht/discovery/PeerDiscovery.ts +44 -30
- package/src/dht/discovery/RingDiscoverySession.ts +15 -29
- package/src/dht/recursive-operation/RecursiveOperationManager.ts +5 -3
- package/src/dht/store/StoreManager.ts +46 -84
- package/src/dht/store/StoreRpcLocal.ts +32 -9
- package/src/exports.ts +2 -1
- package/src/helpers/version.ts +1 -1
- package/src/proto/google/protobuf/any.ts +8 -5
- package/src/proto/google/protobuf/empty.ts +0 -1
- package/src/proto/google/protobuf/timestamp.ts +10 -1
- package/src/proto/packages/dht/protos/DhtRpc.ts +14 -4
- package/src/transport/ITransport.ts +0 -4
- package/test/benchmark/Find.test.ts +1 -1
- package/test/benchmark/WebsocketServerMemoryLeak.test.ts +1 -1
- package/test/end-to-end/GeoIpLayer0.test.ts +55 -0
- package/test/end-to-end/Layer0-Layer1.test.ts +4 -4
- package/test/end-to-end/Layer0Webrtc-Layer1.test.ts +11 -5
- package/test/end-to-end/Layer1-Scale-WebSocket.test.ts +7 -1
- package/test/end-to-end/Layer1-Scale-Webrtc.test.ts +11 -2
- package/test/integration/ConnectionLocking.test.ts +1 -1
- package/test/integration/ConnectionManager.test.ts +3 -3
- package/test/integration/ConnectivityChecking.test.ts +3 -3
- package/test/integration/DhtNode.test.ts +5 -20
- package/test/integration/GeoIpConnectivityChecking.test.ts +71 -0
- package/test/integration/Layer1-scale.test.ts +6 -6
- package/test/integration/RouteMessage.test.ts +4 -0
- package/test/integration/ScaleDownDht.test.ts +1 -1
- package/test/integration/SimultaneousConnections.test.ts +2 -2
- package/test/integration/WebrtcConnectionManagement.test.ts +1 -1
- package/test/integration/Websocket.test.ts +1 -1
- package/test/integration/WebsocketConnectionManagement.test.ts +1 -1
- package/test/integration/rpc-connections-over-webrpc.test.ts +1 -1
- package/test/unit/AutoCertifierClientFacade.test.ts +1 -1
- package/test/unit/DiscoverySession.test.ts +4 -2
- package/test/unit/PeerManager.test.ts +45 -51
- package/test/unit/RandomContactList.test.ts +10 -0
- package/test/unit/RecursiveOperationManager.test.ts +4 -2
- package/test/unit/StoreManager.test.ts +42 -34
- package/test/unit/StoreRpcLocal.test.ts +167 -0
- package/test/unit/WebsocketConnector.test.ts +1 -1
- package/test/unit/connectivityRequestHandler.test.ts +3 -3
- package/test/unit/getClosestNodes.test.ts +30 -0
- package/test/utils/FakeTransport.ts +4 -2
- package/test/utils/mock/MockConnectionsView.ts +18 -0
- package/test/utils/mock/{Transport.ts → MockTransport.ts} +0 -15
- package/test/utils/utils.ts +4 -1
- package/tsconfig.jest.json +2 -1
- package/tsconfig.node.json +2 -1
- package/dist/src/connection/ManagedWebrtcConnection.js.map +0 -1
- package/dist/src/dht/contact/getClosestContacts.d.ts +0 -7
- package/dist/src/dht/contact/getClosestContacts.js.map +0 -1
- package/test/unit/getClosestContacts.test.ts +0 -28
- /package/test/utils/mock/{Router.ts → MockRouter.ts} +0 -0
|
@@ -15,7 +15,7 @@ export declare abstract class AbstractWebsocketClientConnection extends EventEmi
|
|
|
15
15
|
connectionType: ConnectionType;
|
|
16
16
|
protected destroyed: boolean;
|
|
17
17
|
constructor();
|
|
18
|
-
abstract connect(address: string,
|
|
18
|
+
abstract connect(address: string, allowSelfSignedCertificate: boolean): void;
|
|
19
19
|
protected abstract stopListening(): void;
|
|
20
20
|
send(data: Uint8Array): void;
|
|
21
21
|
close(gracefulLeave: boolean): Promise<void>;
|
|
@@ -18,11 +18,13 @@ export interface WebsocketConnectorConfig {
|
|
|
18
18
|
autoCertifierUrl: string;
|
|
19
19
|
autoCertifierConfigFile: string;
|
|
20
20
|
serverEnableTls: boolean;
|
|
21
|
+
geoIpDatabaseFolder?: string;
|
|
21
22
|
}
|
|
22
23
|
export declare class WebsocketConnector {
|
|
23
24
|
private static readonly WEBSOCKET_CONNECTOR_SERVICE_ID;
|
|
24
25
|
private readonly rpcCommunicator;
|
|
25
26
|
private readonly websocketServer?;
|
|
27
|
+
private geoIpLocator?;
|
|
26
28
|
private readonly ongoingConnectRequests;
|
|
27
29
|
private host?;
|
|
28
30
|
private autoCertifierClient?;
|
|
@@ -37,7 +39,7 @@ export declare class WebsocketConnector {
|
|
|
37
39
|
autoCertify(): Promise<void>;
|
|
38
40
|
private setHost;
|
|
39
41
|
start(): Promise<void>;
|
|
40
|
-
checkConnectivity(
|
|
42
|
+
checkConnectivity(allowSelfSignedCertificate: boolean): Promise<ConnectivityResponse>;
|
|
41
43
|
isPossibleToFormConnection(targetPeerDescriptor: PeerDescriptor): boolean;
|
|
42
44
|
connect(targetPeerDescriptor: PeerDescriptor): ManagedConnection;
|
|
43
45
|
private requestConnectionFromPeer;
|
|
@@ -49,16 +49,17 @@ const connectivityRequestHandler_1 = require("../connectivityRequestHandler");
|
|
|
49
49
|
const Err = __importStar(require("../../helpers/errors"));
|
|
50
50
|
const identifiers_1 = require("../../identifiers");
|
|
51
51
|
const version_1 = require("../../helpers/version");
|
|
52
|
+
const geoip_location_1 = require("@streamr/geoip-location");
|
|
52
53
|
const logger = new utils_1.Logger(module);
|
|
53
54
|
const connectivityMethodToWebsocketUrl = (ws, action) => {
|
|
54
55
|
return (ws.tls ? 'wss://' : 'ws://') + ws.host + ':' + ws.port + ((action !== undefined) ? '?action=' + action : '');
|
|
55
56
|
};
|
|
56
57
|
exports.connectivityMethodToWebsocketUrl = connectivityMethodToWebsocketUrl;
|
|
57
|
-
const ENTRY_POINT_CONNECTION_ATTEMPTS = 5;
|
|
58
58
|
class WebsocketConnector {
|
|
59
59
|
static WEBSOCKET_CONNECTOR_SERVICE_ID = 'system/websocket-connector';
|
|
60
60
|
rpcCommunicator;
|
|
61
61
|
websocketServer;
|
|
62
|
+
geoIpLocator;
|
|
62
63
|
ongoingConnectRequests = new Map();
|
|
63
64
|
host;
|
|
64
65
|
autoCertifierClient;
|
|
@@ -84,17 +85,9 @@ class WebsocketConnector {
|
|
|
84
85
|
registerLocalRpcMethods(config) {
|
|
85
86
|
const rpcLocal = new WebsocketConnectorRpcLocal_1.WebsocketConnectorRpcLocal({
|
|
86
87
|
connect: (targetPeerDescriptor) => this.connect(targetPeerDescriptor),
|
|
87
|
-
hasConnection: (nodeId) =>
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|| this.ongoingConnectRequests.has(nodeId)
|
|
91
|
-
|| config.hasConnection(nodeId)) {
|
|
92
|
-
return true;
|
|
93
|
-
}
|
|
94
|
-
else {
|
|
95
|
-
return false;
|
|
96
|
-
}
|
|
97
|
-
},
|
|
88
|
+
hasConnection: (nodeId) => (this.connectingConnections.has(nodeId)
|
|
89
|
+
|| this.ongoingConnectRequests.has(nodeId)
|
|
90
|
+
|| config.hasConnection(nodeId)),
|
|
98
91
|
onNewConnection: (connection) => config.onNewConnection(connection),
|
|
99
92
|
abortSignal: this.abortController.signal
|
|
100
93
|
});
|
|
@@ -135,9 +128,9 @@ class WebsocketConnector {
|
|
|
135
128
|
const serverSocket = connection;
|
|
136
129
|
const query = querystring_1.default.parse(serverSocket.resourceURL.query ?? '');
|
|
137
130
|
const action = query.action;
|
|
138
|
-
logger.trace('WebSocket client connected', { action, remoteAddress: serverSocket.
|
|
131
|
+
logger.trace('WebSocket client connected', { action, remoteAddress: serverSocket.getRemoteIpAddress() });
|
|
139
132
|
if (action === 'connectivityRequest') {
|
|
140
|
-
(0, connectivityRequestHandler_1.attachConnectivityRequestHandler)(serverSocket);
|
|
133
|
+
(0, connectivityRequestHandler_1.attachConnectivityRequestHandler)(serverSocket, this.geoIpLocator);
|
|
141
134
|
}
|
|
142
135
|
else if (action === 'connectivityProbe') {
|
|
143
136
|
// no-op
|
|
@@ -156,11 +149,21 @@ class WebsocketConnector {
|
|
|
156
149
|
}
|
|
157
150
|
}
|
|
158
151
|
});
|
|
152
|
+
if (this.config.geoIpDatabaseFolder) {
|
|
153
|
+
const geoIpLocator = new geoip_location_1.GeoIpLocator(this.config.geoIpDatabaseFolder);
|
|
154
|
+
try {
|
|
155
|
+
await geoIpLocator.start();
|
|
156
|
+
this.geoIpLocator = geoIpLocator;
|
|
157
|
+
}
|
|
158
|
+
catch (err) {
|
|
159
|
+
logger.error('Failed to start GeoIpLocator', { err });
|
|
160
|
+
}
|
|
161
|
+
}
|
|
159
162
|
const port = await this.websocketServer.start();
|
|
160
163
|
this.selectedPort = port;
|
|
161
164
|
}
|
|
162
165
|
}
|
|
163
|
-
async checkConnectivity(
|
|
166
|
+
async checkConnectivity(allowSelfSignedCertificate) {
|
|
164
167
|
// TODO: this could throw?
|
|
165
168
|
if (this.abortController.signal.aborted) {
|
|
166
169
|
return {
|
|
@@ -194,7 +197,7 @@ class WebsocketConnector {
|
|
|
194
197
|
port: this.selectedPort ?? connectivityRequestHandler_1.DISABLE_CONNECTIVITY_PROBE,
|
|
195
198
|
host: this.host,
|
|
196
199
|
tls: this.websocketServer ? this.config.serverEnableTls : false,
|
|
197
|
-
|
|
200
|
+
allowSelfSignedCertificate
|
|
198
201
|
};
|
|
199
202
|
if (!this.abortController.signal.aborted) {
|
|
200
203
|
return await (0, connectivityChecker_1.sendConnectivityRequest)(connectivityRequest, entryPoint);
|
|
@@ -211,7 +214,8 @@ class WebsocketConnector {
|
|
|
211
214
|
await (0, utils_1.wait)(2000, this.abortController.signal);
|
|
212
215
|
}
|
|
213
216
|
}
|
|
214
|
-
throw new errors_1.WebsocketServerStartError(`Failed to connect to the entrypoints after ${
|
|
217
|
+
throw new errors_1.WebsocketServerStartError(`Failed to connect to the entrypoints after ${this.config.entrypoints.length} attempts\n`
|
|
218
|
+
+ `Attempted hosts: ${this.config.entrypoints.map((entry) => `${entry.websocket.host}:${entry.websocket.port}`).join(', ')}`);
|
|
215
219
|
}
|
|
216
220
|
isPossibleToFormConnection(targetPeerDescriptor) {
|
|
217
221
|
const connectionType = (0, Connectivity_1.expectedConnectionType)(this.localPeerDescriptor, targetPeerDescriptor);
|
|
@@ -241,7 +245,7 @@ class WebsocketConnector {
|
|
|
241
245
|
};
|
|
242
246
|
socket.on('disconnected', delFunc);
|
|
243
247
|
managedConnection.on('handshakeCompleted', delFunc);
|
|
244
|
-
socket.connect(url);
|
|
248
|
+
socket.connect(url, false);
|
|
245
249
|
return managedConnection;
|
|
246
250
|
}
|
|
247
251
|
}
|
|
@@ -270,6 +274,9 @@ class WebsocketConnector {
|
|
|
270
274
|
if (!(0, version_1.isMaybeSupportedVersion)(remoteVersion)) {
|
|
271
275
|
ongoingConnectRequest.rejectHandshake(DhtRpc_1.HandshakeError.UNSUPPORTED_VERSION);
|
|
272
276
|
}
|
|
277
|
+
else if (targetPeerDescriptor && !(0, identifiers_1.areEqualPeerDescriptors)(this.localPeerDescriptor, targetPeerDescriptor)) {
|
|
278
|
+
ongoingConnectRequest.rejectHandshake(DhtRpc_1.HandshakeError.INVALID_TARGET_PEER_DESCRIPTOR);
|
|
279
|
+
}
|
|
273
280
|
else {
|
|
274
281
|
ongoingConnectRequest.attachImplementation(websocketServerConnection);
|
|
275
282
|
ongoingConnectRequest.acceptHandshake();
|
|
@@ -304,6 +311,7 @@ class WebsocketConnector {
|
|
|
304
311
|
const attempts = Array.from(this.connectingConnections.values());
|
|
305
312
|
await Promise.allSettled(attempts.map((conn) => conn.close(false)));
|
|
306
313
|
await this.websocketServer?.stop();
|
|
314
|
+
await this.geoIpLocator?.stop();
|
|
307
315
|
}
|
|
308
316
|
}
|
|
309
317
|
exports.WebsocketConnector = WebsocketConnector;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebsocketConnector.js","sourceRoot":"","sources":["../../../../src/connection/websocket/WebsocketConnector.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"WebsocketConnector.js","sourceRoot":"","sources":["../../../../src/connection/websocket/WebsocketConnector.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,10 +7,11 @@ export declare class WebsocketServerConnection extends EventEmitter<ConnectionEv
|
|
|
7
7
|
readonly connectionId: ConnectionID;
|
|
8
8
|
readonly connectionType = ConnectionType.WEBSOCKET_SERVER;
|
|
9
9
|
readonly resourceURL: Url;
|
|
10
|
-
readonly remoteIpAddress
|
|
10
|
+
private readonly remoteIpAddress;
|
|
11
11
|
private socket?;
|
|
12
12
|
private stopped;
|
|
13
13
|
constructor(socket: WebSocket, resourceURL: Url, remoteAddress: string);
|
|
14
|
+
getRemoteIpAddress(): string;
|
|
14
15
|
private onMessage;
|
|
15
16
|
private onClose;
|
|
16
17
|
private onError;
|
|
@@ -30,6 +30,10 @@ class WebsocketServerConnection extends eventemitter3_1.default {
|
|
|
30
30
|
socket.on('error', this.onError);
|
|
31
31
|
this.socket = socket;
|
|
32
32
|
}
|
|
33
|
+
// use a getter to make it possible to mock the value in tests
|
|
34
|
+
getRemoteIpAddress() {
|
|
35
|
+
return this.remoteIpAddress;
|
|
36
|
+
}
|
|
33
37
|
onMessage(message, isBinary) {
|
|
34
38
|
if (!isBinary) {
|
|
35
39
|
logger.trace('Received string Message');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebsocketServerConnection.js","sourceRoot":"","sources":["../../../../src/connection/websocket/WebsocketServerConnection.ts"],"names":[],"mappings":";;;;;;AAAA,kEAAwC;AACxC,gDAA4F;AAE5F,0CAAuC;AAEvC,2FAAmF;AACnF,8CAAwD;AAExD,MAAM,MAAM,GAAG,IAAI,cAAM,CAAC,MAAM,CAAC,CAAA;AAEjC,MAAa,yBAA0B,SAAQ,uBAA8B;IAEzD,YAAY,CAAc;IAC1B,cAAc,GAAG,4BAAc,CAAC,gBAAgB,CAAA;IAChD,WAAW,CAAK;
|
|
1
|
+
{"version":3,"file":"WebsocketServerConnection.js","sourceRoot":"","sources":["../../../../src/connection/websocket/WebsocketServerConnection.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,22 +1,23 @@
|
|
|
1
1
|
import { MetricsContext } from '@streamr/utils';
|
|
2
2
|
import { EventEmitter } from 'eventemitter3';
|
|
3
3
|
import { ConnectionLocker, PortRange, TlsCertificate } from '../connection/ConnectionManager';
|
|
4
|
+
import { ConnectionsView } from '../connection/ConnectionsView';
|
|
4
5
|
import { IceServer } from '../connection/webrtc/WebrtcConnector';
|
|
5
6
|
import { DhtAddress } from '../identifiers';
|
|
6
7
|
import { Any } from '../proto/google/protobuf/any';
|
|
7
8
|
import { DataEntry, Message, PeerDescriptor } from '../proto/packages/dht/protos/DhtRpc';
|
|
8
9
|
import { ITransport, TransportEvents } from '../transport/ITransport';
|
|
9
10
|
import { ServiceID } from '../types/ServiceID';
|
|
10
|
-
import { Router } from './routing/Router';
|
|
11
|
-
import { RingIdRaw } from './contact/ringIdentifiers';
|
|
12
11
|
import { RingContacts } from './contact/RingContactList';
|
|
12
|
+
import { RingIdRaw } from './contact/ringIdentifiers';
|
|
13
13
|
export interface DhtNodeEvents {
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
nearbyContactAdded: (peerDescriptor: PeerDescriptor) => void;
|
|
15
|
+
nearbyContactRemoved: (peerDescriptor: PeerDescriptor) => void;
|
|
16
16
|
randomContactAdded: (peerDescriptor: PeerDescriptor) => void;
|
|
17
17
|
randomContactRemoved: (peerDescriptor: PeerDescriptor) => void;
|
|
18
18
|
ringContactAdded: (peerDescriptor: PeerDescriptor) => void;
|
|
19
19
|
ringContactRemoved: (peerDescriptor: PeerDescriptor) => void;
|
|
20
|
+
manualRejoinRequired: () => void;
|
|
20
21
|
}
|
|
21
22
|
export interface DhtNodeOptions {
|
|
22
23
|
serviceId?: ServiceID;
|
|
@@ -31,8 +32,10 @@ export interface DhtNodeOptions {
|
|
|
31
32
|
storeMaxTtl?: number;
|
|
32
33
|
networkConnectivityTimeout?: number;
|
|
33
34
|
storageRedundancyFactor?: number;
|
|
34
|
-
|
|
35
|
+
periodicallyPingNeighbors?: boolean;
|
|
36
|
+
periodicallyPingRingContacts?: boolean;
|
|
35
37
|
transport?: ITransport;
|
|
38
|
+
connectionsView?: ConnectionsView;
|
|
36
39
|
connectionLocker?: ConnectionLocker;
|
|
37
40
|
peerDescriptor?: PeerDescriptor;
|
|
38
41
|
entryPoints?: PeerDescriptor[];
|
|
@@ -40,6 +43,7 @@ export interface DhtNodeOptions {
|
|
|
40
43
|
websocketPortRange?: PortRange;
|
|
41
44
|
websocketServerEnableTls?: boolean;
|
|
42
45
|
nodeId?: DhtAddress;
|
|
46
|
+
region?: number;
|
|
43
47
|
rpcRequestTimeout?: number;
|
|
44
48
|
iceServers?: IceServer[];
|
|
45
49
|
webrtcAllowPrivateAddresses?: boolean;
|
|
@@ -53,6 +57,7 @@ export interface DhtNodeOptions {
|
|
|
53
57
|
externalIp?: string;
|
|
54
58
|
autoCertifierUrl?: string;
|
|
55
59
|
autoCertifierConfigFile?: string;
|
|
60
|
+
geoIpDatabaseFolder?: string;
|
|
56
61
|
}
|
|
57
62
|
export type Events = TransportEvents & DhtNodeEvents;
|
|
58
63
|
export declare class DhtNode extends EventEmitter<Events> implements ITransport {
|
|
@@ -60,14 +65,14 @@ export declare class DhtNode extends EventEmitter<Events> implements ITransport
|
|
|
60
65
|
private rpcCommunicator?;
|
|
61
66
|
private transport?;
|
|
62
67
|
private localPeerDescriptor?;
|
|
63
|
-
router
|
|
68
|
+
private router?;
|
|
64
69
|
private storeManager?;
|
|
65
70
|
private localDataStore;
|
|
66
71
|
private recursiveOperationManager?;
|
|
67
72
|
private peerDiscovery?;
|
|
68
73
|
private peerManager?;
|
|
74
|
+
private connectionsView?;
|
|
69
75
|
connectionLocker?: ConnectionLocker;
|
|
70
|
-
private region?;
|
|
71
76
|
private started;
|
|
72
77
|
private abortController;
|
|
73
78
|
constructor(conf: DhtNodeOptions);
|
|
@@ -79,7 +84,7 @@ export declare class DhtNode extends EventEmitter<Events> implements ITransport
|
|
|
79
84
|
private handleMessageFromRouter;
|
|
80
85
|
private generatePeerDescriptorCallBack;
|
|
81
86
|
getClosestContacts(limit?: number): PeerDescriptor[];
|
|
82
|
-
getRandomContacts(): PeerDescriptor[];
|
|
87
|
+
getRandomContacts(limit?: number): PeerDescriptor[];
|
|
83
88
|
getRingContacts(): RingContacts;
|
|
84
89
|
getClosestRingContactsTo(ringIdRaw: RingIdRaw, limit?: number): RingContacts;
|
|
85
90
|
getNodeId(): DhtAddress;
|
|
@@ -98,9 +103,7 @@ export declare class DhtNode extends EventEmitter<Events> implements ITransport
|
|
|
98
103
|
getTransport(): ITransport;
|
|
99
104
|
getLocalPeerDescriptor(): PeerDescriptor;
|
|
100
105
|
getNeighbors(): PeerDescriptor[];
|
|
101
|
-
|
|
102
|
-
getConnectionCount(): number;
|
|
103
|
-
hasConnection(nodeId: DhtAddress): boolean;
|
|
106
|
+
getConnectionsView(): ConnectionsView;
|
|
104
107
|
getLocalLockedConnectionCount(): number;
|
|
105
108
|
getRemoteLockedConnectionCount(): number;
|
|
106
109
|
getWeakLockedConnectionCount(): number;
|
package/dist/src/dht/DhtNode.js
CHANGED
|
@@ -7,6 +7,7 @@ const lodash_1 = require("lodash");
|
|
|
7
7
|
const ConnectionManager_1 = require("../connection/ConnectionManager");
|
|
8
8
|
const ConnectorFacade_1 = require("../connection/ConnectorFacade");
|
|
9
9
|
const isBrowserEnvironment_1 = require("../helpers/browser/isBrowserEnvironment");
|
|
10
|
+
const createPeerDescriptor_1 = require("../helpers/createPeerDescriptor");
|
|
10
11
|
const identifiers_1 = require("../identifiers");
|
|
11
12
|
const DhtRpc_1 = require("../proto/packages/dht/protos/DhtRpc");
|
|
12
13
|
const DhtRpc_client_1 = require("../proto/packages/dht/protos/DhtRpc.client");
|
|
@@ -22,9 +23,9 @@ const Router_1 = require("./routing/Router");
|
|
|
22
23
|
const LocalDataStore_1 = require("./store/LocalDataStore");
|
|
23
24
|
const StoreManager_1 = require("./store/StoreManager");
|
|
24
25
|
const StoreRpcRemote_1 = require("./store/StoreRpcRemote");
|
|
25
|
-
const createPeerDescriptor_1 = require("../helpers/createPeerDescriptor");
|
|
26
26
|
const cdn_location_1 = require("@streamr/cdn-location");
|
|
27
27
|
const logger = new utils_1.Logger(module);
|
|
28
|
+
const PERIODICAL_PING_INTERVAL = 60 * 1000;
|
|
28
29
|
class DhtNode extends eventemitter3_1.EventEmitter {
|
|
29
30
|
config;
|
|
30
31
|
rpcCommunicator;
|
|
@@ -36,8 +37,8 @@ class DhtNode extends eventemitter3_1.EventEmitter {
|
|
|
36
37
|
recursiveOperationManager;
|
|
37
38
|
peerDiscovery;
|
|
38
39
|
peerManager;
|
|
40
|
+
connectionsView;
|
|
39
41
|
connectionLocker;
|
|
40
|
-
region;
|
|
41
42
|
started = false;
|
|
42
43
|
abortController = new AbortController();
|
|
43
44
|
constructor(conf) {
|
|
@@ -54,7 +55,7 @@ class DhtNode extends eventemitter3_1.EventEmitter {
|
|
|
54
55
|
storeHighestTtl: 60000,
|
|
55
56
|
storeMaxTtl: 60000,
|
|
56
57
|
networkConnectivityTimeout: 10000,
|
|
57
|
-
storageRedundancyFactor: 5,
|
|
58
|
+
storageRedundancyFactor: 5, // TODO validate that this is > 1 (as each node should replicate the data to other node)
|
|
58
59
|
metricsContext: new utils_1.MetricsContext()
|
|
59
60
|
}, conf);
|
|
60
61
|
this.validateConfig();
|
|
@@ -76,6 +77,9 @@ class DhtNode extends eventemitter3_1.EventEmitter {
|
|
|
76
77
|
throw new Error(`Invalid peerDescriptor, the length of the nodeId should be ${identifiers_1.KADEMLIA_ID_LENGTH_IN_BYTES} bytes`);
|
|
77
78
|
}
|
|
78
79
|
}
|
|
80
|
+
if (this.config.transport !== undefined && this.config.connectionsView === undefined) {
|
|
81
|
+
throw new Error('connectionsView is required when transport is given');
|
|
82
|
+
}
|
|
79
83
|
}
|
|
80
84
|
async start() {
|
|
81
85
|
if (this.started || this.abortController.signal.aborted) {
|
|
@@ -89,17 +93,10 @@ class DhtNode extends eventemitter3_1.EventEmitter {
|
|
|
89
93
|
this.config.peerDescriptor.websocket = undefined;
|
|
90
94
|
}
|
|
91
95
|
}
|
|
92
|
-
|
|
93
|
-
this.region = this.config.region;
|
|
94
|
-
}
|
|
95
|
-
else if (this.config.peerDescriptor?.region !== undefined) {
|
|
96
|
-
this.region = this.config.peerDescriptor.region;
|
|
97
|
-
}
|
|
98
|
-
else {
|
|
99
|
-
this.region = await (0, cdn_location_1.getLocalRegion)();
|
|
100
|
-
}
|
|
96
|
+
// If transport is given, do not create a ConnectionManager
|
|
101
97
|
if (this.config.transport) {
|
|
102
98
|
this.transport = this.config.transport;
|
|
99
|
+
this.connectionsView = this.config.connectionsView;
|
|
103
100
|
this.connectionLocker = this.config.connectionLocker;
|
|
104
101
|
this.localPeerDescriptor = this.transport.getLocalPeerDescriptor();
|
|
105
102
|
}
|
|
@@ -119,7 +116,8 @@ class DhtNode extends eventemitter3_1.EventEmitter {
|
|
|
119
116
|
externalIp: this.config.externalIp,
|
|
120
117
|
autoCertifierUrl: this.config.autoCertifierUrl,
|
|
121
118
|
autoCertifierConfigFile: this.config.autoCertifierConfigFile,
|
|
122
|
-
|
|
119
|
+
geoIpDatabaseFolder: this.config.geoIpDatabaseFolder,
|
|
120
|
+
createLocalPeerDescriptor: (connectivityResponse) => this.generatePeerDescriptorCallBack(connectivityResponse)
|
|
123
121
|
};
|
|
124
122
|
// If own PeerDescriptor is given in config, create a ConnectionManager with ws server
|
|
125
123
|
if (this.config.peerDescriptor?.websocket) {
|
|
@@ -140,6 +138,7 @@ class DhtNode extends eventemitter3_1.EventEmitter {
|
|
|
140
138
|
metricsContext: this.config.metricsContext
|
|
141
139
|
});
|
|
142
140
|
await connectionManager.start();
|
|
141
|
+
this.connectionsView = connectionManager;
|
|
143
142
|
this.connectionLocker = connectionManager;
|
|
144
143
|
this.transport = connectionManager;
|
|
145
144
|
}
|
|
@@ -153,18 +152,21 @@ class DhtNode extends eventemitter3_1.EventEmitter {
|
|
|
153
152
|
serviceId: this.config.serviceId,
|
|
154
153
|
parallelism: this.config.joinParallelism,
|
|
155
154
|
connectionLocker: this.connectionLocker,
|
|
156
|
-
peerManager: this.peerManager
|
|
155
|
+
peerManager: this.peerManager,
|
|
156
|
+
abortSignal: this.abortController.signal,
|
|
157
|
+
createDhtNodeRpcRemote: (peerDescriptor) => this.createDhtNodeRpcRemote(peerDescriptor),
|
|
157
158
|
});
|
|
158
159
|
this.router = new Router_1.Router({
|
|
159
160
|
rpcCommunicator: this.rpcCommunicator,
|
|
160
161
|
localPeerDescriptor: this.localPeerDescriptor,
|
|
161
162
|
handleMessage: (message) => this.handleMessageFromRouter(message),
|
|
162
|
-
getConnections: () => this.getConnections()
|
|
163
|
+
getConnections: () => this.connectionsView.getConnections()
|
|
163
164
|
});
|
|
164
165
|
this.recursiveOperationManager = new RecursiveOperationManager_1.RecursiveOperationManager({
|
|
165
166
|
rpcCommunicator: this.rpcCommunicator,
|
|
166
167
|
router: this.router,
|
|
167
168
|
sessionTransport: this,
|
|
169
|
+
connectionsView: this.connectionsView,
|
|
168
170
|
localPeerDescriptor: this.localPeerDescriptor,
|
|
169
171
|
serviceId: this.config.serviceId,
|
|
170
172
|
localDataStore: this.localDataStore,
|
|
@@ -179,17 +181,28 @@ class DhtNode extends eventemitter3_1.EventEmitter {
|
|
|
179
181
|
highestTtl: this.config.storeHighestTtl,
|
|
180
182
|
redundancyFactor: this.config.storageRedundancyFactor,
|
|
181
183
|
localDataStore: this.localDataStore,
|
|
182
|
-
|
|
183
|
-
return this.peerManager.getClosestNeighborsTo(key, n).map((n) => n.getPeerDescriptor());
|
|
184
|
-
},
|
|
184
|
+
getNeighbors: () => this.peerManager.getNeighbors().map((n) => n.getPeerDescriptor()),
|
|
185
185
|
createRpcRemote: (contact) => {
|
|
186
186
|
return new StoreRpcRemote_1.StoreRpcRemote(this.localPeerDescriptor, contact, this.rpcCommunicator, DhtRpc_client_1.StoreRpcClient, this.config.rpcRequestTimeout);
|
|
187
187
|
}
|
|
188
188
|
});
|
|
189
|
-
this.on('
|
|
189
|
+
this.on('nearbyContactAdded', (peerDescriptor) => {
|
|
190
190
|
this.storeManager.onContactAdded(peerDescriptor);
|
|
191
191
|
});
|
|
192
192
|
this.bindRpcLocalMethods();
|
|
193
|
+
const pruneTargets = [];
|
|
194
|
+
if (this.config.periodicallyPingNeighbors === true) {
|
|
195
|
+
pruneTargets.push(() => this.peerManager.getNeighbors().map((node) => this.createDhtNodeRpcRemote(node.getPeerDescriptor())));
|
|
196
|
+
}
|
|
197
|
+
if (this.config.periodicallyPingRingContacts === true) {
|
|
198
|
+
pruneTargets.push(() => this.peerManager.getRingContacts().getAllContacts());
|
|
199
|
+
}
|
|
200
|
+
for (const pruneTarget of pruneTargets) {
|
|
201
|
+
await (0, utils_1.scheduleAtInterval)(async () => {
|
|
202
|
+
const nodes = pruneTarget();
|
|
203
|
+
await this.peerManager.pruneOfflineNodes(nodes);
|
|
204
|
+
}, PERIODICAL_PING_INTERVAL, false, this.abortController.signal);
|
|
205
|
+
}
|
|
193
206
|
}
|
|
194
207
|
initPeerManager() {
|
|
195
208
|
this.peerManager = new PeerManager_1.PeerManager({
|
|
@@ -200,12 +213,12 @@ class DhtNode extends eventemitter3_1.EventEmitter {
|
|
|
200
213
|
connectionLocker: this.connectionLocker,
|
|
201
214
|
lockId: this.config.serviceId,
|
|
202
215
|
createDhtNodeRpcRemote: (peerDescriptor) => this.createDhtNodeRpcRemote(peerDescriptor),
|
|
203
|
-
hasConnection: (nodeId) => this.
|
|
216
|
+
hasConnection: (nodeId) => this.connectionsView.hasConnection(nodeId)
|
|
204
217
|
});
|
|
205
|
-
this.peerManager.on('
|
|
206
|
-
this.emit('
|
|
218
|
+
this.peerManager.on('nearbyContactRemoved', (peerDescriptor) => {
|
|
219
|
+
this.emit('nearbyContactRemoved', peerDescriptor);
|
|
207
220
|
});
|
|
208
|
-
this.peerManager.on('
|
|
221
|
+
this.peerManager.on('nearbyContactAdded', (peerDescriptor) => this.emit('nearbyContactAdded', peerDescriptor));
|
|
209
222
|
this.peerManager.on('randomContactRemoved', (peerDescriptor) => this.emit('randomContactRemoved', peerDescriptor));
|
|
210
223
|
this.peerManager.on('randomContactAdded', (peerDescriptor) => this.emit('randomContactAdded', peerDescriptor));
|
|
211
224
|
this.peerManager.on('ringContactRemoved', (peerDescriptor) => {
|
|
@@ -215,15 +228,18 @@ class DhtNode extends eventemitter3_1.EventEmitter {
|
|
|
215
228
|
this.emit('ringContactAdded', peerDescriptor);
|
|
216
229
|
});
|
|
217
230
|
this.peerManager.on('kBucketEmpty', () => {
|
|
218
|
-
if (!this.peerDiscovery.isJoinOngoing()
|
|
219
|
-
&& this.config.entryPoints
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
}
|
|
231
|
+
if (!this.peerDiscovery.isJoinOngoing()) {
|
|
232
|
+
if (this.config.entryPoints && this.config.entryPoints.length > 0) {
|
|
233
|
+
setImmediate(async () => {
|
|
234
|
+
const contactedPeers = new Set();
|
|
235
|
+
const distantJoinContactPeers = new Set();
|
|
236
|
+
// TODO should we catch possible promise rejection?
|
|
237
|
+
await Promise.all(this.config.entryPoints.map((entryPoint) => this.peerDiscovery.rejoinDht(entryPoint, contactedPeers, distantJoinContactPeers)));
|
|
238
|
+
});
|
|
239
|
+
}
|
|
240
|
+
else {
|
|
241
|
+
this.emit('manualRejoinRequired');
|
|
242
|
+
}
|
|
227
243
|
}
|
|
228
244
|
});
|
|
229
245
|
this.transport.on('connected', (peerDescriptor) => {
|
|
@@ -251,10 +267,7 @@ class DhtNode extends eventemitter3_1.EventEmitter {
|
|
|
251
267
|
}
|
|
252
268
|
const dhtNodeRpcLocal = new DhtNodeRpcLocal_1.DhtNodeRpcLocal({
|
|
253
269
|
peerDiscoveryQueryBatchSize: this.config.peerDiscoveryQueryBatchSize,
|
|
254
|
-
|
|
255
|
-
return this.peerManager.getClosestNeighborsTo(nodeId, limit)
|
|
256
|
-
.map((dhtPeer) => dhtPeer.getPeerDescriptor());
|
|
257
|
-
},
|
|
270
|
+
getNeighbors: () => this.peerManager.getNeighbors().map((n) => n.getPeerDescriptor()),
|
|
258
271
|
getClosestRingContactsTo: (ringIdRaw, limit) => {
|
|
259
272
|
return this.getClosestRingContactsTo(ringIdRaw, limit);
|
|
260
273
|
},
|
|
@@ -289,23 +302,37 @@ class DhtNode extends eventemitter3_1.EventEmitter {
|
|
|
289
302
|
this.emit('message', message);
|
|
290
303
|
}
|
|
291
304
|
}
|
|
292
|
-
generatePeerDescriptorCallBack(connectivityResponse) {
|
|
305
|
+
async generatePeerDescriptorCallBack(connectivityResponse) {
|
|
293
306
|
if (this.config.peerDescriptor !== undefined) {
|
|
294
307
|
this.localPeerDescriptor = this.config.peerDescriptor;
|
|
295
308
|
}
|
|
296
309
|
else {
|
|
297
|
-
|
|
310
|
+
let region = undefined;
|
|
311
|
+
if (this.config.region !== undefined) {
|
|
312
|
+
region = this.config.region;
|
|
313
|
+
logger.debug(`Using region ${region} from config when generating local PeerDescriptor`);
|
|
314
|
+
}
|
|
315
|
+
else if (connectivityResponse.latitude !== undefined && connectivityResponse.longitude !== undefined) {
|
|
316
|
+
region = (0, cdn_location_1.getLocalRegionByCoordinates)(connectivityResponse.latitude, connectivityResponse.longitude);
|
|
317
|
+
logger.debug(`Using region ${region} from GeoIP when generating local PeerDescriptor`);
|
|
318
|
+
}
|
|
319
|
+
else {
|
|
320
|
+
// as a fallback get the region from the CDN
|
|
321
|
+
// and if it's not available, use a random region
|
|
322
|
+
region = await (0, cdn_location_1.getLocalRegionWithCache)();
|
|
323
|
+
logger.debug(`Using region ${region} from CDN when generating local PeerDescriptor`);
|
|
324
|
+
}
|
|
325
|
+
this.localPeerDescriptor = (0, createPeerDescriptor_1.createPeerDescriptor)(connectivityResponse, region, this.config.nodeId);
|
|
298
326
|
}
|
|
299
327
|
return this.localPeerDescriptor;
|
|
300
328
|
}
|
|
301
329
|
getClosestContacts(limit) {
|
|
302
|
-
return this.peerManager.
|
|
330
|
+
return this.peerManager.getNearbyContacts()
|
|
303
331
|
.getClosestContacts(limit)
|
|
304
332
|
.map((peer) => peer.getPeerDescriptor());
|
|
305
333
|
}
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
return this.peerManager.getRandomContacts().getContacts().map((c) => c.getPeerDescriptor());
|
|
334
|
+
getRandomContacts(limit) {
|
|
335
|
+
return this.peerManager.getRandomContacts().getContacts(limit).map((c) => c.getPeerDescriptor());
|
|
309
336
|
}
|
|
310
337
|
getRingContacts() {
|
|
311
338
|
const contacts = this.peerManager.getRingContacts().getClosestContacts();
|
|
@@ -341,7 +368,7 @@ class DhtNode extends eventemitter3_1.EventEmitter {
|
|
|
341
368
|
this.router.send(msg, reachableThrough);
|
|
342
369
|
}
|
|
343
370
|
getConnectedEntryPoints() {
|
|
344
|
-
return this.config.entryPoints !== undefined ? this.config.entryPoints.filter((entryPoint) => this.
|
|
371
|
+
return this.config.entryPoints !== undefined ? this.config.entryPoints.filter((entryPoint) => this.connectionsView.hasConnection((0, identifiers_1.getNodeIdFromPeerDescriptor)(entryPoint))) : [];
|
|
345
372
|
}
|
|
346
373
|
async joinDht(entryPointDescriptors, doAdditionalDistantPeerDiscovery, retry) {
|
|
347
374
|
if (!this.started) {
|
|
@@ -394,16 +421,10 @@ class DhtNode extends eventemitter3_1.EventEmitter {
|
|
|
394
421
|
return this.localPeerDescriptor;
|
|
395
422
|
}
|
|
396
423
|
getNeighbors() {
|
|
397
|
-
return this.started ? this.peerManager.getNeighbors() : [];
|
|
398
|
-
}
|
|
399
|
-
getConnections() {
|
|
400
|
-
return this.transport.getConnections();
|
|
401
|
-
}
|
|
402
|
-
getConnectionCount() {
|
|
403
|
-
return this.transport.getConnectionCount();
|
|
424
|
+
return this.started ? this.peerManager.getNeighbors().map((remote) => remote.getPeerDescriptor()) : [];
|
|
404
425
|
}
|
|
405
|
-
|
|
406
|
-
return this.
|
|
426
|
+
getConnectionsView() {
|
|
427
|
+
return this.connectionsView;
|
|
407
428
|
}
|
|
408
429
|
getLocalLockedConnectionCount() {
|
|
409
430
|
return this.connectionLocker.getLocalLockedConnectionCount();
|
|
@@ -415,14 +436,7 @@ class DhtNode extends eventemitter3_1.EventEmitter {
|
|
|
415
436
|
return this.connectionLocker.getWeakLockedConnectionCount();
|
|
416
437
|
}
|
|
417
438
|
async waitForNetworkConnectivity() {
|
|
418
|
-
await (0, utils_1.waitForCondition)(() =>
|
|
419
|
-
if (!this.peerManager) {
|
|
420
|
-
return false;
|
|
421
|
-
}
|
|
422
|
-
else {
|
|
423
|
-
return (this.getConnectionCount() > 0);
|
|
424
|
-
}
|
|
425
|
-
}, this.config.networkConnectivityTimeout, 100, this.abortController.signal);
|
|
439
|
+
await (0, utils_1.waitForCondition)(() => this.connectionsView.getConnectionCount() > 0, this.config.networkConnectivityTimeout, 100, this.abortController.signal);
|
|
426
440
|
}
|
|
427
441
|
hasJoined() {
|
|
428
442
|
return this.peerDiscovery.isJoinCalled();
|
|
@@ -439,7 +453,6 @@ class DhtNode extends eventemitter3_1.EventEmitter {
|
|
|
439
453
|
this.rpcCommunicator.stop();
|
|
440
454
|
this.router.stop();
|
|
441
455
|
this.recursiveOperationManager.stop();
|
|
442
|
-
this.peerDiscovery.stop();
|
|
443
456
|
if (this.config.transport === undefined) {
|
|
444
457
|
// if the transport was not given in config, the instance was created in start() and
|
|
445
458
|
// this component is responsible for stopping it
|