@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,36 +0,0 @@
|
|
|
1
|
-
import { DhtNodeOptions, PeerDescriptor } from '@streamr/dht';
|
|
2
|
-
import { MetricsContext, StreamPartID } from '@streamr/utils';
|
|
3
|
-
import { ContentDeliveryManager, ContentDeliveryManagerOptions, StreamPartDeliveryOptions } from './ContentDeliveryManager';
|
|
4
|
-
import { ControlLayerNode } from './control-layer/ControlLayerNode';
|
|
5
|
-
import { StreamMessage } from '../generated/packages/trackerless-network/protos/NetworkRpc';
|
|
6
|
-
import { NodeInfo } from './types';
|
|
7
|
-
export interface NetworkOptions {
|
|
8
|
-
layer0?: DhtNodeOptions;
|
|
9
|
-
networkNode?: ContentDeliveryManagerOptions;
|
|
10
|
-
metricsContext?: MetricsContext;
|
|
11
|
-
}
|
|
12
|
-
export declare class NetworkStack {
|
|
13
|
-
private controlLayerNode?;
|
|
14
|
-
private contentDeliveryManager?;
|
|
15
|
-
private stopped;
|
|
16
|
-
private readonly metricsContext;
|
|
17
|
-
private readonly options;
|
|
18
|
-
private nodeInfoRpcLocal?;
|
|
19
|
-
private nodeInfoClient?;
|
|
20
|
-
constructor(options: NetworkOptions);
|
|
21
|
-
joinStreamPart(streamPartId: StreamPartID, neighborRequirement?: {
|
|
22
|
-
minCount: number;
|
|
23
|
-
timeout: number;
|
|
24
|
-
}, streamPartDeliveryOptions?: StreamPartDeliveryOptions): Promise<void>;
|
|
25
|
-
broadcast(msg: StreamMessage, streamPartDeliveryOptions?: StreamPartDeliveryOptions): Promise<void>;
|
|
26
|
-
start(doJoin?: boolean): Promise<void>;
|
|
27
|
-
private ensureConnectedToControlLayer;
|
|
28
|
-
getContentDeliveryManager(): ContentDeliveryManager;
|
|
29
|
-
getControlLayerNode(): ControlLayerNode;
|
|
30
|
-
getMetricsContext(): MetricsContext;
|
|
31
|
-
fetchNodeInfo(node: PeerDescriptor): Promise<NodeInfo>;
|
|
32
|
-
createNodeInfo(): NodeInfo;
|
|
33
|
-
getOptions(): NetworkOptions;
|
|
34
|
-
private getConnectionManager;
|
|
35
|
-
stop(): Promise<void>;
|
|
36
|
-
}
|
package/dist/src/NetworkStack.js
DELETED
|
@@ -1,165 +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.NetworkStack = void 0;
|
|
7
|
-
const dht_1 = require("@streamr/dht");
|
|
8
|
-
const utils_1 = require("@streamr/utils");
|
|
9
|
-
const pull_1 = __importDefault(require("lodash/pull"));
|
|
10
|
-
const package_json_1 = require("../package.json");
|
|
11
|
-
const ContentDeliveryManager_1 = require("./ContentDeliveryManager");
|
|
12
|
-
const NodeInfoClient_1 = require("./NodeInfoClient");
|
|
13
|
-
const NodeInfoRpcLocal_1 = require("./NodeInfoRpcLocal");
|
|
14
|
-
const NetworkRpc_1 = require("../generated/packages/trackerless-network/protos/NetworkRpc");
|
|
15
|
-
const logger = new utils_1.Logger(module);
|
|
16
|
-
const instances = [];
|
|
17
|
-
const stopInstances = async () => {
|
|
18
|
-
// make a clone so that it is ok for each instance.stop() to remove itself from the list (at line 139)
|
|
19
|
-
// while the map function is iterating the list
|
|
20
|
-
const clonedInstances = [...instances];
|
|
21
|
-
await Promise.all(clonedInstances.map((instance) => instance.stop()));
|
|
22
|
-
};
|
|
23
|
-
const EXIT_EVENTS = [`exit`, `SIGINT`, `SIGUSR1`, `SIGUSR2`, `uncaughtException`, `unhandledRejection`, `SIGTERM`];
|
|
24
|
-
EXIT_EVENTS.forEach((event) => {
|
|
25
|
-
process.on(event, async (eventArg) => {
|
|
26
|
-
const isError = (event === 'uncaughtException') || (event === 'unhandledRejection');
|
|
27
|
-
if (isError) {
|
|
28
|
-
logger.error(`exit event: ${event}`, eventArg);
|
|
29
|
-
}
|
|
30
|
-
await stopInstances();
|
|
31
|
-
process.exit(isError ? 1 : 0);
|
|
32
|
-
});
|
|
33
|
-
});
|
|
34
|
-
if (typeof window === 'object') {
|
|
35
|
-
window.addEventListener('unload', async () => {
|
|
36
|
-
await stopInstances();
|
|
37
|
-
});
|
|
38
|
-
}
|
|
39
|
-
class NetworkStack {
|
|
40
|
-
controlLayerNode;
|
|
41
|
-
contentDeliveryManager;
|
|
42
|
-
stopped = false;
|
|
43
|
-
metricsContext;
|
|
44
|
-
options;
|
|
45
|
-
nodeInfoRpcLocal;
|
|
46
|
-
nodeInfoClient;
|
|
47
|
-
constructor(options) {
|
|
48
|
-
this.options = options;
|
|
49
|
-
this.metricsContext = options.metricsContext ?? new utils_1.MetricsContext();
|
|
50
|
-
this.controlLayerNode = new dht_1.DhtNode({
|
|
51
|
-
...options.layer0,
|
|
52
|
-
metricsContext: this.metricsContext,
|
|
53
|
-
allowIncomingPrivateConnections: options.networkNode?.acceptProxyConnections
|
|
54
|
-
});
|
|
55
|
-
this.contentDeliveryManager = new ContentDeliveryManager_1.ContentDeliveryManager({
|
|
56
|
-
...options.networkNode,
|
|
57
|
-
metricsContext: this.metricsContext
|
|
58
|
-
});
|
|
59
|
-
instances.push(this);
|
|
60
|
-
}
|
|
61
|
-
async joinStreamPart(streamPartId, neighborRequirement, streamPartDeliveryOptions) {
|
|
62
|
-
if (this.getContentDeliveryManager().isProxiedStreamPart(streamPartId)) {
|
|
63
|
-
throw new Error(`Cannot join to ${streamPartId} as proxy connections have been set`);
|
|
64
|
-
}
|
|
65
|
-
await this.ensureConnectedToControlLayer();
|
|
66
|
-
this.getContentDeliveryManager().joinStreamPart(streamPartId, streamPartDeliveryOptions);
|
|
67
|
-
if (neighborRequirement !== undefined) {
|
|
68
|
-
await (0, utils_1.until)(() => {
|
|
69
|
-
return this.getContentDeliveryManager().getNeighbors(streamPartId).length >= neighborRequirement.minCount;
|
|
70
|
-
}, neighborRequirement.timeout);
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
async broadcast(msg, streamPartDeliveryOptions) {
|
|
74
|
-
const streamPartId = (0, utils_1.toStreamPartID)(msg.messageId.streamId, msg.messageId.streamPartition);
|
|
75
|
-
if (this.getContentDeliveryManager().isProxiedStreamPart(streamPartId, NetworkRpc_1.ProxyDirection.SUBSCRIBE)
|
|
76
|
-
&& (msg.body.oneofKind === 'contentMessage')) {
|
|
77
|
-
throw new Error(`Cannot broadcast to ${streamPartId} as proxy subscribe connections have been set`);
|
|
78
|
-
}
|
|
79
|
-
// TODO could combine these two calls to isProxiedStreamPart?
|
|
80
|
-
if (!this.contentDeliveryManager.isProxiedStreamPart(streamPartId)) {
|
|
81
|
-
await this.ensureConnectedToControlLayer();
|
|
82
|
-
}
|
|
83
|
-
this.getContentDeliveryManager().broadcast(msg, streamPartDeliveryOptions);
|
|
84
|
-
}
|
|
85
|
-
async start(doJoin = true) {
|
|
86
|
-
logger.info('Starting a Streamr Network Node');
|
|
87
|
-
await this.controlLayerNode.start();
|
|
88
|
-
logger.info(`Node id is ${(0, dht_1.toNodeId)(this.controlLayerNode.getLocalPeerDescriptor())}`);
|
|
89
|
-
const connectionManager = this.controlLayerNode.getTransport();
|
|
90
|
-
if ((this.options.layer0?.entryPoints?.some((entryPoint) => (0, dht_1.areEqualPeerDescriptors)(entryPoint, this.controlLayerNode.getLocalPeerDescriptor())))) {
|
|
91
|
-
await this.controlLayerNode?.joinDht(this.options.layer0.entryPoints);
|
|
92
|
-
}
|
|
93
|
-
else if (doJoin) {
|
|
94
|
-
// in practice there aren't be existing connections and therefore this always connects
|
|
95
|
-
await this.ensureConnectedToControlLayer();
|
|
96
|
-
}
|
|
97
|
-
// TODO: remove undefined checks here. Assume that start is approproately awaited before stop is called.
|
|
98
|
-
await this.contentDeliveryManager?.start(this.controlLayerNode, connectionManager, connectionManager);
|
|
99
|
-
if (this.contentDeliveryManager) {
|
|
100
|
-
const infoRpcCommunicator = new dht_1.ListeningRpcCommunicator(NodeInfoRpcLocal_1.NODE_INFO_RPC_SERVICE_ID, this.getConnectionManager());
|
|
101
|
-
this.nodeInfoRpcLocal = new NodeInfoRpcLocal_1.NodeInfoRpcLocal(this, infoRpcCommunicator);
|
|
102
|
-
this.nodeInfoClient = new NodeInfoClient_1.NodeInfoClient(this.controlLayerNode.getLocalPeerDescriptor(), infoRpcCommunicator);
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
async ensureConnectedToControlLayer() {
|
|
106
|
-
// TODO we could wrap joinDht with pOnce and call it here (no else-if needed in that case)
|
|
107
|
-
if (!this.controlLayerNode.hasJoined()) {
|
|
108
|
-
setImmediate(async () => {
|
|
109
|
-
if (this.options.layer0?.entryPoints !== undefined) {
|
|
110
|
-
// TODO should catch possible rejection?
|
|
111
|
-
// the question mark is there to avoid problems when stop() is called before start()
|
|
112
|
-
// -> TODO change to exlamation mark if we don't support that (and remove NetworkStackStoppedDuringStart.test)
|
|
113
|
-
await this.controlLayerNode?.joinDht(this.options.layer0.entryPoints);
|
|
114
|
-
}
|
|
115
|
-
});
|
|
116
|
-
await this.controlLayerNode.waitForNetworkConnectivity();
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
getContentDeliveryManager() {
|
|
120
|
-
return this.contentDeliveryManager;
|
|
121
|
-
}
|
|
122
|
-
getControlLayerNode() {
|
|
123
|
-
return this.controlLayerNode;
|
|
124
|
-
}
|
|
125
|
-
getMetricsContext() {
|
|
126
|
-
return this.metricsContext;
|
|
127
|
-
}
|
|
128
|
-
async fetchNodeInfo(node) {
|
|
129
|
-
if (!(0, dht_1.areEqualPeerDescriptors)(node, this.getControlLayerNode().getLocalPeerDescriptor())) {
|
|
130
|
-
return this.nodeInfoClient.getInfo(node);
|
|
131
|
-
}
|
|
132
|
-
else {
|
|
133
|
-
return this.createNodeInfo();
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
createNodeInfo() {
|
|
137
|
-
return {
|
|
138
|
-
peerDescriptor: this.getControlLayerNode().getLocalPeerDescriptor(),
|
|
139
|
-
controlLayer: {
|
|
140
|
-
connections: this.getControlLayerNode().getConnectionsView().getConnections(),
|
|
141
|
-
neighbors: this.getControlLayerNode().getNeighbors()
|
|
142
|
-
},
|
|
143
|
-
streamPartitions: this.getContentDeliveryManager().getNodeInfo(),
|
|
144
|
-
applicationVersion: package_json_1.version
|
|
145
|
-
};
|
|
146
|
-
}
|
|
147
|
-
getOptions() {
|
|
148
|
-
return this.options;
|
|
149
|
-
}
|
|
150
|
-
getConnectionManager() {
|
|
151
|
-
return this.controlLayerNode.getTransport();
|
|
152
|
-
}
|
|
153
|
-
async stop() {
|
|
154
|
-
if (!this.stopped) {
|
|
155
|
-
this.stopped = true;
|
|
156
|
-
(0, pull_1.default)(instances, this);
|
|
157
|
-
await this.contentDeliveryManager.destroy();
|
|
158
|
-
await this.controlLayerNode.stop();
|
|
159
|
-
this.contentDeliveryManager = undefined;
|
|
160
|
-
this.controlLayerNode = undefined;
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
exports.NetworkStack = NetworkStack;
|
|
165
|
-
//# sourceMappingURL=NetworkStack.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"NetworkStack.js","sourceRoot":"","sources":["../../src/NetworkStack.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { DhtCallContext, PeerDescriptor } from '@streamr/dht';
|
|
2
|
-
import { RpcCommunicator } from '@streamr/proto-rpc';
|
|
3
|
-
import { NodeInfo } from './types';
|
|
4
|
-
export declare class NodeInfoClient {
|
|
5
|
-
private readonly ownPeerDescriptor;
|
|
6
|
-
private readonly rpcCommunicator;
|
|
7
|
-
constructor(ownPeerDescriptor: PeerDescriptor, rpcCommunicator: RpcCommunicator<DhtCallContext>);
|
|
8
|
-
getInfo(node: PeerDescriptor): Promise<NodeInfo>;
|
|
9
|
-
}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.NodeInfoClient = void 0;
|
|
4
|
-
const NetworkRpc_client_1 = require("../generated/packages/trackerless-network/protos/NetworkRpc.client");
|
|
5
|
-
const NodeInfoRpcRemote_1 = require("./NodeInfoRpcRemote");
|
|
6
|
-
class NodeInfoClient {
|
|
7
|
-
ownPeerDescriptor;
|
|
8
|
-
rpcCommunicator;
|
|
9
|
-
constructor(ownPeerDescriptor, rpcCommunicator) {
|
|
10
|
-
this.ownPeerDescriptor = ownPeerDescriptor;
|
|
11
|
-
this.rpcCommunicator = rpcCommunicator;
|
|
12
|
-
}
|
|
13
|
-
async getInfo(node) {
|
|
14
|
-
const remote = new NodeInfoRpcRemote_1.NodeInfoRpcRemote(this.ownPeerDescriptor, node, this.rpcCommunicator, NetworkRpc_client_1.NodeInfoRpcClient);
|
|
15
|
-
// TODO remove casting when we validate NodeInfoResponse messages and therefore can annotate
|
|
16
|
-
// each of the field as required in the decorated type
|
|
17
|
-
return remote.getInfo();
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
exports.NodeInfoClient = NodeInfoClient;
|
|
21
|
-
//# sourceMappingURL=NodeInfoClient.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"NodeInfoClient.js","sourceRoot":"","sources":["../../src/NodeInfoClient.ts"],"names":[],"mappings":";;;AAGA,0GAAsG;AACtG,2DAAuD;AAEvD,MAAa,cAAc;IACN,iBAAiB,CAAgB;IACjC,eAAe,CAAiC;IAEjE,YAAY,iBAAiC,EAAE,eAAgD;QAC3F,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAA;QAC1C,IAAI,CAAC,eAAe,GAAG,eAAe,CAAA;IAC1C,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,IAAoB;QAC9B,MAAM,MAAM,GAAG,IAAI,qCAAiB,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,EAAE,IAAI,CAAC,eAAe,EAAE,qCAAiB,CAAC,CAAA;QAC3G,4FAA4F;QAC5F,sDAAsD;QACtD,OAAO,MAAM,CAAC,OAAO,EAAyB,CAAA;IAClD,CAAC;CAEJ;AAhBD,wCAgBC"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { NodeInfoResponse } from '../generated/packages/trackerless-network/protos/NetworkRpc';
|
|
2
|
-
import { INodeInfoRpc } from '../generated/packages/trackerless-network/protos/NetworkRpc.server';
|
|
3
|
-
import { NetworkStack } from './NetworkStack';
|
|
4
|
-
import { ListeningRpcCommunicator } from '@streamr/dht';
|
|
5
|
-
export declare const NODE_INFO_RPC_SERVICE_ID = "system/node-info-rpc";
|
|
6
|
-
export declare class NodeInfoRpcLocal implements INodeInfoRpc {
|
|
7
|
-
private readonly stack;
|
|
8
|
-
private readonly rpcCommunicator;
|
|
9
|
-
constructor(stack: NetworkStack, rpcCommunicator: ListeningRpcCommunicator);
|
|
10
|
-
private registerDefaultServerMethods;
|
|
11
|
-
getInfo(): Promise<NodeInfoResponse>;
|
|
12
|
-
}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.NodeInfoRpcLocal = exports.NODE_INFO_RPC_SERVICE_ID = void 0;
|
|
4
|
-
const NetworkRpc_1 = require("../generated/packages/trackerless-network/protos/NetworkRpc");
|
|
5
|
-
exports.NODE_INFO_RPC_SERVICE_ID = 'system/node-info-rpc';
|
|
6
|
-
class NodeInfoRpcLocal {
|
|
7
|
-
stack;
|
|
8
|
-
rpcCommunicator;
|
|
9
|
-
constructor(stack, rpcCommunicator) {
|
|
10
|
-
this.stack = stack;
|
|
11
|
-
this.rpcCommunicator = rpcCommunicator;
|
|
12
|
-
this.registerDefaultServerMethods();
|
|
13
|
-
}
|
|
14
|
-
registerDefaultServerMethods() {
|
|
15
|
-
this.rpcCommunicator.registerRpcMethod(NetworkRpc_1.NodeInfoRequest, NetworkRpc_1.NodeInfoResponse, 'getInfo', () => this.getInfo());
|
|
16
|
-
}
|
|
17
|
-
async getInfo() {
|
|
18
|
-
return this.stack.createNodeInfo();
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
exports.NodeInfoRpcLocal = NodeInfoRpcLocal;
|
|
22
|
-
//# sourceMappingURL=NodeInfoRpcLocal.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"NodeInfoRpcLocal.js","sourceRoot":"","sources":["../../src/NodeInfoRpcLocal.ts"],"names":[],"mappings":";;;AAAA,4FAA+G;AAKlG,QAAA,wBAAwB,GAAG,sBAAsB,CAAA;AAE9D,MAAa,gBAAgB;IAER,KAAK,CAAc;IACnB,eAAe,CAA0B;IAE1D,YAAY,KAAmB,EAAE,eAAyC;QACtE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QAClB,IAAI,CAAC,eAAe,GAAG,eAAe,CAAA;QACtC,IAAI,CAAC,4BAA4B,EAAE,CAAA;IACvC,CAAC;IAEO,4BAA4B;QAChC,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,4BAAe,EAAE,6BAAgB,EAAE,SAAS,EAC/E,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAA;IAC7B,CAAC;IAED,KAAK,CAAC,OAAO;QACT,OAAO,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAA;IACtC,CAAC;CAEJ;AApBD,4CAoBC"}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { NodeInfoResponse } from '../generated/packages/trackerless-network/protos/NetworkRpc';
|
|
2
|
-
import { NodeInfoRpcClient } from '../generated/packages/trackerless-network/protos/NetworkRpc.client';
|
|
3
|
-
import { RpcRemote } from '@streamr/dht';
|
|
4
|
-
export declare class NodeInfoRpcRemote extends RpcRemote<NodeInfoRpcClient> {
|
|
5
|
-
getInfo(): Promise<NodeInfoResponse>;
|
|
6
|
-
}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.NodeInfoRpcRemote = void 0;
|
|
4
|
-
const dht_1 = require("@streamr/dht");
|
|
5
|
-
class NodeInfoRpcRemote extends dht_1.RpcRemote {
|
|
6
|
-
async getInfo() {
|
|
7
|
-
return this.getClient().getInfo({}, this.formDhtRpcOptions());
|
|
8
|
-
}
|
|
9
|
-
}
|
|
10
|
-
exports.NodeInfoRpcRemote = NodeInfoRpcRemote;
|
|
11
|
-
//# sourceMappingURL=NodeInfoRpcRemote.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"NodeInfoRpcRemote.js","sourceRoot":"","sources":["../../src/NodeInfoRpcRemote.ts"],"names":[],"mappings":";;;AAEA,sCAAwC;AAExC,MAAa,iBAAkB,SAAQ,eAA4B;IAE/D,KAAK,CAAC,OAAO;QACT,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAA;IACjE,CAAC;CAEJ;AAND,8CAMC"}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { DhtAddress, PeerDescriptor } from '@streamr/dht';
|
|
2
|
-
import { DiscoveryLayerNode } from './discovery-layer/DiscoveryLayerNode';
|
|
3
|
-
export declare const MIN_NEIGHBOR_COUNT = 4;
|
|
4
|
-
export interface StreamPartNetworkSplitAvoidanceOptions {
|
|
5
|
-
discoveryLayerNode: DiscoveryLayerNode;
|
|
6
|
-
discoverEntryPoints: (excludedNodes?: Set<DhtAddress>) => Promise<PeerDescriptor[]>;
|
|
7
|
-
exponentialRunOfBaseDelay?: number;
|
|
8
|
-
}
|
|
9
|
-
export declare class StreamPartNetworkSplitAvoidance {
|
|
10
|
-
private readonly abortController;
|
|
11
|
-
private readonly options;
|
|
12
|
-
private readonly excludedNodes;
|
|
13
|
-
private running;
|
|
14
|
-
constructor(options: StreamPartNetworkSplitAvoidanceOptions);
|
|
15
|
-
avoidNetworkSplit(): Promise<void>;
|
|
16
|
-
isRunning(): boolean;
|
|
17
|
-
destroy(): void;
|
|
18
|
-
}
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.StreamPartNetworkSplitAvoidance = exports.MIN_NEIGHBOR_COUNT = void 0;
|
|
4
|
-
const dht_1 = require("@streamr/dht");
|
|
5
|
-
const utils_1 = require("@streamr/utils");
|
|
6
|
-
/*
|
|
7
|
-
* Tries to find new neighbors if we currently have less than MIN_NEIGHBOR_COUNT neigbors. It does so by
|
|
8
|
-
* rejoining the stream's control layer network.
|
|
9
|
-
*
|
|
10
|
-
* This way we can avoid some network split scenarios. The functionality is most relevant for small stream
|
|
11
|
-
* networks.
|
|
12
|
-
*/
|
|
13
|
-
const logger = new utils_1.Logger(module);
|
|
14
|
-
const exponentialRunOff = async (task, description, abortSignal, baseDelay = 500, maxAttempts = 6) => {
|
|
15
|
-
for (let i = 1; i <= maxAttempts; i++) {
|
|
16
|
-
if (abortSignal.aborted) {
|
|
17
|
-
return;
|
|
18
|
-
}
|
|
19
|
-
const factor = 2 ** i;
|
|
20
|
-
const delay = baseDelay * factor;
|
|
21
|
-
try {
|
|
22
|
-
await task();
|
|
23
|
-
}
|
|
24
|
-
catch {
|
|
25
|
-
logger.trace(`${description} failed, retrying in ${delay} ms`);
|
|
26
|
-
}
|
|
27
|
-
try { // Abort controller throws unexpected errors in destroy?
|
|
28
|
-
await (0, utils_1.wait)(delay, abortSignal);
|
|
29
|
-
}
|
|
30
|
-
catch (err) {
|
|
31
|
-
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
|
|
32
|
-
logger.trace(`${err}`); // TODO Do we need logging?
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
};
|
|
36
|
-
exports.MIN_NEIGHBOR_COUNT = 4;
|
|
37
|
-
class StreamPartNetworkSplitAvoidance {
|
|
38
|
-
abortController;
|
|
39
|
-
options;
|
|
40
|
-
excludedNodes = new Set();
|
|
41
|
-
running = false;
|
|
42
|
-
constructor(options) {
|
|
43
|
-
this.options = options;
|
|
44
|
-
this.abortController = new AbortController();
|
|
45
|
-
}
|
|
46
|
-
async avoidNetworkSplit() {
|
|
47
|
-
this.running = true;
|
|
48
|
-
await exponentialRunOff(async () => {
|
|
49
|
-
const discoveredEntrypoints = await this.options.discoverEntryPoints();
|
|
50
|
-
const filteredEntryPoints = discoveredEntrypoints.filter((peer) => !this.excludedNodes.has((0, dht_1.toNodeId)(peer)));
|
|
51
|
-
await this.options.discoveryLayerNode.joinDht(filteredEntryPoints, false, false);
|
|
52
|
-
if (this.options.discoveryLayerNode.getNeighborCount() < exports.MIN_NEIGHBOR_COUNT) {
|
|
53
|
-
// Filter out nodes that are not neighbors as those nodes are assumed to be offline
|
|
54
|
-
const newExcludes = filteredEntryPoints
|
|
55
|
-
.filter((peer) => !this.options.discoveryLayerNode.getNeighbors()
|
|
56
|
-
.some((neighbor) => (0, dht_1.areEqualPeerDescriptors)(neighbor, peer)))
|
|
57
|
-
.map((peer) => (0, dht_1.toNodeId)(peer));
|
|
58
|
-
newExcludes.forEach((node) => this.excludedNodes.add(node));
|
|
59
|
-
throw new Error(`Network split is still possible`);
|
|
60
|
-
}
|
|
61
|
-
}, 'avoid network split', this.abortController.signal, this.options.exponentialRunOfBaseDelay);
|
|
62
|
-
this.running = false;
|
|
63
|
-
this.excludedNodes.clear();
|
|
64
|
-
logger.trace(`Network split avoided`);
|
|
65
|
-
}
|
|
66
|
-
isRunning() {
|
|
67
|
-
return this.running;
|
|
68
|
-
}
|
|
69
|
-
destroy() {
|
|
70
|
-
this.abortController.abort();
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
exports.StreamPartNetworkSplitAvoidance = StreamPartNetworkSplitAvoidance;
|
|
74
|
-
//# sourceMappingURL=StreamPartNetworkSplitAvoidance.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"StreamPartNetworkSplitAvoidance.js","sourceRoot":"","sources":["../../src/StreamPartNetworkSplitAvoidance.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { PeerDescriptorStoreManager } from './control-layer/PeerDescriptorStoreManager';
|
|
2
|
-
import { DiscoveryLayerNode } from './discovery-layer/DiscoveryLayerNode';
|
|
3
|
-
export declare class StreamPartReconnect {
|
|
4
|
-
private abortController?;
|
|
5
|
-
private readonly discoveryLayerNode;
|
|
6
|
-
private readonly peerDescriptorStoreManager;
|
|
7
|
-
constructor(discoveryLayerNode: DiscoveryLayerNode, peerDescriptorStoreManager: PeerDescriptorStoreManager);
|
|
8
|
-
reconnect(timeout?: number): Promise<void>;
|
|
9
|
-
isRunning(): boolean;
|
|
10
|
-
destroy(): void;
|
|
11
|
-
}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.StreamPartReconnect = void 0;
|
|
4
|
-
const utils_1 = require("@streamr/utils");
|
|
5
|
-
const PeerDescriptorStoreManager_1 = require("./control-layer/PeerDescriptorStoreManager");
|
|
6
|
-
const DEFAULT_RECONNECT_INTERVAL = 30 * 1000;
|
|
7
|
-
class StreamPartReconnect {
|
|
8
|
-
abortController;
|
|
9
|
-
discoveryLayerNode;
|
|
10
|
-
peerDescriptorStoreManager;
|
|
11
|
-
constructor(discoveryLayerNode, peerDescriptorStoreManager) {
|
|
12
|
-
this.discoveryLayerNode = discoveryLayerNode;
|
|
13
|
-
this.peerDescriptorStoreManager = peerDescriptorStoreManager;
|
|
14
|
-
}
|
|
15
|
-
async reconnect(timeout = DEFAULT_RECONNECT_INTERVAL) {
|
|
16
|
-
this.abortController = new AbortController();
|
|
17
|
-
await (0, utils_1.scheduleAtInterval)(async () => {
|
|
18
|
-
const entryPoints = await this.peerDescriptorStoreManager.fetchNodes();
|
|
19
|
-
await this.discoveryLayerNode.joinDht(entryPoints);
|
|
20
|
-
// Is is necessary to store the node as an entry point here?
|
|
21
|
-
if (!this.peerDescriptorStoreManager.isLocalNodeStored() && entryPoints.length < PeerDescriptorStoreManager_1.MAX_NODE_COUNT) {
|
|
22
|
-
await this.peerDescriptorStoreManager.storeAndKeepLocalNode();
|
|
23
|
-
}
|
|
24
|
-
if (this.discoveryLayerNode.getNeighborCount() > 0) {
|
|
25
|
-
this.abortController.abort();
|
|
26
|
-
}
|
|
27
|
-
}, timeout, true, this.abortController.signal);
|
|
28
|
-
}
|
|
29
|
-
isRunning() {
|
|
30
|
-
return this.abortController ? !this.abortController.signal.aborted : false;
|
|
31
|
-
}
|
|
32
|
-
destroy() {
|
|
33
|
-
this.abortController?.abort();
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
exports.StreamPartReconnect = StreamPartReconnect;
|
|
37
|
-
//# sourceMappingURL=StreamPartReconnect.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"StreamPartReconnect.js","sourceRoot":"","sources":["../../src/StreamPartReconnect.ts"],"names":[],"mappings":";;;AAAA,0CAAmD;AACnD,2FAAuG;AAGvG,MAAM,0BAA0B,GAAG,EAAE,GAAG,IAAI,CAAA;AAC5C,MAAa,mBAAmB;IACpB,eAAe,CAAkB;IACxB,kBAAkB,CAAoB;IACtC,0BAA0B,CAA4B;IAEvE,YAAY,kBAAsC,EAAE,0BAAsD;QACtG,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAA;QAC5C,IAAI,CAAC,0BAA0B,GAAG,0BAA0B,CAAA;IAChE,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,OAAO,GAAG,0BAA0B;QAChD,IAAI,CAAC,eAAe,GAAG,IAAI,eAAe,EAAE,CAAA;QAC5C,MAAM,IAAA,0BAAkB,EAAC,KAAK,IAAI,EAAE;YAChC,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,0BAA0B,CAAC,UAAU,EAAE,CAAA;YACtE,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;YAClD,4DAA4D;YAC5D,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,iBAAiB,EAAE,IAAI,WAAW,CAAC,MAAM,GAAG,2CAAc,EAAE,CAAC;gBAC9F,MAAM,IAAI,CAAC,0BAA0B,CAAC,qBAAqB,EAAE,CAAA;YACjE,CAAC;YACD,IAAI,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,EAAE,GAAG,CAAC,EAAE,CAAC;gBACjD,IAAI,CAAC,eAAgB,CAAC,KAAK,EAAE,CAAA;YACjC,CAAC;QACL,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAA;IAClD,CAAC;IAED,SAAS;QACL,OAAO,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAA;IAC9E,CAAC;IAED,OAAO;QACH,IAAI,CAAC,eAAe,EAAE,KAAK,EAAE,CAAA;IACjC,CAAC;CACJ;AAhCD,kDAgCC"}
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
import { ConnectionLocker, DhtAddress, ITransport, ListeningRpcCommunicator, PeerDescriptor } from '@streamr/dht';
|
|
2
|
-
import { StreamPartID } from '@streamr/utils';
|
|
3
|
-
import { EventEmitter } from 'eventemitter3';
|
|
4
|
-
import { StreamMessage } from '../../generated/packages/trackerless-network/protos/NetworkRpc';
|
|
5
|
-
import { DiscoveryLayerNode } from '../discovery-layer/DiscoveryLayerNode';
|
|
6
|
-
import { NodeList } from './NodeList';
|
|
7
|
-
import { Inspector } from './inspection/Inspector';
|
|
8
|
-
import { Handshaker } from './neighbor-discovery/Handshaker';
|
|
9
|
-
import { NeighborFinder } from './neighbor-discovery/NeighborFinder';
|
|
10
|
-
import { NeighborUpdateManager } from './neighbor-discovery/NeighborUpdateManager';
|
|
11
|
-
import { Propagation } from './propagation/Propagation';
|
|
12
|
-
import { ProxyConnectionRpcLocal } from './proxy/ProxyConnectionRpcLocal';
|
|
13
|
-
import { TemporaryConnectionRpcLocal } from './temporary-connection/TemporaryConnectionRpcLocal';
|
|
14
|
-
import { ContentDeliveryLayerNeighborInfo } from '../types';
|
|
15
|
-
import { PlumtreeManager } from './plumtree/PlumtreeManager';
|
|
16
|
-
export interface Events {
|
|
17
|
-
message: (message: StreamMessage) => void;
|
|
18
|
-
neighborConnected: (nodeId: DhtAddress) => void;
|
|
19
|
-
entryPointLeaveDetected: () => void;
|
|
20
|
-
}
|
|
21
|
-
export interface StrictContentDeliveryLayerNodeOptions {
|
|
22
|
-
streamPartId: StreamPartID;
|
|
23
|
-
discoveryLayerNode: DiscoveryLayerNode;
|
|
24
|
-
transport: ITransport;
|
|
25
|
-
connectionLocker: ConnectionLocker;
|
|
26
|
-
localPeerDescriptor: PeerDescriptor;
|
|
27
|
-
nodeViewSize: number;
|
|
28
|
-
nearbyNodeView: NodeList;
|
|
29
|
-
randomNodeView: NodeList;
|
|
30
|
-
leftNodeView: NodeList;
|
|
31
|
-
rightNodeView: NodeList;
|
|
32
|
-
neighbors: NodeList;
|
|
33
|
-
handshaker: Handshaker;
|
|
34
|
-
neighborFinder: NeighborFinder;
|
|
35
|
-
neighborUpdateManager: NeighborUpdateManager;
|
|
36
|
-
propagation: Propagation;
|
|
37
|
-
rpcCommunicator: ListeningRpcCommunicator;
|
|
38
|
-
neighborTargetCount: number;
|
|
39
|
-
inspector: Inspector;
|
|
40
|
-
temporaryConnectionRpcLocal: TemporaryConnectionRpcLocal;
|
|
41
|
-
isLocalNodeEntryPoint: () => boolean;
|
|
42
|
-
proxyConnectionRpcLocal?: ProxyConnectionRpcLocal;
|
|
43
|
-
rpcRequestTimeout?: number;
|
|
44
|
-
plumtreeManager?: PlumtreeManager;
|
|
45
|
-
}
|
|
46
|
-
export declare const DEFAULT_NODE_VIEW_SIZE = 20;
|
|
47
|
-
export declare const DEFAULT_NEIGHBOR_TARGET_COUNT = 4;
|
|
48
|
-
export declare const DEFAULT_ACCEPT_PROXY_CONNECTIONS = false;
|
|
49
|
-
export declare class ContentDeliveryLayerNode extends EventEmitter<Events> {
|
|
50
|
-
private started;
|
|
51
|
-
private readonly duplicateDetectors;
|
|
52
|
-
private options;
|
|
53
|
-
private readonly contentDeliveryRpcLocal;
|
|
54
|
-
private abortController;
|
|
55
|
-
private messagesPropagated;
|
|
56
|
-
constructor(options: StrictContentDeliveryLayerNodeOptions);
|
|
57
|
-
start(): Promise<void>;
|
|
58
|
-
private registerDefaultServerMethods;
|
|
59
|
-
private onRingContactsUpdated;
|
|
60
|
-
private onNearbyContactAdded;
|
|
61
|
-
private onNearbyContactRemoved;
|
|
62
|
-
private updateNearbyNodeView;
|
|
63
|
-
private onRandomContactAdded;
|
|
64
|
-
private onRandomContactRemoved;
|
|
65
|
-
private onNodeDisconnected;
|
|
66
|
-
hasProxyConnection(nodeId: DhtAddress): boolean;
|
|
67
|
-
stop(): void;
|
|
68
|
-
broadcast(msg: StreamMessage, previousNode?: DhtAddress): void;
|
|
69
|
-
inspect(peerDescriptor: PeerDescriptor): Promise<boolean>;
|
|
70
|
-
private getPropagationTargets;
|
|
71
|
-
getOwnNodeId(): DhtAddress;
|
|
72
|
-
getOutgoingHandshakeCount(): number;
|
|
73
|
-
getNeighbors(): PeerDescriptor[];
|
|
74
|
-
getInfos(): ContentDeliveryLayerNeighborInfo[];
|
|
75
|
-
getNearbyNodeView(): NodeList;
|
|
76
|
-
getDiagnosticInfo(): Record<string, unknown>;
|
|
77
|
-
private isStopped;
|
|
78
|
-
}
|