@streamr/trackerless-network 0.0.1-tatum.6 → 0.0.1-tatum.7
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 +1 -1
- package/dist/src/NetworkNode.js.map +1 -1
- package/dist/src/NetworkStack.d.ts +1 -3
- package/dist/src/NetworkStack.js +18 -47
- 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} +8 -10
- package/dist/src/logic/{StreamPartEntryPointDiscovery.js → EntryPointDiscovery.js} +14 -36
- package/dist/src/logic/EntryPointDiscovery.js.map +1 -0
- package/dist/src/logic/ILayer0.d.ts +3 -6
- 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 +8 -12
- package/dist/src/logic/RandomGraphNode.js +41 -40
- package/dist/src/logic/RandomGraphNode.js.map +1 -1
- package/dist/src/logic/StreamrNode.d.ts +9 -12
- package/dist/src/logic/StreamrNode.js +53 -63
- 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} +6 -9
- package/dist/src/logic/proxy/{ProxyStreamConnectionClient.js → ProxyClient.js} +23 -21
- 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.d.ts +0 -4
- package/dist/src/proto/packages/dht/protos/DhtRpc.js +1 -2
- package/dist/src/proto/packages/dht/protos/DhtRpc.js.map +1 -1
- 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 +10 -13
- package/dist/test/benchmark/first-message.js.map +1 -1
- package/dist/test/utils/utils.d.ts +5 -5
- package/dist/test/utils/utils.js +14 -13
- package/dist/test/utils/utils.js.map +1 -1
- package/package.json +10 -8
- package/protos/NetworkRpc.proto +5 -5
- package/src/NetworkNode.ts +1 -1
- package/src/NetworkStack.ts +20 -62
- 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} +18 -42
- package/src/logic/ILayer0.ts +3 -6
- package/src/logic/NodeList.ts +12 -12
- package/src/logic/RandomGraphNode.ts +61 -62
- package/src/logic/StreamrNode.ts +59 -73
- 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} +27 -27
- 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.ts +1 -6
- 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 +10 -13
- package/test/end-to-end/inspect.test.ts +12 -12
- package/test/end-to-end/proxy-and-full-node.test.ts +13 -14
- 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 +7 -7
- 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 +3 -2
- 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 +2 -2
- package/test/integration/RandomGraphNode-Layer1Node-Latencies.test.ts +10 -8
- package/test/integration/RandomGraphNode-Layer1Node.test.ts +17 -17
- package/test/integration/StreamrNode.test.ts +5 -3
- package/test/integration/joining-streams-on-offline-peers.test.ts +16 -18
- package/test/integration/stream-without-default-entrypoints.test.ts +11 -13
- package/test/unit/{StreamNodeServer.test.ts → DeliveryRpcLocal.test.ts} +8 -8
- package/test/unit/{StreamPartEntrypointDiscovery.test.ts → EntrypointDiscovery.test.ts} +23 -40
- 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 +6 -5
- package/test/unit/StreamMessageTranslator.test.ts +10 -9
- package/test/unit/StreamrNode.test.ts +8 -8
- package/test/utils/mock/MockLayer0.ts +7 -26
- package/test/utils/mock/MockLayer1.ts +3 -8
- 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 +13 -12
- 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
|
@@ -4,24 +4,23 @@ exports.RandomGraphNode = void 0;
|
|
|
4
4
|
const eventemitter3_1 = require("eventemitter3");
|
|
5
5
|
const NetworkRpc_1 = require("../proto/packages/trackerless-network/protos/NetworkRpc");
|
|
6
6
|
const NetworkRpc_client_1 = require("../proto/packages/trackerless-network/protos/NetworkRpc.client");
|
|
7
|
-
const
|
|
7
|
+
const DeliveryRpcRemote_1 = require("./DeliveryRpcRemote");
|
|
8
8
|
const utils_1 = require("@streamr/utils");
|
|
9
9
|
const proto_rpc_1 = require("@streamr/proto-rpc");
|
|
10
|
-
const
|
|
10
|
+
const DeliveryRpcLocal_1 = require("./DeliveryRpcLocal");
|
|
11
11
|
const utils_2 = require("./utils");
|
|
12
12
|
const identifiers_1 = require("../identifiers");
|
|
13
13
|
const logger = new utils_1.Logger(module);
|
|
14
14
|
class RandomGraphNode extends eventemitter3_1.EventEmitter {
|
|
15
15
|
constructor(config) {
|
|
16
16
|
super();
|
|
17
|
-
this.stopped = false;
|
|
18
17
|
this.started = false;
|
|
19
18
|
this.abortController = new AbortController();
|
|
20
19
|
this.config = config;
|
|
21
20
|
this.duplicateDetectors = new Map();
|
|
22
|
-
this.
|
|
21
|
+
this.deliveryRpcLocal = new DeliveryRpcLocal_1.DeliveryRpcLocal({
|
|
23
22
|
ownPeerDescriptor: this.config.ownPeerDescriptor,
|
|
24
|
-
|
|
23
|
+
streamPartId: this.config.streamPartId,
|
|
25
24
|
rpcCommunicator: this.config.rpcCommunicator,
|
|
26
25
|
markAndCheckDuplicate: (msg, prev) => (0, utils_2.markAndCheckDuplicate)(this.duplicateDetectors, msg, prev),
|
|
27
26
|
broadcast: (message, previousNode) => this.broadcast(message, previousNode),
|
|
@@ -29,15 +28,15 @@ class RandomGraphNode extends eventemitter3_1.EventEmitter {
|
|
|
29
28
|
const contact = this.config.nearbyNodeView.get(senderId)
|
|
30
29
|
|| this.config.randomNodeView.get(senderId)
|
|
31
30
|
|| this.config.targetNeighbors.get(senderId)
|
|
32
|
-
|| this.config.
|
|
31
|
+
|| this.config.proxyConnectionRpcLocal?.getConnection(senderId)?.remote;
|
|
33
32
|
// TODO: check integrity of notifier?
|
|
34
33
|
if (contact) {
|
|
35
34
|
this.config.layer1.removeContact(contact.getPeerDescriptor(), true);
|
|
36
35
|
this.config.targetNeighbors.remove(contact.getPeerDescriptor());
|
|
37
36
|
this.config.nearbyNodeView.remove(contact.getPeerDescriptor());
|
|
38
|
-
this.config.connectionLocker.unlockConnection(contact.getPeerDescriptor(), this.config.
|
|
37
|
+
this.config.connectionLocker.unlockConnection(contact.getPeerDescriptor(), this.config.streamPartId);
|
|
39
38
|
this.config.neighborFinder.start([senderId]);
|
|
40
|
-
this.config.
|
|
39
|
+
this.config.proxyConnectionRpcLocal?.removeConnection(senderId);
|
|
41
40
|
}
|
|
42
41
|
},
|
|
43
42
|
markForInspection: (senderId, messageId) => this.config.inspector.markMessage(senderId, messageId)
|
|
@@ -46,33 +45,33 @@ class RandomGraphNode extends eventemitter3_1.EventEmitter {
|
|
|
46
45
|
async start() {
|
|
47
46
|
this.started = true;
|
|
48
47
|
this.registerDefaultServerMethods();
|
|
49
|
-
(0, utils_1.addManagedEventListener)(this.config.layer1, 'newContact', (
|
|
50
|
-
(0, utils_1.addManagedEventListener)(this.config.layer1, 'contactRemoved', (
|
|
51
|
-
(0, utils_1.addManagedEventListener)(this.config.layer1, 'newRandomContact', (
|
|
52
|
-
(0, utils_1.addManagedEventListener)(this.config.layer1, 'randomContactRemoved', (
|
|
48
|
+
(0, utils_1.addManagedEventListener)(this.config.layer1, 'newContact', (_peerDescriptor, closestPeers) => this.newContact(closestPeers), this.abortController.signal);
|
|
49
|
+
(0, utils_1.addManagedEventListener)(this.config.layer1, 'contactRemoved', (_peerDescriptor, closestPeers) => this.removedContact(closestPeers), this.abortController.signal);
|
|
50
|
+
(0, utils_1.addManagedEventListener)(this.config.layer1, 'newRandomContact', (_peerDescriptor, randomPeers) => this.newRandomContact(randomPeers), this.abortController.signal);
|
|
51
|
+
(0, utils_1.addManagedEventListener)(this.config.layer1, 'randomContactRemoved', (_peerDescriptor, randomPeers) => this.removedRandomContact(randomPeers), this.abortController.signal);
|
|
53
52
|
(0, utils_1.addManagedEventListener)(this.config.P2PTransport, 'disconnected', (peerDescriptor) => this.onNodeDisconnected(peerDescriptor), this.abortController.signal);
|
|
54
53
|
(0, utils_1.addManagedEventListener)(this.config.targetNeighbors, 'nodeAdded', (id, _remote) => {
|
|
55
54
|
this.config.propagation.onNeighborJoined(id);
|
|
56
55
|
this.emit('targetNeighborConnected', id);
|
|
57
56
|
}, this.abortController.signal);
|
|
58
|
-
if (this.config.
|
|
59
|
-
(0, utils_1.addManagedEventListener)(this.config.
|
|
57
|
+
if (this.config.proxyConnectionRpcLocal !== undefined) {
|
|
58
|
+
(0, utils_1.addManagedEventListener)(this.config.proxyConnectionRpcLocal, 'newConnection', (id) => this.config.propagation.onNeighborJoined(id), this.abortController.signal);
|
|
60
59
|
}
|
|
61
60
|
const candidates = this.getNeighborCandidatesFromLayer1();
|
|
62
61
|
if (candidates.length > 0) {
|
|
63
|
-
this.newContact(candidates
|
|
62
|
+
this.newContact(candidates);
|
|
64
63
|
}
|
|
65
64
|
this.config.neighborFinder.start();
|
|
66
65
|
await this.config.neighborUpdateManager.start();
|
|
67
66
|
}
|
|
68
67
|
registerDefaultServerMethods() {
|
|
69
|
-
this.config.rpcCommunicator.registerRpcNotification(NetworkRpc_1.StreamMessage, 'sendStreamMessage', (msg, context) => this.
|
|
70
|
-
this.config.rpcCommunicator.registerRpcNotification(NetworkRpc_1.LeaveStreamPartNotice, 'leaveStreamPartNotice', (req, context) => this.
|
|
71
|
-
this.config.rpcCommunicator.registerRpcMethod(NetworkRpc_1.TemporaryConnectionRequest, NetworkRpc_1.TemporaryConnectionResponse, 'openConnection', (req, context) => this.config.
|
|
68
|
+
this.config.rpcCommunicator.registerRpcNotification(NetworkRpc_1.StreamMessage, 'sendStreamMessage', (msg, context) => this.deliveryRpcLocal.sendStreamMessage(msg, context));
|
|
69
|
+
this.config.rpcCommunicator.registerRpcNotification(NetworkRpc_1.LeaveStreamPartNotice, 'leaveStreamPartNotice', (req, context) => this.deliveryRpcLocal.leaveStreamPartNotice(req, context));
|
|
70
|
+
this.config.rpcCommunicator.registerRpcMethod(NetworkRpc_1.TemporaryConnectionRequest, NetworkRpc_1.TemporaryConnectionResponse, 'openConnection', (req, context) => this.config.temporaryConnectionRpcLocal.openConnection(req, context));
|
|
72
71
|
}
|
|
73
|
-
newContact(
|
|
72
|
+
newContact(closestNodes) {
|
|
74
73
|
logger.trace(`New nearby contact found`);
|
|
75
|
-
if (this.
|
|
74
|
+
if (this.isStopped()) {
|
|
76
75
|
return;
|
|
77
76
|
}
|
|
78
77
|
this.updateNearbyNodeView(closestNodes);
|
|
@@ -80,44 +79,44 @@ class RandomGraphNode extends eventemitter3_1.EventEmitter {
|
|
|
80
79
|
this.config.neighborFinder.start();
|
|
81
80
|
}
|
|
82
81
|
}
|
|
83
|
-
removedContact(
|
|
82
|
+
removedContact(closestNodes) {
|
|
84
83
|
logger.trace(`Nearby contact removed`);
|
|
85
|
-
if (this.
|
|
84
|
+
if (this.isStopped()) {
|
|
86
85
|
return;
|
|
87
86
|
}
|
|
88
87
|
this.updateNearbyNodeView(closestNodes);
|
|
89
88
|
}
|
|
90
89
|
updateNearbyNodeView(nodes) {
|
|
91
|
-
this.config.nearbyNodeView.replaceAll(Array.from(nodes).map((descriptor) => new
|
|
90
|
+
this.config.nearbyNodeView.replaceAll(Array.from(nodes).map((descriptor) => new DeliveryRpcRemote_1.DeliveryRpcRemote(this.config.ownPeerDescriptor, descriptor, this.config.streamPartId, (0, proto_rpc_1.toProtoRpcClient)(new NetworkRpc_client_1.DeliveryRpcClient(this.config.rpcCommunicator.getRpcClientTransport())))));
|
|
92
91
|
for (const descriptor of this.config.layer1.getKBucketPeers()) {
|
|
93
92
|
if (this.config.nearbyNodeView.size() >= this.config.nodeViewSize) {
|
|
94
93
|
break;
|
|
95
94
|
}
|
|
96
|
-
this.config.nearbyNodeView.add(new
|
|
95
|
+
this.config.nearbyNodeView.add(new DeliveryRpcRemote_1.DeliveryRpcRemote(this.config.ownPeerDescriptor, descriptor, this.config.streamPartId, (0, proto_rpc_1.toProtoRpcClient)(new NetworkRpc_client_1.DeliveryRpcClient(this.config.rpcCommunicator.getRpcClientTransport()))));
|
|
97
96
|
}
|
|
98
97
|
}
|
|
99
|
-
newRandomContact(
|
|
100
|
-
if (this.
|
|
98
|
+
newRandomContact(randomNodes) {
|
|
99
|
+
if (this.isStopped()) {
|
|
101
100
|
return;
|
|
102
101
|
}
|
|
103
|
-
this.config.randomNodeView.replaceAll(randomNodes.map((descriptor) => new
|
|
102
|
+
this.config.randomNodeView.replaceAll(randomNodes.map((descriptor) => new DeliveryRpcRemote_1.DeliveryRpcRemote(this.config.ownPeerDescriptor, descriptor, this.config.streamPartId, (0, proto_rpc_1.toProtoRpcClient)(new NetworkRpc_client_1.DeliveryRpcClient(this.config.rpcCommunicator.getRpcClientTransport())))));
|
|
104
103
|
if (this.config.targetNeighbors.size() < this.config.numOfTargetNeighbors) {
|
|
105
104
|
this.config.neighborFinder.start();
|
|
106
105
|
}
|
|
107
106
|
}
|
|
108
|
-
removedRandomContact(
|
|
107
|
+
removedRandomContact(randomNodes) {
|
|
109
108
|
logger.trace(`New nearby contact found`);
|
|
110
|
-
if (this.
|
|
109
|
+
if (this.isStopped()) {
|
|
111
110
|
return;
|
|
112
111
|
}
|
|
113
|
-
this.config.randomNodeView.replaceAll(randomNodes.map((descriptor) => new
|
|
112
|
+
this.config.randomNodeView.replaceAll(randomNodes.map((descriptor) => new DeliveryRpcRemote_1.DeliveryRpcRemote(this.config.ownPeerDescriptor, descriptor, this.config.streamPartId, (0, proto_rpc_1.toProtoRpcClient)(new NetworkRpc_client_1.DeliveryRpcClient(this.config.rpcCommunicator.getRpcClientTransport())))));
|
|
114
113
|
}
|
|
115
114
|
onNodeDisconnected(peerDescriptor) {
|
|
116
115
|
if (this.config.targetNeighbors.hasNode(peerDescriptor)) {
|
|
117
116
|
this.config.targetNeighbors.remove(peerDescriptor);
|
|
118
|
-
this.config.connectionLocker.unlockConnection(peerDescriptor, this.config.
|
|
117
|
+
this.config.connectionLocker.unlockConnection(peerDescriptor, this.config.streamPartId);
|
|
119
118
|
this.config.neighborFinder.start([(0, identifiers_1.getNodeIdFromPeerDescriptor)(peerDescriptor)]);
|
|
120
|
-
this.config.
|
|
119
|
+
this.config.temporaryConnectionRpcLocal.removeNode(peerDescriptor);
|
|
121
120
|
}
|
|
122
121
|
}
|
|
123
122
|
getNeighborCandidatesFromLayer1() {
|
|
@@ -131,8 +130,8 @@ class RandomGraphNode extends eventemitter3_1.EventEmitter {
|
|
|
131
130
|
return Array.from(uniqueNodes);
|
|
132
131
|
}
|
|
133
132
|
hasProxyConnection(nodeId) {
|
|
134
|
-
if (this.config.
|
|
135
|
-
return this.config.
|
|
133
|
+
if (this.config.proxyConnectionRpcLocal) {
|
|
134
|
+
return this.config.proxyConnectionRpcLocal.hasConnection(nodeId);
|
|
136
135
|
}
|
|
137
136
|
return false;
|
|
138
137
|
}
|
|
@@ -140,9 +139,8 @@ class RandomGraphNode extends eventemitter3_1.EventEmitter {
|
|
|
140
139
|
if (!this.started) {
|
|
141
140
|
return;
|
|
142
141
|
}
|
|
143
|
-
this.stopped = true;
|
|
144
142
|
this.abortController.abort();
|
|
145
|
-
this.config.
|
|
143
|
+
this.config.proxyConnectionRpcLocal?.stop();
|
|
146
144
|
this.config.targetNeighbors.getAll().map((remote) => remote.leaveStreamPartNotice());
|
|
147
145
|
this.config.rpcCommunicator.stop();
|
|
148
146
|
this.removeAllListeners();
|
|
@@ -165,11 +163,11 @@ class RandomGraphNode extends eventemitter3_1.EventEmitter {
|
|
|
165
163
|
}
|
|
166
164
|
getPropagationTargets(msg) {
|
|
167
165
|
let propagationTargets = this.config.targetNeighbors.getIds();
|
|
168
|
-
if (this.config.
|
|
169
|
-
propagationTargets = propagationTargets.concat(this.config.
|
|
166
|
+
if (this.config.proxyConnectionRpcLocal) {
|
|
167
|
+
propagationTargets = propagationTargets.concat(this.config.proxyConnectionRpcLocal.getPropagationTargets(msg));
|
|
170
168
|
}
|
|
171
169
|
propagationTargets = propagationTargets.filter((target) => !this.config.inspector.isInspected(target));
|
|
172
|
-
propagationTargets = propagationTargets.concat(this.config.
|
|
170
|
+
propagationTargets = propagationTargets.concat(this.config.temporaryConnectionRpcLocal.getNodes().getIds());
|
|
173
171
|
return propagationTargets;
|
|
174
172
|
}
|
|
175
173
|
getOwnNodeId() {
|
|
@@ -179,7 +177,7 @@ class RandomGraphNode extends eventemitter3_1.EventEmitter {
|
|
|
179
177
|
return this.config.handshaker.getOngoingHandshakes().size;
|
|
180
178
|
}
|
|
181
179
|
getTargetNeighborIds() {
|
|
182
|
-
if (!this.started && this.
|
|
180
|
+
if (!this.started && this.isStopped()) {
|
|
183
181
|
return [];
|
|
184
182
|
}
|
|
185
183
|
return this.config.targetNeighbors.getIds();
|
|
@@ -187,6 +185,9 @@ class RandomGraphNode extends eventemitter3_1.EventEmitter {
|
|
|
187
185
|
getNearbyNodeView() {
|
|
188
186
|
return this.config.nearbyNodeView;
|
|
189
187
|
}
|
|
188
|
+
isStopped() {
|
|
189
|
+
return this.abortController.signal.aborted;
|
|
190
|
+
}
|
|
190
191
|
}
|
|
191
192
|
exports.RandomGraphNode = RandomGraphNode;
|
|
192
193
|
//# sourceMappingURL=RandomGraphNode.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RandomGraphNode.js","sourceRoot":"","sources":["../../../src/logic/RandomGraphNode.ts"],"names":[],"mappings":";;;AAAA,iDAA4C;AAO5C,wFAOgE;AAEhE,
|
|
1
|
+
{"version":3,"file":"RandomGraphNode.js","sourceRoot":"","sources":["../../../src/logic/RandomGraphNode.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,8 +7,8 @@ import { ProxyDirection, StreamMessage } from '../proto/packages/trackerless-net
|
|
|
7
7
|
import { ILayer0 } from './ILayer0';
|
|
8
8
|
import { ILayer1 } from './ILayer1';
|
|
9
9
|
import { RandomGraphNode } from './RandomGraphNode';
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
10
|
+
import { EntryPointDiscovery } from './EntryPointDiscovery';
|
|
11
|
+
import { ProxyClient } from './proxy/ProxyClient';
|
|
12
12
|
export type StreamPartDelivery = {
|
|
13
13
|
broadcast: (msg: StreamMessage) => void;
|
|
14
14
|
stop: () => void;
|
|
@@ -16,10 +16,10 @@ export type StreamPartDelivery = {
|
|
|
16
16
|
proxied: false;
|
|
17
17
|
layer1: ILayer1;
|
|
18
18
|
node: RandomGraphNode;
|
|
19
|
-
entryPointDiscovery:
|
|
19
|
+
entryPointDiscovery: EntryPointDiscovery;
|
|
20
20
|
} | {
|
|
21
21
|
proxied: true;
|
|
22
|
-
client:
|
|
22
|
+
client: ProxyClient;
|
|
23
23
|
});
|
|
24
24
|
export interface Events {
|
|
25
25
|
newMessage: (msg: StreamMessage) => void;
|
|
@@ -28,8 +28,6 @@ export interface StreamrNodeConfig {
|
|
|
28
28
|
metricsContext?: MetricsContext;
|
|
29
29
|
streamPartitionNumOfNeighbors?: number;
|
|
30
30
|
streamPartitionMinPropagationTargets?: number;
|
|
31
|
-
nodeName?: string;
|
|
32
|
-
firstConnectionTimeout?: number;
|
|
33
31
|
acceptProxyConnections?: boolean;
|
|
34
32
|
}
|
|
35
33
|
export declare class StreamrNode extends EventEmitter<Events> {
|
|
@@ -38,7 +36,7 @@ export declare class StreamrNode extends EventEmitter<Events> {
|
|
|
38
36
|
private layer0?;
|
|
39
37
|
private readonly metricsContext;
|
|
40
38
|
private readonly metrics;
|
|
41
|
-
config
|
|
39
|
+
private readonly config;
|
|
42
40
|
private readonly streamParts;
|
|
43
41
|
private readonly knownStreamPartEntryPoints;
|
|
44
42
|
private started;
|
|
@@ -53,13 +51,12 @@ export declare class StreamrNode extends EventEmitter<Events> {
|
|
|
53
51
|
private createLayer1Node;
|
|
54
52
|
private createRandomGraphNode;
|
|
55
53
|
setProxies(streamPartId: StreamPartID, nodes: PeerDescriptor[], direction: ProxyDirection, userId: EthereumAddress, connectionCount?: number): Promise<void>;
|
|
56
|
-
private
|
|
57
|
-
private createProxyStreamConnectionClient;
|
|
54
|
+
private createProxyClient;
|
|
58
55
|
inspect(peerDescriptor: PeerDescriptor, streamPartId: StreamPartID): Promise<boolean>;
|
|
59
56
|
setStreamPartEntryPoints(streamPartId: StreamPartID, entryPoints: PeerDescriptor[]): void;
|
|
60
|
-
isProxiedStreamPart(
|
|
61
|
-
|
|
62
|
-
|
|
57
|
+
isProxiedStreamPart(streamPartId: StreamPartID, direction?: ProxyDirection): boolean;
|
|
58
|
+
getStreamPartDelivery(streamPartId: StreamPartID): StreamPartDelivery | undefined;
|
|
59
|
+
hasStreamPart(streamPartId: StreamPartID): boolean;
|
|
63
60
|
getPeerDescriptor(): PeerDescriptor;
|
|
64
61
|
getNodeId(): NodeID;
|
|
65
62
|
getNeighbors(streamPartId: StreamPartID): NodeID[];
|
|
@@ -7,9 +7,9 @@ const utils_1 = require("@streamr/utils");
|
|
|
7
7
|
const eventemitter3_1 = require("eventemitter3");
|
|
8
8
|
const lodash_1 = require("lodash");
|
|
9
9
|
const identifiers_1 = require("../identifiers");
|
|
10
|
-
const
|
|
10
|
+
const EntryPointDiscovery_1 = require("./EntryPointDiscovery");
|
|
11
11
|
const createRandomGraphNode_1 = require("./createRandomGraphNode");
|
|
12
|
-
const
|
|
12
|
+
const ProxyClient_1 = require("./proxy/ProxyClient");
|
|
13
13
|
const logger = new utils_1.Logger(module);
|
|
14
14
|
let cleanUp = async () => { };
|
|
15
15
|
// TODO rename class?
|
|
@@ -21,26 +21,24 @@ class StreamrNode extends eventemitter3_1.EventEmitter {
|
|
|
21
21
|
this.destroyed = false;
|
|
22
22
|
this.createLayer1Node = (streamPartId, entryPoints) => {
|
|
23
23
|
return new dht_1.DhtNode({
|
|
24
|
-
|
|
24
|
+
transport: this.layer0,
|
|
25
25
|
serviceId: 'layer1::' + streamPartId,
|
|
26
26
|
peerDescriptor: this.layer0.getPeerDescriptor(),
|
|
27
27
|
entryPoints,
|
|
28
28
|
numberOfNodesPerKBucket: 4,
|
|
29
29
|
rpcRequestTimeout: 5000,
|
|
30
|
-
dhtJoinTimeout: 20000
|
|
31
|
-
nodeName: this.config.nodeName + ':layer1'
|
|
30
|
+
dhtJoinTimeout: 20000
|
|
32
31
|
});
|
|
33
32
|
};
|
|
34
33
|
this.createRandomGraphNode = (streamPartId, layer1) => {
|
|
35
34
|
return (0, createRandomGraphNode_1.createRandomGraphNode)({
|
|
36
|
-
|
|
35
|
+
streamPartId,
|
|
37
36
|
P2PTransport: this.P2PTransport,
|
|
38
37
|
layer1,
|
|
39
38
|
connectionLocker: this.connectionLocker,
|
|
40
39
|
ownPeerDescriptor: this.layer0.getPeerDescriptor(),
|
|
41
40
|
minPropagationTargets: this.config.streamPartitionMinPropagationTargets,
|
|
42
41
|
numOfTargetNeighbors: this.config.streamPartitionNumOfNeighbors,
|
|
43
|
-
name: this.config.nodeName,
|
|
44
42
|
acceptProxyConnections: this.config.acceptProxyConnections
|
|
45
43
|
});
|
|
46
44
|
};
|
|
@@ -70,7 +68,7 @@ class StreamrNode extends eventemitter3_1.EventEmitter {
|
|
|
70
68
|
}
|
|
71
69
|
logger.trace('Destroying StreamrNode...');
|
|
72
70
|
this.destroyed = true;
|
|
73
|
-
this.streamParts.forEach((
|
|
71
|
+
this.streamParts.forEach((streamPart) => streamPart.stop());
|
|
74
72
|
this.streamParts.clear();
|
|
75
73
|
this.removeAllListeners();
|
|
76
74
|
await this.layer0.stop();
|
|
@@ -87,26 +85,25 @@ class StreamrNode extends eventemitter3_1.EventEmitter {
|
|
|
87
85
|
this.metrics.broadcastBytesPerSecond.record(msg.content.length);
|
|
88
86
|
}
|
|
89
87
|
leaveStreamPart(streamPartId) {
|
|
90
|
-
const
|
|
91
|
-
if (
|
|
92
|
-
|
|
88
|
+
const streamPart = this.streamParts.get(streamPartId);
|
|
89
|
+
if (streamPart) {
|
|
90
|
+
streamPart.stop();
|
|
93
91
|
this.streamParts.delete(streamPartId);
|
|
94
92
|
}
|
|
95
93
|
}
|
|
96
94
|
joinStreamPart(streamPartId) {
|
|
97
95
|
logger.debug(`Join stream part ${streamPartId}`);
|
|
98
|
-
let
|
|
99
|
-
if (
|
|
96
|
+
let streamPart = this.streamParts.get(streamPartId);
|
|
97
|
+
if (streamPart !== undefined) {
|
|
100
98
|
return;
|
|
101
99
|
}
|
|
102
100
|
const layer1 = this.createLayer1Node(streamPartId, this.knownStreamPartEntryPoints.get(streamPartId) ?? []);
|
|
103
101
|
const node = this.createRandomGraphNode(streamPartId, layer1);
|
|
104
|
-
const entryPointDiscovery = new
|
|
102
|
+
const entryPointDiscovery = new EntryPointDiscovery_1.EntryPointDiscovery({
|
|
105
103
|
streamPartId,
|
|
106
104
|
ownPeerDescriptor: this.getPeerDescriptor(),
|
|
107
105
|
layer1,
|
|
108
106
|
getEntryPointData: (key) => this.layer0.getDataFromDht(key),
|
|
109
|
-
getEntryPointDataViaNode: (key, node) => this.layer0.findDataViaPeer(key, node),
|
|
110
107
|
storeEntryPointData: (key, data) => this.layer0.storeDataToDht(key, data),
|
|
111
108
|
deleteEntryPointData: async (key) => {
|
|
112
109
|
if (this.destroyed) {
|
|
@@ -115,7 +112,7 @@ class StreamrNode extends eventemitter3_1.EventEmitter {
|
|
|
115
112
|
return this.layer0.deleteDataFromDht(key);
|
|
116
113
|
}
|
|
117
114
|
});
|
|
118
|
-
|
|
115
|
+
streamPart = {
|
|
119
116
|
proxied: false,
|
|
120
117
|
layer1,
|
|
121
118
|
node,
|
|
@@ -127,7 +124,7 @@ class StreamrNode extends eventemitter3_1.EventEmitter {
|
|
|
127
124
|
layer1.stop();
|
|
128
125
|
}
|
|
129
126
|
};
|
|
130
|
-
this.streamParts.set(streamPartId,
|
|
127
|
+
this.streamParts.set(streamPartId, streamPart);
|
|
131
128
|
node.on('message', (message) => {
|
|
132
129
|
this.emit('newMessage', message);
|
|
133
130
|
});
|
|
@@ -136,24 +133,23 @@ class StreamrNode extends eventemitter3_1.EventEmitter {
|
|
|
136
133
|
await this.startLayersAndJoinDht(streamPartId, entryPointDiscovery);
|
|
137
134
|
}
|
|
138
135
|
catch (err) {
|
|
139
|
-
logger.warn(`Failed to join to stream ${streamPartId} with error: ${err}`);
|
|
136
|
+
logger.warn(`Failed to join to stream part ${streamPartId} with error: ${err}`);
|
|
140
137
|
}
|
|
141
138
|
});
|
|
142
139
|
}
|
|
143
140
|
async startLayersAndJoinDht(streamPartId, entryPointDiscovery) {
|
|
144
141
|
logger.debug(`Start layers and join DHT for stream part ${streamPartId}`);
|
|
145
|
-
const
|
|
146
|
-
if ((
|
|
147
|
-
//
|
|
142
|
+
const streamPart = this.streamParts.get(streamPartId);
|
|
143
|
+
if ((streamPart === undefined) || streamPart.proxied) {
|
|
144
|
+
// leaveStreamPart has been called (or leaveStreamPart called, and then setProxies called)
|
|
148
145
|
return;
|
|
149
146
|
}
|
|
150
|
-
await
|
|
151
|
-
await
|
|
147
|
+
await streamPart.layer1.start();
|
|
148
|
+
await streamPart.node.start();
|
|
152
149
|
let entryPoints = this.knownStreamPartEntryPoints.get(streamPartId) ?? [];
|
|
153
|
-
const
|
|
154
|
-
const discoveryResult = await entryPointDiscovery.discoverEntryPointsFromDht(entryPoints.length, forwardingNode);
|
|
150
|
+
const discoveryResult = await entryPointDiscovery.discoverEntryPointsFromDht(entryPoints.length);
|
|
155
151
|
entryPoints = entryPoints.concat(discoveryResult.discoveredEntryPoints);
|
|
156
|
-
await
|
|
152
|
+
await streamPart.layer1.joinDht((0, lodash_1.sampleSize)(entryPoints, EntryPointDiscovery_1.NETWORK_SPLIT_AVOIDANCE_LIMIT));
|
|
157
153
|
if (discoveryResult.entryPointsFromDht) {
|
|
158
154
|
await entryPointDiscovery.storeSelfAsEntryPointIfNecessary(entryPoints.length);
|
|
159
155
|
}
|
|
@@ -164,78 +160,72 @@ class StreamrNode extends eventemitter3_1.EventEmitter {
|
|
|
164
160
|
}
|
|
165
161
|
const enable = (nodes.length > 0) && ((connectionCount === undefined) || (connectionCount > 0));
|
|
166
162
|
if (enable) {
|
|
167
|
-
let
|
|
163
|
+
let client;
|
|
168
164
|
const alreadyProxied = this.isProxiedStreamPart(streamPartId);
|
|
169
165
|
if (alreadyProxied) {
|
|
170
|
-
|
|
166
|
+
client = this.streamParts.get(streamPartId).client;
|
|
171
167
|
}
|
|
172
168
|
else {
|
|
173
|
-
|
|
174
|
-
|
|
169
|
+
client = this.createProxyClient(streamPartId);
|
|
170
|
+
this.streamParts.set(streamPartId, {
|
|
171
|
+
proxied: true,
|
|
172
|
+
client,
|
|
173
|
+
broadcast: (msg) => client.broadcast(msg),
|
|
174
|
+
stop: () => client.stop()
|
|
175
|
+
});
|
|
176
|
+
client.on('message', (message) => {
|
|
177
|
+
this.emit('newMessage', message);
|
|
178
|
+
});
|
|
179
|
+
await client.start();
|
|
175
180
|
}
|
|
176
|
-
await
|
|
181
|
+
await client.setProxies(nodes, direction, userId, connectionCount);
|
|
177
182
|
}
|
|
178
183
|
else {
|
|
179
184
|
this.streamParts.get(streamPartId)?.stop();
|
|
180
185
|
this.streamParts.delete(streamPartId);
|
|
181
186
|
}
|
|
182
187
|
}
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
this.streamParts.set(streamPartId, {
|
|
186
|
-
proxied: true,
|
|
187
|
-
client,
|
|
188
|
-
broadcast: (msg) => client.broadcast(msg),
|
|
189
|
-
stop: () => client.stop()
|
|
190
|
-
});
|
|
191
|
-
client.on('message', (message) => {
|
|
192
|
-
this.emit('newMessage', message);
|
|
193
|
-
});
|
|
194
|
-
return client;
|
|
195
|
-
}
|
|
196
|
-
createProxyStreamConnectionClient(streamPartId, userId) {
|
|
197
|
-
return new ProxyStreamConnectionClient_1.ProxyStreamConnectionClient({
|
|
188
|
+
createProxyClient(streamPartId) {
|
|
189
|
+
return new ProxyClient_1.ProxyClient({
|
|
198
190
|
P2PTransport: this.P2PTransport,
|
|
199
191
|
ownPeerDescriptor: this.layer0.getPeerDescriptor(),
|
|
200
192
|
streamPartId,
|
|
201
193
|
connectionLocker: this.connectionLocker,
|
|
202
|
-
minPropagationTargets: this.config.streamPartitionMinPropagationTargets
|
|
203
|
-
nodeName: this.config.nodeName,
|
|
204
|
-
userId
|
|
194
|
+
minPropagationTargets: this.config.streamPartitionMinPropagationTargets
|
|
205
195
|
});
|
|
206
196
|
}
|
|
207
197
|
async inspect(peerDescriptor, streamPartId) {
|
|
208
|
-
const
|
|
209
|
-
if ((
|
|
210
|
-
return
|
|
198
|
+
const streamPart = this.streamParts.get(streamPartId);
|
|
199
|
+
if ((streamPart !== undefined) && !streamPart.proxied) {
|
|
200
|
+
return streamPart.node.inspect(peerDescriptor);
|
|
211
201
|
}
|
|
212
202
|
return false;
|
|
213
203
|
}
|
|
214
204
|
setStreamPartEntryPoints(streamPartId, entryPoints) {
|
|
215
205
|
this.knownStreamPartEntryPoints.set(streamPartId, entryPoints);
|
|
216
206
|
}
|
|
217
|
-
isProxiedStreamPart(
|
|
218
|
-
const
|
|
219
|
-
return (
|
|
220
|
-
&&
|
|
221
|
-
&& ((direction === undefined) || (
|
|
207
|
+
isProxiedStreamPart(streamPartId, direction) {
|
|
208
|
+
const streamPart = this.streamParts.get(streamPartId);
|
|
209
|
+
return (streamPart !== undefined)
|
|
210
|
+
&& streamPart.proxied
|
|
211
|
+
&& ((direction === undefined) || (streamPart.client.getDirection() === direction));
|
|
222
212
|
}
|
|
223
|
-
|
|
213
|
+
getStreamPartDelivery(streamPartId) {
|
|
224
214
|
return this.streamParts.get(streamPartId);
|
|
225
215
|
}
|
|
226
|
-
|
|
216
|
+
hasStreamPart(streamPartId) {
|
|
227
217
|
return this.streamParts.has(streamPartId);
|
|
228
218
|
}
|
|
229
219
|
getPeerDescriptor() {
|
|
230
220
|
return this.layer0.getPeerDescriptor();
|
|
231
221
|
}
|
|
232
222
|
getNodeId() {
|
|
233
|
-
return this.layer0.
|
|
223
|
+
return (0, identifiers_1.getNodeIdFromPeerDescriptor)(this.layer0.getPeerDescriptor());
|
|
234
224
|
}
|
|
235
225
|
getNeighbors(streamPartId) {
|
|
236
|
-
const
|
|
237
|
-
return (
|
|
238
|
-
?
|
|
226
|
+
const streamPart = this.streamParts.get(streamPartId);
|
|
227
|
+
return (streamPart !== undefined) && (streamPart.proxied === false)
|
|
228
|
+
? streamPart.node.getTargetNeighborIds()
|
|
239
229
|
: [];
|
|
240
230
|
}
|
|
241
231
|
getStreamParts() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StreamrNode.js","sourceRoot":"","sources":["../../../src/logic/StreamrNode.ts"],"names":[],"mappings":";;;AAAA,sCAKqB;AACrB,gDAA6F;AAC7F,0CAOuB;AACvB,iDAA4C;AAC5C,mCAAmC;AACnC,gDAAoE;AAKpE
|
|
1
|
+
{"version":3,"file":"StreamrNode.js","sourceRoot":"","sources":["../../../src/logic/StreamrNode.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
import { StrictRandomGraphNodeConfig, RandomGraphNode } from './RandomGraphNode';
|
|
2
2
|
import { MarkOptional } from 'ts-essentials';
|
|
3
|
-
type RandomGraphNodeConfig = MarkOptional<StrictRandomGraphNodeConfig, 'nearbyNodeView' | 'randomNodeView' | 'targetNeighbors' | 'propagation' | 'handshaker' | 'neighborFinder' | 'neighborUpdateManager' | '
|
|
3
|
+
type RandomGraphNodeConfig = MarkOptional<StrictRandomGraphNodeConfig, 'nearbyNodeView' | 'randomNodeView' | 'targetNeighbors' | 'propagation' | 'handshaker' | 'neighborFinder' | 'neighborUpdateManager' | 'numOfTargetNeighbors' | 'rpcCommunicator' | 'nodeViewSize' | 'inspector' | 'temporaryConnectionRpcLocal'> & {
|
|
4
|
+
maxNumberOfContacts?: number;
|
|
5
|
+
minPropagationTargets?: number;
|
|
6
|
+
acceptProxyConnections?: boolean;
|
|
7
|
+
neighborUpdateInterval?: number;
|
|
8
|
+
};
|
|
4
9
|
export declare const createRandomGraphNode: (config: RandomGraphNodeConfig) => RandomGraphNode;
|
|
5
10
|
export {};
|