@streamr/trackerless-network 103.1.2 → 103.2.0-experiment.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/exports.cjs +4489 -0
- package/dist/exports.cjs.map +1 -0
- package/dist/exports.d.ts +1391 -0
- package/dist/exports.js +4477 -0
- package/dist/exports.js.map +1 -0
- package/package.json +25 -18
- package/dist/generated/google/protobuf/any.d.ts +0 -180
- package/dist/generated/google/protobuf/any.js +0 -155
- package/dist/generated/google/protobuf/any.js.map +0 -1
- package/dist/generated/google/protobuf/empty.d.ts +0 -31
- package/dist/generated/google/protobuf/empty.js +0 -45
- package/dist/generated/google/protobuf/empty.js.map +0 -1
- package/dist/generated/google/protobuf/timestamp.d.ts +0 -156
- package/dist/generated/google/protobuf/timestamp.js +0 -136
- package/dist/generated/google/protobuf/timestamp.js.map +0 -1
- package/dist/generated/packages/dht/protos/DhtRpc.client.d.ts +0 -371
- package/dist/generated/packages/dht/protos/DhtRpc.client.js +0 -292
- package/dist/generated/packages/dht/protos/DhtRpc.client.js.map +0 -1
- package/dist/generated/packages/dht/protos/DhtRpc.d.ts +0 -1031
- package/dist/generated/packages/dht/protos/DhtRpc.js +0 -702
- package/dist/generated/packages/dht/protos/DhtRpc.js.map +0 -1
- package/dist/generated/packages/dht/protos/DhtRpc.server.d.ts +0 -168
- package/dist/generated/packages/dht/protos/DhtRpc.server.js +0 -3
- package/dist/generated/packages/dht/protos/DhtRpc.server.js.map +0 -1
- package/dist/generated/packages/proto-rpc/protos/ProtoRpc.d.ts +0 -87
- package/dist/generated/packages/proto-rpc/protos/ProtoRpc.js +0 -66
- package/dist/generated/packages/proto-rpc/protos/ProtoRpc.js.map +0 -1
- package/dist/generated/packages/trackerless-network/protos/NetworkRpc.client.d.ts +0 -237
- package/dist/generated/packages/trackerless-network/protos/NetworkRpc.client.js +0 -190
- package/dist/generated/packages/trackerless-network/protos/NetworkRpc.client.js.map +0 -1
- package/dist/generated/packages/trackerless-network/protos/NetworkRpc.d.ts +0 -687
- package/dist/generated/packages/trackerless-network/protos/NetworkRpc.js +0 -479
- package/dist/generated/packages/trackerless-network/protos/NetworkRpc.js.map +0 -1
- package/dist/generated/packages/trackerless-network/protos/NetworkRpc.server.d.ts +0 -102
- package/dist/generated/packages/trackerless-network/protos/NetworkRpc.server.js +0 -3
- package/dist/generated/packages/trackerless-network/protos/NetworkRpc.server.js.map +0 -1
- package/dist/package.json +0 -56
- package/dist/src/ContentDeliveryManager.d.ts +0 -82
- package/dist/src/ContentDeliveryManager.js +0 -325
- package/dist/src/ContentDeliveryManager.js.map +0 -1
- package/dist/src/NetworkNode.d.ts +0 -44
- package/dist/src/NetworkNode.js +0 -98
- package/dist/src/NetworkNode.js.map +0 -1
- package/dist/src/NetworkStack.d.ts +0 -36
- package/dist/src/NetworkStack.js +0 -165
- package/dist/src/NetworkStack.js.map +0 -1
- package/dist/src/NodeInfoClient.d.ts +0 -9
- package/dist/src/NodeInfoClient.js +0 -21
- package/dist/src/NodeInfoClient.js.map +0 -1
- package/dist/src/NodeInfoRpcLocal.d.ts +0 -12
- package/dist/src/NodeInfoRpcLocal.js +0 -22
- package/dist/src/NodeInfoRpcLocal.js.map +0 -1
- package/dist/src/NodeInfoRpcRemote.d.ts +0 -6
- package/dist/src/NodeInfoRpcRemote.js +0 -11
- package/dist/src/NodeInfoRpcRemote.js.map +0 -1
- package/dist/src/StreamPartNetworkSplitAvoidance.d.ts +0 -18
- package/dist/src/StreamPartNetworkSplitAvoidance.js +0 -74
- package/dist/src/StreamPartNetworkSplitAvoidance.js.map +0 -1
- package/dist/src/StreamPartReconnect.d.ts +0 -11
- package/dist/src/StreamPartReconnect.js +0 -37
- package/dist/src/StreamPartReconnect.js.map +0 -1
- package/dist/src/content-delivery-layer/ContentDeliveryLayerNode.d.ts +0 -78
- package/dist/src/content-delivery-layer/ContentDeliveryLayerNode.js +0 -240
- package/dist/src/content-delivery-layer/ContentDeliveryLayerNode.js.map +0 -1
- package/dist/src/content-delivery-layer/ContentDeliveryRpcLocal.d.ts +0 -23
- package/dist/src/content-delivery-layer/ContentDeliveryRpcLocal.js +0 -40
- package/dist/src/content-delivery-layer/ContentDeliveryRpcLocal.js.map +0 -1
- package/dist/src/content-delivery-layer/ContentDeliveryRpcRemote.d.ts +0 -11
- package/dist/src/content-delivery-layer/ContentDeliveryRpcRemote.js +0 -38
- package/dist/src/content-delivery-layer/ContentDeliveryRpcRemote.js.map +0 -1
- package/dist/src/content-delivery-layer/DuplicateMessageDetector.d.ts +0 -55
- package/dist/src/content-delivery-layer/DuplicateMessageDetector.js +0 -159
- package/dist/src/content-delivery-layer/DuplicateMessageDetector.js.map +0 -1
- package/dist/src/content-delivery-layer/NodeList.d.ts +0 -26
- package/dist/src/content-delivery-layer/NodeList.js +0 -93
- package/dist/src/content-delivery-layer/NodeList.js.map +0 -1
- package/dist/src/content-delivery-layer/createContentDeliveryLayerNode.d.ts +0 -14
- package/dist/src/content-delivery-layer/createContentDeliveryLayerNode.js +0 -129
- package/dist/src/content-delivery-layer/createContentDeliveryLayerNode.js.map +0 -1
- package/dist/src/content-delivery-layer/formStreamPartDeliveryServiceId.d.ts +0 -3
- package/dist/src/content-delivery-layer/formStreamPartDeliveryServiceId.js +0 -9
- package/dist/src/content-delivery-layer/formStreamPartDeliveryServiceId.js.map +0 -1
- package/dist/src/content-delivery-layer/inspection/InspectSession.d.ts +0 -19
- package/dist/src/content-delivery-layer/inspection/InspectSession.js +0 -43
- package/dist/src/content-delivery-layer/inspection/InspectSession.js.map +0 -1
- package/dist/src/content-delivery-layer/inspection/Inspector.d.ts +0 -30
- package/dist/src/content-delivery-layer/inspection/Inspector.js +0 -75
- package/dist/src/content-delivery-layer/inspection/Inspector.js.map +0 -1
- package/dist/src/content-delivery-layer/neighbor-discovery/HandshakeRpcLocal.d.ts +0 -29
- package/dist/src/content-delivery-layer/neighbor-discovery/HandshakeRpcLocal.js +0 -106
- package/dist/src/content-delivery-layer/neighbor-discovery/HandshakeRpcLocal.js.map +0 -1
- package/dist/src/content-delivery-layer/neighbor-discovery/HandshakeRpcRemote.d.ts +0 -14
- package/dist/src/content-delivery-layer/neighbor-discovery/HandshakeRpcRemote.js +0 -55
- package/dist/src/content-delivery-layer/neighbor-discovery/HandshakeRpcRemote.js.map +0 -1
- package/dist/src/content-delivery-layer/neighbor-discovery/Handshaker.d.ts +0 -32
- package/dist/src/content-delivery-layer/neighbor-discovery/Handshaker.js +0 -149
- package/dist/src/content-delivery-layer/neighbor-discovery/Handshaker.js.map +0 -1
- package/dist/src/content-delivery-layer/neighbor-discovery/NeighborFinder.d.ts +0 -22
- package/dist/src/content-delivery-layer/neighbor-discovery/NeighborFinder.js +0 -64
- package/dist/src/content-delivery-layer/neighbor-discovery/NeighborFinder.js.map +0 -1
- package/dist/src/content-delivery-layer/neighbor-discovery/NeighborUpdateManager.d.ts +0 -27
- package/dist/src/content-delivery-layer/neighbor-discovery/NeighborUpdateManager.js +0 -47
- package/dist/src/content-delivery-layer/neighbor-discovery/NeighborUpdateManager.js.map +0 -1
- package/dist/src/content-delivery-layer/neighbor-discovery/NeighborUpdateRpcLocal.d.ts +0 -25
- package/dist/src/content-delivery-layer/neighbor-discovery/NeighborUpdateRpcLocal.js +0 -52
- package/dist/src/content-delivery-layer/neighbor-discovery/NeighborUpdateRpcLocal.js.map +0 -1
- package/dist/src/content-delivery-layer/neighbor-discovery/NeighborUpdateRpcRemote.d.ts +0 -11
- package/dist/src/content-delivery-layer/neighbor-discovery/NeighborUpdateRpcRemote.js +0 -31
- package/dist/src/content-delivery-layer/neighbor-discovery/NeighborUpdateRpcRemote.js.map +0 -1
- package/dist/src/content-delivery-layer/plumtree/PausedNeighbors.d.ts +0 -12
- package/dist/src/content-delivery-layer/plumtree/PausedNeighbors.js +0 -50
- package/dist/src/content-delivery-layer/plumtree/PausedNeighbors.js.map +0 -1
- package/dist/src/content-delivery-layer/plumtree/PlumtreeManager.d.ts +0 -37
- package/dist/src/content-delivery-layer/plumtree/PlumtreeManager.js +0 -141
- package/dist/src/content-delivery-layer/plumtree/PlumtreeManager.js.map +0 -1
- package/dist/src/content-delivery-layer/plumtree/PlumtreeRpcLocal.d.ts +0 -20
- package/dist/src/content-delivery-layer/plumtree/PlumtreeRpcLocal.js +0 -37
- package/dist/src/content-delivery-layer/plumtree/PlumtreeRpcLocal.js.map +0 -1
- package/dist/src/content-delivery-layer/plumtree/PlumtreeRpcRemote.d.ts +0 -8
- package/dist/src/content-delivery-layer/plumtree/PlumtreeRpcRemote.js +0 -26
- package/dist/src/content-delivery-layer/plumtree/PlumtreeRpcRemote.js.map +0 -1
- package/dist/src/content-delivery-layer/propagation/FifoMapWithTTL.d.ts +0 -29
- package/dist/src/content-delivery-layer/propagation/FifoMapWithTTL.js +0 -93
- package/dist/src/content-delivery-layer/propagation/FifoMapWithTTL.js.map +0 -1
- package/dist/src/content-delivery-layer/propagation/Propagation.d.ts +0 -35
- package/dist/src/content-delivery-layer/propagation/Propagation.js +0 -68
- package/dist/src/content-delivery-layer/propagation/Propagation.js.map +0 -1
- package/dist/src/content-delivery-layer/propagation/PropagationTaskStore.d.ts +0 -22
- package/dist/src/content-delivery-layer/propagation/PropagationTaskStore.js +0 -33
- package/dist/src/content-delivery-layer/propagation/PropagationTaskStore.js.map +0 -1
- package/dist/src/content-delivery-layer/proxy/ProxyClient.d.ts +0 -46
- package/dist/src/content-delivery-layer/proxy/ProxyClient.js +0 -214
- package/dist/src/content-delivery-layer/proxy/ProxyClient.js.map +0 -1
- package/dist/src/content-delivery-layer/proxy/ProxyConnectionRpcLocal.d.ts +0 -34
- package/dist/src/content-delivery-layer/proxy/ProxyConnectionRpcLocal.js +0 -72
- package/dist/src/content-delivery-layer/proxy/ProxyConnectionRpcLocal.js.map +0 -1
- package/dist/src/content-delivery-layer/proxy/ProxyConnectionRpcRemote.d.ts +0 -7
- package/dist/src/content-delivery-layer/proxy/ProxyConnectionRpcRemote.js +0 -27
- package/dist/src/content-delivery-layer/proxy/ProxyConnectionRpcRemote.js.map +0 -1
- package/dist/src/content-delivery-layer/temporary-connection/TemporaryConnectionRpcLocal.d.ts +0 -26
- package/dist/src/content-delivery-layer/temporary-connection/TemporaryConnectionRpcLocal.js +0 -45
- package/dist/src/content-delivery-layer/temporary-connection/TemporaryConnectionRpcLocal.js.map +0 -1
- package/dist/src/content-delivery-layer/temporary-connection/TemporaryConnectionRpcRemote.d.ts +0 -6
- package/dist/src/content-delivery-layer/temporary-connection/TemporaryConnectionRpcRemote.js +0 -31
- package/dist/src/content-delivery-layer/temporary-connection/TemporaryConnectionRpcRemote.js.map +0 -1
- package/dist/src/control-layer/ControlLayerNode.d.ts +0 -16
- package/dist/src/control-layer/ControlLayerNode.js +0 -3
- package/dist/src/control-layer/ControlLayerNode.js.map +0 -1
- package/dist/src/control-layer/ExternalNetworkRpc.d.ts +0 -16
- package/dist/src/control-layer/ExternalNetworkRpc.js +0 -23
- package/dist/src/control-layer/ExternalNetworkRpc.js.map +0 -1
- package/dist/src/control-layer/PeerDescriptorStoreManager.d.ts +0 -28
- package/dist/src/control-layer/PeerDescriptorStoreManager.js +0 -78
- package/dist/src/control-layer/PeerDescriptorStoreManager.js.map +0 -1
- package/dist/src/discovery-layer/DiscoveryLayerNode.d.ts +0 -28
- package/dist/src/discovery-layer/DiscoveryLayerNode.js +0 -3
- package/dist/src/discovery-layer/DiscoveryLayerNode.js.map +0 -1
- package/dist/src/exports.d.ts +0 -6
- package/dist/src/exports.js +0 -24
- package/dist/src/exports.js.map +0 -1
- package/dist/src/types.d.ts +0 -6
- package/dist/src/types.js +0 -3
- package/dist/src/types.js.map +0 -1
- package/dist/src/utils.d.ts +0 -3
- package/dist/src/utils.js +0 -17
- package/dist/src/utils.js.map +0 -1
- package/dist/test/benchmark/first-message.d.ts +0 -1
- package/dist/test/benchmark/first-message.js +0 -139
- package/dist/test/benchmark/first-message.js.map +0 -1
- package/dist/test/utils/utils.d.ts +0 -15
- package/dist/test/utils/utils.js +0 -106
- package/dist/test/utils/utils.js.map +0 -1
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.NodeList = void 0;
|
|
7
|
-
const dht_1 = require("@streamr/dht");
|
|
8
|
-
const sample_1 = __importDefault(require("lodash/sample"));
|
|
9
|
-
const eventemitter3_1 = require("eventemitter3");
|
|
10
|
-
const getValuesOfIncludedKeys = (nodes, exclude, wsOnly = false) => {
|
|
11
|
-
const values = wsOnly
|
|
12
|
-
? Array.from(nodes.entries()).filter(([_, node]) => node.getPeerDescriptor().websocket !== undefined)
|
|
13
|
-
: Array.from(nodes.entries());
|
|
14
|
-
return values
|
|
15
|
-
.filter(([id]) => !exclude.includes(id))
|
|
16
|
-
.map(([_id, node]) => node);
|
|
17
|
-
};
|
|
18
|
-
// The items in the list are in the insertion order
|
|
19
|
-
class NodeList extends eventemitter3_1.EventEmitter {
|
|
20
|
-
nodes;
|
|
21
|
-
limit;
|
|
22
|
-
ownId;
|
|
23
|
-
constructor(ownId, limit) {
|
|
24
|
-
super();
|
|
25
|
-
this.nodes = new Map();
|
|
26
|
-
this.limit = limit;
|
|
27
|
-
this.ownId = ownId;
|
|
28
|
-
}
|
|
29
|
-
add(remote) {
|
|
30
|
-
const nodeId = (0, dht_1.toNodeId)(remote.getPeerDescriptor());
|
|
31
|
-
if ((this.ownId !== nodeId) && (this.nodes.size < this.limit)) {
|
|
32
|
-
const isExistingNode = this.nodes.has(nodeId);
|
|
33
|
-
this.nodes.set(nodeId, remote);
|
|
34
|
-
if (!isExistingNode) {
|
|
35
|
-
this.emit('nodeAdded', nodeId, remote);
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
remove(nodeId) {
|
|
40
|
-
if (this.nodes.has(nodeId)) {
|
|
41
|
-
const remote = this.nodes.get(nodeId);
|
|
42
|
-
this.nodes.delete(nodeId);
|
|
43
|
-
this.emit('nodeRemoved', nodeId, remote);
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
has(nodeId) {
|
|
47
|
-
return this.nodes.has(nodeId);
|
|
48
|
-
}
|
|
49
|
-
// Replace nodes does not emit nodeRemoved events, use with caution
|
|
50
|
-
replaceAll(neighbors) {
|
|
51
|
-
this.nodes.clear();
|
|
52
|
-
const limited = neighbors.splice(0, this.limit);
|
|
53
|
-
limited.forEach((remote) => {
|
|
54
|
-
this.add(remote);
|
|
55
|
-
});
|
|
56
|
-
}
|
|
57
|
-
getIds() {
|
|
58
|
-
return Array.from(this.nodes.keys());
|
|
59
|
-
}
|
|
60
|
-
get(id) {
|
|
61
|
-
return this.nodes.get(id);
|
|
62
|
-
}
|
|
63
|
-
size(exclude = []) {
|
|
64
|
-
return Array.from(this.nodes.keys()).filter((node) => !exclude.includes(node)).length;
|
|
65
|
-
}
|
|
66
|
-
getRandom(exclude) {
|
|
67
|
-
return (0, sample_1.default)(getValuesOfIncludedKeys(this.nodes, exclude));
|
|
68
|
-
}
|
|
69
|
-
getFirst(exclude, wsOnly = false) {
|
|
70
|
-
const included = getValuesOfIncludedKeys(this.nodes, exclude, wsOnly);
|
|
71
|
-
return included[0];
|
|
72
|
-
}
|
|
73
|
-
getFirstAndLast(exclude) {
|
|
74
|
-
const included = getValuesOfIncludedKeys(this.nodes, exclude);
|
|
75
|
-
if (included.length === 0) {
|
|
76
|
-
return [];
|
|
77
|
-
}
|
|
78
|
-
return included.length > 1 ? [this.getFirst(exclude), this.getLast(exclude)] : [this.getFirst(exclude)];
|
|
79
|
-
}
|
|
80
|
-
getLast(exclude) {
|
|
81
|
-
const included = getValuesOfIncludedKeys(this.nodes, exclude);
|
|
82
|
-
return included[included.length - 1];
|
|
83
|
-
}
|
|
84
|
-
getAll() {
|
|
85
|
-
return Array.from(this.nodes.values());
|
|
86
|
-
}
|
|
87
|
-
stop() {
|
|
88
|
-
this.nodes.forEach((node) => this.remove((0, dht_1.toNodeId)(node.getPeerDescriptor())));
|
|
89
|
-
this.removeAllListeners();
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
exports.NodeList = NodeList;
|
|
93
|
-
//# sourceMappingURL=NodeList.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"NodeList.js","sourceRoot":"","sources":["../../../src/content-delivery-layer/NodeList.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { StrictContentDeliveryLayerNodeOptions, ContentDeliveryLayerNode } from './ContentDeliveryLayerNode';
|
|
2
|
-
import type { MarkOptional } from 'ts-essentials';
|
|
3
|
-
type ContentDeliveryLayerNodeOptions = MarkOptional<StrictContentDeliveryLayerNodeOptions, 'nearbyNodeView' | 'randomNodeView' | 'neighbors' | 'leftNodeView' | 'rightNodeView' | 'propagation' | 'handshaker' | 'neighborFinder' | 'neighborUpdateManager' | 'neighborTargetCount' | 'rpcCommunicator' | 'nodeViewSize' | 'inspector' | 'temporaryConnectionRpcLocal'> & {
|
|
4
|
-
maxContactCount?: number;
|
|
5
|
-
minPropagationTargets?: number;
|
|
6
|
-
acceptProxyConnections?: boolean;
|
|
7
|
-
neighborUpdateInterval?: number;
|
|
8
|
-
maxPropagationBufferSize?: number;
|
|
9
|
-
doNotBufferWhileConnecting?: boolean;
|
|
10
|
-
plumtreeOptimization?: boolean;
|
|
11
|
-
plumtreeMaxPausedNeighbors?: number;
|
|
12
|
-
};
|
|
13
|
-
export declare const createContentDeliveryLayerNode: (options: ContentDeliveryLayerNodeOptions) => ContentDeliveryLayerNode;
|
|
14
|
-
export {};
|
|
@@ -1,129 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createContentDeliveryLayerNode = void 0;
|
|
4
|
-
const dht_1 = require("@streamr/dht");
|
|
5
|
-
const Handshaker_1 = require("./neighbor-discovery/Handshaker");
|
|
6
|
-
const NeighborFinder_1 = require("./neighbor-discovery/NeighborFinder");
|
|
7
|
-
const NeighborUpdateManager_1 = require("./neighbor-discovery/NeighborUpdateManager");
|
|
8
|
-
const ContentDeliveryLayerNode_1 = require("./ContentDeliveryLayerNode");
|
|
9
|
-
const NodeList_1 = require("./NodeList");
|
|
10
|
-
const Propagation_1 = require("./propagation/Propagation");
|
|
11
|
-
const ProxyConnectionRpcLocal_1 = require("./proxy/ProxyConnectionRpcLocal");
|
|
12
|
-
const Inspector_1 = require("./inspection/Inspector");
|
|
13
|
-
const TemporaryConnectionRpcLocal_1 = require("./temporary-connection/TemporaryConnectionRpcLocal");
|
|
14
|
-
const formStreamPartDeliveryServiceId_1 = require("./formStreamPartDeliveryServiceId");
|
|
15
|
-
const PlumtreeManager_1 = require("./plumtree/PlumtreeManager");
|
|
16
|
-
const createConfigWithDefaults = (options) => {
|
|
17
|
-
const ownNodeId = (0, dht_1.toNodeId)(options.localPeerDescriptor);
|
|
18
|
-
const rpcCommunicator = options.rpcCommunicator ?? new dht_1.ListeningRpcCommunicator((0, formStreamPartDeliveryServiceId_1.formStreamPartContentDeliveryServiceId)(options.streamPartId), options.transport);
|
|
19
|
-
const neighborTargetCount = options.neighborTargetCount ?? ContentDeliveryLayerNode_1.DEFAULT_NEIGHBOR_TARGET_COUNT;
|
|
20
|
-
const maxContactCount = options.maxContactCount ?? ContentDeliveryLayerNode_1.DEFAULT_NODE_VIEW_SIZE;
|
|
21
|
-
const acceptProxyConnections = options.acceptProxyConnections ?? ContentDeliveryLayerNode_1.DEFAULT_ACCEPT_PROXY_CONNECTIONS;
|
|
22
|
-
const neighborUpdateInterval = options.neighborUpdateInterval ?? NeighborUpdateManager_1.DEFAULT_NEIGHBOR_UPDATE_INTERVAL;
|
|
23
|
-
const minPropagationTargets = options.minPropagationTargets ?? Propagation_1.DEFAULT_MIN_PROPAGATION_TARGETS;
|
|
24
|
-
const maxPropagationBufferSize = options.maxPropagationBufferSize ?? Propagation_1.DEFAULT_MAX_PROPAGATION_BUFFER_SIZE;
|
|
25
|
-
const neighbors = options.neighbors ?? new NodeList_1.NodeList(ownNodeId, maxContactCount);
|
|
26
|
-
const leftNodeView = options.leftNodeView ?? new NodeList_1.NodeList(ownNodeId, maxContactCount);
|
|
27
|
-
const rightNodeView = options.rightNodeView ?? new NodeList_1.NodeList(ownNodeId, maxContactCount);
|
|
28
|
-
const nearbyNodeView = options.nearbyNodeView ?? new NodeList_1.NodeList(ownNodeId, maxContactCount);
|
|
29
|
-
const randomNodeView = options.randomNodeView ?? new NodeList_1.NodeList(ownNodeId, maxContactCount);
|
|
30
|
-
const ongoingHandshakes = new Set();
|
|
31
|
-
const temporaryConnectionRpcLocal = new TemporaryConnectionRpcLocal_1.TemporaryConnectionRpcLocal({
|
|
32
|
-
rpcCommunicator,
|
|
33
|
-
localPeerDescriptor: options.localPeerDescriptor,
|
|
34
|
-
streamPartId: options.streamPartId,
|
|
35
|
-
connectionLocker: options.connectionLocker
|
|
36
|
-
});
|
|
37
|
-
const proxyConnectionRpcLocal = acceptProxyConnections ? new ProxyConnectionRpcLocal_1.ProxyConnectionRpcLocal({
|
|
38
|
-
localPeerDescriptor: options.localPeerDescriptor,
|
|
39
|
-
streamPartId: options.streamPartId,
|
|
40
|
-
rpcCommunicator
|
|
41
|
-
}) : undefined;
|
|
42
|
-
const plumtreeManager = options.plumtreeOptimization ? new PlumtreeManager_1.PlumtreeManager({
|
|
43
|
-
neighbors,
|
|
44
|
-
localPeerDescriptor: options.localPeerDescriptor,
|
|
45
|
-
rpcCommunicator,
|
|
46
|
-
maxPausedNeighbors: options.plumtreeMaxPausedNeighbors
|
|
47
|
-
}) : undefined;
|
|
48
|
-
const propagation = options.propagation ?? new Propagation_1.Propagation({
|
|
49
|
-
minPropagationTargets,
|
|
50
|
-
maxMessages: maxPropagationBufferSize,
|
|
51
|
-
ttl: Propagation_1.DEFAULT_PROPAGATION_BUFFER_TTL,
|
|
52
|
-
sendToNeighbor: async (neighborId, msg) => {
|
|
53
|
-
const remote = neighbors.get(neighborId) ?? temporaryConnectionRpcLocal.getNodes().get(neighborId);
|
|
54
|
-
const proxyConnection = proxyConnectionRpcLocal?.getConnection(neighborId);
|
|
55
|
-
if (remote) {
|
|
56
|
-
await remote.sendStreamMessage(msg, options.doNotBufferWhileConnecting);
|
|
57
|
-
}
|
|
58
|
-
else if (proxyConnection) {
|
|
59
|
-
await proxyConnection.remote.sendStreamMessage(msg);
|
|
60
|
-
}
|
|
61
|
-
else {
|
|
62
|
-
throw new Error('Propagation target not found');
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
});
|
|
66
|
-
const handshaker = options.handshaker ?? new Handshaker_1.Handshaker({
|
|
67
|
-
localPeerDescriptor: options.localPeerDescriptor,
|
|
68
|
-
streamPartId: options.streamPartId,
|
|
69
|
-
rpcCommunicator,
|
|
70
|
-
neighbors,
|
|
71
|
-
leftNodeView,
|
|
72
|
-
rightNodeView,
|
|
73
|
-
nearbyNodeView,
|
|
74
|
-
randomNodeView,
|
|
75
|
-
maxNeighborCount: neighborTargetCount,
|
|
76
|
-
rpcRequestTimeout: options.rpcRequestTimeout,
|
|
77
|
-
ongoingHandshakes
|
|
78
|
-
});
|
|
79
|
-
const neighborFinder = options.neighborFinder ?? new NeighborFinder_1.NeighborFinder({
|
|
80
|
-
neighbors,
|
|
81
|
-
leftNodeView,
|
|
82
|
-
rightNodeView,
|
|
83
|
-
nearbyNodeView,
|
|
84
|
-
randomNodeView,
|
|
85
|
-
doFindNeighbors: (excludedIds) => handshaker.attemptHandshakesOnContacts(excludedIds),
|
|
86
|
-
minCount: neighborTargetCount
|
|
87
|
-
});
|
|
88
|
-
const neighborUpdateManager = options.neighborUpdateManager ?? new NeighborUpdateManager_1.NeighborUpdateManager({
|
|
89
|
-
neighbors,
|
|
90
|
-
nearbyNodeView,
|
|
91
|
-
localPeerDescriptor: options.localPeerDescriptor,
|
|
92
|
-
neighborFinder,
|
|
93
|
-
streamPartId: options.streamPartId,
|
|
94
|
-
rpcCommunicator,
|
|
95
|
-
neighborUpdateInterval,
|
|
96
|
-
neighborTargetCount,
|
|
97
|
-
ongoingHandshakes
|
|
98
|
-
});
|
|
99
|
-
const inspector = options.inspector ?? new Inspector_1.Inspector({
|
|
100
|
-
localPeerDescriptor: options.localPeerDescriptor,
|
|
101
|
-
rpcCommunicator,
|
|
102
|
-
streamPartId: options.streamPartId,
|
|
103
|
-
connectionLocker: options.connectionLocker
|
|
104
|
-
});
|
|
105
|
-
return {
|
|
106
|
-
...options,
|
|
107
|
-
neighbors,
|
|
108
|
-
leftNodeView,
|
|
109
|
-
rightNodeView,
|
|
110
|
-
nearbyNodeView,
|
|
111
|
-
randomNodeView,
|
|
112
|
-
rpcCommunicator,
|
|
113
|
-
handshaker,
|
|
114
|
-
neighborFinder,
|
|
115
|
-
neighborUpdateManager,
|
|
116
|
-
propagation,
|
|
117
|
-
neighborTargetCount,
|
|
118
|
-
nodeViewSize: maxContactCount,
|
|
119
|
-
proxyConnectionRpcLocal,
|
|
120
|
-
inspector,
|
|
121
|
-
temporaryConnectionRpcLocal,
|
|
122
|
-
plumtreeManager
|
|
123
|
-
};
|
|
124
|
-
};
|
|
125
|
-
const createContentDeliveryLayerNode = (options) => {
|
|
126
|
-
return new ContentDeliveryLayerNode_1.ContentDeliveryLayerNode(createConfigWithDefaults(options));
|
|
127
|
-
};
|
|
128
|
-
exports.createContentDeliveryLayerNode = createContentDeliveryLayerNode;
|
|
129
|
-
//# sourceMappingURL=createContentDeliveryLayerNode.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"createContentDeliveryLayerNode.js","sourceRoot":"","sources":["../../../src/content-delivery-layer/createContentDeliveryLayerNode.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.formStreamPartContentDeliveryServiceId = void 0;
|
|
4
|
-
const formStreamPartContentDeliveryServiceId = (streamPartId) => {
|
|
5
|
-
// could be "content-delivery" instead of "delivery", but that is a breaking change
|
|
6
|
-
return `stream-part-delivery-${streamPartId}`;
|
|
7
|
-
};
|
|
8
|
-
exports.formStreamPartContentDeliveryServiceId = formStreamPartContentDeliveryServiceId;
|
|
9
|
-
//# sourceMappingURL=formStreamPartDeliveryServiceId.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"formStreamPartDeliveryServiceId.js","sourceRoot":"","sources":["../../../src/content-delivery-layer/formStreamPartDeliveryServiceId.ts"],"names":[],"mappings":";;;AAGO,MAAM,sCAAsC,GAAG,CAAC,YAA0B,EAAa,EAAE;IAC5F,mFAAmF;IACnF,OAAO,wBAAwB,YAAY,EAAE,CAAA;AACjD,CAAC,CAAA;AAHY,QAAA,sCAAsC,0CAGlD"}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { DhtAddress } from '@streamr/dht';
|
|
2
|
-
import { EventEmitter } from 'eventemitter3';
|
|
3
|
-
import { MessageID } from '../../../generated/packages/trackerless-network/protos/NetworkRpc';
|
|
4
|
-
export interface Events {
|
|
5
|
-
done: () => void;
|
|
6
|
-
}
|
|
7
|
-
interface InspectSessionOptions {
|
|
8
|
-
inspectedNode: DhtAddress;
|
|
9
|
-
}
|
|
10
|
-
export declare class InspectSession extends EventEmitter<Events> {
|
|
11
|
-
private readonly inspectionMessages;
|
|
12
|
-
private readonly inspectedNode;
|
|
13
|
-
constructor(options: InspectSessionOptions);
|
|
14
|
-
markMessage(remoteNodeId: DhtAddress, messageId: MessageID): void;
|
|
15
|
-
getInspectedMessageCount(): number;
|
|
16
|
-
onlyMarkedByInspectedNode(): boolean;
|
|
17
|
-
stop(): void;
|
|
18
|
-
}
|
|
19
|
-
export {};
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.InspectSession = void 0;
|
|
4
|
-
const utils_1 = require("@streamr/utils");
|
|
5
|
-
const eventemitter3_1 = require("eventemitter3");
|
|
6
|
-
const createMessageKey = (messageId) => {
|
|
7
|
-
return `${(0, utils_1.toUserId)(messageId.publisherId)}:${messageId.messageChainId}:${messageId.timestamp}:${messageId.sequenceNumber}`;
|
|
8
|
-
};
|
|
9
|
-
class InspectSession extends eventemitter3_1.EventEmitter {
|
|
10
|
-
// Boolean indicates if the message has been received by the inspected node
|
|
11
|
-
inspectionMessages = new Map();
|
|
12
|
-
inspectedNode;
|
|
13
|
-
constructor(options) {
|
|
14
|
-
super();
|
|
15
|
-
this.inspectedNode = options.inspectedNode;
|
|
16
|
-
}
|
|
17
|
-
markMessage(remoteNodeId, messageId) {
|
|
18
|
-
const messageKey = createMessageKey(messageId);
|
|
19
|
-
if (!this.inspectionMessages.has(messageKey)) {
|
|
20
|
-
this.inspectionMessages.set(messageKey, remoteNodeId === this.inspectedNode);
|
|
21
|
-
}
|
|
22
|
-
else if (this.inspectionMessages.has(messageKey)
|
|
23
|
-
&& this.inspectionMessages.get(messageKey) === false
|
|
24
|
-
&& remoteNodeId === this.inspectedNode) {
|
|
25
|
-
this.emit('done');
|
|
26
|
-
}
|
|
27
|
-
else if (this.inspectionMessages.has(messageKey)
|
|
28
|
-
&& this.inspectionMessages.get(messageKey) === true) {
|
|
29
|
-
this.emit('done');
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
getInspectedMessageCount() {
|
|
33
|
-
return this.inspectionMessages.size;
|
|
34
|
-
}
|
|
35
|
-
onlyMarkedByInspectedNode() {
|
|
36
|
-
return Array.from(this.inspectionMessages.values()).every((value) => value === true);
|
|
37
|
-
}
|
|
38
|
-
stop() {
|
|
39
|
-
this.emit('done');
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
exports.InspectSession = InspectSession;
|
|
43
|
-
//# sourceMappingURL=InspectSession.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"InspectSession.js","sourceRoot":"","sources":["../../../../src/content-delivery-layer/inspection/InspectSession.ts"],"names":[],"mappings":";;;AACA,0CAAyC;AACzC,iDAA4C;AAW5C,MAAM,gBAAgB,GAAG,CAAC,SAAoB,EAAU,EAAE;IACtD,OAAO,GAAG,IAAA,gBAAQ,EAAC,SAAS,CAAC,WAAW,CAAC,IAAI,SAAS,CAAC,cAAc,IAAI,SAAS,CAAC,SAAS,IAAI,SAAS,CAAC,cAAc,EAAE,CAAA;AAC9H,CAAC,CAAA;AAED,MAAa,cAAe,SAAQ,4BAAoB;IAEpD,2EAA2E;IAC1D,kBAAkB,GAAyB,IAAI,GAAG,EAAE,CAAA;IACpD,aAAa,CAAY;IAE1C,YAAY,OAA8B;QACtC,KAAK,EAAE,CAAA;QACP,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,CAAA;IAC9C,CAAC;IAED,WAAW,CAAC,YAAwB,EAAE,SAAoB;QACtD,MAAM,UAAU,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAA;QAC9C,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;YAC3C,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,UAAU,EAAE,YAAY,KAAK,IAAI,CAAC,aAAa,CAAC,CAAA;QAChF,CAAC;aAAM,IAAI,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,UAAU,CAAC;eAC3C,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,KAAK;eACjD,YAAY,KAAK,IAAI,CAAC,aAAa,EACxC,CAAC;YACC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACrB,CAAC;aAAM,IAAI,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,UAAU,CAAC;eAC3C,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,IAAI,EAAE,CAAC;YACtD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACrB,CAAC;IACL,CAAC;IAED,wBAAwB;QACpB,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAA;IACvC,CAAC;IAED,yBAAyB;QACrB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,CAAA;IACxF,CAAC;IAED,IAAI;QACA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACrB,CAAC;CACJ;AArCD,wCAqCC"}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { ConnectionLocker, DhtAddress, ListeningRpcCommunicator, LockID, PeerDescriptor } from '@streamr/dht';
|
|
2
|
-
import { StreamPartID } from '@streamr/utils';
|
|
3
|
-
import { MessageID } from '../../../generated/packages/trackerless-network/protos/NetworkRpc';
|
|
4
|
-
interface InspectorOptions {
|
|
5
|
-
localPeerDescriptor: PeerDescriptor;
|
|
6
|
-
streamPartId: StreamPartID;
|
|
7
|
-
rpcCommunicator: ListeningRpcCommunicator;
|
|
8
|
-
connectionLocker: ConnectionLocker;
|
|
9
|
-
inspectionTimeout?: number;
|
|
10
|
-
openInspectConnection?: (peerDescriptor: PeerDescriptor, lockId: LockID) => Promise<void>;
|
|
11
|
-
closeInspectConnection?: (peerDescriptor: PeerDescriptor, lockId: LockID) => Promise<void>;
|
|
12
|
-
}
|
|
13
|
-
export declare class Inspector {
|
|
14
|
-
private readonly sessions;
|
|
15
|
-
private readonly streamPartId;
|
|
16
|
-
private readonly localPeerDescriptor;
|
|
17
|
-
private readonly rpcCommunicator;
|
|
18
|
-
private readonly connectionLocker;
|
|
19
|
-
private readonly inspectionTimeout;
|
|
20
|
-
private readonly openInspectConnection;
|
|
21
|
-
private readonly closeInspectConnection;
|
|
22
|
-
constructor(options: InspectorOptions);
|
|
23
|
-
defaultOpenInspectConnection(peerDescriptor: PeerDescriptor, lockId: LockID): Promise<void>;
|
|
24
|
-
defaultCloseInspectConnection(peerDescriptor: PeerDescriptor, lockId: LockID): Promise<void>;
|
|
25
|
-
inspect(peerDescriptor: PeerDescriptor): Promise<boolean>;
|
|
26
|
-
markMessage(sender: DhtAddress, messageId: MessageID): void;
|
|
27
|
-
isInspected(nodeId: DhtAddress): boolean;
|
|
28
|
-
stop(): void;
|
|
29
|
-
}
|
|
30
|
-
export {};
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Inspector = void 0;
|
|
4
|
-
const dht_1 = require("@streamr/dht");
|
|
5
|
-
const utils_1 = require("@streamr/utils");
|
|
6
|
-
const NetworkRpc_client_1 = require("../../../generated/packages/trackerless-network/protos/NetworkRpc.client");
|
|
7
|
-
const TemporaryConnectionRpcRemote_1 = require("../temporary-connection/TemporaryConnectionRpcRemote");
|
|
8
|
-
const InspectSession_1 = require("./InspectSession");
|
|
9
|
-
const logger = new utils_1.Logger(module);
|
|
10
|
-
const DEFAULT_TIMEOUT = 60 * 1000;
|
|
11
|
-
class Inspector {
|
|
12
|
-
sessions = new Map();
|
|
13
|
-
streamPartId;
|
|
14
|
-
localPeerDescriptor;
|
|
15
|
-
rpcCommunicator;
|
|
16
|
-
connectionLocker;
|
|
17
|
-
inspectionTimeout;
|
|
18
|
-
openInspectConnection;
|
|
19
|
-
closeInspectConnection;
|
|
20
|
-
constructor(options) {
|
|
21
|
-
this.streamPartId = options.streamPartId;
|
|
22
|
-
this.localPeerDescriptor = options.localPeerDescriptor;
|
|
23
|
-
this.rpcCommunicator = options.rpcCommunicator;
|
|
24
|
-
this.connectionLocker = options.connectionLocker;
|
|
25
|
-
this.inspectionTimeout = options.inspectionTimeout ?? DEFAULT_TIMEOUT;
|
|
26
|
-
this.openInspectConnection = options.openInspectConnection ?? this.defaultOpenInspectConnection;
|
|
27
|
-
this.closeInspectConnection = options.closeInspectConnection ?? this.defaultCloseInspectConnection;
|
|
28
|
-
}
|
|
29
|
-
async defaultOpenInspectConnection(peerDescriptor, lockId) {
|
|
30
|
-
const rpcRemote = new TemporaryConnectionRpcRemote_1.TemporaryConnectionRpcRemote(this.localPeerDescriptor, peerDescriptor, this.rpcCommunicator, NetworkRpc_client_1.TemporaryConnectionRpcClient);
|
|
31
|
-
await rpcRemote.openConnection();
|
|
32
|
-
this.connectionLocker.weakLockConnection((0, dht_1.toNodeId)(peerDescriptor), lockId);
|
|
33
|
-
}
|
|
34
|
-
async defaultCloseInspectConnection(peerDescriptor, lockId) {
|
|
35
|
-
const rpcRemote = new TemporaryConnectionRpcRemote_1.TemporaryConnectionRpcRemote(this.localPeerDescriptor, peerDescriptor, this.rpcCommunicator, NetworkRpc_client_1.TemporaryConnectionRpcClient);
|
|
36
|
-
await rpcRemote.closeConnection();
|
|
37
|
-
this.connectionLocker.weakUnlockConnection((0, dht_1.toNodeId)(peerDescriptor), lockId);
|
|
38
|
-
}
|
|
39
|
-
async inspect(peerDescriptor) {
|
|
40
|
-
const nodeId = (0, dht_1.toNodeId)(peerDescriptor);
|
|
41
|
-
const session = new InspectSession_1.InspectSession({
|
|
42
|
-
inspectedNode: nodeId
|
|
43
|
-
});
|
|
44
|
-
const lockId = `inspector-${this.streamPartId}`;
|
|
45
|
-
this.sessions.set(nodeId, session);
|
|
46
|
-
await this.openInspectConnection(peerDescriptor, lockId);
|
|
47
|
-
let success = false;
|
|
48
|
-
try {
|
|
49
|
-
await (0, utils_1.waitForEvent)(session, 'done', this.inspectionTimeout);
|
|
50
|
-
success = true;
|
|
51
|
-
}
|
|
52
|
-
catch {
|
|
53
|
-
logger.trace('Inspect session timed out, removing');
|
|
54
|
-
}
|
|
55
|
-
finally {
|
|
56
|
-
await this.closeInspectConnection(peerDescriptor, lockId);
|
|
57
|
-
this.sessions.delete(nodeId);
|
|
58
|
-
}
|
|
59
|
-
return success || session.getInspectedMessageCount() < 1 || session.onlyMarkedByInspectedNode();
|
|
60
|
-
}
|
|
61
|
-
markMessage(sender, messageId) {
|
|
62
|
-
this.sessions.forEach((session) => session.markMessage(sender, messageId));
|
|
63
|
-
}
|
|
64
|
-
isInspected(nodeId) {
|
|
65
|
-
return this.sessions.has(nodeId);
|
|
66
|
-
}
|
|
67
|
-
stop() {
|
|
68
|
-
this.sessions.forEach((session) => {
|
|
69
|
-
session.stop();
|
|
70
|
-
});
|
|
71
|
-
this.sessions.clear();
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
exports.Inspector = Inspector;
|
|
75
|
-
//# sourceMappingURL=Inspector.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Inspector.js","sourceRoot":"","sources":["../../../../src/content-delivery-layer/inspection/Inspector.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { ServerCallContext } from '@protobuf-ts/runtime-rpc';
|
|
2
|
-
import { DhtAddress, PeerDescriptor } from '@streamr/dht';
|
|
3
|
-
import { StreamPartID } from '@streamr/utils';
|
|
4
|
-
import { InterleaveRequest, InterleaveResponse, StreamPartHandshakeRequest, StreamPartHandshakeResponse } from '../../../generated/packages/trackerless-network/protos/NetworkRpc';
|
|
5
|
-
import { IHandshakeRpc } from '../../../generated/packages/trackerless-network/protos/NetworkRpc.server';
|
|
6
|
-
import { ContentDeliveryRpcRemote } from '../ContentDeliveryRpcRemote';
|
|
7
|
-
import { NodeList } from '../NodeList';
|
|
8
|
-
import { HandshakeRpcRemote } from './HandshakeRpcRemote';
|
|
9
|
-
interface HandshakeRpcLocalOptions {
|
|
10
|
-
streamPartId: StreamPartID;
|
|
11
|
-
neighbors: NodeList;
|
|
12
|
-
ongoingHandshakes: Set<DhtAddress>;
|
|
13
|
-
ongoingInterleaves: Set<DhtAddress>;
|
|
14
|
-
maxNeighborCount: number;
|
|
15
|
-
createRpcRemote: (target: PeerDescriptor) => HandshakeRpcRemote;
|
|
16
|
-
createContentDeliveryRpcRemote: (peerDescriptor: PeerDescriptor) => ContentDeliveryRpcRemote;
|
|
17
|
-
handshakeWithInterleaving: (target: PeerDescriptor, remoteNodeId: DhtAddress) => Promise<boolean>;
|
|
18
|
-
}
|
|
19
|
-
export declare class HandshakeRpcLocal implements IHandshakeRpc {
|
|
20
|
-
private readonly options;
|
|
21
|
-
constructor(options: HandshakeRpcLocalOptions);
|
|
22
|
-
handshake(request: StreamPartHandshakeRequest, context: ServerCallContext): Promise<StreamPartHandshakeResponse>;
|
|
23
|
-
private handleRequest;
|
|
24
|
-
private acceptHandshake;
|
|
25
|
-
private rejectHandshake;
|
|
26
|
-
private acceptHandshakeWithInterleaving;
|
|
27
|
-
interleaveRequest(message: InterleaveRequest, context: ServerCallContext): Promise<InterleaveResponse>;
|
|
28
|
-
}
|
|
29
|
-
export {};
|
|
@@ -1,106 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.HandshakeRpcLocal = void 0;
|
|
4
|
-
const dht_1 = require("@streamr/dht");
|
|
5
|
-
const utils_1 = require("@streamr/utils");
|
|
6
|
-
const logger = new utils_1.Logger(module);
|
|
7
|
-
class HandshakeRpcLocal {
|
|
8
|
-
options;
|
|
9
|
-
constructor(options) {
|
|
10
|
-
this.options = options;
|
|
11
|
-
}
|
|
12
|
-
async handshake(request, context) {
|
|
13
|
-
return this.handleRequest(request, context);
|
|
14
|
-
}
|
|
15
|
-
handleRequest(request, context) {
|
|
16
|
-
const senderDescriptor = context.incomingSourceDescriptor;
|
|
17
|
-
const getInterleaveNodeIds = () => (request.interleaveNodeId !== undefined) ? [(0, dht_1.toDhtAddress)(request.interleaveNodeId)] : [];
|
|
18
|
-
const senderNodeId = (0, dht_1.toNodeId)(senderDescriptor);
|
|
19
|
-
if (this.options.ongoingInterleaves.has(senderNodeId)) {
|
|
20
|
-
return this.rejectHandshake(request);
|
|
21
|
-
}
|
|
22
|
-
else if (this.options.neighbors.has(senderNodeId)
|
|
23
|
-
|| this.options.ongoingHandshakes.has(senderNodeId)) {
|
|
24
|
-
return this.acceptHandshake(request, senderDescriptor);
|
|
25
|
-
}
|
|
26
|
-
else if (this.options.neighbors.size() + this.options.ongoingHandshakes.size < this.options.maxNeighborCount) {
|
|
27
|
-
return this.acceptHandshake(request, senderDescriptor);
|
|
28
|
-
}
|
|
29
|
-
else if (this.options.neighbors.size(getInterleaveNodeIds()) - this.options.ongoingInterleaves.size >= 2
|
|
30
|
-
&& this.options.neighbors.size() <= this.options.maxNeighborCount) {
|
|
31
|
-
// Do not accept the handshakes requests if the target neighbor count can potentially drop below 2
|
|
32
|
-
// due to interleaving. This ensures that a stable number of connections is kept during high churn.
|
|
33
|
-
return this.acceptHandshakeWithInterleaving(request, senderDescriptor);
|
|
34
|
-
}
|
|
35
|
-
else {
|
|
36
|
-
return this.rejectHandshake(request);
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
acceptHandshake(request, requester) {
|
|
40
|
-
const res = {
|
|
41
|
-
requestId: request.requestId,
|
|
42
|
-
accepted: true
|
|
43
|
-
};
|
|
44
|
-
this.options.neighbors.add(this.options.createContentDeliveryRpcRemote(requester));
|
|
45
|
-
return res;
|
|
46
|
-
}
|
|
47
|
-
// eslint-disable-next-line class-methods-use-this
|
|
48
|
-
rejectHandshake(request) {
|
|
49
|
-
const res = {
|
|
50
|
-
requestId: request.requestId,
|
|
51
|
-
accepted: false
|
|
52
|
-
};
|
|
53
|
-
return res;
|
|
54
|
-
}
|
|
55
|
-
acceptHandshakeWithInterleaving(request, requester) {
|
|
56
|
-
const exclude = [];
|
|
57
|
-
request.neighborNodeIds.forEach((id) => exclude.push((0, dht_1.toDhtAddress)(id)));
|
|
58
|
-
this.options.ongoingInterleaves.forEach((id) => exclude.push(id));
|
|
59
|
-
exclude.push((0, dht_1.toNodeId)(requester));
|
|
60
|
-
if (request.interleaveNodeId !== undefined) {
|
|
61
|
-
exclude.push((0, dht_1.toDhtAddress)(request.interleaveNodeId));
|
|
62
|
-
}
|
|
63
|
-
const last = this.options.neighbors.getLast(exclude);
|
|
64
|
-
const lastPeerDescriptor = last ? last.getPeerDescriptor() : undefined;
|
|
65
|
-
if (last) {
|
|
66
|
-
const nodeId = (0, dht_1.toNodeId)(last.getPeerDescriptor());
|
|
67
|
-
const remote = this.options.createRpcRemote(last.getPeerDescriptor());
|
|
68
|
-
this.options.ongoingInterleaves.add(nodeId);
|
|
69
|
-
// Run this with then catch instead of setImmediate to avoid changes in state
|
|
70
|
-
// eslint-disable-next-line promise/catch-or-return
|
|
71
|
-
remote.interleaveRequest(requester).then((response) => {
|
|
72
|
-
// If response is accepted, remove the last node from the target neighbors
|
|
73
|
-
// and unlock the connection
|
|
74
|
-
// If response is not accepted, keep the last node as a neighbor
|
|
75
|
-
if (response.accepted) {
|
|
76
|
-
this.options.neighbors.remove((0, dht_1.toNodeId)(lastPeerDescriptor));
|
|
77
|
-
}
|
|
78
|
-
}).catch(() => {
|
|
79
|
-
// no-op: InterleaveRequest cannot reject
|
|
80
|
-
}).finally(() => {
|
|
81
|
-
this.options.ongoingInterleaves.delete(nodeId);
|
|
82
|
-
});
|
|
83
|
-
}
|
|
84
|
-
this.options.neighbors.add(this.options.createContentDeliveryRpcRemote(requester));
|
|
85
|
-
return {
|
|
86
|
-
requestId: request.requestId,
|
|
87
|
-
accepted: true,
|
|
88
|
-
interleaveTargetDescriptor: lastPeerDescriptor
|
|
89
|
-
};
|
|
90
|
-
}
|
|
91
|
-
async interleaveRequest(message, context) {
|
|
92
|
-
const senderPeerDescriptor = context.incomingSourceDescriptor;
|
|
93
|
-
const remoteNodeId = (0, dht_1.toNodeId)(senderPeerDescriptor);
|
|
94
|
-
try {
|
|
95
|
-
await this.options.handshakeWithInterleaving(message.interleaveTargetDescriptor, remoteNodeId);
|
|
96
|
-
this.options.neighbors.remove(remoteNodeId);
|
|
97
|
-
return { accepted: true };
|
|
98
|
-
}
|
|
99
|
-
catch (err) {
|
|
100
|
-
logger.debug(`interleaveRequest to ${(0, dht_1.toNodeId)(message.interleaveTargetDescriptor)} failed`, { err });
|
|
101
|
-
return { accepted: false };
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
exports.HandshakeRpcLocal = HandshakeRpcLocal;
|
|
106
|
-
//# sourceMappingURL=HandshakeRpcLocal.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"HandshakeRpcLocal.js","sourceRoot":"","sources":["../../../../src/content-delivery-layer/neighbor-discovery/HandshakeRpcLocal.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { DhtAddress, PeerDescriptor, RpcRemote } from '@streamr/dht';
|
|
2
|
-
import { StreamPartID } from '@streamr/utils';
|
|
3
|
-
import { InterleaveResponse } from '../../../generated/packages/trackerless-network/protos/NetworkRpc';
|
|
4
|
-
import { HandshakeRpcClient } from '../../../generated/packages/trackerless-network/protos/NetworkRpc.client';
|
|
5
|
-
interface HandshakeResponse {
|
|
6
|
-
accepted: boolean;
|
|
7
|
-
interleaveTargetDescriptor?: PeerDescriptor;
|
|
8
|
-
}
|
|
9
|
-
export declare const INTERLEAVE_REQUEST_TIMEOUT = 10000;
|
|
10
|
-
export declare class HandshakeRpcRemote extends RpcRemote<HandshakeRpcClient> {
|
|
11
|
-
handshake(streamPartId: StreamPartID, neighborNodeIds: DhtAddress[], concurrentHandshakeNodeId?: DhtAddress, interleaveNodeId?: DhtAddress): Promise<HandshakeResponse>;
|
|
12
|
-
interleaveRequest(originatorDescriptor: PeerDescriptor): Promise<InterleaveResponse>;
|
|
13
|
-
}
|
|
14
|
-
export {};
|