@streamr/trackerless-network 0.0.1-tatum.6 → 0.0.1-tatum.8

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.
Files changed (186) hide show
  1. package/dist/package.json +10 -8
  2. package/dist/src/NetworkNode.js +2 -2
  3. package/dist/src/NetworkNode.js.map +1 -1
  4. package/dist/src/NetworkStack.d.ts +5 -6
  5. package/dist/src/NetworkStack.js +27 -56
  6. package/dist/src/NetworkStack.js.map +1 -1
  7. package/dist/src/identifiers.js +2 -2
  8. package/dist/src/identifiers.js.map +1 -1
  9. package/dist/src/logic/{StreamNodeServer.d.ts → DeliveryRpcLocal.d.ts} +6 -5
  10. package/dist/src/logic/{StreamNodeServer.js → DeliveryRpcLocal.js} +5 -5
  11. package/dist/src/logic/{StreamNodeServer.js.map → DeliveryRpcLocal.js.map} +1 -1
  12. package/dist/src/logic/{RemoteRandomGraphNode.d.ts → DeliveryRpcRemote.d.ts} +2 -2
  13. package/dist/src/logic/{RemoteRandomGraphNode.js → DeliveryRpcRemote.js} +5 -5
  14. package/dist/src/logic/DeliveryRpcRemote.js.map +1 -0
  15. package/dist/src/logic/{StreamPartEntryPointDiscovery.d.ts → EntryPointDiscovery.d.ts} +10 -12
  16. package/dist/src/logic/{StreamPartEntryPointDiscovery.js → EntryPointDiscovery.js} +18 -40
  17. package/dist/src/logic/EntryPointDiscovery.js.map +1 -0
  18. package/dist/src/logic/Layer0Node.d.ts +14 -0
  19. package/dist/src/logic/{ILayer1.js → Layer0Node.js} +1 -1
  20. package/dist/src/logic/Layer0Node.js.map +1 -0
  21. package/dist/src/logic/{ILayer1.d.ts → Layer1Node.d.ts} +5 -5
  22. package/dist/src/logic/{ILayer0.js → Layer1Node.js} +1 -1
  23. package/dist/src/logic/Layer1Node.js.map +1 -0
  24. package/dist/src/logic/NodeList.d.ts +10 -10
  25. package/dist/src/logic/NodeList.js.map +1 -1
  26. package/dist/src/logic/RandomGraphNode.d.ts +11 -15
  27. package/dist/src/logic/RandomGraphNode.js +46 -45
  28. package/dist/src/logic/RandomGraphNode.js.map +1 -1
  29. package/dist/src/logic/StreamrNode.d.ts +15 -18
  30. package/dist/src/logic/StreamrNode.js +78 -87
  31. package/dist/src/logic/StreamrNode.js.map +1 -1
  32. package/dist/src/logic/createRandomGraphNode.d.ts +6 -1
  33. package/dist/src/logic/createRandomGraphNode.js +17 -23
  34. package/dist/src/logic/createRandomGraphNode.js.map +1 -1
  35. package/dist/src/logic/formStreamPartDeliveryServiceId.d.ts +2 -0
  36. package/dist/src/logic/formStreamPartDeliveryServiceId.js +8 -0
  37. package/dist/src/logic/formStreamPartDeliveryServiceId.js.map +1 -0
  38. package/dist/src/logic/inspect/Inspector.d.ts +3 -2
  39. package/dist/src/logic/inspect/Inspector.js +5 -5
  40. package/dist/src/logic/inspect/Inspector.js.map +1 -1
  41. package/dist/src/logic/neighbor-discovery/{HandshakerServer.d.ts → HandshakeRpcLocal.d.ts} +10 -10
  42. package/dist/src/logic/neighbor-discovery/{HandshakerServer.js → HandshakeRpcLocal.js} +13 -13
  43. package/dist/src/logic/neighbor-discovery/HandshakeRpcLocal.js.map +1 -0
  44. package/dist/src/logic/neighbor-discovery/{RemoteHandshaker.d.ts → HandshakeRpcRemote.d.ts} +1 -1
  45. package/dist/src/logic/neighbor-discovery/{RemoteHandshaker.js → HandshakeRpcRemote.js} +8 -7
  46. package/dist/src/logic/neighbor-discovery/HandshakeRpcRemote.js.map +1 -0
  47. package/dist/src/logic/neighbor-discovery/Handshaker.d.ts +8 -7
  48. package/dist/src/logic/neighbor-discovery/Handshaker.js +23 -24
  49. package/dist/src/logic/neighbor-discovery/Handshaker.js.map +1 -1
  50. package/dist/src/logic/neighbor-discovery/NeighborFinder.d.ts +1 -1
  51. package/dist/src/logic/neighbor-discovery/NeighborFinder.js +1 -1
  52. package/dist/src/logic/neighbor-discovery/NeighborFinder.js.map +1 -1
  53. package/dist/src/logic/neighbor-discovery/NeighborUpdateManager.d.ts +3 -2
  54. package/dist/src/logic/neighbor-discovery/NeighborUpdateManager.js +5 -5
  55. package/dist/src/logic/neighbor-discovery/NeighborUpdateManager.js.map +1 -1
  56. package/dist/src/logic/neighbor-discovery/{NeighborUpdateManagerServer.d.ts → NeighborUpdateRpcLocal.d.ts} +6 -6
  57. package/dist/src/logic/neighbor-discovery/{NeighborUpdateManagerServer.js → NeighborUpdateRpcLocal.js} +9 -9
  58. package/dist/src/logic/neighbor-discovery/NeighborUpdateRpcLocal.js.map +1 -0
  59. package/dist/src/logic/neighbor-discovery/{RemoteNeighborUpdateManager.d.ts → NeighborUpdateRpcRemote.d.ts} +1 -1
  60. package/dist/src/logic/neighbor-discovery/{RemoteNeighborUpdateManager.js → NeighborUpdateRpcRemote.js} +5 -5
  61. package/dist/src/logic/neighbor-discovery/NeighborUpdateRpcRemote.js.map +1 -0
  62. package/dist/src/logic/propagation/Propagation.js +2 -2
  63. package/dist/src/logic/propagation/Propagation.js.map +1 -1
  64. package/dist/src/logic/proxy/{ProxyStreamConnectionClient.d.ts → ProxyClient.d.ts} +7 -10
  65. package/dist/src/logic/proxy/{ProxyStreamConnectionClient.js → ProxyClient.js} +24 -22
  66. package/dist/src/logic/proxy/ProxyClient.js.map +1 -0
  67. package/dist/src/logic/proxy/{ProxyStreamConnectionServer.d.ts → ProxyConnectionRpcLocal.d.ts} +5 -5
  68. package/dist/src/logic/proxy/{ProxyStreamConnectionServer.js → ProxyConnectionRpcLocal.js} +6 -6
  69. package/dist/src/logic/proxy/ProxyConnectionRpcLocal.js.map +1 -0
  70. package/dist/src/logic/proxy/{RemoteProxyServer.d.ts → ProxyConnectionRpcRemote.d.ts} +1 -1
  71. package/dist/src/logic/proxy/{RemoteProxyServer.js → ProxyConnectionRpcRemote.js} +4 -4
  72. package/dist/src/logic/proxy/ProxyConnectionRpcRemote.js.map +1 -0
  73. package/dist/src/logic/temporary-connection/{TemporaryConnectionRpcServer.d.ts → TemporaryConnectionRpcLocal.d.ts} +5 -4
  74. package/dist/src/logic/temporary-connection/{TemporaryConnectionRpcServer.js → TemporaryConnectionRpcLocal.js} +6 -6
  75. package/dist/src/logic/temporary-connection/TemporaryConnectionRpcLocal.js.map +1 -0
  76. package/dist/src/logic/temporary-connection/{RemoteTemporaryConnectionRpcServer.d.ts → TemporaryConnectionRpcRemote.d.ts} +1 -1
  77. package/dist/src/logic/temporary-connection/{RemoteTemporaryConnectionRpcServer.js → TemporaryConnectionRpcRemote.js} +4 -4
  78. package/dist/src/logic/temporary-connection/TemporaryConnectionRpcRemote.js.map +1 -0
  79. package/dist/src/proto/packages/dht/protos/DhtRpc.client.d.ts +10 -0
  80. package/dist/src/proto/packages/dht/protos/DhtRpc.client.js +7 -0
  81. package/dist/src/proto/packages/dht/protos/DhtRpc.client.js.map +1 -1
  82. package/dist/src/proto/packages/dht/protos/DhtRpc.d.ts +54 -118
  83. package/dist/src/proto/packages/dht/protos/DhtRpc.js +50 -49
  84. package/dist/src/proto/packages/dht/protos/DhtRpc.js.map +1 -1
  85. package/dist/src/proto/packages/dht/protos/DhtRpc.server.d.ts +6 -0
  86. package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.client.d.ts +4 -4
  87. package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.client.js +7 -7
  88. package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.client.js.map +1 -1
  89. package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.d.ts +10 -10
  90. package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.js +7 -7
  91. package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.js.map +1 -1
  92. package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.server.d.ts +2 -2
  93. package/dist/test/benchmark/first-message.js +16 -17
  94. package/dist/test/benchmark/first-message.js.map +1 -1
  95. package/dist/test/utils/utils.d.ts +7 -6
  96. package/dist/test/utils/utils.js +18 -17
  97. package/dist/test/utils/utils.js.map +1 -1
  98. package/package.json +10 -8
  99. package/protos/NetworkRpc.proto +5 -5
  100. package/src/NetworkNode.ts +2 -2
  101. package/src/NetworkStack.ts +31 -72
  102. package/src/identifiers.ts +3 -3
  103. package/src/logic/{StreamNodeServer.ts → DeliveryRpcLocal.ts} +8 -7
  104. package/src/logic/{RemoteRandomGraphNode.ts → DeliveryRpcRemote.ts} +3 -3
  105. package/src/logic/{StreamPartEntryPointDiscovery.ts → EntryPointDiscovery.ts} +24 -48
  106. package/src/logic/Layer0Node.ts +15 -0
  107. package/src/logic/{ILayer1.ts → Layer1Node.ts} +5 -5
  108. package/src/logic/NodeList.ts +12 -12
  109. package/src/logic/RandomGraphNode.ts +73 -74
  110. package/src/logic/StreamrNode.ts +90 -103
  111. package/src/logic/createRandomGraphNode.ts +28 -26
  112. package/src/logic/formStreamPartDeliveryServiceId.ts +5 -0
  113. package/src/logic/inspect/Inspector.ts +8 -7
  114. package/src/logic/neighbor-discovery/{HandshakerServer.ts → HandshakeRpcLocal.ts} +20 -20
  115. package/src/logic/neighbor-discovery/{RemoteHandshaker.ts → HandshakeRpcRemote.ts} +6 -5
  116. package/src/logic/neighbor-discovery/Handshaker.ts +38 -38
  117. package/src/logic/neighbor-discovery/NeighborFinder.ts +2 -2
  118. package/src/logic/neighbor-discovery/NeighborUpdateManager.ts +13 -10
  119. package/src/logic/neighbor-discovery/{NeighborUpdateManagerServer.ts → NeighborUpdateRpcLocal.ts} +15 -15
  120. package/src/logic/neighbor-discovery/{RemoteNeighborUpdateManager.ts → NeighborUpdateRpcRemote.ts} +2 -2
  121. package/src/logic/propagation/Propagation.ts +2 -2
  122. package/src/logic/proxy/{ProxyStreamConnectionClient.ts → ProxyClient.ts} +29 -29
  123. package/src/logic/proxy/{ProxyStreamConnectionServer.ts → ProxyConnectionRpcLocal.ts} +10 -11
  124. package/src/logic/proxy/{RemoteProxyServer.ts → ProxyConnectionRpcRemote.ts} +1 -1
  125. package/src/logic/temporary-connection/{TemporaryConnectionRpcServer.ts → TemporaryConnectionRpcLocal.ts} +11 -10
  126. package/src/logic/temporary-connection/{RemoteTemporaryConnectionRpcServer.ts → TemporaryConnectionRpcRemote.ts} +1 -1
  127. package/src/proto/packages/dht/protos/DhtRpc.client.ts +13 -0
  128. package/src/proto/packages/dht/protos/DhtRpc.server.ts +6 -0
  129. package/src/proto/packages/dht/protos/DhtRpc.ts +88 -166
  130. package/src/proto/packages/trackerless-network/protos/NetworkRpc.client.ts +8 -8
  131. package/src/proto/packages/trackerless-network/protos/NetworkRpc.server.ts +2 -2
  132. package/src/proto/packages/trackerless-network/protos/NetworkRpc.ts +14 -14
  133. package/test/benchmark/first-message.ts +19 -20
  134. package/test/end-to-end/inspect.test.ts +12 -12
  135. package/test/end-to-end/proxy-and-full-node.test.ts +17 -18
  136. package/test/end-to-end/proxy-connections.test.ts +9 -11
  137. package/test/end-to-end/proxy-key-exchange.test.ts +12 -13
  138. package/test/end-to-end/random-graph-with-real-connections.test.ts +27 -22
  139. package/test/end-to-end/webrtc-full-node-network.test.ts +8 -8
  140. package/test/end-to-end/websocket-full-node-network.test.ts +8 -10
  141. package/test/integration/{RemoteRandomGraphNode.test.ts → DeliveryRpcRemote.test.ts} +17 -14
  142. package/test/integration/{RemoteHandshaker.test.ts → HandshakeRpcRemote.test.ts} +10 -9
  143. package/test/integration/Handshakes.test.ts +23 -20
  144. package/test/integration/Inspect.test.ts +4 -3
  145. package/test/integration/{RemoteNeighborUpdateManager.test.ts → NeighborUpdateRpcRemote.test.ts} +12 -10
  146. package/test/integration/NetworkNode.test.ts +9 -8
  147. package/test/integration/NetworkRpc.test.ts +5 -7
  148. package/test/integration/NetworkStack.test.ts +13 -15
  149. package/test/integration/Propagation.test.ts +14 -13
  150. package/test/integration/RandomGraphNode-Layer1Node-Latencies.test.ts +23 -20
  151. package/test/integration/RandomGraphNode-Layer1Node.test.ts +30 -29
  152. package/test/integration/StreamrNode.test.ts +16 -13
  153. package/test/integration/joining-streams-on-offline-peers.test.ts +16 -18
  154. package/test/integration/stream-without-default-entrypoints.test.ts +12 -14
  155. package/test/unit/{StreamNodeServer.test.ts → DeliveryRpcLocal.test.ts} +8 -8
  156. package/test/unit/{StreamPartEntrypointDiscovery.test.ts → EntrypointDiscovery.test.ts} +27 -44
  157. package/test/unit/{HandshakerServer.test.ts → HandshakeRpcLocal.test.ts} +26 -24
  158. package/test/unit/Handshaker.test.ts +10 -8
  159. package/test/unit/Inspector.test.ts +4 -3
  160. package/test/unit/NeighborFinder.test.ts +5 -5
  161. package/test/unit/NodeList.test.ts +22 -13
  162. package/test/unit/{RemoteProxyServer.test.ts → ProxyConnectionRpcRemote.test.ts} +4 -4
  163. package/test/unit/RandomGraphNode.test.ts +15 -13
  164. package/test/unit/StreamMessageTranslator.test.ts +10 -9
  165. package/test/unit/StreamrNode.test.ts +10 -10
  166. package/test/utils/mock/{MockLayer0.ts → MockLayer0Node.ts} +23 -26
  167. package/test/utils/mock/{MockLayer1.ts → MockLayer1Node.ts} +5 -10
  168. package/test/utils/mock/MockNeighborFinder.ts +1 -2
  169. package/test/utils/mock/MockNeighborUpdateManager.ts +1 -2
  170. package/test/utils/mock/Transport.ts +2 -2
  171. package/test/utils/utils.ts +18 -16
  172. package/dist/src/logic/ILayer0.d.ts +0 -13
  173. package/dist/src/logic/ILayer0.js.map +0 -1
  174. package/dist/src/logic/ILayer1.js.map +0 -1
  175. package/dist/src/logic/RemoteRandomGraphNode.js.map +0 -1
  176. package/dist/src/logic/StreamPartEntryPointDiscovery.js.map +0 -1
  177. package/dist/src/logic/neighbor-discovery/HandshakerServer.js.map +0 -1
  178. package/dist/src/logic/neighbor-discovery/NeighborUpdateManagerServer.js.map +0 -1
  179. package/dist/src/logic/neighbor-discovery/RemoteHandshaker.js.map +0 -1
  180. package/dist/src/logic/neighbor-discovery/RemoteNeighborUpdateManager.js.map +0 -1
  181. package/dist/src/logic/proxy/ProxyStreamConnectionClient.js.map +0 -1
  182. package/dist/src/logic/proxy/ProxyStreamConnectionServer.js.map +0 -1
  183. package/dist/src/logic/proxy/RemoteProxyServer.js.map +0 -1
  184. package/dist/src/logic/temporary-connection/RemoteTemporaryConnectionRpcServer.js.map +0 -1
  185. package/dist/src/logic/temporary-connection/TemporaryConnectionRpcServer.js.map +0 -1
  186. package/src/logic/ILayer0.ts +0 -14
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@streamr/trackerless-network",
3
- "version": "0.0.1-tatum.6",
3
+ "version": "0.0.1-tatum.8",
4
4
  "description": "Minimal and extendable implementation of the Streamr Network node.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -30,20 +30,22 @@
