@streamr/trackerless-network 100.0.0-pretestnet.4 → 100.0.0-rc.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.
Files changed (241) hide show
  1. package/README.md +57 -0
  2. package/dist/package.json +11 -11
  3. package/dist/src/NetworkNode.d.ts +6 -5
  4. package/dist/src/NetworkNode.js +9 -2
  5. package/dist/src/NetworkNode.js.map +1 -1
  6. package/dist/src/NetworkStack.d.ts +13 -9
  7. package/dist/src/NetworkStack.js +80 -12
  8. package/dist/src/NetworkStack.js.map +1 -1
  9. package/dist/src/exports.d.ts +4 -3
  10. package/dist/src/exports.js +12 -1
  11. package/dist/src/exports.js.map +1 -1
  12. package/dist/src/logic/DeliveryRpcLocal.d.ts +4 -5
  13. package/dist/src/logic/DeliveryRpcLocal.js +6 -5
  14. package/dist/src/logic/DeliveryRpcLocal.js.map +1 -1
  15. package/dist/src/logic/DeliveryRpcRemote.d.ts +5 -4
  16. package/dist/src/logic/DeliveryRpcRemote.js +4 -3
  17. package/dist/src/logic/DeliveryRpcRemote.js.map +1 -1
  18. package/dist/src/logic/DuplicateMessageDetector.d.ts +3 -3
  19. package/dist/src/logic/DuplicateMessageDetector.js +10 -6
  20. package/dist/src/logic/DuplicateMessageDetector.js.map +1 -1
  21. package/dist/src/logic/EntryPointDiscovery.d.ts +8 -5
  22. package/dist/src/logic/EntryPointDiscovery.js +24 -15
  23. package/dist/src/logic/EntryPointDiscovery.js.map +1 -1
  24. package/dist/src/logic/Layer0Node.d.ts +6 -4
  25. package/dist/src/logic/Layer1Node.d.ts +12 -6
  26. package/dist/src/logic/NodeList.d.ts +13 -15
  27. package/dist/src/logic/NodeList.js +18 -15
  28. package/dist/src/logic/NodeList.js.map +1 -1
  29. package/dist/src/logic/RandomGraphNode.d.ts +26 -22
  30. package/dist/src/logic/RandomGraphNode.js +82 -52
  31. package/dist/src/logic/RandomGraphNode.js.map +1 -1
  32. package/dist/src/logic/StreamrNode.d.ts +6 -6
  33. package/dist/src/logic/StreamrNode.js +53 -37
  34. package/dist/src/logic/StreamrNode.js.map +1 -1
  35. package/dist/src/logic/createRandomGraphNode.d.ts +2 -2
  36. package/dist/src/logic/createRandomGraphNode.js +33 -21
  37. package/dist/src/logic/createRandomGraphNode.js.map +1 -1
  38. package/dist/src/logic/formStreamPartDeliveryServiceId.d.ts +2 -1
  39. package/dist/src/logic/formStreamPartDeliveryServiceId.js.map +1 -1
  40. package/dist/src/logic/inspect/InspectSession.d.ts +4 -3
  41. package/dist/src/logic/inspect/InspectSession.js +6 -2
  42. package/dist/src/logic/inspect/InspectSession.js.map +1 -1
  43. package/dist/src/logic/inspect/Inspector.d.ts +11 -16
  44. package/dist/src/logic/inspect/Inspector.js +21 -9
  45. package/dist/src/logic/inspect/Inspector.js.map +1 -1
  46. package/dist/src/logic/neighbor-discovery/HandshakeRpcLocal.d.ts +7 -9
  47. package/dist/src/logic/neighbor-discovery/HandshakeRpcLocal.js +55 -32
  48. package/dist/src/logic/neighbor-discovery/HandshakeRpcLocal.js.map +1 -1
  49. package/dist/src/logic/neighbor-discovery/HandshakeRpcRemote.d.ts +8 -6
  50. package/dist/src/logic/neighbor-discovery/HandshakeRpcRemote.js +25 -16
  51. package/dist/src/logic/neighbor-discovery/HandshakeRpcRemote.js.map +1 -1
  52. package/dist/src/logic/neighbor-discovery/Handshaker.d.ts +9 -15
  53. package/dist/src/logic/neighbor-discovery/Handshaker.js +68 -44
  54. package/dist/src/logic/neighbor-discovery/Handshaker.js.map +1 -1
  55. package/dist/src/logic/neighbor-discovery/NeighborFinder.d.ts +8 -10
  56. package/dist/src/logic/neighbor-discovery/NeighborFinder.js +12 -2
  57. package/dist/src/logic/neighbor-discovery/NeighborFinder.js.map +1 -1
  58. package/dist/src/logic/neighbor-discovery/NeighborUpdateManager.d.ts +7 -10
  59. package/dist/src/logic/neighbor-discovery/NeighborUpdateManager.js +11 -9
  60. package/dist/src/logic/neighbor-discovery/NeighborUpdateManager.js.map +1 -1
  61. package/dist/src/logic/neighbor-discovery/NeighborUpdateRpcLocal.d.ts +8 -4
  62. package/dist/src/logic/neighbor-discovery/NeighborUpdateRpcLocal.js +33 -24
  63. package/dist/src/logic/neighbor-discovery/NeighborUpdateRpcLocal.js.map +1 -1
  64. package/dist/src/logic/neighbor-discovery/NeighborUpdateRpcRemote.d.ts +5 -4
  65. package/dist/src/logic/neighbor-discovery/NeighborUpdateRpcRemote.js +4 -5
  66. package/dist/src/logic/neighbor-discovery/NeighborUpdateRpcRemote.js.map +1 -1
  67. package/dist/src/logic/node-info/NodeInfoClient.d.ts +9 -0
  68. package/dist/src/logic/node-info/NodeInfoClient.js +21 -0
  69. package/dist/src/logic/node-info/NodeInfoClient.js.map +1 -0
  70. package/dist/src/logic/node-info/NodeInfoRpcLocal.d.ts +12 -0
  71. package/dist/src/logic/node-info/NodeInfoRpcLocal.js +22 -0
  72. package/dist/src/logic/node-info/NodeInfoRpcLocal.js.map +1 -0
  73. package/dist/src/logic/node-info/NodeInfoRpcRemote.d.ts +6 -0
  74. package/dist/src/logic/node-info/NodeInfoRpcRemote.js +11 -0
  75. package/dist/src/logic/node-info/NodeInfoRpcRemote.js.map +1 -0
  76. package/dist/src/logic/propagation/FifoMapWithTTL.js +7 -3
  77. package/dist/src/logic/propagation/FifoMapWithTTL.js.map +1 -1
  78. package/dist/src/logic/propagation/Propagation.d.ts +4 -4
  79. package/dist/src/logic/propagation/Propagation.js +4 -0
  80. package/dist/src/logic/propagation/Propagation.js.map +1 -1
  81. package/dist/src/logic/propagation/PropagationTaskStore.d.ts +2 -2
  82. package/dist/src/logic/propagation/PropagationTaskStore.js +1 -0
  83. package/dist/src/logic/propagation/PropagationTaskStore.js.map +1 -1
  84. package/dist/src/logic/protocol-integration/stream-message/GroupKeyRequestTranslator.js +1 -1
  85. package/dist/src/logic/protocol-integration/stream-message/GroupKeyRequestTranslator.js.map +1 -1
  86. package/dist/src/logic/protocol-integration/stream-message/GroupKeyResponseTranslator.js +1 -1
  87. package/dist/src/logic/protocol-integration/stream-message/GroupKeyResponseTranslator.js.map +1 -1
  88. package/dist/src/logic/protocol-integration/stream-message/StreamMessageTranslator.js +87 -53
  89. package/dist/src/logic/protocol-integration/stream-message/StreamMessageTranslator.js.map +1 -1
  90. package/dist/src/logic/protocol-integration/stream-message/oldStreamMessageBinaryUtils.d.ts +7 -0
  91. package/dist/src/logic/protocol-integration/stream-message/oldStreamMessageBinaryUtils.js +32 -0
  92. package/dist/src/logic/protocol-integration/stream-message/oldStreamMessageBinaryUtils.js.map +1 -0
  93. package/dist/src/logic/proxy/ProxyClient.d.ts +8 -6
  94. package/dist/src/logic/proxy/ProxyClient.js +40 -28
  95. package/dist/src/logic/proxy/ProxyClient.js.map +1 -1
  96. package/dist/src/logic/proxy/ProxyConnectionRpcLocal.d.ts +6 -7
  97. package/dist/src/logic/proxy/ProxyConnectionRpcLocal.js +8 -8
  98. package/dist/src/logic/proxy/ProxyConnectionRpcLocal.js.map +1 -1
  99. package/dist/src/logic/proxy/ProxyConnectionRpcRemote.d.ts +3 -3
  100. package/dist/src/logic/proxy/ProxyConnectionRpcRemote.js +1 -1
  101. package/dist/src/logic/proxy/ProxyConnectionRpcRemote.js.map +1 -1
  102. package/dist/src/logic/temporary-connection/TemporaryConnectionRpcLocal.d.ts +9 -4
  103. package/dist/src/logic/temporary-connection/TemporaryConnectionRpcLocal.js +21 -6
  104. package/dist/src/logic/temporary-connection/TemporaryConnectionRpcLocal.js.map +1 -1
  105. package/dist/src/logic/temporary-connection/TemporaryConnectionRpcRemote.d.ts +4 -3
  106. package/dist/src/logic/temporary-connection/TemporaryConnectionRpcRemote.js +13 -3
  107. package/dist/src/logic/temporary-connection/TemporaryConnectionRpcRemote.js.map +1 -1
  108. package/dist/src/logic/utils.js.map +1 -1
  109. package/dist/src/proto/google/protobuf/any.js +8 -8
  110. package/dist/src/proto/google/protobuf/any.js.map +1 -1
  111. package/dist/src/proto/google/protobuf/empty.js +2 -4
  112. package/dist/src/proto/google/protobuf/empty.js.map +1 -1
  113. package/dist/src/proto/google/protobuf/timestamp.js +10 -10
  114. package/dist/src/proto/google/protobuf/timestamp.js.map +1 -1
  115. package/dist/src/proto/packages/dht/protos/DhtRpc.client.d.ts +36 -49
  116. package/dist/src/proto/packages/dht/protos/DhtRpc.client.js +54 -52
  117. package/dist/src/proto/packages/dht/protos/DhtRpc.client.js.map +1 -1
  118. package/dist/src/proto/packages/dht/protos/DhtRpc.d.ts +184 -234
  119. package/dist/src/proto/packages/dht/protos/DhtRpc.js +118 -168
  120. package/dist/src/proto/packages/dht/protos/DhtRpc.js.map +1 -1
  121. package/dist/src/proto/packages/dht/protos/DhtRpc.server.d.ts +20 -29
  122. package/dist/src/proto/packages/proto-rpc/protos/ProtoRpc.js +1 -1
  123. package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.client.d.ts +42 -5
  124. package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.client.js +52 -19
  125. package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.client.js.map +1 -1
  126. package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.d.ts +193 -28
  127. package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.js +129 -20
  128. package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.js.map +1 -1
  129. package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.server.d.ts +20 -3
  130. package/dist/test/benchmark/first-message.js +14 -15
  131. package/dist/test/benchmark/first-message.js.map +1 -1
  132. package/dist/test/utils/utils.d.ts +2 -4
  133. package/dist/test/utils/utils.js +20 -19
  134. package/dist/test/utils/utils.js.map +1 -1
  135. package/jest.config.js +3 -38
  136. package/package.json +11 -11
  137. package/protos/NetworkRpc.proto +57 -12
  138. package/src/NetworkNode.ts +13 -6
  139. package/src/NetworkStack.ts +94 -16
  140. package/src/exports.ts +11 -3
  141. package/src/logic/DeliveryRpcLocal.ts +7 -8
  142. package/src/logic/DeliveryRpcRemote.ts +7 -5
  143. package/src/logic/DuplicateMessageDetector.ts +7 -7
  144. package/src/logic/EntryPointDiscovery.ts +26 -19
  145. package/src/logic/Layer0Node.ts +6 -4
  146. package/src/logic/Layer1Node.ts +21 -6
  147. package/src/logic/NodeList.ts +25 -26
  148. package/src/logic/RandomGraphNode.ts +148 -78
  149. package/src/logic/StreamrNode.ts +58 -41
  150. package/src/logic/createRandomGraphNode.ts +37 -25
  151. package/src/logic/formStreamPartDeliveryServiceId.ts +2 -1
  152. package/src/logic/inspect/InspectSession.ts +8 -4
  153. package/src/logic/inspect/Inspector.ts +34 -24
  154. package/src/logic/neighbor-discovery/HandshakeRpcLocal.ts +72 -38
  155. package/src/logic/neighbor-discovery/HandshakeRpcRemote.ts +32 -20
  156. package/src/logic/neighbor-discovery/Handshaker.ts +90 -75
  157. package/src/logic/neighbor-discovery/NeighborFinder.ts +18 -13
  158. package/src/logic/neighbor-discovery/NeighborUpdateManager.ts +19 -20
  159. package/src/logic/neighbor-discovery/NeighborUpdateRpcLocal.ts +43 -33
  160. package/src/logic/neighbor-discovery/NeighborUpdateRpcRemote.ts +6 -6
  161. package/src/logic/node-info/NodeInfoClient.ts +23 -0
  162. package/src/logic/node-info/NodeInfoRpcLocal.ts +28 -0
  163. package/src/logic/node-info/NodeInfoRpcRemote.ts +11 -0
  164. package/src/logic/propagation/Propagation.ts +7 -6
  165. package/src/logic/propagation/PropagationTaskStore.ts +2 -2
  166. package/src/logic/protocol-integration/stream-message/GroupKeyRequestTranslator.ts +1 -1
  167. package/src/logic/protocol-integration/stream-message/GroupKeyResponseTranslator.ts +1 -2
  168. package/src/logic/protocol-integration/stream-message/StreamMessageTranslator.ts +95 -69
  169. package/src/logic/protocol-integration/stream-message/oldStreamMessageBinaryUtils.ts +37 -0
  170. package/src/logic/proxy/ProxyClient.ts +60 -40
  171. package/src/logic/proxy/ProxyConnectionRpcLocal.ts +15 -19
  172. package/src/logic/proxy/ProxyConnectionRpcRemote.ts +3 -3
  173. package/src/logic/temporary-connection/TemporaryConnectionRpcLocal.ts +30 -10
  174. package/src/logic/temporary-connection/TemporaryConnectionRpcRemote.ts +14 -4
  175. package/src/proto/google/protobuf/any.ts +4 -4
  176. package/src/proto/google/protobuf/empty.ts +2 -4
  177. package/src/proto/google/protobuf/timestamp.ts +4 -4
  178. package/src/proto/packages/dht/protos/DhtRpc.client.ts +50 -66
  179. package/src/proto/packages/dht/protos/DhtRpc.server.ts +21 -30
  180. package/src/proto/packages/dht/protos/DhtRpc.ts +242 -316
  181. package/src/proto/packages/proto-rpc/protos/ProtoRpc.ts +1 -1
  182. package/src/proto/packages/trackerless-network/protos/NetworkRpc.client.ts +49 -7
  183. package/src/proto/packages/trackerless-network/protos/NetworkRpc.server.ts +21 -4
  184. package/src/proto/packages/trackerless-network/protos/NetworkRpc.ts +251 -44
  185. package/test/benchmark/StreamPartIdDataKeyDistribution.test.ts +60 -0
  186. package/test/benchmark/first-message.ts +38 -17
  187. package/test/end-to-end/inspect.test.ts +16 -4
  188. package/test/end-to-end/proxy-and-full-node.test.ts +26 -13
  189. package/test/end-to-end/proxy-connections.test.ts +23 -11
  190. package/test/end-to-end/proxy-key-exchange.test.ts +25 -15
  191. package/test/end-to-end/random-graph-with-real-connections.test.ts +35 -32
  192. package/test/end-to-end/webrtc-full-node-network.test.ts +11 -12
  193. package/test/end-to-end/websocket-full-node-network.test.ts +12 -12
  194. package/test/integration/DeliveryRpcRemote.test.ts +6 -9
  195. package/test/integration/HandshakeRpcRemote.test.ts +6 -8
  196. package/test/integration/Handshakes.test.ts +29 -27
  197. package/test/integration/Inspect.test.ts +0 -2
  198. package/test/integration/NeighborUpdateRpcRemote.test.ts +6 -7
  199. package/test/integration/NetworkNode.test.ts +27 -12
  200. package/test/integration/NetworkRpc.test.ts +3 -5
  201. package/test/integration/NetworkStack.test.ts +2 -2
  202. package/test/integration/NodeInfoRpc.test.ts +104 -0
  203. package/test/integration/Propagation.test.ts +3 -3
  204. package/test/integration/RandomGraphNode-Layer1Node-Latencies.test.ts +24 -25
  205. package/test/integration/RandomGraphNode-Layer1Node.test.ts +26 -24
  206. package/test/integration/StreamrNode.test.ts +4 -16
  207. package/test/integration/joining-streams-on-offline-peers.test.ts +7 -31
  208. package/test/integration/stream-without-default-entrypoints.test.ts +22 -23
  209. package/test/integration/streamEntryPointReplacing.test.ts +94 -0
  210. package/test/unit/DeliveryRpcLocal.test.ts +2 -1
  211. package/test/unit/EntrypointDiscovery.test.ts +11 -8
  212. package/test/unit/GroupKeyResponseTranslator.test.ts +1 -1
  213. package/test/unit/HandshakeRpcLocal.test.ts +80 -28
  214. package/test/unit/Handshaker.test.ts +14 -9
  215. package/test/unit/InspectSession.test.ts +5 -6
  216. package/test/unit/Inspector.test.ts +3 -4
  217. package/test/unit/NeighborFinder.test.ts +12 -9
  218. package/test/unit/NeighborUpdateRpcLocal.test.ts +139 -0
  219. package/test/unit/NodeList.test.ts +77 -80
  220. package/test/unit/Propagation.test.ts +21 -16
  221. package/test/unit/ProxyConnectionRpcRemote.test.ts +18 -12
  222. package/test/unit/RandomGraphNode.test.ts +23 -20
  223. package/test/unit/StreamMessageTranslator.test.ts +10 -8
  224. package/test/unit/StreamPartIDDataKey.test.ts +12 -0
  225. package/test/unit/StreamrNode.test.ts +2 -0
  226. package/test/unit/TemporaryConnectionRpcLocal.test.ts +38 -0
  227. package/test/unit/oldStreamMessageBinaryUtils.test.ts +39 -0
  228. package/test/utils/mock/MockHandshaker.ts +6 -5
  229. package/test/utils/mock/MockLayer0Node.ts +7 -2
  230. package/test/utils/mock/MockLayer1Node.ts +5 -2
  231. package/test/utils/mock/MockNeighborFinder.ts +3 -2
  232. package/test/utils/mock/MockNeighborUpdateManager.ts +3 -2
  233. package/test/utils/mock/Transport.ts +1 -1
  234. package/test/utils/utils.ts +40 -25
  235. package/tsconfig.jest.json +5 -4
  236. package/tsconfig.node.json +2 -2
  237. package/dist/src/identifiers.d.ts +0 -4
  238. package/dist/src/identifiers.js +0 -9
  239. package/dist/src/identifiers.js.map +0 -1
  240. package/src/identifiers.ts +0 -8
  241. package/test/unit/GroupKeyRequestTranslator.test.ts +0 -36
