@streamr/trackerless-network 100.0.0-testnet-one.1 → 100.0.0-testnet-one.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/package.json +6 -6
- package/dist/src/NetworkStack.d.ts +1 -0
- package/dist/src/NetworkStack.js +30 -5
- package/dist/src/NetworkStack.js.map +1 -1
- package/dist/src/logic/StreamrNode.js +0 -14
- package/dist/src/logic/StreamrNode.js.map +1 -1
- package/package.json +6 -6
- package/src/NetworkStack.ts +32 -5
- package/src/logic/StreamrNode.ts +0 -18
package/dist/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@streamr/trackerless-network",
|
|
3
|
-
"version": "100.0.0-testnet-one.
|
|
3
|
+
"version": "100.0.0-testnet-one.2",
|
|
4
4
|
"description": "Minimal and extendable implementation of the Streamr Network node.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -30,11 +30,11 @@
|
|
|
30
30
|
"dependencies": {
|
|
31
31
|
"@protobuf-ts/runtime": "^2.8.2",
|
|
32
32
|
"@protobuf-ts/runtime-rpc": "^2.8.2",
|
|
33
|
-
"@streamr/dht": "100.0.0-testnet-one.
|
|
34
|
-
"@streamr/proto-rpc": "100.0.0-testnet-one.
|
|
35
|
-
"@streamr/protocol": "100.0.0-testnet-one.
|
|
36
|
-
"@streamr/test-utils": "100.0.0-testnet-one.
|
|
37
|
-
"@streamr/utils": "100.0.0-testnet-one.
|
|
33
|
+
"@streamr/dht": "100.0.0-testnet-one.2",
|
|
34
|
+
"@streamr/proto-rpc": "100.0.0-testnet-one.2",
|
|
35
|
+
"@streamr/protocol": "100.0.0-testnet-one.2",
|
|
36
|
+
"@streamr/test-utils": "100.0.0-testnet-one.2",
|
|
37
|
+
"@streamr/utils": "100.0.0-testnet-one.2",
|
|
38
38
|
"eventemitter3": "^5.0.0",
|
|
39
39
|
"lodash": "^4.17.21",
|
|
40
40
|
"uuid": "^9.0.1",
|
|
@@ -16,6 +16,7 @@ export interface NetworkStackEvents {
|
|
|
16
16
|
export declare class NetworkStack extends EventEmitter<NetworkStackEvents> {
|
|
17
17
|
private layer0Node?;
|
|
18
18
|
private streamrNode?;
|
|
19
|
+
private stopped;
|
|
19
20
|
private readonly metricsContext;
|
|
20
21
|
private readonly options;
|
|
21
22
|
constructor(options: NetworkOptions);
|
package/dist/src/NetworkStack.js
CHANGED
|
@@ -7,9 +7,30 @@ const utils_1 = require("@streamr/utils");
|
|
|
7
7
|
const eventemitter3_1 = require("eventemitter3");
|
|
8
8
|
const protocol_1 = require("@streamr/protocol");
|
|
9
9
|
const NetworkRpc_1 = require("./proto/packages/trackerless-network/protos/NetworkRpc");
|
|
10
|
+
const lodash_1 = require("lodash");
|
|
11
|
+
const instances = [];
|
|
12
|
+
const stopInstances = async () => {
|
|
13
|
+
// make a clone so that it is ok for each instance.stop() to remove itself from the list (at line 139)
|
|
14
|
+
// while the map function is iterating the list
|
|
15
|
+
const clonedInstances = [...instances];
|
|
16
|
+
await Promise.all(clonedInstances.map((instance) => instance.stop()));
|
|
17
|
+
};
|
|
18
|
+
const EXIT_EVENTS = [`exit`, `SIGINT`, `SIGUSR1`, `SIGUSR2`, `uncaughtException`, `unhandledRejection`, `SIGTERM`];
|
|
19
|
+
EXIT_EVENTS.forEach((event) => {
|
|
20
|
+
process.on(event, async () => {
|
|
21
|
+
await stopInstances();
|
|
22
|
+
process.exit();
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
if (typeof window === 'object') {
|
|
26
|
+
window.addEventListener('unload', async () => {
|
|
27
|
+
await stopInstances();
|
|
28
|
+
});
|
|
29
|
+
}
|
|
10
30
|
class NetworkStack extends eventemitter3_1.EventEmitter {
|
|
11
31
|
constructor(options) {
|
|
12
32
|
super();
|
|
33
|
+
this.stopped = false;
|
|
13
34
|
this.options = options;
|
|
14
35
|
this.metricsContext = options.metricsContext ?? new utils_1.MetricsContext();
|
|
15
36
|
this.layer0Node = new dht_1.DhtNode({
|
|
@@ -20,6 +41,7 @@ class NetworkStack extends eventemitter3_1.EventEmitter {
|
|
|
20
41
|
...options.networkNode,
|
|
21
42
|
metricsContext: this.metricsContext
|
|
22
43
|
});
|
|
44
|
+
instances.push(this);
|
|
23
45
|
}
|
|
24
46
|
async joinStreamPart(streamPartId, neighborRequirement) {
|
|
25
47
|
if (this.getStreamrNode().isProxiedStreamPart(streamPartId)) {
|
|
@@ -85,11 +107,14 @@ class NetworkStack extends eventemitter3_1.EventEmitter {
|
|
|
85
107
|
return this.options;
|
|
86
108
|
}
|
|
87
109
|
async stop() {
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
110
|
+
if (!this.stopped) {
|
|
111
|
+
this.stopped = true;
|
|
112
|
+
(0, lodash_1.pull)(instances, this);
|
|
113
|
+
await this.streamrNode.destroy();
|
|
114
|
+
await this.layer0Node.stop();
|
|
115
|
+
this.streamrNode = undefined;
|
|
116
|
+
this.layer0Node = undefined;
|
|
117
|
+
}
|
|
93
118
|
}
|
|
94
119
|
}
|
|
95
120
|
exports.NetworkStack = NetworkStack;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NetworkStack.js","sourceRoot":"","sources":["../../src/NetworkStack.ts"],"names":[],"mappings":";;;AAAA,sCAAkG;AAClG,qDAAoE;AACpE,0CAAiE;AACjE,iDAA4C;AAC5C,gDAA0E;AAC1E,uFAAyH;
|
|
1
|
+
{"version":3,"file":"NetworkStack.js","sourceRoot":"","sources":["../../src/NetworkStack.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,7 +11,6 @@ const EntryPointDiscovery_1 = require("./EntryPointDiscovery");
|
|
|
11
11
|
const createRandomGraphNode_1 = require("./createRandomGraphNode");
|
|
12
12
|
const ProxyClient_1 = require("./proxy/ProxyClient");
|
|
13
13
|
const logger = new utils_1.Logger(module);
|
|
14
|
-
let cleanUp = async () => { };
|
|
15
14
|
// TODO rename class?
|
|
16
15
|
class StreamrNode extends eventemitter3_1.EventEmitter {
|
|
17
16
|
constructor(config) {
|
|
@@ -37,7 +36,6 @@ class StreamrNode extends eventemitter3_1.EventEmitter {
|
|
|
37
36
|
this.layer0Node = startedAndJoinedLayer0Node;
|
|
38
37
|
this.transport = transport;
|
|
39
38
|
this.connectionLocker = connectionLocker;
|
|
40
|
-
cleanUp = () => this.destroy();
|
|
41
39
|
}
|
|
42
40
|
async destroy() {
|
|
43
41
|
if (!this.started || this.destroyed) {
|
|
@@ -228,16 +226,4 @@ class StreamrNode extends eventemitter3_1.EventEmitter {
|
|
|
228
226
|
}
|
|
229
227
|
}
|
|
230
228
|
exports.StreamrNode = StreamrNode;
|
|
231
|
-
[`exit`, `SIGINT`, `SIGUSR1`, `SIGUSR2`, `uncaughtException`, `unhandledRejection`, `SIGTERM`].forEach((term) => {
|
|
232
|
-
process.on(term, async () => {
|
|
233
|
-
// TODO should we catch possible promise rejection?
|
|
234
|
-
await cleanUp();
|
|
235
|
-
process.exit();
|
|
236
|
-
});
|
|
237
|
-
});
|
|
238
|
-
if (typeof window === 'object') {
|
|
239
|
-
window.addEventListener('unload', async () => {
|
|
240
|
-
await cleanUp();
|
|
241
|
-
});
|
|
242
|
-
}
|
|
243
229
|
//# sourceMappingURL=StreamrNode.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StreamrNode.js","sourceRoot":"","sources":["../../../src/logic/StreamrNode.ts"],"names":[],"mappings":";;;AAAA,sCAMqB;AACrB,gDAA6F;AAC7F,0CAOuB;AACvB,iDAA4C;AAC5C,mCAAmC;AACnC,gDAAoE;AAKpE,+DAA0F;AAC1F,mEAA+D;AAC/D,qDAAiD;AAmBjD,MAAM,MAAM,GAAG,IAAI,cAAM,CAAC,MAAM,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"StreamrNode.js","sourceRoot":"","sources":["../../../src/logic/StreamrNode.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@streamr/trackerless-network",
|
|
3
|
-
"version": "100.0.0-testnet-one.
|
|
3
|
+
"version": "100.0.0-testnet-one.2",
|
|
4
4
|
"description": "Minimal and extendable implementation of the Streamr Network node.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -30,11 +30,11 @@
|
|
|
30
30
|
"dependencies": {
|
|
31
31
|
"@protobuf-ts/runtime": "^2.8.2",
|
|
32
32
|
"@protobuf-ts/runtime-rpc": "^2.8.2",
|
|
33
|
-
"@streamr/dht": "100.0.0-testnet-one.
|
|
34
|
-
"@streamr/proto-rpc": "100.0.0-testnet-one.
|
|
35
|
-
"@streamr/protocol": "100.0.0-testnet-one.
|
|
36
|
-
"@streamr/test-utils": "100.0.0-testnet-one.
|
|
37
|
-
"@streamr/utils": "100.0.0-testnet-one.
|
|
33
|
+
"@streamr/dht": "100.0.0-testnet-one.2",
|
|
34
|
+
"@streamr/proto-rpc": "100.0.0-testnet-one.2",
|
|
35
|
+
"@streamr/protocol": "100.0.0-testnet-one.2",
|
|
36
|
+
"@streamr/test-utils": "100.0.0-testnet-one.2",
|
|
37
|
+
"@streamr/utils": "100.0.0-testnet-one.2",
|
|
38
38
|
"eventemitter3": "^5.0.0",
|
|
39
39
|
"lodash": "^4.17.21",
|
|
40
40
|
"uuid": "^9.0.1",
|
package/src/NetworkStack.ts
CHANGED
|
@@ -5,6 +5,7 @@ import { EventEmitter } from 'eventemitter3'
|
|
|
5
5
|
import { StreamID, StreamPartID, toStreamPartID } from '@streamr/protocol'
|
|
6
6
|
import { ProxyDirection, StreamMessage, StreamMessageType } from './proto/packages/trackerless-network/protos/NetworkRpc'
|
|
7
7
|
import { Layer0Node } from './logic/Layer0Node'
|
|
8
|
+
import { pull } from 'lodash'
|
|
8
9
|
|
|
9
10
|
export interface NetworkOptions {
|
|
10
11
|
layer0?: DhtNodeOptions
|
|
@@ -16,10 +17,32 @@ export interface NetworkStackEvents {
|
|
|
16
17
|
stopped: () => void
|
|
17
18
|
}
|
|
18
19
|
|
|
20
|
+
const instances: NetworkStack[] = []
|
|
21
|
+
const stopInstances = async () => {
|
|
22
|
+
// make a clone so that it is ok for each instance.stop() to remove itself from the list (at line 139)
|
|
23
|
+
// while the map function is iterating the list
|
|
24
|
+
const clonedInstances = [...instances]
|
|
25
|
+
await Promise.all(clonedInstances.map((instance) => instance.stop()))
|
|
26
|
+
}
|
|
27
|
+
const EXIT_EVENTS = [`exit`, `SIGINT`, `SIGUSR1`, `SIGUSR2`, `uncaughtException`, `unhandledRejection`, `SIGTERM`]
|
|
28
|
+
EXIT_EVENTS.forEach((event) => {
|
|
29
|
+
process.on(event, async () => {
|
|
30
|
+
await stopInstances()
|
|
31
|
+
process.exit()
|
|
32
|
+
})
|
|
33
|
+
})
|
|
34
|
+
declare let window: any
|
|
35
|
+
if (typeof window === 'object') {
|
|
36
|
+
window.addEventListener('unload', async () => {
|
|
37
|
+
await stopInstances()
|
|
38
|
+
})
|
|
39
|
+
}
|
|
40
|
+
|
|
19
41
|
export class NetworkStack extends EventEmitter<NetworkStackEvents> {
|
|
20
42
|
|
|
21
43
|
private layer0Node?: Layer0Node
|
|
22
44
|
private streamrNode?: StreamrNode
|
|
45
|
+
private stopped = false
|
|
23
46
|
private readonly metricsContext: MetricsContext
|
|
24
47
|
private readonly options: NetworkOptions
|
|
25
48
|
|
|
@@ -35,6 +58,7 @@ export class NetworkStack extends EventEmitter<NetworkStackEvents> {
|
|
|
35
58
|
...options.networkNode,
|
|
36
59
|
metricsContext: this.metricsContext
|
|
37
60
|
})
|
|
61
|
+
instances.push(this)
|
|
38
62
|
}
|
|
39
63
|
|
|
40
64
|
async joinStreamPart(streamPartId: StreamPartID, neighborRequirement?: { minCount: number, timeout: number }): Promise<void> {
|
|
@@ -110,11 +134,14 @@ export class NetworkStack extends EventEmitter<NetworkStackEvents> {
|
|
|
110
134
|
}
|
|
111
135
|
|
|
112
136
|
async stop(): Promise<void> {
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
137
|
+
if (!this.stopped) {
|
|
138
|
+
this.stopped = true
|
|
139
|
+
pull(instances, this)
|
|
140
|
+
await this.streamrNode!.destroy()
|
|
141
|
+
await this.layer0Node!.stop()
|
|
142
|
+
this.streamrNode = undefined
|
|
143
|
+
this.layer0Node = undefined
|
|
144
|
+
}
|
|
118
145
|
}
|
|
119
146
|
|
|
120
147
|
}
|
package/src/logic/StreamrNode.ts
CHANGED
|
@@ -44,8 +44,6 @@ export interface Events {
|
|
|
44
44
|
|
|
45
45
|
const logger = new Logger(module)
|
|
46
46
|
|
|
47
|
-
let cleanUp: () => Promise<void> = async () => { }
|
|
48
|
-
|
|
49
47
|
interface Metrics extends MetricsDefinition {
|
|
50
48
|
broadcastMessagesPerSecond: Metric
|
|
51
49
|
broadcastBytesPerSecond: Metric
|
|
@@ -93,7 +91,6 @@ export class StreamrNode extends EventEmitter<Events> {
|
|
|
93
91
|
this.layer0Node = startedAndJoinedLayer0Node
|
|
94
92
|
this.transport = transport
|
|
95
93
|
this.connectionLocker = connectionLocker
|
|
96
|
-
cleanUp = () => this.destroy()
|
|
97
94
|
}
|
|
98
95
|
|
|
99
96
|
async destroy(): Promise<void> {
|
|
@@ -306,18 +303,3 @@ export class StreamrNode extends EventEmitter<Events> {
|
|
|
306
303
|
return Array.from(this.streamParts.keys()).map((id) => StreamPartIDUtils.parse(id))
|
|
307
304
|
}
|
|
308
305
|
}
|
|
309
|
-
|
|
310
|
-
[`exit`, `SIGINT`, `SIGUSR1`, `SIGUSR2`, `uncaughtException`, `unhandledRejection`, `SIGTERM`].forEach((term) => {
|
|
311
|
-
process.on(term, async () => {
|
|
312
|
-
// TODO should we catch possible promise rejection?
|
|
313
|
-
await cleanUp()
|
|
314
|
-
process.exit()
|
|
315
|
-
})
|
|
316
|
-
})
|
|
317
|
-
|
|
318
|
-
declare let window: any
|
|
319
|
-
if (typeof window === 'object') {
|
|
320
|
-
window.addEventListener('unload', async () => {
|
|
321
|
-
await cleanUp()
|
|
322
|
-
})
|
|
323
|
-
}
|