30
30
  "dependencies": {
31
31
  "@protobuf-ts/runtime": "^2.8.2",
32
32
  "@protobuf-ts/runtime-rpc": "^2.8.2",
33
- "@streamr/dht": "0.0.1-tatum.6",
34
- "@streamr/proto-rpc": "0.0.1-tatum.6",
35
- "@streamr/protocol": "0.0.1-tatum.6",
36
- "@streamr/test-utils": "0.0.1-tatum.6",
37
- "@streamr/utils": "0.0.1-tatum.6",
33
+ "@streamr/dht": "0.0.1-tatum.8",
34
+ "@streamr/proto-rpc": "0.0.1-tatum.8",
35
+ "@streamr/protocol": "0.0.1-tatum.8",
36
+ "@streamr/test-utils": "0.0.1-tatum.8",
37
+ "@streamr/utils": "0.0.1-tatum.8",
38
38
  "eventemitter3": "^5.0.0",
39
39
  "lodash": "^4.17.21",
40
+ "uuid": "^9.0.1",
40
41
  "yallist": "^4.0.0"
41
42
  },
42
43
  "devDependencies": {
43
44
  "@streamr/browser-test-runner": "^0.0.1",
44
- "@types/lodash": "^4.14.199",
45
+ "@types/lodash": "^4.14.200",
46
+ "@types/uuid": "^9.0.6",
45
47
  "@types/yallist": "^4.0.1",
46
- "commander": "^11.0.0",
48
+ "commander": "^11.1.0",
47
49
  "expect": "^29.6.2",
48
50
  "express": "^4.17.1",
49
51
  "ts-essentials": "^9.4.1",
@@ -71,14 +71,14 @@ class NetworkNode {
71
71
  return this.stack.getStreamrNode().getNeighbors(streamPartId);
72
72
  }
73
73
  hasStreamPart(streamPartId) {
74
- return this.stack.getStreamrNode().hasStream(streamPartId);
74
+ return this.stack.getStreamrNode().hasStreamPart(streamPartId);
75
75
  }
76
76
  async stop() {
77
77
  this.stopped = true;
78
78
  await this.stack.stop();
79
79
  }
80
80
  getPeerDescriptor() {
81
- return this.stack.getLayer0DhtNode().getPeerDescriptor();
81
+ return this.stack.getLayer0Node().getPeerDescriptor();
82
82
  }
83
83
  getMetricsContext() {
84
84
  return this.stack.getMetricsContext();
@@ -1 +1 @@
1
- {"version":3,"file":"NetworkNode.js","sourceRoot":"","sources":["../../src/NetworkNode.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"NetworkNode.js","sourceRoot":"","sources":["../../src/NetworkNode.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,10 @@
1
- import { DhtNode, DhtNodeOptions } from '@streamr/dht';
1
+ import { DhtNodeOptions } from '@streamr/dht';
2
2
  import { StreamrNode, StreamrNodeConfig } from './logic/StreamrNode';
3
3
  import { MetricsContext } from '@streamr/utils';
4
4
  import { EventEmitter } from 'eventemitter3';
5
5
  import { StreamPartID } from '@streamr/protocol';
6
6
  import { StreamMessage } from './proto/packages/trackerless-network/protos/NetworkRpc';
7
+ import { Layer0Node } from './logic/Layer0Node';
7
8
  export interface NetworkOptions {
8
9
  layer0?: DhtNodeOptions;
9
10
  networkNode?: StreamrNodeConfig;
@@ -13,7 +14,7 @@ export interface NetworkStackEvents {
13
14
  stopped: () => void;
14
15
  }
15
16
  export declare class NetworkStack extends EventEmitter<NetworkStackEvents> {
16
- private layer0DhtNode?;
17
+ private layer0Node?;
17
18
  private streamrNode?;
18
19
  private readonly metricsContext;
19
20
  private readonly options;
@@ -24,11 +25,9 @@ export declare class NetworkStack extends EventEmitter<NetworkStackEvents> {
24
25
  }): Promise<void>;
25
26
  broadcast(msg: StreamMessage): Promise<void>;
26
27
  start(doJoin?: boolean): Promise<void>;
27
- private joinDht;
28
- private waitForFirstConnection;
29
- private joinLayer0IfRequired;
28
+ private ensureConnectedToControlLayer;
30
29
  getStreamrNode(): StreamrNode;
31
- getLayer0DhtNode(): DhtNode;
30
+ getLayer0Node(): Layer0Node;
32
31
  getMetricsContext(): MetricsContext;
33
32
  stop(): Promise<void>;
34
33
  }
@@ -7,38 +7,17 @@ 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
- class ReadinessListener {
11
- constructor(networkStack, dhtNode) {
12
- this.emitter = new eventemitter3_1.EventEmitter();
13
- this.onDone = () => {
14
- this.networkStack.off('stopped', this.onDone);
15
- this.dhtNode.off('connected', this.onDone);
16
- this.emitter.emit('done');
17
- };
18
- this.networkStack = networkStack;
19
- this.dhtNode = dhtNode;
20
- this.networkStack.on('stopped', this.onDone);
21
- this.dhtNode.on('connected', this.onDone);
22
- }
23
- async waitUntilReady(timeout) {
24
- if (this.dhtNode.getNumberOfConnections() === 0) {
25
- await (0, utils_1.waitForEvent3)(this.emitter, 'done', timeout);
26
- }
27
- }
28
- }
29
- const DEFAULT_FIRST_CONNECTION_TIMEOUT = 5000;
30
10
  class NetworkStack extends eventemitter3_1.EventEmitter {
31
11
  constructor(options) {
32
12
  super();
33
13
  this.options = options;
34
14
  this.metricsContext = options.metricsContext ?? new utils_1.MetricsContext();
35
- this.layer0DhtNode = new dht_1.DhtNode({
15
+ this.layer0Node = new dht_1.DhtNode({
36
16
  ...options.layer0,
37
17
  metricsContext: this.metricsContext
38
18
  });
39
19
  this.streamrNode = new StreamrNode_1.StreamrNode({
40
20
  ...options.networkNode,
41
- nodeName: options.networkNode?.nodeName ?? options.layer0?.nodeName,
42
21
  metricsContext: this.metricsContext
43
22
  });
44
23
  }
@@ -46,7 +25,7 @@ class NetworkStack extends eventemitter3_1.EventEmitter {
46
25
  if (this.getStreamrNode().isProxiedStreamPart(streamPartId)) {
47
26
  throw new Error(`Cannot join to ${streamPartId} as proxy connections have been set`);
48
27
  }
49
- await this.joinLayer0IfRequired(streamPartId);
28
+ await this.ensureConnectedToControlLayer();
50
29
  this.getStreamrNode().joinStreamPart(streamPartId);
51
30
  if (neighborRequirement !== undefined) {
52
31
  await (0, utils_1.waitForCondition)(() => {
@@ -59,53 +38,45 @@ class NetworkStack extends eventemitter3_1.EventEmitter {
59
38
  if (this.getStreamrNode().isProxiedStreamPart(streamPartId, NetworkRpc_1.ProxyDirection.SUBSCRIBE) && (msg.messageType === NetworkRpc_1.StreamMessageType.MESSAGE)) {
60
39
  throw new Error(`Cannot broadcast to ${streamPartId} as proxy subscribe connections have been set`);
61
40
  }
62
- await this.joinLayer0IfRequired(streamPartId);
41
+ // TODO could combine these two calls to isProxiedStreamPart?
42
+ if (!this.streamrNode.isProxiedStreamPart(streamPartId)) {
43
+ await this.ensureConnectedToControlLayer();
44
+ }
63
45
  this.getStreamrNode().broadcast(msg);
64
46
  }
65
47
  async start(doJoin = true) {
66
- await this.layer0DhtNode.start();
67
- const connectionManager = this.layer0DhtNode.getTransport();
68
- if ((this.options.layer0?.entryPoints !== undefined) && (this.options.layer0.entryPoints.some((entryPoint) => (0, dht_1.isSamePeerDescriptor)(entryPoint, this.layer0DhtNode.getPeerDescriptor())))) {
69
- await this.layer0DhtNode?.joinDht(this.options.layer0.entryPoints);
48
+ await this.layer0Node.start();
49
+ const connectionManager = this.layer0Node.getTransport();
50
+ if ((this.options.layer0?.entryPoints !== undefined) && (this.options.layer0.entryPoints.some((entryPoint) => (0, dht_1.areEqualPeerDescriptors)(entryPoint, this.layer0Node.getPeerDescriptor())))) {
51
+ await this.layer0Node?.joinDht(this.options.layer0.entryPoints);
70
52
  }
71
53
  else {
72
54
  if (doJoin) {
73
- await this.joinDht();
55
+ // in practice there aren't be existing connections and therefore this always connects
56
+ await this.ensureConnectedToControlLayer();
74
57
  }
75
58
  }
76
- await this.streamrNode?.start(this.layer0DhtNode, connectionManager, connectionManager);
59
+ await this.streamrNode?.start(this.layer0Node, connectionManager, connectionManager);
77
60
  }
78
- async joinDht() {
79
- setImmediate(async () => {
80
- if (this.options.layer0?.entryPoints !== undefined) {
81
- // TODO should catch possible rejection?
82
- await this.layer0DhtNode?.joinDht(this.options.layer0.entryPoints);
83
- }
84
- });
85
- await this.waitForFirstConnection();
86
- }
87
- async waitForFirstConnection() {
88
- const readinessListener = new ReadinessListener(this, this.layer0DhtNode);
89
- const timeout = this.options.networkNode?.firstConnectionTimeout ?? DEFAULT_FIRST_CONNECTION_TIMEOUT;
90
- await readinessListener.waitUntilReady(timeout);
91
- }
92
- async joinLayer0IfRequired(streamPartId) {
93
- if (this.streamrNode.isProxiedStreamPart(streamPartId)) {
94
- return;
95
- }
61
+ async ensureConnectedToControlLayer() {
96
62
  // TODO we could wrap joinDht with pOnce and call it here (no else-if needed in that case)
97
- if (!this.layer0DhtNode.hasJoined()) {
98
- await this.joinDht();
99
- }
100
- else if (this.layer0DhtNode.getNumberOfConnections() < 1) {
101
- await this.waitForFirstConnection();
63
+ if (!this.layer0Node.hasJoined()) {
64
+ setImmediate(async () => {
65
+ if (this.options.layer0?.entryPoints !== undefined) {
66
+ // TODO should catch possible rejection?
67
+ // the question mark is there to avoid problems when stop() is called before start()
68
+ // -> TODO change to exlamation mark if we don't support that (and remove NetworkStackStoppedDuringStart.test)
69
+ await this.layer0Node?.joinDht(this.options.layer0.entryPoints);
70
+ }
71
+ });
102
72
  }
73
+ await this.layer0Node.waitForNetworkConnectivity();
103
74
  }
104
75
  getStreamrNode() {
105
76
  return this.streamrNode;
106
77
  }
107
- getLayer0DhtNode() {
108
- return this.layer0DhtNode;
78
+ getLayer0Node() {
79
+ return this.layer0Node;
109
80
  }
110
81
  getMetricsContext() {
111
82
  return this.metricsContext;
@@ -113,7 +84,7 @@ class NetworkStack extends eventemitter3_1.EventEmitter {
113
84
  async stop() {
114
85
  await this.streamrNode.destroy();
115
86
  this.streamrNode = undefined;
116
- this.layer0DhtNode = undefined;
87
+ this.layer0Node = undefined;
117
88
  this.emit('stopped');
118
89
  }
119
90
  }
@@ -1 +1 @@
1
- {"version":3,"file":"NetworkStack.js","sourceRoot":"","sources":["../../src/NetworkStack.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"NetworkStack.js","sourceRoot":"","sources":["../../src/NetworkStack.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getNodeIdFromPeerDescriptor = void 0;
4
- const dht_1 = require("@streamr/dht");
4
+ const utils_1 = require("@streamr/utils");
5
5
  const getNodeIdFromPeerDescriptor = (peerDescriptor) => {
6
- return (0, dht_1.keyFromPeerDescriptor)(peerDescriptor);
6
+ return (0, utils_1.binaryToHex)(peerDescriptor.kademliaId);
7
7
  };
8
8
  exports.getNodeIdFromPeerDescriptor = getNodeIdFromPeerDescriptor;
9
9
  //# sourceMappingURL=identifiers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"identifiers.js","sourceRoot":"","sources":["../../src/identifiers.ts"],"names":[],"mappings":";;;AAAA,sCAAoE;AAK7D,MAAM,2BAA2B,GAAG,CAAC,cAA8B,EAAU,EAAE;IAClF,OAAO,IAAA,2BAAqB,EAAC,cAAc,CAAsB,CAAA;AACrE,CAAC,CAAA;AAFY,QAAA,2BAA2B,+BAEvC"}
1
+ {"version":3,"file":"identifiers.js","sourceRoot":"","sources":["../../src/identifiers.ts"],"names":[],"mappings":";;;AACA,0CAA2D;AAIpD,MAAM,2BAA2B,GAAG,CAAC,cAA8B,EAAU,EAAE;IAClF,OAAO,IAAA,mBAAW,EAAC,cAAc,CAAC,UAAU,CAAsB,CAAA;AACtE,CAAC,CAAA;AAFY,QAAA,2BAA2B,+BAEvC"}
@@ -1,21 +1,22 @@
1
1
  import { ListeningRpcCommunicator, PeerDescriptor } from '@streamr/dht';
2
2
  import { Empty } from '../proto/google/protobuf/empty';
3
3
  import { LeaveStreamPartNotice, MessageID, MessageRef, StreamMessage } from '../proto/packages/trackerless-network/protos/NetworkRpc';
4
- import { INetworkRpc } from '../proto/packages/trackerless-network/protos/NetworkRpc.server';
4
+ import { IDeliveryRpc } from '../proto/packages/trackerless-network/protos/NetworkRpc.server';
5
5
  import { ServerCallContext } from '@protobuf-ts/runtime-rpc';
6
6
  import { NodeID } from '../identifiers';
7
- export interface StreamNodeServerConfig {
7
+ import { StreamPartID } from '@streamr/protocol';
8
+ export interface DeliveryRpcLocalConfig {
8
9
  ownPeerDescriptor: PeerDescriptor;
9
- randomGraphId: string;
10
+ streamPartId: StreamPartID;
10
11
  markAndCheckDuplicate: (messageId: MessageID, previousMessageRef?: MessageRef) => boolean;
11
12
  broadcast: (message: StreamMessage, previousNode?: NodeID) => void;
12
13
  onLeaveNotice(senderId: NodeID): void;
13
14
  markForInspection(senderId: NodeID, messageId: MessageID): void;
14
15
  rpcCommunicator: ListeningRpcCommunicator;
15
16
  }
16
- export declare class StreamNodeServer implements INetworkRpc {
17
+ export declare class DeliveryRpcLocal implements IDeliveryRpc {
17
18
  private readonly config;
18
- constructor(config: StreamNodeServerConfig);
19
+ constructor(config: DeliveryRpcLocalConfig);
19
20
  sendStreamMessage(message: StreamMessage, context: ServerCallContext): Promise<Empty>;
20
21
  leaveStreamPartNotice(message: LeaveStreamPartNotice, context: ServerCallContext): Promise<Empty>;
21
22
  }
@@ -1,9 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.StreamNodeServer = void 0;
3
+ exports.DeliveryRpcLocal = void 0;
4
4
  const empty_1 = require("../proto/google/protobuf/empty");
5
5
  const identifiers_1 = require("../identifiers");
6
- class StreamNodeServer {
6
+ class DeliveryRpcLocal {
7
7
  constructor(config) {
8
8
  this.config = config;
9
9
  }
@@ -16,7 +16,7 @@ class StreamNodeServer {
16
16
  return empty_1.Empty;
17
17
  }
18
18
  async leaveStreamPartNotice(message, context) {
19
- if (message.randomGraphId === this.config.randomGraphId) {
19
+ if (message.streamPartId === this.config.streamPartId) {
20
20
  const senderPeerDescriptor = context.incomingSourceDescriptor;
21
21
  const senderId = (0, identifiers_1.getNodeIdFromPeerDescriptor)(senderPeerDescriptor);
22
22
  this.config.onLeaveNotice(senderId);
@@ -24,5 +24,5 @@ class StreamNodeServer {
24
24
  return empty_1.Empty;
25
25
  }
26
26
  }
27
- exports.StreamNodeServer = StreamNodeServer;
28
- //# sourceMappingURL=StreamNodeServer.js.map
27
+ exports.DeliveryRpcLocal = DeliveryRpcLocal;
28
+ //# sourceMappingURL=DeliveryRpcLocal.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"StreamNodeServer.js","sourceRoot":"","sources":["../../../src/logic/StreamNodeServer.ts"],"names":[],"mappings":";;;AACA,0DAAsD;AAStD,gDAAoE;AAYpE,MAAa,gBAAgB;IAIzB,YAAY,MAA8B;QACtC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACxB,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,OAAsB,EAAE,OAA0B;QACtE,MAAM,YAAY,GAAG,IAAA,yCAA2B,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;YACnF,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,YAAY,CAAC,CAAA;SAC/C;QACD,OAAO,aAAK,CAAA;IAChB,CAAC;IAED,KAAK,CAAC,qBAAqB,CAAC,OAA8B,EAAE,OAA0B;QAClF,IAAI,OAAO,CAAC,aAAa,KAAK,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE;YACrD,MAAM,oBAAoB,GAAI,OAA0B,CAAC,wBAAyB,CAAA;YAClF,MAAM,QAAQ,GAAG,IAAA,yCAA2B,EAAC,oBAAoB,CAAC,CAAA;YAClE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAA;SACtC;QACD,OAAO,aAAK,CAAA;IAChB,CAAC;CACJ;AAzBD,4CAyBC"}
1
+ {"version":3,"file":"DeliveryRpcLocal.js","sourceRoot":"","sources":["../../../src/logic/DeliveryRpcLocal.ts"],"names":[],"mappings":";;;AACA,0DAAsD;AAStD,gDAAoE;AAapE,MAAa,gBAAgB;IAIzB,YAAY,MAA8B;QACtC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACxB,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,OAAsB,EAAE,OAA0B;QACtE,MAAM,YAAY,GAAG,IAAA,yCAA2B,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;YACnF,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,YAAY,CAAC,CAAA;SAC/C;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;YACnD,MAAM,oBAAoB,GAAI,OAA0B,CAAC,wBAAyB,CAAA;YAClF,MAAM,QAAQ,GAAG,IAAA,yCAA2B,EAAC,oBAAoB,CAAC,CAAA;YAClE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAA;SACtC;QACD,OAAO,aAAK,CAAA;IAChB,CAAC;CACJ;AAzBD,4CAyBC"}
@@ -1,7 +1,7 @@
1
1
  import { Remote } from '@streamr/dht';
2
2
  import { StreamMessage } from '../proto/packages/trackerless-network/protos/NetworkRpc';
3
- import { INetworkRpcClient } from '../proto/packages/trackerless-network/protos/NetworkRpc.client';
4
- export declare class RemoteRandomGraphNode extends Remote<INetworkRpcClient> {
3
+ import { IDeliveryRpcClient } from '../proto/packages/trackerless-network/protos/NetworkRpc.client';
4
+ export declare class DeliveryRpcRemote extends Remote<IDeliveryRpcClient> {
5
5
  sendStreamMessage(msg: StreamMessage): Promise<void>;
6
6
  leaveStreamPartNotice(): void;
7
7
  }
@@ -1,10 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RemoteRandomGraphNode = void 0;
3
+ exports.DeliveryRpcRemote = void 0;
4
4
  const dht_1 = require("@streamr/dht");
5
5
  const utils_1 = require("@streamr/utils");
6
6
  const logger = new utils_1.Logger(module);
7
- class RemoteRandomGraphNode extends dht_1.Remote {
7
+ class DeliveryRpcRemote extends dht_1.Remote {
8
8
  async sendStreamMessage(msg) {
9
9
  const options = this.formDhtRpcOptions({
10
10
  notification: true
@@ -15,7 +15,7 @@ class RemoteRandomGraphNode extends dht_1.Remote {
15
15
  }
16
16
  leaveStreamPartNotice() {
17
17
  const notification = {
18
- randomGraphId: this.getServiceId()
18
+ streamPartId: this.getServiceId()
19
19
  };
20
20
  const options = this.formDhtRpcOptions({
21
21
  notification: true
@@ -25,5 +25,5 @@ class RemoteRandomGraphNode extends dht_1.Remote {
25
25
  });
26
26
  }
27
27
  }
28
- exports.RemoteRandomGraphNode = RemoteRandomGraphNode;
29
- //# sourceMappingURL=RemoteRandomGraphNode.js.map
28
+ exports.DeliveryRpcRemote = DeliveryRpcRemote;
29
+ //# sourceMappingURL=DeliveryRpcRemote.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DeliveryRpcRemote.js","sourceRoot":"","sources":["../../../src/logic/DeliveryRpcRemote.ts"],"names":[],"mappings":";;;AAAA,sCAAqC;AACrC,0CAAuC;AAOvC,MAAM,MAAM,GAAG,IAAI,cAAM,CAAC,MAAM,CAAC,CAAA;AAEjC,MAAa,iBAAkB,SAAQ,YAA0B;IAE7D,KAAK,CAAC,iBAAiB,CAAC,GAAkB;QACtC,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC;YACnC,YAAY,EAAE,IAAI;SACrB,CAAC,CAAA;QACF,IAAI,CAAC,SAAS,EAAE,CAAC,iBAAiB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;YACxD,MAAM,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAA;QAC/C,CAAC,CAAC,CAAA;IACN,CAAC;IAED,qBAAqB;QACjB,MAAM,YAAY,GAA0B;YACxC,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE;SACpC,CAAA;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC;YACnC,YAAY,EAAE,IAAI;SACrB,CAAC,CAAA;QACF,IAAI,CAAC,SAAS,EAAE,CAAC,qBAAqB,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;YACrE,MAAM,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAA;QACxD,CAAC,CAAC,CAAA;IACN,CAAC;CACJ;AAtBD,8CAsBC"}
@@ -1,33 +1,31 @@
1
- import { DataEntry, PeerDescriptor, RecursiveFindResult } from '@streamr/dht';
1
+ import { DataEntry, PeerDescriptor } from '@streamr/dht';
2
2
  import { StreamPartID } from '@streamr/protocol';
3
3
  import { Any } from '../proto/google/protobuf/any';
4
- import { ILayer1 } from './ILayer1';
4
+ import { Layer1Node } from './Layer1Node';
5
5
  export declare const streamPartIdToDataKey: (streamPartId: StreamPartID) => Uint8Array;
6
6
  interface FindEntryPointsResult {
7
7
  entryPointsFromDht: boolean;
8
8
  discoveredEntryPoints: PeerDescriptor[];
9
9
  }
10
10
  export declare const NETWORK_SPLIT_AVOIDANCE_LIMIT = 4;
11
- interface StreamPartEntryPointDiscoveryConfig {
11
+ interface EntryPointDiscoveryConfig {
12
12
  streamPartId: StreamPartID;
13
13
  ownPeerDescriptor: PeerDescriptor;
14
- layer1: ILayer1;
15
- getEntryPointData: (key: Uint8Array) => Promise<RecursiveFindResult>;
16
- getEntryPointDataViaNode: (key: Uint8Array, node: PeerDescriptor) => Promise<DataEntry[]>;
14
+ layer1Node: Layer1Node;
15
+ getEntryPointData: (key: Uint8Array) => Promise<DataEntry[]>;
17
16
  storeEntryPointData: (key: Uint8Array, data: Any) => Promise<PeerDescriptor[]>;
18
17
  deleteEntryPointData: (key: Uint8Array) => Promise<void>;
19
- cacheInterval?: number;
18
+ storeInterval?: number;
20
19
  }
21
- export declare class StreamPartEntryPointDiscovery {
20
+ export declare class EntryPointDiscovery {
22
21
  private readonly abortController;
23
22
  private readonly config;
24
- private readonly cacheInterval;
23
+ private readonly storeInterval;
25
24
  private readonly networkSplitAvoidedNodes;
26
- constructor(config: StreamPartEntryPointDiscoveryConfig);
27
- discoverEntryPointsFromDht(knownEntryPointCount: number, forwardingNode?: PeerDescriptor): Promise<FindEntryPointsResult>;
25
+ constructor(config: EntryPointDiscoveryConfig);
26
+ discoverEntryPointsFromDht(knownEntryPointCount: number): Promise<FindEntryPointsResult>;
28
27
  private discoverEntryPoints;
29
28
  private queryEntrypoints;
30
- private queryEntryPointsViaNode;
31
29
  storeSelfAsEntryPointIfNecessary(currentEntrypointCount: number): Promise<void>;
32
30
  private storeSelfAsEntryPoint;
33
31
  private keepSelfAsEntryPoint;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.StreamPartEntryPointDiscovery = exports.NETWORK_SPLIT_AVOIDANCE_LIMIT = exports.streamPartIdToDataKey = void 0;
3
+ exports.EntryPointDiscovery = exports.NETWORK_SPLIT_AVOIDANCE_LIMIT = exports.streamPartIdToDataKey = void 0;
4
4
  const dht_1 = require("@streamr/dht");
5
5
  const utils_1 = require("@streamr/utils");
6
6
  const crypto_1 = require("crypto");
@@ -37,21 +37,21 @@ const exponentialRunOff = async (task, description, abortSignal, baseDelay = 500
37
37
  const logger = new utils_1.Logger(module);
38
38
  const ENTRYPOINT_STORE_LIMIT = 8;
39
39
  exports.NETWORK_SPLIT_AVOIDANCE_LIMIT = 4;
40
- class StreamPartEntryPointDiscovery {
40
+ class EntryPointDiscovery {
41
41
  constructor(config) {
42
42
  this.networkSplitAvoidedNodes = new Set();
43
43
  this.config = config;
44
44
  this.abortController = new AbortController();
45
- this.cacheInterval = this.config.cacheInterval ?? 60000;
45
+ this.storeInterval = this.config.storeInterval ?? 60000;
46
46
  }
47
- async discoverEntryPointsFromDht(knownEntryPointCount, forwardingNode) {
47
+ async discoverEntryPointsFromDht(knownEntryPointCount) {
48
48
  if (knownEntryPointCount > 0) {
49
49
  return {
50
50
  entryPointsFromDht: false,
51
51
  discoveredEntryPoints: []
52
52
  };
53
53
  }
54
- const discoveredEntryPoints = await this.discoverEntryPoints(forwardingNode);
54
+ const discoveredEntryPoints = await this.discoverEntryPoints();
55
55
  if (discoveredEntryPoints.length === 0) {
56
56
  discoveredEntryPoints.push(this.config.ownPeerDescriptor);
57
57
  }
@@ -60,10 +60,9 @@ class StreamPartEntryPointDiscovery {
60
60
  entryPointsFromDht: true
61
61
  };
62
62
  }
63
- async discoverEntryPoints(forwardingNode) {
63
+ async discoverEntryPoints() {
64
64
  const dataKey = (0, exports.streamPartIdToDataKey)(this.config.streamPartId);
65
- const discoveredEntryPoints = forwardingNode ?
66
- await this.queryEntryPointsViaNode(dataKey, forwardingNode) : await this.queryEntrypoints(dataKey);
65
+ const discoveredEntryPoints = await this.queryEntrypoints(dataKey);
67
66
  const filtered = discoveredEntryPoints.filter((node) => !this.networkSplitAvoidedNodes.has((0, identifiers_1.getNodeIdFromPeerDescriptor)(node)));
68
67
  // If all discovered entry points have previously been detected as offline, try again
69
68
  if (filtered.length > 0) {
@@ -74,31 +73,10 @@ class StreamPartEntryPointDiscovery {
74
73
  }
75
74
  }
76
75
  async queryEntrypoints(key) {
77
- logger.trace(`Finding data from dht node ${this.config.ownPeerDescriptor.nodeName}`);
76
+ logger.trace(`Finding data from dht node ${(0, identifiers_1.getNodeIdFromPeerDescriptor)(this.config.ownPeerDescriptor)}`);
78
77
  try {
79
- const results = await this.config.getEntryPointData(key);
80
- if (results.dataEntries) {
81
- return parseEntryPointData(results.dataEntries);
82
- }
83
- else {
84
- return [];
85
- }
86
- }
87
- catch (err) {
88
- return [];
89
- }
90
- }
91
- // TODO remove this method in NET-1122
92
- async queryEntryPointsViaNode(key, node) {
93
- logger.trace(`Finding data via node ${this.config.ownPeerDescriptor.nodeName}`);
94
- try {
95
- const results = await this.config.getEntryPointDataViaNode(key, node);
96
- if (results) {
97
- return parseEntryPointData(results);
98
- }
99
- else {
100
- return [];
101
- }
78
+ const result = await this.config.getEntryPointData(key);
79
+ return parseEntryPointData(result);
102
80
  }
103
81
  catch (err) {
104
82
  return [];
@@ -108,7 +86,7 @@ class StreamPartEntryPointDiscovery {
108
86
  if (this.abortController.signal.aborted) {
109
87
  return;
110
88
  }
111
- const possibleNetworkSplitDetected = this.config.layer1.getBucketSize() < exports.NETWORK_SPLIT_AVOIDANCE_LIMIT;
89
+ const possibleNetworkSplitDetected = this.config.layer1Node.getBucketSize() < exports.NETWORK_SPLIT_AVOIDANCE_LIMIT;
112
90
  if ((currentEntrypointCount < ENTRYPOINT_STORE_LIMIT) || possibleNetworkSplitDetected) {
113
91
  await this.storeSelfAsEntryPoint();
114
92
  await this.keepSelfAsEntryPoint();
@@ -133,23 +111,23 @@ class StreamPartEntryPointDiscovery {
133
111
  try {
134
112
  const discovered = await this.discoverEntryPoints();
135
113
  if (discovered.length < ENTRYPOINT_STORE_LIMIT
136
- || discovered.some((peerDescriptor) => (0, dht_1.isSamePeerDescriptor)(peerDescriptor, this.config.ownPeerDescriptor))) {
114
+ || discovered.some((peerDescriptor) => (0, dht_1.areEqualPeerDescriptors)(peerDescriptor, this.config.ownPeerDescriptor))) {
137
115
  await this.storeSelfAsEntryPoint();
138
116
  }
139
117
  }
140
118
  catch (err) {
141
119
  logger.debug(`Failed to keep self as entrypoint for ${this.config.streamPartId}`);
142
120
  }
143
- }, this.cacheInterval, false, this.abortController.signal);
121
+ }, this.storeInterval, false, this.abortController.signal);
144
122
  }
145
123
  async avoidNetworkSplit() {
146
124
  await exponentialRunOff(async () => {
147
125
  const rediscoveredEntrypoints = await this.discoverEntryPoints();
148
- await this.config.layer1.joinDht(rediscoveredEntrypoints, false, false);
149
- if (this.config.layer1.getBucketSize() < exports.NETWORK_SPLIT_AVOIDANCE_LIMIT) {
126
+ await this.config.layer1Node.joinDht(rediscoveredEntrypoints, false, false);
127
+ if (this.config.layer1Node.getBucketSize() < exports.NETWORK_SPLIT_AVOIDANCE_LIMIT) {
150
128
  // Filter out nodes that are not in the k-bucket, assumed to be offline
151
129
  const nodesToAvoid = rediscoveredEntrypoints
152
- .filter((peer) => !this.config.layer1.getKBucketPeers().includes(peer))
130
+ .filter((peer) => !this.config.layer1Node.getKBucketPeers().includes(peer))
153
131
  .map((peer) => (0, identifiers_1.getNodeIdFromPeerDescriptor)(peer));
154
132
  nodesToAvoid.forEach((node) => this.networkSplitAvoidedNodes.add(node));
155
133
  throw new Error(`Network split is still possible`);
@@ -163,5 +141,5 @@ class StreamPartEntryPointDiscovery {
163
141
  await this.config.deleteEntryPointData((0, exports.streamPartIdToDataKey)(this.config.streamPartId));
164
142
  }
165
143
  }
166
- exports.StreamPartEntryPointDiscovery = StreamPartEntryPointDiscovery;
167
- //# sourceMappingURL=StreamPartEntryPointDiscovery.js.map
144
+ exports.EntryPointDiscovery = EntryPointDiscovery;
145
+ //# sourceMappingURL=EntryPointDiscovery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EntryPointDiscovery.js","sourceRoot":"","sources":["../../../src/logic/EntryPointDiscovery.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { DataEntry, ITransport, PeerDescriptor } from '@streamr/dht';
2
+ import { Any } from '../proto/google/protobuf/any';
3
+ export interface Layer0Node extends ITransport {
4
+ joinDht(entryPointDescriptors: PeerDescriptor[]): Promise<void>;
5
+ hasJoined(): boolean;
6
+ getPeerDescriptor(): PeerDescriptor;
7
+ getDataFromDht(key: Uint8Array): Promise<DataEntry[]>;
8
+ storeDataToDht(key: Uint8Array, data: Any): Promise<PeerDescriptor[]>;
9
+ deleteDataFromDht(key: Uint8Array): Promise<void>;
10
+ waitForNetworkConnectivity(): Promise<void>;
11
+ getTransport(): ITransport;
12
+ start(): Promise<void>;
13
+ stop(): Promise<void>;
14
+ }
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=ILayer1.js.map
3
+ //# sourceMappingURL=Layer0Node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Layer0Node.js","sourceRoot":"","sources":["../../../src/logic/Layer0Node.ts"],"names":[],"mappings":""}
@@ -1,14 +1,14 @@
1
1
  import { PeerDescriptor } from '@streamr/dht';
2
- export interface ILayer1Events {
2
+ export interface Layer1NodeEvents {
3
3
  newContact: (peerDescriptor: PeerDescriptor, closestPeers: PeerDescriptor[]) => void;
4
4
  contactRemoved: (peerDescriptor: PeerDescriptor, closestPeers: PeerDescriptor[]) => void;
5
5
  newRandomContact: (peerDescriptor: PeerDescriptor, randomPeers: PeerDescriptor[]) => void;
6
6
  randomContactRemoved: (peerDescriptor: PeerDescriptor, randomPeers: PeerDescriptor[]) => void;
7
7
  }
8
- export interface ILayer1 {
9
- on<T extends keyof ILayer1Events>(eventName: T, listener: (peerDescriptor: PeerDescriptor, peers: PeerDescriptor[]) => void): void;
10
- once<T extends keyof ILayer1Events>(eventName: T, listener: (peerDescriptor: PeerDescriptor, peers: PeerDescriptor[]) => void): void;
11
- off<T extends keyof ILayer1Events>(eventName: T, listener: (peerDescriptor: PeerDescriptor, peers: PeerDescriptor[]) => void): void;
8
+ export interface Layer1Node {
9
+ on<T extends keyof Layer1NodeEvents>(eventName: T, listener: (peerDescriptor: PeerDescriptor, peers: PeerDescriptor[]) => void): void;
10
+ once<T extends keyof Layer1NodeEvents>(eventName: T, listener: (peerDescriptor: PeerDescriptor, peers: PeerDescriptor[]) => void): void;
11
+ off<T extends keyof Layer1NodeEvents>(eventName: T, listener: (peerDescriptor: PeerDescriptor, peers: PeerDescriptor[]) => void): void;
12
12
  removeContact: (peerDescriptor: PeerDescriptor, removeFromOpenInternetPeers?: boolean) => void;
13
13
  getClosestContacts: (maxCount?: number) => PeerDescriptor[];
14
14
  getKBucketPeers: () => PeerDescriptor[];