@streamr/trackerless-network 0.0.1-tatum.6 → 0.0.1-tatum.8
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 +10 -8
- package/dist/src/NetworkNode.js +2 -2
- package/dist/src/NetworkNode.js.map +1 -1
- package/dist/src/NetworkStack.d.ts +5 -6
- package/dist/src/NetworkStack.js +27 -56
- package/dist/src/NetworkStack.js.map +1 -1
- package/dist/src/identifiers.js +2 -2
- package/dist/src/identifiers.js.map +1 -1
- package/dist/src/logic/{StreamNodeServer.d.ts → DeliveryRpcLocal.d.ts} +6 -5
- package/dist/src/logic/{StreamNodeServer.js → DeliveryRpcLocal.js} +5 -5
- package/dist/src/logic/{StreamNodeServer.js.map → DeliveryRpcLocal.js.map} +1 -1
- package/dist/src/logic/{RemoteRandomGraphNode.d.ts → DeliveryRpcRemote.d.ts} +2 -2
- package/dist/src/logic/{RemoteRandomGraphNode.js → DeliveryRpcRemote.js} +5 -5
- package/dist/src/logic/DeliveryRpcRemote.js.map +1 -0
- package/dist/src/logic/{StreamPartEntryPointDiscovery.d.ts → EntryPointDiscovery.d.ts} +10 -12
- package/dist/src/logic/{StreamPartEntryPointDiscovery.js → EntryPointDiscovery.js} +18 -40
- package/dist/src/logic/EntryPointDiscovery.js.map +1 -0
- package/dist/src/logic/Layer0Node.d.ts +14 -0
- package/dist/src/logic/{ILayer1.js → Layer0Node.js} +1 -1
- package/dist/src/logic/Layer0Node.js.map +1 -0
- package/dist/src/logic/{ILayer1.d.ts → Layer1Node.d.ts} +5 -5
- package/dist/src/logic/{ILayer0.js → Layer1Node.js} +1 -1
- package/dist/src/logic/Layer1Node.js.map +1 -0
- package/dist/src/logic/NodeList.d.ts +10 -10
- package/dist/src/logic/NodeList.js.map +1 -1
- package/dist/src/logic/RandomGraphNode.d.ts +11 -15
- package/dist/src/logic/RandomGraphNode.js +46 -45
- package/dist/src/logic/RandomGraphNode.js.map +1 -1
- package/dist/src/logic/StreamrNode.d.ts +15 -18
- package/dist/src/logic/StreamrNode.js +78 -87
- package/dist/src/logic/StreamrNode.js.map +1 -1
- package/dist/src/logic/createRandomGraphNode.d.ts +6 -1
- package/dist/src/logic/createRandomGraphNode.js +17 -23
- package/dist/src/logic/createRandomGraphNode.js.map +1 -1
- package/dist/src/logic/formStreamPartDeliveryServiceId.d.ts +2 -0
- package/dist/src/logic/formStreamPartDeliveryServiceId.js +8 -0
- package/dist/src/logic/formStreamPartDeliveryServiceId.js.map +1 -0
- package/dist/src/logic/inspect/Inspector.d.ts +3 -2
- package/dist/src/logic/inspect/Inspector.js +5 -5
- package/dist/src/logic/inspect/Inspector.js.map +1 -1
- package/dist/src/logic/neighbor-discovery/{HandshakerServer.d.ts → HandshakeRpcLocal.d.ts} +10 -10
- package/dist/src/logic/neighbor-discovery/{HandshakerServer.js → HandshakeRpcLocal.js} +13 -13
- package/dist/src/logic/neighbor-discovery/HandshakeRpcLocal.js.map +1 -0
- package/dist/src/logic/neighbor-discovery/{RemoteHandshaker.d.ts → HandshakeRpcRemote.d.ts} +1 -1
- package/dist/src/logic/neighbor-discovery/{RemoteHandshaker.js → HandshakeRpcRemote.js} +8 -7
- package/dist/src/logic/neighbor-discovery/HandshakeRpcRemote.js.map +1 -0
- package/dist/src/logic/neighbor-discovery/Handshaker.d.ts +8 -7
- package/dist/src/logic/neighbor-discovery/Handshaker.js +23 -24
- package/dist/src/logic/neighbor-discovery/Handshaker.js.map +1 -1
- package/dist/src/logic/neighbor-discovery/NeighborFinder.d.ts +1 -1
- package/dist/src/logic/neighbor-discovery/NeighborFinder.js +1 -1
- package/dist/src/logic/neighbor-discovery/NeighborFinder.js.map +1 -1
- package/dist/src/logic/neighbor-discovery/NeighborUpdateManager.d.ts +3 -2
- package/dist/src/logic/neighbor-discovery/NeighborUpdateManager.js +5 -5
- package/dist/src/logic/neighbor-discovery/NeighborUpdateManager.js.map +1 -1
- package/dist/src/logic/neighbor-discovery/{NeighborUpdateManagerServer.d.ts → NeighborUpdateRpcLocal.d.ts} +6 -6
- package/dist/src/logic/neighbor-discovery/{NeighborUpdateManagerServer.js → NeighborUpdateRpcLocal.js} +9 -9
- package/dist/src/logic/neighbor-discovery/NeighborUpdateRpcLocal.js.map +1 -0
- package/dist/src/logic/neighbor-discovery/{RemoteNeighborUpdateManager.d.ts → NeighborUpdateRpcRemote.d.ts} +1 -1
- package/dist/src/logic/neighbor-discovery/{RemoteNeighborUpdateManager.js → NeighborUpdateRpcRemote.js} +5 -5
- package/dist/src/logic/neighbor-discovery/NeighborUpdateRpcRemote.js.map +1 -0
- package/dist/src/logic/propagation/Propagation.js +2 -2
- package/dist/src/logic/propagation/Propagation.js.map +1 -1
- package/dist/src/logic/proxy/{ProxyStreamConnectionClient.d.ts → ProxyClient.d.ts} +7 -10
- package/dist/src/logic/proxy/{ProxyStreamConnectionClient.js → ProxyClient.js} +24 -22
- package/dist/src/logic/proxy/ProxyClient.js.map +1 -0
- package/dist/src/logic/proxy/{ProxyStreamConnectionServer.d.ts → ProxyConnectionRpcLocal.d.ts} +5 -5
- package/dist/src/logic/proxy/{ProxyStreamConnectionServer.js → ProxyConnectionRpcLocal.js} +6 -6
- package/dist/src/logic/proxy/ProxyConnectionRpcLocal.js.map +1 -0
- package/dist/src/logic/proxy/{RemoteProxyServer.d.ts → ProxyConnectionRpcRemote.d.ts} +1 -1
- package/dist/src/logic/proxy/{RemoteProxyServer.js → ProxyConnectionRpcRemote.js} +4 -4
- package/dist/src/logic/proxy/ProxyConnectionRpcRemote.js.map +1 -0
- package/dist/src/logic/temporary-connection/{TemporaryConnectionRpcServer.d.ts → TemporaryConnectionRpcLocal.d.ts} +5 -4
- package/dist/src/logic/temporary-connection/{TemporaryConnectionRpcServer.js → TemporaryConnectionRpcLocal.js} +6 -6
- package/dist/src/logic/temporary-connection/TemporaryConnectionRpcLocal.js.map +1 -0
- package/dist/src/logic/temporary-connection/{RemoteTemporaryConnectionRpcServer.d.ts → TemporaryConnectionRpcRemote.d.ts} +1 -1
- package/dist/src/logic/temporary-connection/{RemoteTemporaryConnectionRpcServer.js → TemporaryConnectionRpcRemote.js} +4 -4
- package/dist/src/logic/temporary-connection/TemporaryConnectionRpcRemote.js.map +1 -0
- package/dist/src/proto/packages/dht/protos/DhtRpc.client.d.ts +10 -0
- package/dist/src/proto/packages/dht/protos/DhtRpc.client.js +7 -0
- package/dist/src/proto/packages/dht/protos/DhtRpc.client.js.map +1 -1
- package/dist/src/proto/packages/dht/protos/DhtRpc.d.ts +54 -118
- package/dist/src/proto/packages/dht/protos/DhtRpc.js +50 -49
- package/dist/src/proto/packages/dht/protos/DhtRpc.js.map +1 -1
- package/dist/src/proto/packages/dht/protos/DhtRpc.server.d.ts +6 -0
- package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.client.d.ts +4 -4
- package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.client.js +7 -7
- package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.client.js.map +1 -1
- package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.d.ts +10 -10
- package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.js +7 -7
- package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.js.map +1 -1
- package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.server.d.ts +2 -2
- package/dist/test/benchmark/first-message.js +16 -17
- package/dist/test/benchmark/first-message.js.map +1 -1
- package/dist/test/utils/utils.d.ts +7 -6
- package/dist/test/utils/utils.js +18 -17
- package/dist/test/utils/utils.js.map +1 -1
- package/package.json +10 -8
- package/protos/NetworkRpc.proto +5 -5
- package/src/NetworkNode.ts +2 -2
- package/src/NetworkStack.ts +31 -72
- package/src/identifiers.ts +3 -3
- package/src/logic/{StreamNodeServer.ts → DeliveryRpcLocal.ts} +8 -7
- package/src/logic/{RemoteRandomGraphNode.ts → DeliveryRpcRemote.ts} +3 -3
- package/src/logic/{StreamPartEntryPointDiscovery.ts → EntryPointDiscovery.ts} +24 -48
- package/src/logic/Layer0Node.ts +15 -0
- package/src/logic/{ILayer1.ts → Layer1Node.ts} +5 -5
- package/src/logic/NodeList.ts +12 -12
- package/src/logic/RandomGraphNode.ts +73 -74
- package/src/logic/StreamrNode.ts +90 -103
- package/src/logic/createRandomGraphNode.ts +28 -26
- package/src/logic/formStreamPartDeliveryServiceId.ts +5 -0
- package/src/logic/inspect/Inspector.ts +8 -7
- package/src/logic/neighbor-discovery/{HandshakerServer.ts → HandshakeRpcLocal.ts} +20 -20
- package/src/logic/neighbor-discovery/{RemoteHandshaker.ts → HandshakeRpcRemote.ts} +6 -5
- package/src/logic/neighbor-discovery/Handshaker.ts +38 -38
- package/src/logic/neighbor-discovery/NeighborFinder.ts +2 -2
- package/src/logic/neighbor-discovery/NeighborUpdateManager.ts +13 -10
- package/src/logic/neighbor-discovery/{NeighborUpdateManagerServer.ts → NeighborUpdateRpcLocal.ts} +15 -15
- package/src/logic/neighbor-discovery/{RemoteNeighborUpdateManager.ts → NeighborUpdateRpcRemote.ts} +2 -2
- package/src/logic/propagation/Propagation.ts +2 -2
- package/src/logic/proxy/{ProxyStreamConnectionClient.ts → ProxyClient.ts} +29 -29
- package/src/logic/proxy/{ProxyStreamConnectionServer.ts → ProxyConnectionRpcLocal.ts} +10 -11
- package/src/logic/proxy/{RemoteProxyServer.ts → ProxyConnectionRpcRemote.ts} +1 -1
- package/src/logic/temporary-connection/{TemporaryConnectionRpcServer.ts → TemporaryConnectionRpcLocal.ts} +11 -10
- package/src/logic/temporary-connection/{RemoteTemporaryConnectionRpcServer.ts → TemporaryConnectionRpcRemote.ts} +1 -1
- package/src/proto/packages/dht/protos/DhtRpc.client.ts +13 -0
- package/src/proto/packages/dht/protos/DhtRpc.server.ts +6 -0
- package/src/proto/packages/dht/protos/DhtRpc.ts +88 -166
- package/src/proto/packages/trackerless-network/protos/NetworkRpc.client.ts +8 -8
- package/src/proto/packages/trackerless-network/protos/NetworkRpc.server.ts +2 -2
- package/src/proto/packages/trackerless-network/protos/NetworkRpc.ts +14 -14
- package/test/benchmark/first-message.ts +19 -20
- package/test/end-to-end/inspect.test.ts +12 -12
- package/test/end-to-end/proxy-and-full-node.test.ts +17 -18
- package/test/end-to-end/proxy-connections.test.ts +9 -11
- package/test/end-to-end/proxy-key-exchange.test.ts +12 -13
- package/test/end-to-end/random-graph-with-real-connections.test.ts +27 -22
- package/test/end-to-end/webrtc-full-node-network.test.ts +8 -8
- package/test/end-to-end/websocket-full-node-network.test.ts +8 -10
- package/test/integration/{RemoteRandomGraphNode.test.ts → DeliveryRpcRemote.test.ts} +17 -14
- package/test/integration/{RemoteHandshaker.test.ts → HandshakeRpcRemote.test.ts} +10 -9
- package/test/integration/Handshakes.test.ts +23 -20
- package/test/integration/Inspect.test.ts +4 -3
- package/test/integration/{RemoteNeighborUpdateManager.test.ts → NeighborUpdateRpcRemote.test.ts} +12 -10
- package/test/integration/NetworkNode.test.ts +9 -8
- package/test/integration/NetworkRpc.test.ts +5 -7
- package/test/integration/NetworkStack.test.ts +13 -15
- package/test/integration/Propagation.test.ts +14 -13
- package/test/integration/RandomGraphNode-Layer1Node-Latencies.test.ts +23 -20
- package/test/integration/RandomGraphNode-Layer1Node.test.ts +30 -29
- package/test/integration/StreamrNode.test.ts +16 -13
- package/test/integration/joining-streams-on-offline-peers.test.ts +16 -18
- package/test/integration/stream-without-default-entrypoints.test.ts +12 -14
- package/test/unit/{StreamNodeServer.test.ts → DeliveryRpcLocal.test.ts} +8 -8
- package/test/unit/{StreamPartEntrypointDiscovery.test.ts → EntrypointDiscovery.test.ts} +27 -44
- package/test/unit/{HandshakerServer.test.ts → HandshakeRpcLocal.test.ts} +26 -24
- package/test/unit/Handshaker.test.ts +10 -8
- package/test/unit/Inspector.test.ts +4 -3
- package/test/unit/NeighborFinder.test.ts +5 -5
- package/test/unit/NodeList.test.ts +22 -13
- package/test/unit/{RemoteProxyServer.test.ts → ProxyConnectionRpcRemote.test.ts} +4 -4
- package/test/unit/RandomGraphNode.test.ts +15 -13
- package/test/unit/StreamMessageTranslator.test.ts +10 -9
- package/test/unit/StreamrNode.test.ts +10 -10
- package/test/utils/mock/{MockLayer0.ts → MockLayer0Node.ts} +23 -26
- package/test/utils/mock/{MockLayer1.ts → MockLayer1Node.ts} +5 -10
- package/test/utils/mock/MockNeighborFinder.ts +1 -2
- package/test/utils/mock/MockNeighborUpdateManager.ts +1 -2
- package/test/utils/mock/Transport.ts +2 -2
- package/test/utils/utils.ts +18 -16
- package/dist/src/logic/ILayer0.d.ts +0 -13
- package/dist/src/logic/ILayer0.js.map +0 -1
- package/dist/src/logic/ILayer1.js.map +0 -1
- package/dist/src/logic/RemoteRandomGraphNode.js.map +0 -1
- package/dist/src/logic/StreamPartEntryPointDiscovery.js.map +0 -1
- package/dist/src/logic/neighbor-discovery/HandshakerServer.js.map +0 -1
- package/dist/src/logic/neighbor-discovery/NeighborUpdateManagerServer.js.map +0 -1
- package/dist/src/logic/neighbor-discovery/RemoteHandshaker.js.map +0 -1
- package/dist/src/logic/neighbor-discovery/RemoteNeighborUpdateManager.js.map +0 -1
- package/dist/src/logic/proxy/ProxyStreamConnectionClient.js.map +0 -1
- package/dist/src/logic/proxy/ProxyStreamConnectionServer.js.map +0 -1
- package/dist/src/logic/proxy/RemoteProxyServer.js.map +0 -1
- package/dist/src/logic/temporary-connection/RemoteTemporaryConnectionRpcServer.js.map +0 -1
- package/dist/src/logic/temporary-connection/TemporaryConnectionRpcServer.js.map +0 -1
- package/src/logic/ILayer0.ts +0 -14
package/dist/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@streamr/trackerless-network",
|
|
3
|
-
"version": "0.0.1-tatum.
|
|
3
|
+
"version": "0.0.1-tatum.8",
|
|
4
4
|
"description": "Minimal and extendable implementation of the Streamr Network node.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -30,20 +30,22 @@
|
|
|
30
30
|
"dependencies": {
|
|
31
31
|
"@protobuf-ts/runtime": "^2.8.2",
|
|
32
32
|
"@protobuf-ts/runtime-rpc": "^2.8.2",
|
|
33
|
-
"@streamr/dht": "0.0.1-tatum.
|
|
34
|
-
"@streamr/proto-rpc": "0.0.1-tatum.
|
|
35
|
-
"@streamr/protocol": "0.0.1-tatum.
|
|
36
|
-
"@streamr/test-utils": "0.0.1-tatum.
|
|
37
|
-
"@streamr/utils": "0.0.1-tatum.
|
|
33
|
+
"@streamr/dht": "0.0.1-tatum.8",
|
|
34
|
+
"@streamr/proto-rpc": "0.0.1-tatum.8",
|
|
35
|
+
"@streamr/protocol": "0.0.1-tatum.8",
|
|
36
|
+
"@streamr/test-utils": "0.0.1-tatum.8",
|
|
37
|
+
"@streamr/utils": "0.0.1-tatum.8",
|
|
38
38
|
"eventemitter3": "^5.0.0",
|
|
39
39
|
"lodash": "^4.17.21",
|
|
40
|
+
"uuid": "^9.0.1",
|
|
40
41
|
"yallist": "^4.0.0"
|
|
41
42
|
},
|
|
42
43
|
"devDependencies": {
|
|
43
44
|
"@streamr/browser-test-runner": "^0.0.1",
|
|
44
|
-
"@types/lodash": "^4.14.
|
|
45
|
+
"@types/lodash": "^4.14.200",
|
|
46
|
+
"@types/uuid": "^9.0.6",
|
|
45
47
|
"@types/yallist": "^4.0.1",
|
|
46
|
-
"commander": "^11.
|
|
48
|
+
"commander": "^11.1.0",
|
|
47
49
|
"expect": "^29.6.2",
|
|
48
50
|
"express": "^4.17.1",
|
|
49
51
|
"ts-essentials": "^9.4.1",
|
package/dist/src/NetworkNode.js
CHANGED
|
@@ -71,14 +71,14 @@ class NetworkNode {
|
|
|
71
71
|
return this.stack.getStreamrNode().getNeighbors(streamPartId);
|
|
72
72
|
}
|
|
73
73
|
hasStreamPart(streamPartId) {
|
|
74
|
-
return this.stack.getStreamrNode().
|
|
74
|
+
return this.stack.getStreamrNode().hasStreamPart(streamPartId);
|
|
75
75
|
}
|
|
76
76
|
async stop() {
|
|
77
77
|
this.stopped = true;
|
|
78
78
|
await this.stack.stop();
|
|
79
79
|
}
|
|
80
80
|
getPeerDescriptor() {
|
|
81
|
-
return this.stack.
|
|
81
|
+
return this.stack.getLayer0Node().getPeerDescriptor();
|
|
82
82
|
}
|
|
83
83
|
getMetricsContext() {
|
|
84
84
|
return this.stack.getMetricsContext();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NetworkNode.js","sourceRoot":"","sources":["../../src/NetworkNode.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"NetworkNode.js","sourceRoot":"","sources":["../../src/NetworkNode.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { DhtNodeOptions } from '@streamr/dht';
|
|
2
2
|
import { StreamrNode, StreamrNodeConfig } from './logic/StreamrNode';
|
|
3
3
|
import { MetricsContext } from '@streamr/utils';
|
|
4
4
|
import { EventEmitter } from 'eventemitter3';
|
|
5
5
|
import { StreamPartID } from '@streamr/protocol';
|
|
6
6
|
import { StreamMessage } from './proto/packages/trackerless-network/protos/NetworkRpc';
|
|
7
|
+
import { Layer0Node } from './logic/Layer0Node';
|
|
7
8
|
export interface NetworkOptions {
|
|
8
9
|
layer0?: DhtNodeOptions;
|
|
9
10
|
networkNode?: StreamrNodeConfig;
|
|
@@ -13,7 +14,7 @@ export interface NetworkStackEvents {
|
|
|
13
14
|
stopped: () => void;
|
|
14
15
|
}
|
|
15
16
|
export declare class NetworkStack extends EventEmitter<NetworkStackEvents> {
|
|
16
|
-
private
|
|
17
|
+
private layer0Node?;
|
|
17
18
|
private streamrNode?;
|
|
18
19
|
private readonly metricsContext;
|
|
19
20
|
private readonly options;
|
|
@@ -24,11 +25,9 @@ export declare class NetworkStack extends EventEmitter<NetworkStackEvents> {
|
|
|
24
25
|
}): Promise<void>;
|
|
25
26
|
broadcast(msg: StreamMessage): Promise<void>;
|
|
26
27
|
start(doJoin?: boolean): Promise<void>;
|
|
27
|
-
private
|
|
28
|
-
private waitForFirstConnection;
|
|
29
|
-
private joinLayer0IfRequired;
|
|
28
|
+
private ensureConnectedToControlLayer;
|
|
30
29
|
getStreamrNode(): StreamrNode;
|
|
31
|
-
|
|
30
|
+
getLayer0Node(): Layer0Node;
|
|
32
31
|
getMetricsContext(): MetricsContext;
|
|
33
32
|
stop(): Promise<void>;
|
|
34
33
|
}
|
package/dist/src/NetworkStack.js
CHANGED
|
@@ -7,38 +7,17 @@ const utils_1 = require("@streamr/utils");
|
|
|
7
7
|
const eventemitter3_1 = require("eventemitter3");
|
|
8
8
|
const protocol_1 = require("@streamr/protocol");
|
|
9
9
|
const NetworkRpc_1 = require("./proto/packages/trackerless-network/protos/NetworkRpc");
|
|
10
|
-
class ReadinessListener {
|
|
11
|
-
constructor(networkStack, dhtNode) {
|
|
12
|
-
this.emitter = new eventemitter3_1.EventEmitter();
|
|
13
|
-
this.onDone = () => {
|
|
14
|
-
this.networkStack.off('stopped', this.onDone);
|
|
15
|
-
this.dhtNode.off('connected', this.onDone);
|
|
16
|
-
this.emitter.emit('done');
|
|
17
|
-
};
|
|
18
|
-
this.networkStack = networkStack;
|
|
19
|
-
this.dhtNode = dhtNode;
|
|
20
|
-
this.networkStack.on('stopped', this.onDone);
|
|
21
|
-
this.dhtNode.on('connected', this.onDone);
|
|
22
|
-
}
|
|
23
|
-
async waitUntilReady(timeout) {
|
|
24
|
-
if (this.dhtNode.getNumberOfConnections() === 0) {
|
|
25
|
-
await (0, utils_1.waitForEvent3)(this.emitter, 'done', timeout);
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
const DEFAULT_FIRST_CONNECTION_TIMEOUT = 5000;
|
|
30
10
|
class NetworkStack extends eventemitter3_1.EventEmitter {
|
|
31
11
|
constructor(options) {
|
|
32
12
|
super();
|
|
33
13
|
this.options = options;
|
|
34
14
|
this.metricsContext = options.metricsContext ?? new utils_1.MetricsContext();
|
|
35
|
-
this.
|
|
15
|
+
this.layer0Node = new dht_1.DhtNode({
|
|
36
16
|
...options.layer0,
|
|
37
17
|
metricsContext: this.metricsContext
|
|
38
18
|
});
|
|
39
19
|
this.streamrNode = new StreamrNode_1.StreamrNode({
|
|
40
20
|
...options.networkNode,
|
|
41
|
-
nodeName: options.networkNode?.nodeName ?? options.layer0?.nodeName,
|
|
42
21
|
metricsContext: this.metricsContext
|
|
43
22
|
});
|
|
44
23
|
}
|
|
@@ -46,7 +25,7 @@ class NetworkStack extends eventemitter3_1.EventEmitter {
|
|
|
46
25
|
if (this.getStreamrNode().isProxiedStreamPart(streamPartId)) {
|
|
47
26
|
throw new Error(`Cannot join to ${streamPartId} as proxy connections have been set`);
|
|
48
27
|
}
|
|
49
|
-
await this.
|
|
28
|
+
await this.ensureConnectedToControlLayer();
|
|
50
29
|
this.getStreamrNode().joinStreamPart(streamPartId);
|
|
51
30
|
if (neighborRequirement !== undefined) {
|
|
52
31
|
await (0, utils_1.waitForCondition)(() => {
|
|
@@ -59,53 +38,45 @@ class NetworkStack extends eventemitter3_1.EventEmitter {
|
|
|
59
38
|
if (this.getStreamrNode().isProxiedStreamPart(streamPartId, NetworkRpc_1.ProxyDirection.SUBSCRIBE) && (msg.messageType === NetworkRpc_1.StreamMessageType.MESSAGE)) {
|
|
60
39
|
throw new Error(`Cannot broadcast to ${streamPartId} as proxy subscribe connections have been set`);
|
|
61
40
|
}
|
|
62
|
-
|
|
41
|
+
// TODO could combine these two calls to isProxiedStreamPart?
|
|
42
|
+
if (!this.streamrNode.isProxiedStreamPart(streamPartId)) {
|
|
43
|
+
await this.ensureConnectedToControlLayer();
|
|
44
|
+
}
|
|
63
45
|
this.getStreamrNode().broadcast(msg);
|
|
64
46
|
}
|
|
65
47
|
async start(doJoin = true) {
|
|
66
|
-
await this.
|
|
67
|
-
const connectionManager = this.
|
|
68
|
-
if ((this.options.layer0?.entryPoints !== undefined) && (this.options.layer0.entryPoints.some((entryPoint) => (0, dht_1.
|
|
69
|
-
await this.
|
|
48
|
+
await this.layer0Node.start();
|
|
49
|
+
const connectionManager = this.layer0Node.getTransport();
|
|
50
|
+
if ((this.options.layer0?.entryPoints !== undefined) && (this.options.layer0.entryPoints.some((entryPoint) => (0, dht_1.areEqualPeerDescriptors)(entryPoint, this.layer0Node.getPeerDescriptor())))) {
|
|
51
|
+
await this.layer0Node?.joinDht(this.options.layer0.entryPoints);
|
|
70
52
|
}
|
|
71
53
|
else {
|
|
72
54
|
if (doJoin) {
|
|
73
|
-
|
|
55
|
+
// in practice there aren't be existing connections and therefore this always connects
|
|
56
|
+
await this.ensureConnectedToControlLayer();
|
|
74
57
|
}
|
|
75
58
|
}
|
|
76
|
-
await this.streamrNode?.start(this.
|
|
59
|
+
await this.streamrNode?.start(this.layer0Node, connectionManager, connectionManager);
|
|
77
60
|
}
|
|
78
|
-
async
|
|
79
|
-
setImmediate(async () => {
|
|
80
|
-
if (this.options.layer0?.entryPoints !== undefined) {
|
|
81
|
-
// TODO should catch possible rejection?
|
|
82
|
-
await this.layer0DhtNode?.joinDht(this.options.layer0.entryPoints);
|
|
83
|
-
}
|
|
84
|
-
});
|
|
85
|
-
await this.waitForFirstConnection();
|
|
86
|
-
}
|
|
87
|
-
async waitForFirstConnection() {
|
|
88
|
-
const readinessListener = new ReadinessListener(this, this.layer0DhtNode);
|
|
89
|
-
const timeout = this.options.networkNode?.firstConnectionTimeout ?? DEFAULT_FIRST_CONNECTION_TIMEOUT;
|
|
90
|
-
await readinessListener.waitUntilReady(timeout);
|
|
91
|
-
}
|
|
92
|
-
async joinLayer0IfRequired(streamPartId) {
|
|
93
|
-
if (this.streamrNode.isProxiedStreamPart(streamPartId)) {
|
|
94
|
-
return;
|
|
95
|
-
}
|
|
61
|
+
async ensureConnectedToControlLayer() {
|
|
96
62
|
// TODO we could wrap joinDht with pOnce and call it here (no else-if needed in that case)
|
|
97
|
-
if (!this.
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
63
|
+
if (!this.layer0Node.hasJoined()) {
|
|
64
|
+
setImmediate(async () => {
|
|
65
|
+
if (this.options.layer0?.entryPoints !== undefined) {
|
|
66
|
+
// TODO should catch possible rejection?
|
|
67
|
+
// the question mark is there to avoid problems when stop() is called before start()
|
|
68
|
+
// -> TODO change to exlamation mark if we don't support that (and remove NetworkStackStoppedDuringStart.test)
|
|
69
|
+
await this.layer0Node?.joinDht(this.options.layer0.entryPoints);
|
|
70
|
+
}
|
|
71
|
+
});
|
|
102
72
|
}
|
|
73
|
+
await this.layer0Node.waitForNetworkConnectivity();
|
|
103
74
|
}
|
|
104
75
|
getStreamrNode() {
|
|
105
76
|
return this.streamrNode;
|
|
106
77
|
}
|
|
107
|
-
|
|
108
|
-
return this.
|
|
78
|
+
getLayer0Node() {
|
|
79
|
+
return this.layer0Node;
|
|
109
80
|
}
|
|
110
81
|
getMetricsContext() {
|
|
111
82
|
return this.metricsContext;
|
|
@@ -113,7 +84,7 @@ class NetworkStack extends eventemitter3_1.EventEmitter {
|
|
|
113
84
|
async stop() {
|
|
114
85
|
await this.streamrNode.destroy();
|
|
115
86
|
this.streamrNode = undefined;
|
|
116
|
-
this.
|
|
87
|
+
this.layer0Node = undefined;
|
|
117
88
|
this.emit('stopped');
|
|
118
89
|
}
|
|
119
90
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NetworkStack.js","sourceRoot":"","sources":["../../src/NetworkStack.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"NetworkStack.js","sourceRoot":"","sources":["../../src/NetworkStack.ts"],"names":[],"mappings":"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"}
|
package/dist/src/identifiers.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getNodeIdFromPeerDescriptor = void 0;
|
|
4
|
-
const
|
|
4
|
+
const utils_1 = require("@streamr/utils");
|
|
5
5
|
const getNodeIdFromPeerDescriptor = (peerDescriptor) => {
|
|
6
|
-
return (0,
|
|
6
|
+
return (0, utils_1.binaryToHex)(peerDescriptor.kademliaId);
|
|
7
7
|
};
|
|
8
8
|
exports.getNodeIdFromPeerDescriptor = getNodeIdFromPeerDescriptor;
|
|
9
9
|
//# sourceMappingURL=identifiers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"identifiers.js","sourceRoot":"","sources":["../../src/identifiers.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"identifiers.js","sourceRoot":"","sources":["../../src/identifiers.ts"],"names":[],"mappings":";;;AACA,0CAA2D;AAIpD,MAAM,2BAA2B,GAAG,CAAC,cAA8B,EAAU,EAAE;IAClF,OAAO,IAAA,mBAAW,EAAC,cAAc,CAAC,UAAU,CAAsB,CAAA;AACtE,CAAC,CAAA;AAFY,QAAA,2BAA2B,+BAEvC"}
|
|
@@ -1,21 +1,22 @@
|
|
|
1
1
|
import { ListeningRpcCommunicator, PeerDescriptor } from '@streamr/dht';
|
|
2
2
|
import { Empty } from '../proto/google/protobuf/empty';
|
|
3
3
|
import { LeaveStreamPartNotice, MessageID, MessageRef, StreamMessage } from '../proto/packages/trackerless-network/protos/NetworkRpc';
|
|
4
|
-
import {
|
|
4
|
+
import { IDeliveryRpc } from '../proto/packages/trackerless-network/protos/NetworkRpc.server';
|
|
5
5
|
import { ServerCallContext } from '@protobuf-ts/runtime-rpc';
|
|
6
6
|
import { NodeID } from '../identifiers';
|
|
7
|
-
|
|
7
|
+
import { StreamPartID } from '@streamr/protocol';
|
|
8
|
+
export interface DeliveryRpcLocalConfig {
|
|
8
9
|
ownPeerDescriptor: PeerDescriptor;
|
|
9
|
-
|
|
10
|
+
streamPartId: StreamPartID;
|
|
10
11
|
markAndCheckDuplicate: (messageId: MessageID, previousMessageRef?: MessageRef) => boolean;
|
|
11
12
|
broadcast: (message: StreamMessage, previousNode?: NodeID) => void;
|
|
12
13
|
onLeaveNotice(senderId: NodeID): void;
|
|
13
14
|
markForInspection(senderId: NodeID, messageId: MessageID): void;
|
|
14
15
|
rpcCommunicator: ListeningRpcCommunicator;
|
|
15
16
|
}
|
|
16
|
-
export declare class
|
|
17
|
+
export declare class DeliveryRpcLocal implements IDeliveryRpc {
|
|
17
18
|
private readonly config;
|
|
18
|
-
constructor(config:
|
|
19
|
+
constructor(config: DeliveryRpcLocalConfig);
|
|
19
20
|
sendStreamMessage(message: StreamMessage, context: ServerCallContext): Promise<Empty>;
|
|
20
21
|
leaveStreamPartNotice(message: LeaveStreamPartNotice, context: ServerCallContext): Promise<Empty>;
|
|
21
22
|
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.DeliveryRpcLocal = void 0;
|
|
4
4
|
const empty_1 = require("../proto/google/protobuf/empty");
|
|
5
5
|
const identifiers_1 = require("../identifiers");
|
|
6
|
-
class
|
|
6
|
+
class DeliveryRpcLocal {
|
|
7
7
|
constructor(config) {
|
|
8
8
|
this.config = config;
|
|
9
9
|
}
|
|
@@ -16,7 +16,7 @@ class StreamNodeServer {
|
|
|
16
16
|
return empty_1.Empty;
|
|
17
17
|
}
|
|
18
18
|
async leaveStreamPartNotice(message, context) {
|
|
19
|
-
if (message.
|
|
19
|
+
if (message.streamPartId === this.config.streamPartId) {
|
|
20
20
|
const senderPeerDescriptor = context.incomingSourceDescriptor;
|
|
21
21
|
const senderId = (0, identifiers_1.getNodeIdFromPeerDescriptor)(senderPeerDescriptor);
|
|
22
22
|
this.config.onLeaveNotice(senderId);
|
|
@@ -24,5 +24,5 @@ class StreamNodeServer {
|
|
|
24
24
|
return empty_1.Empty;
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
|
-
exports.
|
|
28
|
-
//# sourceMappingURL=
|
|
27
|
+
exports.DeliveryRpcLocal = DeliveryRpcLocal;
|
|
28
|
+
//# sourceMappingURL=DeliveryRpcLocal.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"
|
|
1
|
+
{"version":3,"file":"DeliveryRpcLocal.js","sourceRoot":"","sources":["../../../src/logic/DeliveryRpcLocal.ts"],"names":[],"mappings":";;;AACA,0DAAsD;AAStD,gDAAoE;AAapE,MAAa,gBAAgB;IAIzB,YAAY,MAA8B;QACtC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACxB,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,OAAsB,EAAE,OAA0B;QACtE,MAAM,YAAY,GAAG,IAAA,yCAA2B,EAAE,OAA0B,CAAC,wBAAyB,CAAC,CAAA;QACvG,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,YAAY,EAAE,OAAO,CAAC,SAAU,CAAC,CAAA;QAC/D,IAAI,IAAI,CAAC,MAAM,CAAC,qBAAqB,CAAC,OAAO,CAAC,SAAU,EAAE,OAAO,CAAC,kBAAkB,CAAC,EAAE;YACnF,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,YAAY,CAAC,CAAA;SAC/C;QACD,OAAO,aAAK,CAAA;IAChB,CAAC;IAED,KAAK,CAAC,qBAAqB,CAAC,OAA8B,EAAE,OAA0B;QAClF,IAAI,OAAO,CAAC,YAAY,KAAK,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE;YACnD,MAAM,oBAAoB,GAAI,OAA0B,CAAC,wBAAyB,CAAA;YAClF,MAAM,QAAQ,GAAG,IAAA,yCAA2B,EAAC,oBAAoB,CAAC,CAAA;YAClE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAA;SACtC;QACD,OAAO,aAAK,CAAA;IAChB,CAAC;CACJ;AAzBD,4CAyBC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Remote } from '@streamr/dht';
|
|
2
2
|
import { StreamMessage } from '../proto/packages/trackerless-network/protos/NetworkRpc';
|
|
3
|
-
import {
|
|
4
|
-
export declare class
|
|
3
|
+
import { IDeliveryRpcClient } from '../proto/packages/trackerless-network/protos/NetworkRpc.client';
|
|
4
|
+
export declare class DeliveryRpcRemote extends Remote<IDeliveryRpcClient> {
|
|
5
5
|
sendStreamMessage(msg: StreamMessage): Promise<void>;
|
|
6
6
|
leaveStreamPartNotice(): void;
|
|
7
7
|
}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.DeliveryRpcRemote = void 0;
|
|
4
4
|
const dht_1 = require("@streamr/dht");
|
|
5
5
|
const utils_1 = require("@streamr/utils");
|
|
6
6
|
const logger = new utils_1.Logger(module);
|
|
7
|
-
class
|
|
7
|
+
class DeliveryRpcRemote extends dht_1.Remote {
|
|
8
8
|
async sendStreamMessage(msg) {
|
|
9
9
|
const options = this.formDhtRpcOptions({
|
|
10
10
|
notification: true
|
|
@@ -15,7 +15,7 @@ class RemoteRandomGraphNode extends dht_1.Remote {
|
|
|
15
15
|
}
|
|
16
16
|
leaveStreamPartNotice() {
|
|
17
17
|
const notification = {
|
|
18
|
-
|
|
18
|
+
streamPartId: this.getServiceId()
|
|
19
19
|
};
|
|
20
20
|
const options = this.formDhtRpcOptions({
|
|
21
21
|
notification: true
|
|
@@ -25,5 +25,5 @@ class RemoteRandomGraphNode extends dht_1.Remote {
|
|
|
25
25
|
});
|
|
26
26
|
}
|
|
27
27
|
}
|
|
28
|
-
exports.
|
|
29
|
-
//# sourceMappingURL=
|
|
28
|
+
exports.DeliveryRpcRemote = DeliveryRpcRemote;
|
|
29
|
+
//# sourceMappingURL=DeliveryRpcRemote.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DeliveryRpcRemote.js","sourceRoot":"","sources":["../../../src/logic/DeliveryRpcRemote.ts"],"names":[],"mappings":";;;AAAA,sCAAqC;AACrC,0CAAuC;AAOvC,MAAM,MAAM,GAAG,IAAI,cAAM,CAAC,MAAM,CAAC,CAAA;AAEjC,MAAa,iBAAkB,SAAQ,YAA0B;IAE7D,KAAK,CAAC,iBAAiB,CAAC,GAAkB;QACtC,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC;YACnC,YAAY,EAAE,IAAI;SACrB,CAAC,CAAA;QACF,IAAI,CAAC,SAAS,EAAE,CAAC,iBAAiB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;YACxD,MAAM,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAA;QAC/C,CAAC,CAAC,CAAA;IACN,CAAC;IAED,qBAAqB;QACjB,MAAM,YAAY,GAA0B;YACxC,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE;SACpC,CAAA;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC;YACnC,YAAY,EAAE,IAAI;SACrB,CAAC,CAAA;QACF,IAAI,CAAC,SAAS,EAAE,CAAC,qBAAqB,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;YACrE,MAAM,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAA;QACxD,CAAC,CAAC,CAAA;IACN,CAAC;CACJ;AAtBD,8CAsBC"}
|
|
@@ -1,33 +1,31 @@
|
|
|
1
|
-
import { DataEntry, PeerDescriptor
|
|
1
|
+
import { DataEntry, PeerDescriptor } from '@streamr/dht';
|
|
2
2
|
import { StreamPartID } from '@streamr/protocol';
|
|
3
3
|
import { Any } from '../proto/google/protobuf/any';
|
|
4
|
-
import {
|
|
4
|
+
import { Layer1Node } from './Layer1Node';
|
|
5
5
|
export declare const streamPartIdToDataKey: (streamPartId: StreamPartID) => Uint8Array;
|
|
6
6
|
interface FindEntryPointsResult {
|
|
7
7
|
entryPointsFromDht: boolean;
|
|
8
8
|
discoveredEntryPoints: PeerDescriptor[];
|
|
9
9
|
}
|
|
10
10
|
export declare const NETWORK_SPLIT_AVOIDANCE_LIMIT = 4;
|
|
11
|
-
interface
|
|
11
|
+
interface EntryPointDiscoveryConfig {
|
|
12
12
|
streamPartId: StreamPartID;
|
|
13
13
|
ownPeerDescriptor: PeerDescriptor;
|
|
14
|
-
|
|
15
|
-
getEntryPointData: (key: Uint8Array) => Promise<
|
|
16
|
-
getEntryPointDataViaNode: (key: Uint8Array, node: PeerDescriptor) => Promise<DataEntry[]>;
|
|
14
|
+
layer1Node: Layer1Node;
|
|
15
|
+
getEntryPointData: (key: Uint8Array) => Promise<DataEntry[]>;
|
|
17
16
|
storeEntryPointData: (key: Uint8Array, data: Any) => Promise<PeerDescriptor[]>;
|
|
18
17
|
deleteEntryPointData: (key: Uint8Array) => Promise<void>;
|
|
19
|
-
|
|
18
|
+
storeInterval?: number;
|
|
20
19
|
}
|
|
21
|
-
export declare class
|
|
20
|
+
export declare class EntryPointDiscovery {
|
|
22
21
|
private readonly abortController;
|
|
23
22
|
private readonly config;
|
|
24
|
-
private readonly
|
|
23
|
+
private readonly storeInterval;
|
|
25
24
|
private readonly networkSplitAvoidedNodes;
|
|
26
|
-
constructor(config:
|
|
27
|
-
discoverEntryPointsFromDht(knownEntryPointCount: number
|
|
25
|
+
constructor(config: EntryPointDiscoveryConfig);
|
|
26
|
+
discoverEntryPointsFromDht(knownEntryPointCount: number): Promise<FindEntryPointsResult>;
|
|
28
27
|
private discoverEntryPoints;
|
|
29
28
|
private queryEntrypoints;
|
|
30
|
-
private queryEntryPointsViaNode;
|
|
31
29
|
storeSelfAsEntryPointIfNecessary(currentEntrypointCount: number): Promise<void>;
|
|
32
30
|
private storeSelfAsEntryPoint;
|
|
33
31
|
private keepSelfAsEntryPoint;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.EntryPointDiscovery = exports.NETWORK_SPLIT_AVOIDANCE_LIMIT = exports.streamPartIdToDataKey = void 0;
|
|
4
4
|
const dht_1 = require("@streamr/dht");
|
|
5
5
|
const utils_1 = require("@streamr/utils");
|
|
6
6
|
const crypto_1 = require("crypto");
|
|
@@ -37,21 +37,21 @@ const exponentialRunOff = async (task, description, abortSignal, baseDelay = 500
|
|
|
37
37
|
const logger = new utils_1.Logger(module);
|
|
38
38
|
const ENTRYPOINT_STORE_LIMIT = 8;
|
|
39
39
|
exports.NETWORK_SPLIT_AVOIDANCE_LIMIT = 4;
|
|
40
|
-
class
|
|
40
|
+
class EntryPointDiscovery {
|
|
41
41
|
constructor(config) {
|
|
42
42
|
this.networkSplitAvoidedNodes = new Set();
|
|
43
43
|
this.config = config;
|
|
44
44
|
this.abortController = new AbortController();
|
|
45
|
-
this.
|
|
45
|
+
this.storeInterval = this.config.storeInterval ?? 60000;
|
|
46
46
|
}
|
|
47
|
-
async discoverEntryPointsFromDht(knownEntryPointCount
|
|
47
|
+
async discoverEntryPointsFromDht(knownEntryPointCount) {
|
|
48
48
|
if (knownEntryPointCount > 0) {
|
|
49
49
|
return {
|
|
50
50
|
entryPointsFromDht: false,
|
|
51
51
|
discoveredEntryPoints: []
|
|
52
52
|
};
|
|
53
53
|
}
|
|
54
|
-
const discoveredEntryPoints = await this.discoverEntryPoints(
|
|
54
|
+
const discoveredEntryPoints = await this.discoverEntryPoints();
|
|
55
55
|
if (discoveredEntryPoints.length === 0) {
|
|
56
56
|
discoveredEntryPoints.push(this.config.ownPeerDescriptor);
|
|
57
57
|
}
|
|
@@ -60,10 +60,9 @@ class StreamPartEntryPointDiscovery {
|
|
|
60
60
|
entryPointsFromDht: true
|
|
61
61
|
};
|
|
62
62
|
}
|
|
63
|
-
async discoverEntryPoints(
|
|
63
|
+
async discoverEntryPoints() {
|
|
64
64
|
const dataKey = (0, exports.streamPartIdToDataKey)(this.config.streamPartId);
|
|
65
|
-
const discoveredEntryPoints =
|
|
66
|
-
await this.queryEntryPointsViaNode(dataKey, forwardingNode) : await this.queryEntrypoints(dataKey);
|
|
65
|
+
const discoveredEntryPoints = await this.queryEntrypoints(dataKey);
|
|
67
66
|
const filtered = discoveredEntryPoints.filter((node) => !this.networkSplitAvoidedNodes.has((0, identifiers_1.getNodeIdFromPeerDescriptor)(node)));
|
|
68
67
|
// If all discovered entry points have previously been detected as offline, try again
|
|
69
68
|
if (filtered.length > 0) {
|
|
@@ -74,31 +73,10 @@ class StreamPartEntryPointDiscovery {
|
|
|
74
73
|
}
|
|
75
74
|
}
|
|
76
75
|
async queryEntrypoints(key) {
|
|
77
|
-
logger.trace(`Finding data from dht node ${this.config.ownPeerDescriptor
|
|
76
|
+
logger.trace(`Finding data from dht node ${(0, identifiers_1.getNodeIdFromPeerDescriptor)(this.config.ownPeerDescriptor)}`);
|
|
78
77
|
try {
|
|
79
|
-
const
|
|
80
|
-
|
|
81
|
-
return parseEntryPointData(results.dataEntries);
|
|
82
|
-
}
|
|
83
|
-
else {
|
|
84
|
-
return [];
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
catch (err) {
|
|
88
|
-
return [];
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
// TODO remove this method in NET-1122
|
|
92
|
-
async queryEntryPointsViaNode(key, node) {
|
|
93
|
-
logger.trace(`Finding data via node ${this.config.ownPeerDescriptor.nodeName}`);
|
|
94
|
-
try {
|
|
95
|
-
const results = await this.config.getEntryPointDataViaNode(key, node);
|
|
96
|
-
if (results) {
|
|
97
|
-
return parseEntryPointData(results);
|
|
98
|
-
}
|
|
99
|
-
else {
|
|
100
|
-
return [];
|
|
101
|
-
}
|
|
78
|
+
const result = await this.config.getEntryPointData(key);
|
|
79
|
+
return parseEntryPointData(result);
|
|
102
80
|
}
|
|
103
81
|
catch (err) {
|
|
104
82
|
return [];
|
|
@@ -108,7 +86,7 @@ class StreamPartEntryPointDiscovery {
|
|
|
108
86
|
if (this.abortController.signal.aborted) {
|
|
109
87
|
return;
|
|
110
88
|
}
|
|
111
|
-
const possibleNetworkSplitDetected = this.config.
|
|
89
|
+
const possibleNetworkSplitDetected = this.config.layer1Node.getBucketSize() < exports.NETWORK_SPLIT_AVOIDANCE_LIMIT;
|
|
112
90
|
if ((currentEntrypointCount < ENTRYPOINT_STORE_LIMIT) || possibleNetworkSplitDetected) {
|
|
113
91
|
await this.storeSelfAsEntryPoint();
|
|
114
92
|
await this.keepSelfAsEntryPoint();
|
|
@@ -133,23 +111,23 @@ class StreamPartEntryPointDiscovery {
|
|
|
133
111
|
try {
|
|
134
112
|
const discovered = await this.discoverEntryPoints();
|
|
135
113
|
if (discovered.length < ENTRYPOINT_STORE_LIMIT
|
|
136
|
-
|| discovered.some((peerDescriptor) => (0, dht_1.
|
|
114
|
+
|| discovered.some((peerDescriptor) => (0, dht_1.areEqualPeerDescriptors)(peerDescriptor, this.config.ownPeerDescriptor))) {
|
|
137
115
|
await this.storeSelfAsEntryPoint();
|
|
138
116
|
}
|
|
139
117
|
}
|
|
140
118
|
catch (err) {
|
|
141
119
|
logger.debug(`Failed to keep self as entrypoint for ${this.config.streamPartId}`);
|
|
142
120
|
}
|
|
143
|
-
}, this.
|
|
121
|
+
}, this.storeInterval, false, this.abortController.signal);
|
|
144
122
|
}
|
|
145
123
|
async avoidNetworkSplit() {
|
|
146
124
|
await exponentialRunOff(async () => {
|
|
147
125
|
const rediscoveredEntrypoints = await this.discoverEntryPoints();
|
|
148
|
-
await this.config.
|
|
149
|
-
if (this.config.
|
|
126
|
+
await this.config.layer1Node.joinDht(rediscoveredEntrypoints, false, false);
|
|
127
|
+
if (this.config.layer1Node.getBucketSize() < exports.NETWORK_SPLIT_AVOIDANCE_LIMIT) {
|
|
150
128
|
// Filter out nodes that are not in the k-bucket, assumed to be offline
|
|
151
129
|
const nodesToAvoid = rediscoveredEntrypoints
|
|
152
|
-
.filter((peer) => !this.config.
|
|
130
|
+
.filter((peer) => !this.config.layer1Node.getKBucketPeers().includes(peer))
|
|
153
131
|
.map((peer) => (0, identifiers_1.getNodeIdFromPeerDescriptor)(peer));
|
|
154
132
|
nodesToAvoid.forEach((node) => this.networkSplitAvoidedNodes.add(node));
|
|
155
133
|
throw new Error(`Network split is still possible`);
|
|
@@ -163,5 +141,5 @@ class StreamPartEntryPointDiscovery {
|
|
|
163
141
|
await this.config.deleteEntryPointData((0, exports.streamPartIdToDataKey)(this.config.streamPartId));
|
|
164
142
|
}
|
|
165
143
|
}
|
|
166
|
-
exports.
|
|
167
|
-
//# sourceMappingURL=
|
|
144
|
+
exports.EntryPointDiscovery = EntryPointDiscovery;
|
|
145
|
+
//# sourceMappingURL=EntryPointDiscovery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EntryPointDiscovery.js","sourceRoot":"","sources":["../../../src/logic/EntryPointDiscovery.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { DataEntry, ITransport, PeerDescriptor } from '@streamr/dht';
|
|
2
|
+
import { Any } from '../proto/google/protobuf/any';
|
|
3
|
+
export interface Layer0Node extends ITransport {
|
|
4
|
+
joinDht(entryPointDescriptors: PeerDescriptor[]): Promise<void>;
|
|
5
|
+
hasJoined(): boolean;
|
|
6
|
+
getPeerDescriptor(): PeerDescriptor;
|
|
7
|
+
getDataFromDht(key: Uint8Array): Promise<DataEntry[]>;
|
|
8
|
+
storeDataToDht(key: Uint8Array, data: Any): Promise<PeerDescriptor[]>;
|
|
9
|
+
deleteDataFromDht(key: Uint8Array): Promise<void>;
|
|
10
|
+
waitForNetworkConnectivity(): Promise<void>;
|
|
11
|
+
getTransport(): ITransport;
|
|
12
|
+
start(): Promise<void>;
|
|
13
|
+
stop(): Promise<void>;
|
|
14
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Layer0Node.js","sourceRoot":"","sources":["../../../src/logic/Layer0Node.ts"],"names":[],"mappings":""}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { PeerDescriptor } from '@streamr/dht';
|
|
2
|
-
export interface
|
|
2
|
+
export interface Layer1NodeEvents {
|
|
3
3
|
newContact: (peerDescriptor: PeerDescriptor, closestPeers: PeerDescriptor[]) => void;
|
|
4
4
|
contactRemoved: (peerDescriptor: PeerDescriptor, closestPeers: PeerDescriptor[]) => void;
|
|
5
5
|
newRandomContact: (peerDescriptor: PeerDescriptor, randomPeers: PeerDescriptor[]) => void;
|
|
6
6
|
randomContactRemoved: (peerDescriptor: PeerDescriptor, randomPeers: PeerDescriptor[]) => void;
|
|
7
7
|
}
|
|
8
|
-
export interface
|
|
9
|
-
on<T extends keyof
|
|
10
|
-
once<T extends keyof
|
|
11
|
-
off<T extends keyof
|
|
8
|
+
export interface Layer1Node {
|
|
9
|
+
on<T extends keyof Layer1NodeEvents>(eventName: T, listener: (peerDescriptor: PeerDescriptor, peers: PeerDescriptor[]) => void): void;
|
|
10
|
+
once<T extends keyof Layer1NodeEvents>(eventName: T, listener: (peerDescriptor: PeerDescriptor, peers: PeerDescriptor[]) => void): void;
|
|
11
|
+
off<T extends keyof Layer1NodeEvents>(eventName: T, listener: (peerDescriptor: PeerDescriptor, peers: PeerDescriptor[]) => void): void;
|
|
12
12
|
removeContact: (peerDescriptor: PeerDescriptor, removeFromOpenInternetPeers?: boolean) => void;
|
|
13
13
|
getClosestContacts: (maxCount?: number) => PeerDescriptor[];
|
|
14
14
|
getKBucketPeers: () => PeerDescriptor[];
|