@@ -2,20 +2,23 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.RandomGraphNode = void 0;
4
4
  const eventemitter3_1 = require("eventemitter3");
5
+ const dht_1 = require("@streamr/dht");
5
6
  const NetworkRpc_1 = require("../proto/packages/trackerless-network/protos/NetworkRpc");
6
7
  const NetworkRpc_client_1 = require("../proto/packages/trackerless-network/protos/NetworkRpc.client");
7
8
  const DeliveryRpcRemote_1 = require("./DeliveryRpcRemote");
8
9
  const utils_1 = require("@streamr/utils");
9
- const proto_rpc_1 = require("@streamr/proto-rpc");
10
10
  const DeliveryRpcLocal_1 = require("./DeliveryRpcLocal");
11
11
  const utils_2 = require("./utils");
12
- const identifiers_1 = require("../identifiers");
12
+ const lodash_1 = require("lodash");
13
13
  const logger = new utils_1.Logger(module);
14
14
  class RandomGraphNode extends eventemitter3_1.EventEmitter {
15
+ started = false;
16
+ duplicateDetectors;
17
+ config;
18
+ deliveryRpcLocal;
19
+ abortController = new AbortController();
15
20
  constructor(config) {
16
21
  super();
17
- this.started = false;
18
- this.abortController = new AbortController();
19
22
  this.config = config;
20
23
  this.duplicateDetectors = new Map();
21
24
  this.deliveryRpcLocal = new DeliveryRpcLocal_1.DeliveryRpcLocal({
@@ -24,19 +27,27 @@ class RandomGraphNode extends eventemitter3_1.EventEmitter {
24
27
  rpcCommunicator: this.config.rpcCommunicator,
25
28
  markAndCheckDuplicate: (msg, prev) => (0, utils_2.markAndCheckDuplicate)(this.duplicateDetectors, msg, prev),
26
29
  broadcast: (message, previousNode) => this.broadcast(message, previousNode),
27
- onLeaveNotice: (senderId) => {
28
- const contact = this.config.nearbyNodeView.get(senderId)
29
- || this.config.randomNodeView.get(senderId)
30
- || this.config.targetNeighbors.get(senderId)
31
- || this.config.proxyConnectionRpcLocal?.getConnection(senderId)?.remote;
30
+ onLeaveNotice: (sourceId, sourceIsStreamEntryPoint) => {
31
+ if (this.abortController.signal.aborted) {
32
+ return;
33
+ }
34
+ const contact = this.config.nearbyNodeView.get(sourceId)
35
+ || this.config.randomNodeView.get(sourceId)
36
+ || this.config.neighbors.get(sourceId)
37
+ || this.config.proxyConnectionRpcLocal?.getConnection(sourceId)?.remote;
32
38
  // TODO: check integrity of notifier?
33
39
  if (contact) {
34
- this.config.layer1Node.removeContact(contact.getPeerDescriptor());
35
- this.config.targetNeighbors.remove(contact.getPeerDescriptor());
36
- this.config.nearbyNodeView.remove(contact.getPeerDescriptor());
37
- this.config.connectionLocker.unlockConnection(contact.getPeerDescriptor(), this.config.streamPartId);
38
- this.config.neighborFinder.start([senderId]);
39
- this.config.proxyConnectionRpcLocal?.removeConnection(senderId);
40
+ this.config.layer1Node.removeContact(sourceId);
41
+ this.config.neighbors.remove(sourceId);
42
+ this.config.nearbyNodeView.remove(sourceId);
43
+ this.config.randomNodeView.remove(sourceId);
44
+ this.config.leftNodeView.remove(sourceId);
45
+ this.config.rightNodeView.remove(sourceId);
46
+ this.config.neighborFinder.start([sourceId]);
47
+ this.config.proxyConnectionRpcLocal?.removeConnection(sourceId);
48
+ }
49
+ if (sourceIsStreamEntryPoint) {
50
+ this.emit('entryPointLeaveDetected');
40
51
  }
41
52
  },
42
53
  markForInspection: (senderId, messageId) => this.config.inspector.markMessage(senderId, messageId)
@@ -45,21 +56,31 @@ class RandomGraphNode extends eventemitter3_1.EventEmitter {
45
56
  async start() {
46
57
  this.started = true;
47
58
  this.registerDefaultServerMethods();
48
- (0, utils_1.addManagedEventListener)(this.config.layer1Node, 'newContact', (_peerDescriptor, closestPeers) => this.newContact(closestPeers), this.abortController.signal);
49
- (0, utils_1.addManagedEventListener)(this.config.layer1Node, 'contactRemoved', (_peerDescriptor, closestPeers) => this.removedContact(closestPeers), this.abortController.signal);
50
- (0, utils_1.addManagedEventListener)(this.config.layer1Node, 'newRandomContact', (_peerDescriptor, randomPeers) => this.newRandomContact(randomPeers), this.abortController.signal);
51
- (0, utils_1.addManagedEventListener)(this.config.layer1Node, 'randomContactRemoved', (_peerDescriptor, randomPeers) => this.removedRandomContact(randomPeers), this.abortController.signal);
59
+ (0, utils_1.addManagedEventListener)(this.config.layer1Node, 'contactAdded', (_peerDescriptor, closestPeers) => this.onContactAdded(closestPeers), this.abortController.signal);
60
+ (0, utils_1.addManagedEventListener)(this.config.layer1Node, 'contactRemoved', (_peerDescriptor, closestPeers) => this.onContactRemoved(closestPeers), this.abortController.signal);
61
+ (0, utils_1.addManagedEventListener)(this.config.layer1Node, 'randomContactAdded', (_peerDescriptor, randomPeers) => this.onRandomContactAdded(randomPeers), this.abortController.signal);
62
+ (0, utils_1.addManagedEventListener)(this.config.layer1Node, 'randomContactRemoved', (_peerDescriptor, randomPeers) => this.onRandomContactRemoved(randomPeers), this.abortController.signal);
63
+ (0, utils_1.addManagedEventListener)(this.config.layer1Node, 'ringContactAdded', (_, peers) => {
64
+ this.onRingContactEvent(peers);
65
+ }, this.abortController.signal);
66
+ (0, utils_1.addManagedEventListener)(this.config.layer1Node, 'ringContactRemoved', (_, peers) => {
67
+ this.onRingContactEvent(peers);
68
+ }, this.abortController.signal);
52
69
  (0, utils_1.addManagedEventListener)(this.config.transport, 'disconnected', (peerDescriptor) => this.onNodeDisconnected(peerDescriptor), this.abortController.signal);
53
- (0, utils_1.addManagedEventListener)(this.config.targetNeighbors, 'nodeAdded', (id, _remote) => {
70
+ (0, utils_1.addManagedEventListener)(this.config.neighbors, 'nodeAdded', (id, remote) => {
54
71
  this.config.propagation.onNeighborJoined(id);
55
- this.emit('targetNeighborConnected', id);
72
+ this.config.connectionLocker.weakLockConnection(remote.getPeerDescriptor(), this.config.streamPartId);
73
+ this.emit('neighborConnected', id);
74
+ }, this.abortController.signal);
75
+ (0, utils_1.addManagedEventListener)(this.config.neighbors, 'nodeRemoved', (_id, remote) => {
76
+ this.config.connectionLocker.weakUnlockConnection(remote.getPeerDescriptor(), this.config.streamPartId);
56
77
  }, this.abortController.signal);
57
78
  if (this.config.proxyConnectionRpcLocal !== undefined) {
58
79
  (0, utils_1.addManagedEventListener)(this.config.proxyConnectionRpcLocal, 'newConnection', (id) => this.config.propagation.onNeighborJoined(id), this.abortController.signal);
59
80
  }
60
81
  const candidates = this.getNeighborCandidatesFromLayer1();
61
82
  if (candidates.length > 0) {
62
- this.newContact(candidates);
83
+ this.onContactAdded(candidates);
63
84
  }
64
85
  this.config.neighborFinder.start();
65
86
  await this.config.neighborUpdateManager.start();
@@ -68,18 +89,27 @@ class RandomGraphNode extends eventemitter3_1.EventEmitter {
68
89
  this.config.rpcCommunicator.registerRpcNotification(NetworkRpc_1.StreamMessage, 'sendStreamMessage', (msg, context) => this.deliveryRpcLocal.sendStreamMessage(msg, context));
69
90
  this.config.rpcCommunicator.registerRpcNotification(NetworkRpc_1.LeaveStreamPartNotice, 'leaveStreamPartNotice', (req, context) => this.deliveryRpcLocal.leaveStreamPartNotice(req, context));
70
91
  this.config.rpcCommunicator.registerRpcMethod(NetworkRpc_1.TemporaryConnectionRequest, NetworkRpc_1.TemporaryConnectionResponse, 'openConnection', (req, context) => this.config.temporaryConnectionRpcLocal.openConnection(req, context));
92
+ this.config.rpcCommunicator.registerRpcNotification(NetworkRpc_1.CloseTemporaryConnection, 'closeConnection', (req, context) => this.config.temporaryConnectionRpcLocal.closeConnection(req, context));
93
+ }
94
+ onRingContactEvent(ringPeers) {
95
+ logger.trace(`onRingContactAdded`);
96
+ if (this.isStopped()) {
97
+ return;
98
+ }
99
+ this.config.leftNodeView.replaceAll(ringPeers.left.map((peer) => new DeliveryRpcRemote_1.DeliveryRpcRemote(this.config.localPeerDescriptor, peer, this.config.rpcCommunicator, NetworkRpc_client_1.DeliveryRpcClient, this.config.rpcRequestTimeout)));
100
+ this.config.rightNodeView.replaceAll(ringPeers.right.map((peer) => new DeliveryRpcRemote_1.DeliveryRpcRemote(this.config.localPeerDescriptor, peer, this.config.rpcCommunicator, NetworkRpc_client_1.DeliveryRpcClient, this.config.rpcRequestTimeout)));
71
101
  }
72
- newContact(closestNodes) {
102
+ onContactAdded(closestNodes) {
73
103
  logger.trace(`New nearby contact found`);
74
104
  if (this.isStopped()) {
75
105
  return;
76
106
  }
77
107
  this.updateNearbyNodeView(closestNodes);
78
- if (this.config.targetNeighbors.size() < this.config.numOfTargetNeighbors) {
108
+ if (this.config.neighbors.size() < this.config.neighborTargetCount) {
79
109
  this.config.neighborFinder.start();
80
110
  }
81
111
  }
82
- removedContact(closestNodes) {
112
+ onContactRemoved(closestNodes) {
83
113
  logger.trace(`Nearby contact removed`);
84
114
  if (this.isStopped()) {
85
115
  return;
@@ -87,47 +117,47 @@ class RandomGraphNode extends eventemitter3_1.EventEmitter {
87
117
  this.updateNearbyNodeView(closestNodes);
88
118
  }
89
119
  updateNearbyNodeView(nodes) {
90
- this.config.nearbyNodeView.replaceAll(Array.from(nodes).map((descriptor) => new DeliveryRpcRemote_1.DeliveryRpcRemote(this.config.localPeerDescriptor, descriptor, this.config.streamPartId, (0, proto_rpc_1.toProtoRpcClient)(new NetworkRpc_client_1.DeliveryRpcClient(this.config.rpcCommunicator.getRpcClientTransport())), this.config.rpcRequestTimeout)));
91
- for (const descriptor of this.config.layer1Node.getKBucketPeers()) {
120
+ this.config.nearbyNodeView.replaceAll(Array.from(nodes).map((descriptor) => new DeliveryRpcRemote_1.DeliveryRpcRemote(this.config.localPeerDescriptor, descriptor, this.config.rpcCommunicator, NetworkRpc_client_1.DeliveryRpcClient, this.config.rpcRequestTimeout)));
121
+ for (const descriptor of this.config.layer1Node.getNeighbors()) {
92
122
  if (this.config.nearbyNodeView.size() >= this.config.nodeViewSize) {
93
123
  break;
94
124
  }
95
- this.config.nearbyNodeView.add(new DeliveryRpcRemote_1.DeliveryRpcRemote(this.config.localPeerDescriptor, descriptor, this.config.streamPartId, (0, proto_rpc_1.toProtoRpcClient)(new NetworkRpc_client_1.DeliveryRpcClient(this.config.rpcCommunicator.getRpcClientTransport())), this.config.rpcRequestTimeout));
125
+ this.config.nearbyNodeView.add(new DeliveryRpcRemote_1.DeliveryRpcRemote(this.config.localPeerDescriptor, descriptor, this.config.rpcCommunicator, NetworkRpc_client_1.DeliveryRpcClient, this.config.rpcRequestTimeout));
96
126
  }
97
127
  }
98
- newRandomContact(randomNodes) {
128
+ onRandomContactAdded(randomNodes) {
99
129
  if (this.isStopped()) {
100
130
  return;
101
131
  }
102
- this.config.randomNodeView.replaceAll(randomNodes.map((descriptor) => new DeliveryRpcRemote_1.DeliveryRpcRemote(this.config.localPeerDescriptor, descriptor, this.config.streamPartId, (0, proto_rpc_1.toProtoRpcClient)(new NetworkRpc_client_1.DeliveryRpcClient(this.config.rpcCommunicator.getRpcClientTransport())), this.config.rpcRequestTimeout)));
103
- if (this.config.targetNeighbors.size() < this.config.numOfTargetNeighbors) {
132
+ this.config.randomNodeView.replaceAll(randomNodes.map((descriptor) => new DeliveryRpcRemote_1.DeliveryRpcRemote(this.config.localPeerDescriptor, descriptor, this.config.rpcCommunicator, NetworkRpc_client_1.DeliveryRpcClient, this.config.rpcRequestTimeout)));
133
+ if (this.config.neighbors.size() < this.config.neighborTargetCount) {
104
134
  this.config.neighborFinder.start();
105
135
  }
106
136
  }
107
- removedRandomContact(randomNodes) {
137
+ onRandomContactRemoved(randomNodes) {
108
138
  logger.trace(`New nearby contact found`);
109
139
  if (this.isStopped()) {
110
140
  return;
111
141
  }
112
- this.config.randomNodeView.replaceAll(randomNodes.map((descriptor) => new DeliveryRpcRemote_1.DeliveryRpcRemote(this.config.localPeerDescriptor, descriptor, this.config.streamPartId, (0, proto_rpc_1.toProtoRpcClient)(new NetworkRpc_client_1.DeliveryRpcClient(this.config.rpcCommunicator.getRpcClientTransport())), this.config.rpcRequestTimeout)));
142
+ this.config.randomNodeView.replaceAll(randomNodes.map((descriptor) => new DeliveryRpcRemote_1.DeliveryRpcRemote(this.config.localPeerDescriptor, descriptor, this.config.rpcCommunicator, NetworkRpc_client_1.DeliveryRpcClient, this.config.rpcRequestTimeout)));
113
143
  }
114
144
  onNodeDisconnected(peerDescriptor) {
115
- if (this.config.targetNeighbors.hasNode(peerDescriptor)) {
116
- this.config.targetNeighbors.remove(peerDescriptor);
117
- this.config.connectionLocker.unlockConnection(peerDescriptor, this.config.streamPartId);
118
- this.config.neighborFinder.start([(0, identifiers_1.getNodeIdFromPeerDescriptor)(peerDescriptor)]);
119
- this.config.temporaryConnectionRpcLocal.removeNode(peerDescriptor);
145
+ const nodeId = (0, dht_1.getNodeIdFromPeerDescriptor)(peerDescriptor);
146
+ if (this.config.neighbors.has(nodeId)) {
147
+ this.config.neighbors.remove(nodeId);
148
+ this.config.neighborFinder.start([nodeId]);
149
+ this.config.temporaryConnectionRpcLocal.removeNode(nodeId);
120
150
  }
121
151
  }
122
152
  getNeighborCandidatesFromLayer1() {
123
- const uniqueNodes = new Set();
153
+ const nodes = [];
124
154
  this.config.layer1Node.getClosestContacts(this.config.nodeViewSize).forEach((peer) => {
125
- uniqueNodes.add(peer);
155
+ nodes.push(peer);
126
156
  });
127
- this.config.layer1Node.getKBucketPeers().forEach((peer) => {
128
- uniqueNodes.add(peer);
157
+ this.config.layer1Node.getNeighbors().forEach((peer) => {
158
+ nodes.push(peer);
129
159
  });
130
- return Array.from(uniqueNodes);
160
+ return (0, lodash_1.uniqBy)(nodes, (p) => (0, dht_1.getNodeIdFromPeerDescriptor)(p));
131
161
  }
132
162
  hasProxyConnection(nodeId) {
133
163
  if (this.config.proxyConnectionRpcLocal) {
@@ -141,11 +171,11 @@ class RandomGraphNode extends eventemitter3_1.EventEmitter {
141
171
  }
142
172
  this.abortController.abort();
143
173
  this.config.proxyConnectionRpcLocal?.stop();
144
- this.config.targetNeighbors.getAll().map((remote) => remote.leaveStreamPartNotice());
174
+ this.config.neighbors.getAll().map((remote) => remote.leaveStreamPartNotice(this.config.streamPartId, this.config.isLocalNodeEntryPoint()));
145
175
  this.config.rpcCommunicator.destroy();
146
176
  this.removeAllListeners();
147
177
  this.config.nearbyNodeView.stop();
148
- this.config.targetNeighbors.stop();
178
+ this.config.neighbors.stop();
149
179
  this.config.randomNodeView.stop();
150
180
  this.config.neighborFinder.stop();
151
181
  this.config.neighborUpdateManager.stop();
@@ -156,31 +186,31 @@ class RandomGraphNode extends eventemitter3_1.EventEmitter {
156
186
  (0, utils_2.markAndCheckDuplicate)(this.duplicateDetectors, msg.messageId, msg.previousMessageRef);
157
187
  }
158
188
  this.emit('message', msg);
159
- this.config.propagation.feedUnseenMessage(msg, this.getPropagationTargets(msg), previousNode ?? null);
189
+ const skipBackPropagation = previousNode !== undefined && !this.config.temporaryConnectionRpcLocal.hasNode(previousNode);
190
+ this.config.propagation.feedUnseenMessage(msg, this.getPropagationTargets(msg), skipBackPropagation ? previousNode : null);
160
191
  }
161
192
  inspect(peerDescriptor) {
162
193
  return this.config.inspector.inspect(peerDescriptor);
163
194
  }
164
195
  getPropagationTargets(msg) {
165
- let propagationTargets = this.config.targetNeighbors.getIds();
196
+ let propagationTargets = this.config.neighbors.getIds();
166
197
  if (this.config.proxyConnectionRpcLocal) {
167
198
  propagationTargets = propagationTargets.concat(this.config.proxyConnectionRpcLocal.getPropagationTargets(msg));
168
199
  }
169
- propagationTargets = propagationTargets.filter((target) => !this.config.inspector.isInspected(target));
170
200
  propagationTargets = propagationTargets.concat(this.config.temporaryConnectionRpcLocal.getNodes().getIds());
171
201
  return propagationTargets;
172
202
  }
173
203
  getOwnNodeId() {
174
- return (0, identifiers_1.getNodeIdFromPeerDescriptor)(this.config.localPeerDescriptor);
204
+ return (0, dht_1.getNodeIdFromPeerDescriptor)(this.config.localPeerDescriptor);
175
205
  }
176
- getNumberOfOutgoingHandshakes() {
206
+ getOutgoingHandshakeCount() {
177
207
  return this.config.handshaker.getOngoingHandshakes().size;
178
208
  }
179
- getTargetNeighborIds() {
209
+ getNeighbors() {
180
210
  if (!this.started && this.isStopped()) {
181
211
  return [];
182
212
  }
183
- return this.config.targetNeighbors.getIds();
213
+ return this.config.neighbors.getAll().map((n) => n.getPeerDescriptor());
184
214
  }
185
215
  getNearbyNodeView() {
186
216
  return this.config.nearbyNodeView;
@@ -1 +1 @@
1
- {"version":3,"file":"RandomGraphNode.js","sourceRoot":"","sources":["../../../src/logic/RandomGraphNode.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RandomGraphNode.js","sourceRoot":"","sources":["../../../src/logic/RandomGraphNode.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,8 @@
1
- import { ConnectionLocker, ITransport, PeerDescriptor } from '@streamr/dht';
1
+ import { ConnectionLocker, ITransport, PeerDescriptor, DhtAddress } from '@streamr/dht';
2
2
  import { StreamPartID } from '@streamr/protocol';
3
3
  import { EthereumAddress, MetricsContext } from '@streamr/utils';
4
4
  import { EventEmitter } from 'eventemitter3';
5
- import { NodeID } from '../identifiers';
6
- import { ProxyDirection, StreamMessage } from '../proto/packages/trackerless-network/protos/NetworkRpc';
5
+ import { ProxyDirection, StreamPartitionInfo, StreamMessage } from '../proto/packages/trackerless-network/protos/NetworkRpc';
7
6
  import { Layer0Node } from './Layer0Node';
8
7
  import { Layer1Node } from './Layer1Node';
9
8
  import { RandomGraphNode } from './RandomGraphNode';
@@ -26,7 +25,7 @@ export interface Events {
26
25
  }
27
26
  export interface StreamrNodeConfig {
28
27
  metricsContext?: MetricsContext;
29
- streamPartitionNumOfNeighbors?: number;
28
+ streamPartitionNeighborTargetCount?: number;
30
29
  streamPartitionMinPropagationTargets?: number;
31
30
  acceptProxyConnections?: boolean;
32
31
  rpcRequestTimeout?: number;
@@ -54,12 +53,13 @@ export declare class StreamrNode extends EventEmitter<Events> {
54
53
  setProxies(streamPartId: StreamPartID, nodes: PeerDescriptor[], direction: ProxyDirection, userId: EthereumAddress, connectionCount?: number): Promise<void>;
55
54
  private createProxyClient;
56
55
  inspect(peerDescriptor: PeerDescriptor, streamPartId: StreamPartID): Promise<boolean>;
56
+ getNodeInfo(): StreamPartitionInfo[];
57
57
  setStreamPartEntryPoints(streamPartId: StreamPartID, entryPoints: PeerDescriptor[]): void;
58
58
  isProxiedStreamPart(streamPartId: StreamPartID, direction?: ProxyDirection): boolean;
59
59
  getStreamPartDelivery(streamPartId: StreamPartID): StreamPartDelivery | undefined;
60
60
  hasStreamPart(streamPartId: StreamPartID): boolean;
61
61
  getPeerDescriptor(): PeerDescriptor;
62
- getNodeId(): NodeID;
63
- getNeighbors(streamPartId: StreamPartID): NodeID[];
62
+ getNodeId(): DhtAddress;
63
+ getNeighbors(streamPartId: StreamPartID): DhtAddress[];
64
64
  getStreamParts(): StreamPartID[];
65
65
  }
@@ -6,19 +6,24 @@ const protocol_1 = require("@streamr/protocol");
6
6
  const utils_1 = require("@streamr/utils");
7
7
  const eventemitter3_1 = require("eventemitter3");
8
8
  const lodash_1 = require("lodash");
9
- const identifiers_1 = require("../identifiers");
10
9
  const EntryPointDiscovery_1 = require("./EntryPointDiscovery");
11
10
  const createRandomGraphNode_1 = require("./createRandomGraphNode");
12
11
  const ProxyClient_1 = require("./proxy/ProxyClient");
13
12
  const logger = new utils_1.Logger(module);
14
- let cleanUp = async () => { };
15
13
  // TODO rename class?
16
14
  class StreamrNode extends eventemitter3_1.EventEmitter {
15
+ transport;
16
+ connectionLocker;
17
+ layer0Node;
18
+ metricsContext;
19
+ metrics;
20
+ config;
21
+ streamParts;
22
+ knownStreamPartEntryPoints = new Map();
23
+ started = false;
24
+ destroyed = false;
17
25
  constructor(config) {
18
26
  super();
19
- this.knownStreamPartEntryPoints = new Map();
20
- this.started = false;
21
- this.destroyed = false;
22
27
  this.config = config;
23
28
  this.streamParts = new Map();
24
29
  this.metricsContext = config.metricsContext ?? new utils_1.MetricsContext();
@@ -32,12 +37,11 @@ class StreamrNode extends eventemitter3_1.EventEmitter {
32
37
  if (this.started || this.destroyed) {
33
38
  return;
34
39
  }
35
- logger.info(`Starting new StreamrNode with id ${(0, identifiers_1.getNodeIdFromPeerDescriptor)(startedAndJoinedLayer0Node.getLocalPeerDescriptor())}`);
40
+ logger.info(`Starting new StreamrNode with id ${(0, dht_1.getNodeIdFromPeerDescriptor)(startedAndJoinedLayer0Node.getLocalPeerDescriptor())}`);
36
41
  this.started = true;
37
42
  this.layer0Node = startedAndJoinedLayer0Node;
38
43
  this.transport = transport;
39
44
  this.connectionLocker = connectionLocker;
40
- cleanUp = () => this.destroy();
41
45
  }
42
46
  async destroy() {
43
47
  if (!this.started || this.destroyed) {
@@ -54,10 +58,13 @@ class StreamrNode extends eventemitter3_1.EventEmitter {
54
58
  }
55
59
  broadcast(msg) {
56
60
  const streamPartId = (0, protocol_1.toStreamPartID)(msg.messageId.streamId, msg.messageId.streamPartition);
61
+ logger.debug(`Broadcasting to stream part ${streamPartId}`);
57
62
  this.joinStreamPart(streamPartId);
58
63
  this.streamParts.get(streamPartId).broadcast(msg);
59
- this.metrics.broadcastMessagesPerSecond.record(1);
60
- this.metrics.broadcastBytesPerSecond.record(msg.content.length);
64
+ if (msg.body.oneofKind === 'contentMessage') {
65
+ this.metrics.broadcastMessagesPerSecond.record(1);
66
+ this.metrics.broadcastBytesPerSecond.record(msg.body.contentMessage.content.length);
67
+ }
61
68
  }
62
69
  async leaveStreamPart(streamPartId) {
63
70
  const streamPart = this.streamParts.get(streamPartId);
@@ -67,26 +74,21 @@ class StreamrNode extends eventemitter3_1.EventEmitter {
67
74
  }
68
75
  }
69
76
  joinStreamPart(streamPartId) {
70
- logger.debug(`Join stream part ${streamPartId}`);
71
77
  let streamPart = this.streamParts.get(streamPartId);
72
78
  if (streamPart !== undefined) {
73
79
  return;
74
80
  }
81
+ logger.debug(`Join stream part ${streamPartId}`);
75
82
  const layer1Node = this.createLayer1Node(streamPartId, this.knownStreamPartEntryPoints.get(streamPartId) ?? []);
76
- const node = this.createRandomGraphNode(streamPartId, layer1Node);
77
83
  const entryPointDiscovery = new EntryPointDiscovery_1.EntryPointDiscovery({
78
84
  streamPartId,
79
85
  localPeerDescriptor: this.getPeerDescriptor(),
80
86
  layer1Node,
81
- getEntryPointData: (key) => this.layer0Node.getDataFromDht(key),
87
+ fetchEntryPointData: (key) => this.layer0Node.fetchDataFromDht(key),
82
88
  storeEntryPointData: (key, data) => this.layer0Node.storeDataToDht(key, data),
83
- deleteEntryPointData: async (key) => {
84
- if (this.destroyed) {
85
- return;
86
- }
87
- return this.layer0Node.deleteDataFromDht(key);
88
- }
89
+ deleteEntryPointData: async (key) => this.layer0Node.deleteDataFromDht(key, false)
89
90
  });
91
+ const node = this.createRandomGraphNode(streamPartId, layer1Node, () => entryPointDiscovery.isLocalNodeEntryPoint());
90
92
  streamPart = {
91
93
  proxied: false,
92
94
  layer1Node,
@@ -103,6 +105,14 @@ class StreamrNode extends eventemitter3_1.EventEmitter {
103
105
  node.on('message', (message) => {
104
106
  this.emit('newMessage', message);
105
107
  });
108
+ const handleEntryPointLeave = async () => {
109
+ if (this.destroyed || entryPointDiscovery.isLocalNodeEntryPoint() || this.knownStreamPartEntryPoints.has(streamPartId)) {
110
+ return;
111
+ }
112
+ const entryPoints = await entryPointDiscovery.discoverEntryPointsFromDht(0);
113
+ await entryPointDiscovery.storeSelfAsEntryPointIfNecessary(entryPoints.discoveredEntryPoints.length);
114
+ };
115
+ node.on('entryPointLeaveDetected', () => handleEntryPointLeave());
106
116
  setImmediate(async () => {
107
117
  try {
108
118
  await this.startLayersAndJoinDht(streamPartId, entryPointDiscovery);
@@ -124,7 +134,10 @@ class StreamrNode extends eventemitter3_1.EventEmitter {
124
134
  let entryPoints = this.knownStreamPartEntryPoints.get(streamPartId) ?? [];
125
135
  const discoveryResult = await entryPointDiscovery.discoverEntryPointsFromDht(entryPoints.length);
126
136
  entryPoints = entryPoints.concat(discoveryResult.discoveredEntryPoints);
127
- await streamPart.layer1Node.joinDht((0, lodash_1.sampleSize)(entryPoints, EntryPointDiscovery_1.NETWORK_SPLIT_AVOIDANCE_LIMIT));
137
+ await Promise.all([
138
+ streamPart.layer1Node.joinDht((0, lodash_1.sampleSize)(entryPoints, EntryPointDiscovery_1.NETWORK_SPLIT_AVOIDANCE_LIMIT)),
139
+ streamPart.layer1Node.joinRing()
140
+ ]);
128
141
  if (discoveryResult.entryPointsFromDht) {
129
142
  await entryPointDiscovery.storeSelfAsEntryPointIfNecessary(entryPoints.length);
130
143
  }
@@ -135,12 +148,12 @@ class StreamrNode extends eventemitter3_1.EventEmitter {
135
148
  serviceId: 'layer1::' + streamPartId,
136
149
  peerDescriptor: this.layer0Node.getLocalPeerDescriptor(),
137
150
  entryPoints,
138
- numberOfNodesPerKBucket: 4,
151
+ numberOfNodesPerKBucket: 4, // TODO use config option or named constant?
139
152
  rpcRequestTimeout: dht_1.EXISTING_CONNECTION_TIMEOUT,
140
- dhtJoinTimeout: 20000
153
+ dhtJoinTimeout: 20000 // TODO use config option or named constant?
141
154
  });
142
155
  }
143
- createRandomGraphNode(streamPartId, layer1Node) {
156
+ createRandomGraphNode(streamPartId, layer1Node, isLocalNodeEntryPoint) {
144
157
  return (0, createRandomGraphNode_1.createRandomGraphNode)({
145
158
  streamPartId,
146
159
  transport: this.transport,
@@ -148,12 +161,14 @@ class StreamrNode extends eventemitter3_1.EventEmitter {
148
161
  connectionLocker: this.connectionLocker,
149
162
  localPeerDescriptor: this.layer0Node.getLocalPeerDescriptor(),
150
163
  minPropagationTargets: this.config.streamPartitionMinPropagationTargets,
151
- numOfTargetNeighbors: this.config.streamPartitionNumOfNeighbors,
164
+ neighborTargetCount: this.config.streamPartitionNeighborTargetCount,
152
165
  acceptProxyConnections: this.config.acceptProxyConnections,
153
- rpcRequestTimeout: this.config.rpcRequestTimeout
166
+ rpcRequestTimeout: this.config.rpcRequestTimeout,
167
+ isLocalNodeEntryPoint
154
168
  });
155
169
  }
156
170
  async setProxies(streamPartId, nodes, direction, userId, connectionCount) {
171
+ // TODO explicit default value for "acceptProxyConnections" or make it required
157
172
  if (this.config.acceptProxyConnections) {
158
173
  throw new Error('cannot set proxies when acceptProxyConnections=true');
159
174
  }
@@ -200,6 +215,18 @@ class StreamrNode extends eventemitter3_1.EventEmitter {
200
215
  }
201
216
  return false;
202
217
  }
218
+ // TODO inline this method?
219
+ getNodeInfo() {
220
+ const streamParts = Array.from(this.streamParts.entries()).filter(([_, node]) => node.proxied === false);
221
+ return streamParts.map(([streamPartId]) => {
222
+ const stream = this.streamParts.get(streamPartId);
223
+ return {
224
+ id: streamPartId,
225
+ controlLayerNeighbors: stream.layer1Node.getNeighbors(),
226
+ deliveryLayerNeighbors: stream.node.getNeighbors()
227
+ };
228
+ });
229
+ }
203
230
  setStreamPartEntryPoints(streamPartId, entryPoints) {
204
231
  this.knownStreamPartEntryPoints.set(streamPartId, entryPoints);
205
232
  }
@@ -219,12 +246,12 @@ class StreamrNode extends eventemitter3_1.EventEmitter {
219
246
  return this.layer0Node.getLocalPeerDescriptor();
220
247
  }
221
248
  getNodeId() {
222
- return (0, identifiers_1.getNodeIdFromPeerDescriptor)(this.layer0Node.getLocalPeerDescriptor());
249
+ return (0, dht_1.getNodeIdFromPeerDescriptor)(this.layer0Node.getLocalPeerDescriptor());
223
250
  }
224
251
  getNeighbors(streamPartId) {
225
252
  const streamPart = this.streamParts.get(streamPartId);
226
253
  return (streamPart !== undefined) && (streamPart.proxied === false)
227
- ? streamPart.node.getTargetNeighborIds()
254
+ ? streamPart.node.getNeighbors().map((n) => (0, dht_1.getNodeIdFromPeerDescriptor)(n))
228
255
  : [];
229
256
  }
230
257
  getStreamParts() {
@@ -232,15 +259,4 @@ class StreamrNode extends eventemitter3_1.EventEmitter {
232
259
  }
233
260
  }
234
261
  exports.StreamrNode = StreamrNode;
235
- [`exit`, `SIGINT`, `SIGUSR1`, `SIGUSR2`, `uncaughtException`, `unhandledRejection`, `SIGTERM`].forEach((term) => {
236
- process.on(term, async () => {
237
- await cleanUp();
238
- process.exit();
239
- });
240
- });
241
- if (typeof window === 'object') {
242
- window.addEventListener('unload', async () => {
243
- await cleanUp();
244
- });
245
- }
246
262
  //# sourceMappingURL=StreamrNode.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"StreamrNode.js","sourceRoot":"","sources":["../../../src/logic/StreamrNode.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"StreamrNode.js","sourceRoot":"","sources":["../../../src/logic/StreamrNode.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { StrictRandomGraphNodeConfig, RandomGraphNode } from './RandomGraphNode';
2
2
  import { MarkOptional } from 'ts-essentials';
3
- type RandomGraphNodeConfig = MarkOptional<StrictRandomGraphNodeConfig, 'nearbyNodeView' | 'randomNodeView' | 'targetNeighbors' | 'propagation' | 'handshaker' | 'neighborFinder' | 'neighborUpdateManager' | 'numOfTargetNeighbors' | 'rpcCommunicator' | 'nodeViewSize' | 'inspector' | 'temporaryConnectionRpcLocal'> & {
4
- maxNumberOfContacts?: number;
3
+ type RandomGraphNodeConfig = MarkOptional<StrictRandomGraphNodeConfig, 'nearbyNodeView' | 'randomNodeView' | 'neighbors' | 'leftNodeView' | 'rightNodeView' | 'propagation' | 'handshaker' | 'neighborFinder' | 'neighborUpdateManager' | 'neighborTargetCount' | 'rpcCommunicator' | 'nodeViewSize' | 'inspector' | 'temporaryConnectionRpcLocal'> & {
4
+ maxContactCount?: number;
5
5
  minPropagationTargets?: number;
6
6
  acceptProxyConnections?: boolean;
7
7
  neighborUpdateInterval?: number;