@streamr/trackerless-network 100.0.0-testnet-two.3 → 100.0.0-testnet-three.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/src/NetworkNode.d.ts +2 -1
- package/dist/src/NetworkNode.js +6 -2
- package/dist/src/NetworkNode.js.map +1 -1
- package/dist/src/NetworkStack.d.ts +6 -2
- package/dist/src/NetworkStack.js +21 -1
- package/dist/src/NetworkStack.js.map +1 -1
- package/dist/src/exports.d.ts +1 -0
- package/dist/src/exports.js +4 -1
- package/dist/src/exports.js.map +1 -1
- package/dist/src/logic/DeliveryRpcLocal.js +1 -0
- package/dist/src/logic/DeliveryRpcLocal.js.map +1 -1
- package/dist/src/logic/DuplicateMessageDetector.d.ts +3 -3
- package/dist/src/logic/DuplicateMessageDetector.js +10 -6
- package/dist/src/logic/DuplicateMessageDetector.js.map +1 -1
- package/dist/src/logic/EntryPointDiscovery.js +8 -5
- package/dist/src/logic/EntryPointDiscovery.js.map +1 -1
- package/dist/src/logic/Layer0Node.d.ts +2 -0
- package/dist/src/logic/Layer1Node.d.ts +4 -4
- package/dist/src/logic/NodeList.d.ts +6 -8
- package/dist/src/logic/NodeList.js +10 -12
- package/dist/src/logic/NodeList.js.map +1 -1
- package/dist/src/logic/RandomGraphNode.d.ts +5 -5
- package/dist/src/logic/RandomGraphNode.js +26 -22
- package/dist/src/logic/RandomGraphNode.js.map +1 -1
- package/dist/src/logic/StreamrNode.d.ts +3 -2
- package/dist/src/logic/StreamrNode.js +25 -6
- package/dist/src/logic/StreamrNode.js.map +1 -1
- package/dist/src/logic/createRandomGraphNode.d.ts +2 -2
- package/dist/src/logic/createRandomGraphNode.js +14 -14
- package/dist/src/logic/createRandomGraphNode.js.map +1 -1
- package/dist/src/logic/inspect/InspectSession.js +3 -2
- package/dist/src/logic/inspect/InspectSession.js.map +1 -1
- package/dist/src/logic/inspect/Inspector.d.ts +2 -3
- package/dist/src/logic/inspect/Inspector.js +7 -1
- package/dist/src/logic/inspect/Inspector.js.map +1 -1
- package/dist/src/logic/neighbor-discovery/HandshakeRpcLocal.d.ts +1 -1
- package/dist/src/logic/neighbor-discovery/HandshakeRpcLocal.js +18 -17
- package/dist/src/logic/neighbor-discovery/HandshakeRpcLocal.js.map +1 -1
- package/dist/src/logic/neighbor-discovery/HandshakeRpcRemote.js.map +1 -1
- package/dist/src/logic/neighbor-discovery/Handshaker.d.ts +3 -4
- package/dist/src/logic/neighbor-discovery/Handshaker.js +29 -27
- 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 +4 -2
- package/dist/src/logic/neighbor-discovery/NeighborFinder.js.map +1 -1
- package/dist/src/logic/neighbor-discovery/NeighborUpdateManager.d.ts +1 -1
- package/dist/src/logic/neighbor-discovery/NeighborUpdateManager.js +8 -4
- package/dist/src/logic/neighbor-discovery/NeighborUpdateManager.js.map +1 -1
- package/dist/src/logic/neighbor-discovery/NeighborUpdateRpcLocal.d.ts +1 -1
- package/dist/src/logic/neighbor-discovery/NeighborUpdateRpcLocal.js +5 -4
- package/dist/src/logic/neighbor-discovery/NeighborUpdateRpcLocal.js.map +1 -1
- package/dist/src/logic/neighbor-discovery/NeighborUpdateRpcRemote.js.map +1 -1
- package/dist/src/logic/node-info/NodeInfoClient.d.ts +9 -0
- package/dist/src/logic/node-info/NodeInfoClient.js +19 -0
- package/dist/src/logic/node-info/NodeInfoClient.js.map +1 -0
- package/dist/src/logic/node-info/NodeInfoRpcLocal.d.ts +12 -0
- package/dist/src/logic/node-info/NodeInfoRpcLocal.js +29 -0
- package/dist/src/logic/node-info/NodeInfoRpcLocal.js.map +1 -0
- package/dist/src/logic/node-info/NodeInfoRpcRemote.d.ts +6 -0
- package/dist/src/logic/node-info/NodeInfoRpcRemote.js +11 -0
- package/dist/src/logic/node-info/NodeInfoRpcRemote.js.map +1 -0
- package/dist/src/logic/propagation/FifoMapWithTTL.js +7 -3
- package/dist/src/logic/propagation/FifoMapWithTTL.js.map +1 -1
- package/dist/src/logic/propagation/Propagation.js +3 -0
- package/dist/src/logic/propagation/Propagation.js.map +1 -1
- package/dist/src/logic/propagation/PropagationTaskStore.js +1 -0
- package/dist/src/logic/propagation/PropagationTaskStore.js.map +1 -1
- package/dist/src/logic/protocol-integration/stream-message/GroupKeyRequestTranslator.js +1 -1
- package/dist/src/logic/protocol-integration/stream-message/GroupKeyRequestTranslator.js.map +1 -1
- package/dist/src/logic/protocol-integration/stream-message/GroupKeyResponseTranslator.js +1 -1
- package/dist/src/logic/protocol-integration/stream-message/GroupKeyResponseTranslator.js.map +1 -1
- package/dist/src/logic/protocol-integration/stream-message/StreamMessageTranslator.js +43 -15
- package/dist/src/logic/protocol-integration/stream-message/StreamMessageTranslator.js.map +1 -1
- package/dist/src/logic/protocol-integration/stream-message/oldStreamMessageBinaryUtils.d.ts +3 -0
- package/dist/src/logic/protocol-integration/stream-message/oldStreamMessageBinaryUtils.js +14 -0
- package/dist/src/logic/protocol-integration/stream-message/oldStreamMessageBinaryUtils.js.map +1 -0
- package/dist/src/logic/proxy/ProxyClient.d.ts +1 -1
- package/dist/src/logic/proxy/ProxyClient.js +18 -11
- package/dist/src/logic/proxy/ProxyClient.js.map +1 -1
- package/dist/src/logic/proxy/ProxyConnectionRpcLocal.js +2 -1
- package/dist/src/logic/proxy/ProxyConnectionRpcLocal.js.map +1 -1
- package/dist/src/logic/proxy/ProxyConnectionRpcRemote.js.map +1 -1
- package/dist/src/logic/temporary-connection/TemporaryConnectionRpcLocal.d.ts +2 -2
- package/dist/src/logic/temporary-connection/TemporaryConnectionRpcLocal.js +4 -2
- package/dist/src/logic/temporary-connection/TemporaryConnectionRpcLocal.js.map +1 -1
- package/dist/src/logic/temporary-connection/TemporaryConnectionRpcRemote.js.map +1 -1
- package/dist/src/logic/utils.js.map +1 -1
- package/dist/src/proto/google/protobuf/any.js.map +1 -1
- package/dist/src/proto/google/protobuf/timestamp.js.map +1 -1
- package/dist/src/proto/packages/dht/protos/DhtRpc.client.d.ts +4 -5
- package/dist/src/proto/packages/dht/protos/DhtRpc.client.js +38 -29
- package/dist/src/proto/packages/dht/protos/DhtRpc.client.js.map +1 -1
- package/dist/src/proto/packages/dht/protos/DhtRpc.d.ts +22 -12
- package/dist/src/proto/packages/dht/protos/DhtRpc.js +11 -16
- package/dist/src/proto/packages/dht/protos/DhtRpc.js.map +1 -1
- package/dist/src/proto/packages/dht/protos/DhtRpc.server.d.ts +2 -3
- package/dist/src/proto/packages/proto-rpc/protos/ProtoRpc.js +1 -1
- package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.client.d.ts +27 -0
- package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.client.js +43 -17
- 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 +106 -5
- package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.js +79 -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 +11 -0
- package/dist/test/benchmark/first-message.js +7 -5
- package/dist/test/benchmark/first-message.js.map +1 -1
- package/dist/test/utils/utils.js +2 -1
- package/dist/test/utils/utils.js.map +1 -1
- package/jest.config.js +3 -38
- package/package.json +7 -7
- package/protos/NetworkRpc.proto +34 -5
- package/src/NetworkNode.ts +5 -1
- package/src/NetworkStack.ts +23 -2
- package/src/exports.ts +4 -0
- package/src/logic/DuplicateMessageDetector.ts +7 -7
- package/src/logic/EntryPointDiscovery.ts +3 -3
- package/src/logic/Layer0Node.ts +2 -0
- package/src/logic/Layer1Node.ts +4 -4
- package/src/logic/NodeList.ts +9 -15
- package/src/logic/RandomGraphNode.ts +24 -23
- package/src/logic/StreamrNode.ts +18 -4
- package/src/logic/createRandomGraphNode.ts +17 -17
- package/src/logic/inspect/Inspector.ts +3 -4
- package/src/logic/neighbor-discovery/HandshakeRpcLocal.ts +18 -18
- package/src/logic/neighbor-discovery/Handshaker.ts +31 -32
- package/src/logic/neighbor-discovery/NeighborFinder.ts +2 -2
- package/src/logic/neighbor-discovery/NeighborUpdateManager.ts +6 -5
- package/src/logic/neighbor-discovery/NeighborUpdateRpcLocal.ts +5 -5
- package/src/logic/node-info/NodeInfoClient.ts +21 -0
- package/src/logic/node-info/NodeInfoRpcLocal.ts +35 -0
- package/src/logic/node-info/NodeInfoRpcRemote.ts +11 -0
- package/src/logic/protocol-integration/stream-message/GroupKeyRequestTranslator.ts +1 -1
- package/src/logic/protocol-integration/stream-message/GroupKeyResponseTranslator.ts +1 -1
- package/src/logic/protocol-integration/stream-message/StreamMessageTranslator.ts +56 -27
- package/src/logic/protocol-integration/stream-message/oldStreamMessageBinaryUtils.ts +11 -0
- package/src/logic/proxy/ProxyClient.ts +10 -10
- package/src/logic/temporary-connection/TemporaryConnectionRpcLocal.ts +3 -3
- package/src/proto/packages/dht/protos/DhtRpc.client.ts +6 -7
- package/src/proto/packages/dht/protos/DhtRpc.server.ts +3 -4
- package/src/proto/packages/dht/protos/DhtRpc.ts +32 -20
- package/src/proto/packages/proto-rpc/protos/ProtoRpc.ts +1 -1
- package/src/proto/packages/trackerless-network/protos/NetworkRpc.client.ts +30 -1
- package/src/proto/packages/trackerless-network/protos/NetworkRpc.server.ts +12 -1
- package/src/proto/packages/trackerless-network/protos/NetworkRpc.ts +138 -11
- package/test/benchmark/first-message.ts +28 -8
- package/test/end-to-end/inspect.test.ts +13 -1
- package/test/end-to-end/proxy-and-full-node.test.ts +14 -1
- package/test/end-to-end/proxy-connections.test.ts +14 -2
- package/test/end-to-end/proxy-key-exchange.test.ts +15 -8
- package/test/end-to-end/random-graph-with-real-connections.test.ts +21 -21
- package/test/end-to-end/webrtc-full-node-network.test.ts +3 -3
- package/test/end-to-end/websocket-full-node-network.test.ts +3 -3
- package/test/integration/Handshakes.test.ts +8 -8
- package/test/integration/NetworkNode.test.ts +19 -1
- package/test/integration/NetworkRpc.test.ts +3 -2
- package/test/integration/NodeInfoRpc.test.ts +103 -0
- package/test/integration/Propagation.test.ts +2 -2
- package/test/integration/RandomGraphNode-Layer1Node-Latencies.test.ts +20 -21
- package/test/integration/RandomGraphNode-Layer1Node.test.ts +22 -19
- package/test/integration/stream-without-default-entrypoints.test.ts +17 -11
- package/test/unit/HandshakeRpcLocal.test.ts +15 -15
- package/test/unit/Handshaker.test.ts +3 -3
- package/test/unit/NeighborFinder.test.ts +5 -5
- package/test/unit/NodeList.test.ts +56 -57
- package/test/unit/Propagation.test.ts +4 -2
- package/test/unit/RandomGraphNode.test.ts +7 -8
- package/test/unit/StreamMessageTranslator.test.ts +7 -4
- package/test/unit/StreamrNode.test.ts +2 -0
- package/test/unit/oldStreamMessageBinaryUtils.test.ts +39 -0
- package/test/utils/mock/MockLayer0Node.ts +6 -1
- package/test/utils/mock/MockLayer1Node.ts +2 -2
- package/test/utils/mock/Transport.ts +1 -1
- package/test/utils/utils.ts +3 -1
- package/tsconfig.jest.json +3 -3
- package/tsconfig.node.json +0 -1
- package/dist/package.json +0 -55
|
@@ -2,7 +2,7 @@ import { StreamMessage, StreamPartID } from '@streamr/protocol';
|
|
|
2
2
|
import { DhtAddress, PeerDescriptor } from '@streamr/dht';
|
|
3
3
|
import { NetworkOptions, NetworkStack } from './NetworkStack';
|
|
4
4
|
import { EthereumAddress, MetricsContext } from '@streamr/utils';
|
|
5
|
-
import { ProxyDirection } from './proto/packages/trackerless-network/protos/NetworkRpc';
|
|
5
|
+
import { NodeInfoResponse, ProxyDirection } from './proto/packages/trackerless-network/protos/NetworkRpc';
|
|
6
6
|
export declare const createNetworkNode: (opts: NetworkOptions) => NetworkNode;
|
|
7
7
|
/**
|
|
8
8
|
* Convenience wrapper for building client-facing functionality. Used by client.
|
|
@@ -32,5 +32,6 @@ export declare class NetworkNode {
|
|
|
32
32
|
getNodeId(): DhtAddress;
|
|
33
33
|
getOptions(): NetworkOptions;
|
|
34
34
|
getStreamParts(): StreamPartID[];
|
|
35
|
+
fetchNodeInfo(node: PeerDescriptor): Promise<NodeInfoResponse>;
|
|
35
36
|
getDiagnosticInfo(): Record<string, unknown>;
|
|
36
37
|
}
|
package/dist/src/NetworkNode.js
CHANGED
|
@@ -14,10 +14,11 @@ const logger = new utils_1.Logger(module);
|
|
|
14
14
|
* Convenience wrapper for building client-facing functionality. Used by client.
|
|
15
15
|
*/
|
|
16
16
|
class NetworkNode {
|
|
17
|
+
stack;
|
|
18
|
+
messageListeners = [];
|
|
19
|
+
stopped = false;
|
|
17
20
|
/** @internal */
|
|
18
21
|
constructor(stack) {
|
|
19
|
-
this.messageListeners = [];
|
|
20
|
-
this.stopped = false;
|
|
21
22
|
this.stack = stack;
|
|
22
23
|
this.stack.getStreamrNode().on('newMessage', (msg) => {
|
|
23
24
|
if (this.messageListeners.length > 0) {
|
|
@@ -92,6 +93,9 @@ class NetworkNode {
|
|
|
92
93
|
getStreamParts() {
|
|
93
94
|
return this.stack.getStreamrNode().getStreamParts();
|
|
94
95
|
}
|
|
96
|
+
async fetchNodeInfo(node) {
|
|
97
|
+
return this.stack.fetchNodeInfo(node);
|
|
98
|
+
}
|
|
95
99
|
// eslint-disable-next-line class-methods-use-this
|
|
96
100
|
getDiagnosticInfo() {
|
|
97
101
|
return {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NetworkNode.js","sourceRoot":"","sources":["../../src/NetworkNode.ts"],"names":[],"mappings":";;;AAEA,iHAA6G;AAC7G,iDAA6D;AAC7D,0CAAwE;AAExE,mCAA6B;AAEtB,MAAM,iBAAiB,GAAG,CAAC,IAAoB,EAAe,EAAE;IACnE,OAAO,IAAI,WAAW,CAAC,IAAI,2BAAY,CAAC,IAAI,CAAC,CAAC,CAAA;AAClD,CAAC,CAAA;AAFY,QAAA,iBAAiB,qBAE7B;AAED,MAAM,MAAM,GAAG,IAAI,cAAM,CAAC,MAAM,CAAC,CAAA;AACjC;;GAEG;AACH,MAAa,WAAW;
|
|
1
|
+
{"version":3,"file":"NetworkNode.js","sourceRoot":"","sources":["../../src/NetworkNode.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { DhtNodeOptions } from '@streamr/dht';
|
|
1
|
+
import { DhtNodeOptions, PeerDescriptor } from '@streamr/dht';
|
|
2
2
|
import { StreamrNode, StreamrNodeConfig } from './logic/StreamrNode';
|
|
3
3
|
import { MetricsContext } from '@streamr/utils';
|
|
4
4
|
import { StreamPartID } from '@streamr/protocol';
|
|
5
|
-
import { StreamMessage } from './proto/packages/trackerless-network/protos/NetworkRpc';
|
|
5
|
+
import { NodeInfoResponse, StreamMessage } from './proto/packages/trackerless-network/protos/NetworkRpc';
|
|
6
6
|
import { Layer0Node } from './logic/Layer0Node';
|
|
7
7
|
export interface NetworkOptions {
|
|
8
8
|
layer0?: DhtNodeOptions;
|
|
@@ -15,6 +15,8 @@ export declare class NetworkStack {
|
|
|
15
15
|
private stopped;
|
|
16
16
|
private readonly metricsContext;
|
|
17
17
|
private readonly options;
|
|
18
|
+
private nodeInfoRpcLocal?;
|
|
19
|
+
private nodeInfoClient?;
|
|
18
20
|
constructor(options: NetworkOptions);
|
|
19
21
|
joinStreamPart(streamPartId: StreamPartID, neighborRequirement?: {
|
|
20
22
|
minCount: number;
|
|
@@ -26,6 +28,8 @@ export declare class NetworkStack {
|
|
|
26
28
|
getStreamrNode(): StreamrNode;
|
|
27
29
|
getLayer0Node(): Layer0Node;
|
|
28
30
|
getMetricsContext(): MetricsContext;
|
|
31
|
+
fetchNodeInfo(node: PeerDescriptor): Promise<NodeInfoResponse>;
|
|
29
32
|
getOptions(): NetworkOptions;
|
|
33
|
+
private getConnectionManager;
|
|
30
34
|
stop(): Promise<void>;
|
|
31
35
|
}
|
package/dist/src/NetworkStack.js
CHANGED
|
@@ -7,6 +7,8 @@ const utils_1 = require("@streamr/utils");
|
|
|
7
7
|
const protocol_1 = require("@streamr/protocol");
|
|
8
8
|
const NetworkRpc_1 = require("./proto/packages/trackerless-network/protos/NetworkRpc");
|
|
9
9
|
const lodash_1 = require("lodash");
|
|
10
|
+
const NodeInfoRpcLocal_1 = require("./logic/node-info/NodeInfoRpcLocal");
|
|
11
|
+
const NodeInfoClient_1 = require("./logic/node-info/NodeInfoClient");
|
|
10
12
|
const instances = [];
|
|
11
13
|
const stopInstances = async () => {
|
|
12
14
|
// make a clone so that it is ok for each instance.stop() to remove itself from the list (at line 139)
|
|
@@ -27,8 +29,14 @@ if (typeof window === 'object') {
|
|
|
27
29
|
});
|
|
28
30
|
}
|
|
29
31
|
class NetworkStack {
|
|
32
|
+
layer0Node;
|
|
33
|
+
streamrNode;
|
|
34
|
+
stopped = false;
|
|
35
|
+
metricsContext;
|
|
36
|
+
options;
|
|
37
|
+
nodeInfoRpcLocal;
|
|
38
|
+
nodeInfoClient;
|
|
30
39
|
constructor(options) {
|
|
31
|
-
this.stopped = false;
|
|
32
40
|
this.options = options;
|
|
33
41
|
this.metricsContext = options.metricsContext ?? new utils_1.MetricsContext();
|
|
34
42
|
this.layer0Node = new dht_1.DhtNode({
|
|
@@ -76,7 +84,13 @@ class NetworkStack {
|
|
|
76
84
|
await this.ensureConnectedToControlLayer();
|
|
77
85
|
}
|
|
78
86
|
}
|
|
87
|
+
// TODO: remove undefined checks here. Assume that start is approproately awaited before stop is called.
|
|
79
88
|
await this.streamrNode?.start(this.layer0Node, connectionManager, connectionManager);
|
|
89
|
+
if (this.streamrNode) {
|
|
90
|
+
const infoRpcCommunicator = new dht_1.ListeningRpcCommunicator(NodeInfoRpcLocal_1.NODE_INFO_RPC_SERVICE_ID, this.getConnectionManager());
|
|
91
|
+
this.nodeInfoRpcLocal = new NodeInfoRpcLocal_1.NodeInfoRpcLocal(this, infoRpcCommunicator);
|
|
92
|
+
this.nodeInfoClient = new NodeInfoClient_1.NodeInfoClient(this.layer0Node.getLocalPeerDescriptor(), infoRpcCommunicator);
|
|
93
|
+
}
|
|
80
94
|
}
|
|
81
95
|
async ensureConnectedToControlLayer() {
|
|
82
96
|
// TODO we could wrap joinDht with pOnce and call it here (no else-if needed in that case)
|
|
@@ -101,9 +115,15 @@ class NetworkStack {
|
|
|
101
115
|
getMetricsContext() {
|
|
102
116
|
return this.metricsContext;
|
|
103
117
|
}
|
|
118
|
+
async fetchNodeInfo(node) {
|
|
119
|
+
return this.nodeInfoClient.getInfo(node);
|
|
120
|
+
}
|
|
104
121
|
getOptions() {
|
|
105
122
|
return this.options;
|
|
106
123
|
}
|
|
124
|
+
getConnectionManager() {
|
|
125
|
+
return this.layer0Node.getTransport();
|
|
126
|
+
}
|
|
107
127
|
async stop() {
|
|
108
128
|
if (!this.stopped) {
|
|
109
129
|
this.stopped = true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NetworkStack.js","sourceRoot":"","sources":["../../src/NetworkStack.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"NetworkStack.js","sourceRoot":"","sources":["../../src/NetworkStack.ts"],"names":[],"mappings":";;;AAAA,sCAA4I;AAC5I,qDAAoE;AACpE,0CAAiE;AACjE,gDAA0E;AAC1E,uFAA2I;AAE3I,mCAA6B;AAC7B,yEAA+F;AAC/F,qEAAiE;AAQjE,MAAM,SAAS,GAAmB,EAAE,CAAA;AACpC,MAAM,aAAa,GAAG,KAAK,IAAI,EAAE;IAC7B,sGAAsG;IACtG,+CAA+C;IAC/C,MAAM,eAAe,GAAG,CAAC,GAAG,SAAS,CAAC,CAAA;IACtC,MAAM,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;AACzE,CAAC,CAAA;AACD,MAAM,WAAW,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,SAAS,CAAC,CAAA;AAClH,WAAW,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;IAC1B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE;QACzB,MAAM,aAAa,EAAE,CAAA;QACrB,OAAO,CAAC,IAAI,EAAE,CAAA;IAClB,CAAC,CAAC,CAAA;AACN,CAAC,CAAC,CAAA;AAEF,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;IAC7B,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;QACzC,MAAM,aAAa,EAAE,CAAA;IACzB,CAAC,CAAC,CAAA;AACN,CAAC;AAED,MAAa,YAAY;IAEb,UAAU,CAAa;IACvB,WAAW,CAAc;IACzB,OAAO,GAAG,KAAK,CAAA;IACN,cAAc,CAAgB;IAC9B,OAAO,CAAgB;IAChC,gBAAgB,CAAmB;IACnC,cAAc,CAAiB;IAEvC,YAAY,OAAuB;QAC/B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,IAAI,sBAAc,EAAE,CAAA;QACpE,IAAI,CAAC,UAAU,GAAG,IAAI,aAAO,CAAC;YAC1B,GAAG,OAAO,CAAC,MAAM;YACjB,cAAc,EAAE,IAAI,CAAC,cAAc;SACtC,CAAC,CAAA;QACF,IAAI,CAAC,WAAW,GAAG,IAAI,yBAAW,CAAC;YAC/B,GAAG,OAAO,CAAC,WAAW;YACtB,cAAc,EAAE,IAAI,CAAC,cAAc;SACtC,CAAC,CAAA;QACF,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACxB,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,YAA0B,EAAE,mBAA2D;QACxG,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC,mBAAmB,CAAC,YAAY,CAAC,EAAE,CAAC;YAC1D,MAAM,IAAI,KAAK,CAAC,kBAAkB,YAAY,qCAAqC,CAAC,CAAA;QACxF,CAAC;QACD,MAAM,IAAI,CAAC,6BAA6B,EAAE,CAAA;QAC1C,IAAI,CAAC,cAAc,EAAE,CAAC,cAAc,CAAC,YAAY,CAAC,CAAA;QAClD,IAAI,mBAAmB,KAAK,SAAS,EAAE,CAAC;YACpC,MAAM,IAAA,wBAAgB,EAAC,GAAG,EAAE;gBACxB,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,MAAM,IAAI,mBAAmB,CAAC,QAAQ,CAAA;YAClG,CAAC,EAAE,mBAAmB,CAAC,OAAO,CAAC,CAAA;QACnC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,GAAkB;QAC9B,MAAM,YAAY,GAAG,IAAA,yBAAc,EAAC,GAAG,CAAC,SAAU,CAAC,QAAoB,EAAE,GAAG,CAAC,SAAU,CAAC,eAAe,CAAC,CAAA;QACxG,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC,mBAAmB,CAAC,YAAY,EAAE,2BAAc,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,KAAK,8BAAiB,CAAC,OAAO,CAAC,EAAE,CAAC;YACvI,MAAM,IAAI,KAAK,CAAC,uBAAuB,YAAY,+CAA+C,CAAC,CAAA;QACvG,CAAC;QACD,6DAA6D;QAC7D,IAAI,CAAC,IAAI,CAAC,WAAY,CAAC,mBAAmB,CAAC,YAAY,CAAC,EAAE,CAAC;YACvD,MAAM,IAAI,CAAC,6BAA6B,EAAE,CAAA;QAC9C,CAAC;QACD,IAAI,CAAC,cAAc,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;IACxC,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI;QACrB,MAAM,IAAI,CAAC,UAAW,CAAC,KAAK,EAAE,CAAA;QAC9B,MAAM,iBAAiB,GAAG,IAAI,CAAC,UAAW,CAAC,YAAY,EAAuB,CAAA;QAC9E,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,WAAW,KAAK,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,CACzG,IAAA,6BAAuB,EAAC,UAAU,EAAE,IAAI,CAAC,UAAW,CAAC,sBAAsB,EAAE,CAAC,CACjF,CAAC,EAAE,CAAC;YACD,MAAM,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;QACnE,CAAC;aAAM,CAAC;YACJ,IAAI,MAAM,EAAE,CAAC;gBACT,sFAAsF;gBACtF,MAAM,IAAI,CAAC,6BAA6B,EAAE,CAAA;YAC9C,CAAC;QACL,CAAC;QACD,wGAAwG;QACxG,MAAM,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,UAAW,EAAE,iBAAiB,EAAE,iBAAiB,CAAC,CAAA;QACrF,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,MAAM,mBAAmB,GAAG,IAAI,8BAAwB,CAAC,2CAAwB,EAAE,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAA;YAC/G,IAAI,CAAC,gBAAgB,GAAG,IAAI,mCAAgB,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAA;YACvE,IAAI,CAAC,cAAc,GAAG,IAAI,+BAAc,CACpC,IAAI,CAAC,UAAW,CAAC,sBAAsB,EAAE,EACzC,mBAAmB,CACtB,CAAA;QACL,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,6BAA6B;QACvC,0FAA0F;QAC1F,IAAI,CAAC,IAAI,CAAC,UAAW,CAAC,SAAS,EAAE,EAAE,CAAC;YAChC,YAAY,CAAC,KAAK,IAAI,EAAE;gBACpB,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,WAAW,KAAK,SAAS,EAAE,CAAC;oBACjD,wCAAwC;oBACxC,oFAAoF;oBACpF,8GAA8G;oBAC9G,MAAM,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;gBACnE,CAAC;YACL,CAAC,CAAC,CAAA;YACF,MAAM,IAAI,CAAC,UAAW,CAAC,0BAA0B,EAAE,CAAA;QACvD,CAAC;IACL,CAAC;IAED,cAAc;QACV,OAAO,IAAI,CAAC,WAAY,CAAA;IAC5B,CAAC;IAED,aAAa;QACT,OAAO,IAAI,CAAC,UAAW,CAAA;IAC3B,CAAC;IAED,iBAAiB;QACb,OAAO,IAAI,CAAC,cAAc,CAAA;IAC9B,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,IAAoB;QACpC,OAAO,IAAI,CAAC,cAAe,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IAC7C,CAAC;IAED,UAAU;QACN,OAAO,IAAI,CAAC,OAAO,CAAA;IACvB,CAAC;IAEO,oBAAoB;QACxB,OAAO,IAAI,CAAC,UAAW,CAAC,YAAY,EAAuB,CAAA;IAC/D,CAAC;IAED,KAAK,CAAC,IAAI;QACN,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAChB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;YACnB,IAAA,aAAI,EAAC,SAAS,EAAE,IAAI,CAAC,CAAA;YACrB,MAAM,IAAI,CAAC,WAAY,CAAC,OAAO,EAAE,CAAA;YACjC,MAAM,IAAI,CAAC,UAAW,CAAC,IAAI,EAAE,CAAA;YAC7B,IAAI,CAAC,WAAW,GAAG,SAAS,CAAA;YAC5B,IAAI,CAAC,UAAU,GAAG,SAAS,CAAA;QAC/B,CAAC;IACL,CAAC;CAEJ;AA5HD,oCA4HC"}
|
package/dist/src/exports.d.ts
CHANGED
|
@@ -2,3 +2,4 @@ export { NetworkStack, NetworkOptions } from './NetworkStack';
|
|
|
2
2
|
export { NetworkNode, createNetworkNode } from './NetworkNode';
|
|
3
3
|
export { StreamrNodeConfig } from './logic/StreamrNode';
|
|
4
4
|
export { ProxyDirection } from './proto/packages/trackerless-network/protos/NetworkRpc';
|
|
5
|
+
export { convertStreamMessageToBytes, convertBytesToStreamMessage } from './logic/protocol-integration/stream-message/oldStreamMessageBinaryUtils';
|
package/dist/src/exports.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ProxyDirection = exports.createNetworkNode = exports.NetworkNode = exports.NetworkStack = void 0;
|
|
3
|
+
exports.convertBytesToStreamMessage = exports.convertStreamMessageToBytes = exports.ProxyDirection = exports.createNetworkNode = exports.NetworkNode = exports.NetworkStack = void 0;
|
|
4
4
|
var NetworkStack_1 = require("./NetworkStack");
|
|
5
5
|
Object.defineProperty(exports, "NetworkStack", { enumerable: true, get: function () { return NetworkStack_1.NetworkStack; } });
|
|
6
6
|
var NetworkNode_1 = require("./NetworkNode");
|
|
@@ -8,4 +8,7 @@ Object.defineProperty(exports, "NetworkNode", { enumerable: true, get: function
|
|
|
8
8
|
Object.defineProperty(exports, "createNetworkNode", { enumerable: true, get: function () { return NetworkNode_1.createNetworkNode; } });
|
|
9
9
|
var NetworkRpc_1 = require("./proto/packages/trackerless-network/protos/NetworkRpc");
|
|
10
10
|
Object.defineProperty(exports, "ProxyDirection", { enumerable: true, get: function () { return NetworkRpc_1.ProxyDirection; } });
|
|
11
|
+
var oldStreamMessageBinaryUtils_1 = require("./logic/protocol-integration/stream-message/oldStreamMessageBinaryUtils");
|
|
12
|
+
Object.defineProperty(exports, "convertStreamMessageToBytes", { enumerable: true, get: function () { return oldStreamMessageBinaryUtils_1.convertStreamMessageToBytes; } });
|
|
13
|
+
Object.defineProperty(exports, "convertBytesToStreamMessage", { enumerable: true, get: function () { return oldStreamMessageBinaryUtils_1.convertBytesToStreamMessage; } });
|
|
11
14
|
//# sourceMappingURL=exports.js.map
|
package/dist/src/exports.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exports.js","sourceRoot":"","sources":["../../src/exports.ts"],"names":[],"mappings":";;;AAAA,+CAA6D;AAApD,4GAAA,YAAY,OAAA;AACrB,6CAA8D;AAArD,0GAAA,WAAW,OAAA;AAAE,gHAAA,iBAAiB,OAAA;AAEvC,qFAAuF;AAA9E,4GAAA,cAAc,OAAA"}
|
|
1
|
+
{"version":3,"file":"exports.js","sourceRoot":"","sources":["../../src/exports.ts"],"names":[],"mappings":";;;AAAA,+CAA6D;AAApD,4GAAA,YAAY,OAAA;AACrB,6CAA8D;AAArD,0GAAA,WAAW,OAAA;AAAE,gHAAA,iBAAiB,OAAA;AAEvC,qFAAuF;AAA9E,4GAAA,cAAc,OAAA;AACvB,uHAGgF;AAF5E,0IAAA,2BAA2B,OAAA;AAC3B,0IAAA,2BAA2B,OAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DeliveryRpcLocal.js","sourceRoot":"","sources":["../../../src/logic/DeliveryRpcLocal.ts"],"names":[],"mappings":";;;AAAA,sCAAgI;AAChI,0DAAsD;AAqBtD,MAAa,gBAAgB;
|
|
1
|
+
{"version":3,"file":"DeliveryRpcLocal.js","sourceRoot":"","sources":["../../../src/logic/DeliveryRpcLocal.ts"],"names":[],"mappings":";;;AAAA,sCAAgI;AAChI,0DAAsD;AAqBtD,MAAa,gBAAgB;IAER,MAAM,CAAwB;IAE/C,YAAY,MAA8B;QACtC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACxB,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,OAAsB,EAAE,OAA0B;QACtE,MAAM,YAAY,GAAG,IAAA,iCAA2B,EAAE,OAA0B,CAAC,wBAAyB,CAAC,CAAA;QACvG,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,YAAY,EAAE,OAAO,CAAC,SAAU,CAAC,CAAA;QAC/D,IAAI,IAAI,CAAC,MAAM,CAAC,qBAAqB,CAAC,OAAO,CAAC,SAAU,EAAE,OAAO,CAAC,kBAAkB,CAAC,EAAE,CAAC;YACpF,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,YAAY,CAAC,CAAA;QAChD,CAAC;QACD,OAAO,aAAK,CAAA;IAChB,CAAC;IAED,KAAK,CAAC,qBAAqB,CAAC,OAA8B,EAAE,OAA0B;QAClF,IAAI,OAAO,CAAC,YAAY,KAAK,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;YACpD,MAAM,oBAAoB,GAAI,OAA0B,CAAC,wBAAyB,CAAA;YAClF,MAAM,QAAQ,GAAG,IAAA,iCAA2B,EAAC,oBAAoB,CAAC,CAAA;YAClE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC,YAAY,CAAC,CAAA;QAC7D,CAAC;QACD,OAAO,aAAK,CAAA;IAChB,CAAC;CACJ;AAzBD,4CAyBC"}
|
|
@@ -43,13 +43,13 @@ export declare class GapMisMatchError extends Error {
|
|
|
43
43
|
*
|
|
44
44
|
*/
|
|
45
45
|
export declare class DuplicateMessageDetector {
|
|
46
|
-
private readonly
|
|
46
|
+
private readonly maxGapCount;
|
|
47
47
|
private readonly gaps;
|
|
48
|
-
constructor(
|
|
48
|
+
constructor(maxGapCount?: number);
|
|
49
49
|
/**
|
|
50
50
|
* returns true if number has not yet been seen (i.e. is not a duplicate)
|
|
51
51
|
*/
|
|
52
52
|
markAndCheck(previousNumber: NumberPair | null, number: NumberPair): boolean | never;
|
|
53
|
-
private
|
|
53
|
+
private dropLowestGapIfOverMaxGapCount;
|
|
54
54
|
toString(): string;
|
|
55
55
|
}
|
|
@@ -7,6 +7,8 @@ exports.DuplicateMessageDetector = exports.GapMisMatchError = exports.InvalidNum
|
|
|
7
7
|
* equal.
|
|
8
8
|
*/
|
|
9
9
|
class NumberPair {
|
|
10
|
+
a;
|
|
11
|
+
b;
|
|
10
12
|
constructor(a, b) {
|
|
11
13
|
this.a = a;
|
|
12
14
|
this.b = b;
|
|
@@ -77,8 +79,10 @@ exports.GapMisMatchError = GapMisMatchError;
|
|
|
77
79
|
*
|
|
78
80
|
*/
|
|
79
81
|
class DuplicateMessageDetector {
|
|
80
|
-
|
|
81
|
-
|
|
82
|
+
maxGapCount;
|
|
83
|
+
gaps;
|
|
84
|
+
constructor(maxGapCount = 10000) {
|
|
85
|
+
this.maxGapCount = maxGapCount;
|
|
82
86
|
this.gaps = []; // ascending order of half-closed intervals (x,y] representing gaps that contain unseen message(s)
|
|
83
87
|
}
|
|
84
88
|
/**
|
|
@@ -132,7 +136,7 @@ class DuplicateMessageDetector {
|
|
|
132
136
|
// - there are no gaps that define the empty set
|
|
133
137
|
// - last gap is [n, Infinity]
|
|
134
138
|
// - anything not covered by a gap is considered seen
|
|
135
|
-
this.
|
|
139
|
+
this.dropLowestGapIfOverMaxGapCount();
|
|
136
140
|
return true;
|
|
137
141
|
}
|
|
138
142
|
if (number.greaterThan(lowerBound)) {
|
|
@@ -141,9 +145,9 @@ class DuplicateMessageDetector {
|
|
|
141
145
|
}
|
|
142
146
|
return false;
|
|
143
147
|
}
|
|
144
|
-
|
|
145
|
-
// invariant: this.gaps.length <= this.
|
|
146
|
-
if (this.gaps.length > this.
|
|
148
|
+
dropLowestGapIfOverMaxGapCount() {
|
|
149
|
+
// invariant: this.gaps.length <= this.maxGapCount + 1
|
|
150
|
+
if (this.gaps.length > this.maxGapCount) {
|
|
147
151
|
this.gaps.shift();
|
|
148
152
|
}
|
|
149
153
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DuplicateMessageDetector.js","sourceRoot":"","sources":["../../../src/logic/DuplicateMessageDetector.ts"],"names":[],"mappings":";;;AAAA;;;;GAIG;AACH,MAAa,UAAU;
|
|
1
|
+
{"version":3,"file":"DuplicateMessageDetector.js","sourceRoot":"","sources":["../../../src/logic/DuplicateMessageDetector.ts"],"names":[],"mappings":"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"}
|
|
@@ -37,9 +37,12 @@ const logger = new utils_1.Logger(module);
|
|
|
37
37
|
exports.ENTRYPOINT_STORE_LIMIT = 8;
|
|
38
38
|
exports.NETWORK_SPLIT_AVOIDANCE_LIMIT = 4;
|
|
39
39
|
class EntryPointDiscovery {
|
|
40
|
+
abortController;
|
|
41
|
+
config;
|
|
42
|
+
storeInterval;
|
|
43
|
+
networkSplitAvoidedNodes = new Set();
|
|
44
|
+
isLocalNodeStoredAsEntryPoint = false;
|
|
40
45
|
constructor(config) {
|
|
41
|
-
this.networkSplitAvoidedNodes = new Set();
|
|
42
|
-
this.isLocalNodeStoredAsEntryPoint = false;
|
|
43
46
|
this.config = config;
|
|
44
47
|
this.abortController = new AbortController();
|
|
45
48
|
this.storeInterval = this.config.storeInterval ?? 60000;
|
|
@@ -86,7 +89,7 @@ class EntryPointDiscovery {
|
|
|
86
89
|
if (this.abortController.signal.aborted) {
|
|
87
90
|
return;
|
|
88
91
|
}
|
|
89
|
-
const possibleNetworkSplitDetected = this.config.layer1Node.
|
|
92
|
+
const possibleNetworkSplitDetected = this.config.layer1Node.getNeighborCount() < exports.NETWORK_SPLIT_AVOIDANCE_LIMIT;
|
|
90
93
|
if ((currentEntrypointCount < exports.ENTRYPOINT_STORE_LIMIT) || possibleNetworkSplitDetected) {
|
|
91
94
|
this.isLocalNodeStoredAsEntryPoint = true;
|
|
92
95
|
await this.storeSelfAsEntryPoint();
|
|
@@ -126,10 +129,10 @@ class EntryPointDiscovery {
|
|
|
126
129
|
await exponentialRunOff(async () => {
|
|
127
130
|
const rediscoveredEntrypoints = await this.discoverEntryPoints();
|
|
128
131
|
await this.config.layer1Node.joinDht(rediscoveredEntrypoints, false, false);
|
|
129
|
-
if (this.config.layer1Node.
|
|
132
|
+
if (this.config.layer1Node.getNeighborCount() < exports.NETWORK_SPLIT_AVOIDANCE_LIMIT) {
|
|
130
133
|
// Filter out nodes that are not neighbors as those nodes are assumed to be offline
|
|
131
134
|
const nodesToAvoid = rediscoveredEntrypoints
|
|
132
|
-
.filter((peer) => !this.config.layer1Node.
|
|
135
|
+
.filter((peer) => !this.config.layer1Node.getNeighbors()
|
|
133
136
|
.some((neighbor) => (0, dht_1.areEqualPeerDescriptors)(neighbor, peer)))
|
|
134
137
|
.map((peer) => (0, dht_1.getNodeIdFromPeerDescriptor)(peer));
|
|
135
138
|
nodesToAvoid.forEach((node) => this.networkSplitAvoidedNodes.add(node));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntryPointDiscovery.js","sourceRoot":"","sources":["../../../src/logic/EntryPointDiscovery.ts"],"names":[],"mappings":";;;AAAA,sCAOqB;AAErB,0CAAiE;AACjE,mCAAmC;AACnC,sDAAkD;AAG3C,MAAM,qBAAqB,GAAG,CAAC,YAA0B,EAAc,EAAE;IAC5E,OAAO,IAAA,0BAAoB,EAAC,IAAI,UAAU,CAAC,IAAA,mBAAU,EAAC,KAAK,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;AAChG,CAAC,CAAA;AAFY,QAAA,qBAAqB,yBAEjC;AAED,MAAM,mBAAmB,GAAG,CAAC,WAAwB,EAAoB,EAAE;IACvE,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,SAAG,CAAC,MAAM,CAAC,KAAK,CAAC,IAAK,EAAE,oBAAc,CAAC,CAAC,CAAA;AAChH,CAAC,CAAA;AAOD,MAAM,iBAAiB,GAAG,KAAK,EAC3B,IAAyB,EACzB,WAAmB,EACnB,WAAwB,EACxB,SAAS,GAAG,GAAG,EACf,WAAW,GAAG,CAAC,EACF,EAAE;IACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,WAAW,EAAE,CAAC,EAAE,EAAE;
|
|
1
|
+
{"version":3,"file":"EntryPointDiscovery.js","sourceRoot":"","sources":["../../../src/logic/EntryPointDiscovery.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,8 @@ export interface Layer0Node extends ITransport {
|
|
|
9
9
|
deleteDataFromDht(key: DhtAddress, waitForCompletion: boolean): Promise<void>;
|
|
10
10
|
waitForNetworkConnectivity(): Promise<void>;
|
|
11
11
|
getTransport(): ITransport;
|
|
12
|
+
getNeighbors(): PeerDescriptor[];
|
|
13
|
+
getConnections(): PeerDescriptor[];
|
|
12
14
|
start(): Promise<void>;
|
|
13
15
|
stop(): Promise<void>;
|
|
14
16
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { PeerDescriptor } from '@streamr/dht';
|
|
1
|
+
import { DhtAddress, PeerDescriptor } from '@streamr/dht';
|
|
2
2
|
export interface Layer1NodeEvents {
|
|
3
3
|
newContact: (peerDescriptor: PeerDescriptor, closestPeers: PeerDescriptor[]) => void;
|
|
4
4
|
contactRemoved: (peerDescriptor: PeerDescriptor, closestPeers: PeerDescriptor[]) => void;
|
|
@@ -9,10 +9,10 @@ export interface Layer1Node {
|
|
|
9
9
|
on<T extends keyof Layer1NodeEvents>(eventName: T, listener: (peerDescriptor: PeerDescriptor, peers: PeerDescriptor[]) => void): void;
|
|
10
10
|
once<T extends keyof Layer1NodeEvents>(eventName: T, listener: (peerDescriptor: PeerDescriptor, peers: PeerDescriptor[]) => void): void;
|
|
11
11
|
off<T extends keyof Layer1NodeEvents>(eventName: T, listener: (peerDescriptor: PeerDescriptor, peers: PeerDescriptor[]) => void): void;
|
|
12
|
-
removeContact: (
|
|
12
|
+
removeContact: (nodeId: DhtAddress) => void;
|
|
13
13
|
getClosestContacts: (maxCount?: number) => PeerDescriptor[];
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
getNeighbors: () => PeerDescriptor[];
|
|
15
|
+
getNeighborCount(): number;
|
|
16
16
|
joinDht: (entryPoints: PeerDescriptor[], doRandomJoin?: boolean, retry?: boolean) => Promise<void>;
|
|
17
17
|
start: () => Promise<void>;
|
|
18
18
|
stop: () => Promise<void>;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { DhtAddress
|
|
1
|
+
import { DhtAddress } from '@streamr/dht';
|
|
2
2
|
import { DeliveryRpcRemote } from './DeliveryRpcRemote';
|
|
3
3
|
import { EventEmitter } from 'eventemitter3';
|
|
4
4
|
export interface Events {
|
|
@@ -10,18 +10,16 @@ export declare class NodeList extends EventEmitter<Events> {
|
|
|
10
10
|
private ownId;
|
|
11
11
|
constructor(ownId: DhtAddress, limit: number);
|
|
12
12
|
add(remote: DeliveryRpcRemote): void;
|
|
13
|
-
remove(
|
|
14
|
-
|
|
15
|
-
hasNode(peerDescriptor: PeerDescriptor): boolean;
|
|
16
|
-
hasNodeById(nodeId: DhtAddress): boolean;
|
|
13
|
+
remove(nodeId: DhtAddress): void;
|
|
14
|
+
has(nodeId: DhtAddress): boolean;
|
|
17
15
|
replaceAll(neighbors: DeliveryRpcRemote[]): void;
|
|
18
16
|
getIds(): DhtAddress[];
|
|
19
17
|
get(id: DhtAddress): DeliveryRpcRemote | undefined;
|
|
20
18
|
size(exclude?: DhtAddress[]): number;
|
|
21
19
|
getRandom(exclude: DhtAddress[]): DeliveryRpcRemote | undefined;
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
20
|
+
getFirst(exclude: DhtAddress[]): DeliveryRpcRemote | undefined;
|
|
21
|
+
getFirstAndLast(exclude: DhtAddress[]): DeliveryRpcRemote[];
|
|
22
|
+
getLast(exclude: DhtAddress[]): DeliveryRpcRemote | undefined;
|
|
25
23
|
getAll(): DeliveryRpcRemote[];
|
|
26
24
|
stop(): void;
|
|
27
25
|
}
|
|
@@ -9,7 +9,11 @@ const getValuesOfIncludedKeys = (nodes, exclude) => {
|
|
|
9
9
|
.filter(([id, _node]) => !exclude.includes(id))
|
|
10
10
|
.map(([_id, node]) => node);
|
|
11
11
|
};
|
|
12
|
+
// The items in the list are in the insertion order
|
|
12
13
|
class NodeList extends eventemitter3_1.EventEmitter {
|
|
14
|
+
nodes;
|
|
15
|
+
limit;
|
|
16
|
+
ownId;
|
|
13
17
|
constructor(ownId, limit) {
|
|
14
18
|
super();
|
|
15
19
|
this.nodes = new Map();
|
|
@@ -26,16 +30,10 @@ class NodeList extends eventemitter3_1.EventEmitter {
|
|
|
26
30
|
}
|
|
27
31
|
}
|
|
28
32
|
}
|
|
29
|
-
remove(
|
|
30
|
-
this.nodes.delete((0, dht_1.getNodeIdFromPeerDescriptor)(peerDescriptor));
|
|
31
|
-
}
|
|
32
|
-
removeById(nodeId) {
|
|
33
|
+
remove(nodeId) {
|
|
33
34
|
this.nodes.delete(nodeId);
|
|
34
35
|
}
|
|
35
|
-
|
|
36
|
-
return this.nodes.has((0, dht_1.getNodeIdFromPeerDescriptor)(peerDescriptor));
|
|
37
|
-
}
|
|
38
|
-
hasNodeById(nodeId) {
|
|
36
|
+
has(nodeId) {
|
|
39
37
|
return this.nodes.has(nodeId);
|
|
40
38
|
}
|
|
41
39
|
replaceAll(neighbors) {
|
|
@@ -57,18 +55,18 @@ class NodeList extends eventemitter3_1.EventEmitter {
|
|
|
57
55
|
getRandom(exclude) {
|
|
58
56
|
return (0, lodash_1.sample)(getValuesOfIncludedKeys(this.nodes, exclude));
|
|
59
57
|
}
|
|
60
|
-
|
|
58
|
+
getFirst(exclude) {
|
|
61
59
|
const included = getValuesOfIncludedKeys(this.nodes, exclude);
|
|
62
60
|
return included[0];
|
|
63
61
|
}
|
|
64
|
-
|
|
62
|
+
getFirstAndLast(exclude) {
|
|
65
63
|
const included = getValuesOfIncludedKeys(this.nodes, exclude);
|
|
66
64
|
if (included.length === 0) {
|
|
67
65
|
return [];
|
|
68
66
|
}
|
|
69
|
-
return included.length > 1 ? [this.
|
|
67
|
+
return included.length > 1 ? [this.getFirst(exclude), this.getLast(exclude)] : [this.getFirst(exclude)];
|
|
70
68
|
}
|
|
71
|
-
|
|
69
|
+
getLast(exclude) {
|
|
72
70
|
const included = getValuesOfIncludedKeys(this.nodes, exclude);
|
|
73
71
|
return included[included.length - 1];
|
|
74
72
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NodeList.js","sourceRoot":"","sources":["../../../src/logic/NodeList.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"NodeList.js","sourceRoot":"","sources":["../../../src/logic/NodeList.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,7 +13,7 @@ import { Layer1Node } from './Layer1Node';
|
|
|
13
13
|
import { StreamPartID } from '@streamr/protocol';
|
|
14
14
|
export interface Events {
|
|
15
15
|
message: (message: StreamMessage) => void;
|
|
16
|
-
|
|
16
|
+
neighborConnected: (nodeId: DhtAddress) => void;
|
|
17
17
|
entryPointLeaveDetected: () => void;
|
|
18
18
|
}
|
|
19
19
|
export interface StrictRandomGraphNodeConfig {
|
|
@@ -25,13 +25,13 @@ export interface StrictRandomGraphNodeConfig {
|
|
|
25
25
|
nodeViewSize: number;
|
|
26
26
|
nearbyNodeView: NodeList;
|
|
27
27
|
randomNodeView: NodeList;
|
|
28
|
-
|
|
28
|
+
neighbors: NodeList;
|
|
29
29
|
handshaker: Handshaker;
|
|
30
30
|
neighborFinder: NeighborFinder;
|
|
31
31
|
neighborUpdateManager: NeighborUpdateManager;
|
|
32
32
|
propagation: Propagation;
|
|
33
33
|
rpcCommunicator: ListeningRpcCommunicator;
|
|
34
|
-
|
|
34
|
+
neighborCount: number;
|
|
35
35
|
inspector: Inspector;
|
|
36
36
|
temporaryConnectionRpcLocal: TemporaryConnectionRpcLocal;
|
|
37
37
|
isLocalNodeEntryPoint: () => boolean;
|
|
@@ -60,8 +60,8 @@ export declare class RandomGraphNode extends EventEmitter<Events> {
|
|
|
60
60
|
inspect(peerDescriptor: PeerDescriptor): Promise<boolean>;
|
|
61
61
|
private getPropagationTargets;
|
|
62
62
|
getOwnNodeId(): DhtAddress;
|
|
63
|
-
|
|
64
|
-
|
|
63
|
+
getOutgoingHandshakeCount(): number;
|
|
64
|
+
getNeighbors(): PeerDescriptor[];
|
|
65
65
|
getNearbyNodeView(): NodeList;
|
|
66
66
|
private isStopped;
|
|
67
67
|
}
|