@streamr/dht 0.0.1-tatum.5 → 0.0.1-tatum.7

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 (205) hide show
  1. package/dist/src/connection/ConnectionLockHandler.d.ts +1 -1
  2. package/dist/src/connection/ConnectionLockHandler.js.map +1 -1
  3. package/dist/src/connection/ConnectionManager.d.ts +17 -39
  4. package/dist/src/connection/ConnectionManager.js +138 -192
  5. package/dist/src/connection/ConnectionManager.js.map +1 -1
  6. package/dist/src/connection/ConnectivityChecker.js +14 -11
  7. package/dist/src/connection/ConnectivityChecker.js.map +1 -1
  8. package/dist/src/connection/ConnectorFacade.d.ts +49 -0
  9. package/dist/src/connection/ConnectorFacade.js +86 -0
  10. package/dist/src/connection/ConnectorFacade.js.map +1 -0
  11. package/dist/src/connection/ManagedConnection.d.ts +1 -4
  12. package/dist/src/connection/ManagedConnection.js +23 -31
  13. package/dist/src/connection/ManagedConnection.js.map +1 -1
  14. package/dist/src/connection/RemoteConnectionLocker.js +4 -3
  15. package/dist/src/connection/RemoteConnectionLocker.js.map +1 -1
  16. package/dist/src/connection/Simulator/Simulator.d.ts +0 -2
  17. package/dist/src/connection/Simulator/Simulator.js +0 -5
  18. package/dist/src/connection/Simulator/Simulator.js.map +1 -1
  19. package/dist/src/connection/Simulator/SimulatorConnection.js +16 -13
  20. package/dist/src/connection/Simulator/SimulatorConnection.js.map +1 -1
  21. package/dist/src/connection/Simulator/SimulatorConnector.d.ts +2 -2
  22. package/dist/src/connection/Simulator/SimulatorConnector.js +10 -11
  23. package/dist/src/connection/Simulator/SimulatorConnector.js.map +1 -1
  24. package/dist/src/connection/Simulator/SimulatorTransport.js +6 -1
  25. package/dist/src/connection/Simulator/SimulatorTransport.js.map +1 -1
  26. package/dist/src/connection/WebRTC/NodeWebRtcConnection.d.ts +2 -0
  27. package/dist/src/connection/WebRTC/NodeWebRtcConnection.js +12 -12
  28. package/dist/src/connection/WebRTC/NodeWebRtcConnection.js.map +1 -1
  29. package/dist/src/connection/WebRTC/WebRtcConnector.d.ts +9 -9
  30. package/dist/src/connection/WebRTC/WebRtcConnector.js +22 -22
  31. package/dist/src/connection/WebRTC/WebRtcConnector.js.map +1 -1
  32. package/dist/src/connection/WebSocket/RemoteWebSocketConnector.js +2 -1
  33. package/dist/src/connection/WebSocket/RemoteWebSocketConnector.js.map +1 -1
  34. package/dist/src/connection/WebSocket/WebSocketConnector.d.ts +19 -8
  35. package/dist/src/connection/WebSocket/WebSocketConnector.js +67 -46
  36. package/dist/src/connection/WebSocket/WebSocketConnector.js.map +1 -1
  37. package/dist/src/connection/WebSocket/WebSocketServer.d.ts +11 -1
  38. package/dist/src/connection/WebSocket/WebSocketServer.js +15 -10
  39. package/dist/src/connection/WebSocket/WebSocketServer.js.map +1 -1
  40. package/dist/src/dht/DhtNode.d.ts +16 -54
  41. package/dist/src/dht/DhtNode.js +116 -137
  42. package/dist/src/dht/DhtNode.js.map +1 -1
  43. package/dist/src/dht/{DhtPeer.d.ts → RemoteDhtNode.d.ts} +3 -2
  44. package/dist/src/dht/{DhtPeer.js → RemoteDhtNode.js} +22 -16
  45. package/dist/src/dht/RemoteDhtNode.js.map +1 -0
  46. package/dist/src/dht/contact/Contact.d.ts +1 -15
  47. package/dist/src/dht/contact/Contact.js +1 -9
  48. package/dist/src/dht/contact/Contact.js.map +1 -1
  49. package/dist/src/dht/contact/ContactList.d.ts +13 -3
  50. package/dist/src/dht/contact/ContactList.js +9 -4
  51. package/dist/src/dht/contact/ContactList.js.map +1 -1
  52. package/dist/src/dht/contact/RandomContactList.d.ts +3 -3
  53. package/dist/src/dht/contact/RandomContactList.js +4 -8
  54. package/dist/src/dht/contact/RandomContactList.js.map +1 -1
  55. package/dist/src/dht/contact/Remote.d.ts +1 -5
  56. package/dist/src/dht/contact/Remote.js +0 -5
  57. package/dist/src/dht/contact/Remote.js.map +1 -1
  58. package/dist/src/dht/contact/SortedContactList.d.ts +3 -5
  59. package/dist/src/dht/contact/SortedContactList.js +9 -19
  60. package/dist/src/dht/contact/SortedContactList.js.map +1 -1
  61. package/dist/src/dht/discovery/DiscoverySession.d.ts +5 -7
  62. package/dist/src/dht/discovery/DiscoverySession.js +9 -10
  63. package/dist/src/dht/discovery/DiscoverySession.js.map +1 -1
  64. package/dist/src/dht/discovery/PeerDiscovery.d.ts +11 -10
  65. package/dist/src/dht/discovery/PeerDiscovery.js +32 -37
  66. package/dist/src/dht/discovery/PeerDiscovery.js.map +1 -1
  67. package/dist/src/dht/find/RecursiveFindSession.d.ts +5 -6
  68. package/dist/src/dht/find/RecursiveFindSession.js +8 -8
  69. package/dist/src/dht/find/RecursiveFindSession.js.map +1 -1
  70. package/dist/src/dht/find/RecursiveFinder.d.ts +2 -4
  71. package/dist/src/dht/find/RecursiveFinder.js +11 -12
  72. package/dist/src/dht/find/RecursiveFinder.js.map +1 -1
  73. package/dist/src/dht/registerExternalApiRpcMethods.d.ts +1 -1
  74. package/dist/src/dht/routing/DuplicateDetector.d.ts +1 -2
  75. package/dist/src/dht/routing/DuplicateDetector.js +2 -7
  76. package/dist/src/dht/routing/DuplicateDetector.js.map +1 -1
  77. package/dist/src/dht/routing/RemoteRouter.js +4 -4
  78. package/dist/src/dht/routing/RemoteRouter.js.map +1 -1
  79. package/dist/src/dht/routing/Router.d.ts +10 -13
  80. package/dist/src/dht/routing/Router.js +28 -29
  81. package/dist/src/dht/routing/Router.js.map +1 -1
  82. package/dist/src/dht/routing/RoutingSession.d.ts +3 -5
  83. package/dist/src/dht/routing/RoutingSession.js +19 -13
  84. package/dist/src/dht/routing/RoutingSession.js.map +1 -1
  85. package/dist/src/dht/store/DataStore.d.ts +2 -2
  86. package/dist/src/dht/store/DataStore.js +7 -7
  87. package/dist/src/dht/store/DataStore.js.map +1 -1
  88. package/dist/src/exports.d.ts +1 -8
  89. package/dist/src/exports.js +2 -16
  90. package/dist/src/exports.js.map +1 -1
  91. package/dist/src/helpers/PeerID.d.ts +0 -1
  92. package/dist/src/helpers/PeerID.js +0 -6
  93. package/dist/src/helpers/PeerID.js.map +1 -1
  94. package/dist/src/helpers/browser/isBrowserEnvironment.d.ts +1 -0
  95. package/dist/src/helpers/browser/isBrowserEnvironment.js +6 -0
  96. package/dist/src/helpers/browser/isBrowserEnvironment.js.map +1 -0
  97. package/dist/src/helpers/browser/isBrowserEnvironment_override.d.ts +1 -0
  98. package/dist/src/helpers/browser/isBrowserEnvironment_override.js +7 -0
  99. package/dist/src/helpers/browser/isBrowserEnvironment_override.js.map +1 -0
  100. package/dist/src/helpers/kademliaId.d.ts +1 -0
  101. package/dist/src/helpers/kademliaId.js +14 -0
  102. package/dist/src/helpers/kademliaId.js.map +1 -0
  103. package/dist/src/helpers/peerIdFromPeerDescriptor.d.ts +1 -1
  104. package/dist/src/helpers/peerIdFromPeerDescriptor.js +3 -3
  105. package/dist/src/helpers/peerIdFromPeerDescriptor.js.map +1 -1
  106. package/dist/src/proto/packages/dht/protos/DhtRpc.d.ts +0 -4
  107. package/dist/src/proto/packages/dht/protos/DhtRpc.js +1 -2
  108. package/dist/src/proto/packages/dht/protos/DhtRpc.js.map +1 -1
  109. package/package.json +10 -9
  110. package/protos/DhtRpc.proto +0 -1
  111. package/src/connection/ConnectionLockHandler.ts +1 -1
  112. package/src/connection/ConnectionManager.ts +156 -240
  113. package/src/connection/ConnectivityChecker.ts +14 -11
  114. package/src/connection/ConnectorFacade.ts +143 -0
  115. package/src/connection/ManagedConnection.ts +23 -34
  116. package/src/connection/RemoteConnectionLocker.ts +4 -3
  117. package/src/connection/Simulator/Simulator.ts +0 -7
  118. package/src/connection/Simulator/SimulatorConnection.ts +16 -13
  119. package/src/connection/Simulator/SimulatorConnector.ts +11 -12
  120. package/src/connection/Simulator/SimulatorTransport.ts +6 -1
  121. package/src/connection/WebRTC/NodeWebRtcConnection.ts +14 -13
  122. package/src/connection/WebRTC/WebRtcConnector.ts +31 -31
  123. package/src/connection/WebSocket/RemoteWebSocketConnector.ts +2 -1
  124. package/src/connection/WebSocket/WebSocketConnector.ts +85 -62
  125. package/src/connection/WebSocket/WebSocketServer.ts +26 -8
  126. package/src/dht/DhtNode.ts +164 -189
  127. package/src/dht/{DhtPeer.ts → RemoteDhtNode.ts} +14 -7
  128. package/src/dht/contact/Contact.ts +1 -18
  129. package/src/dht/contact/ContactList.ts +16 -6
  130. package/src/dht/contact/RandomContactList.ts +6 -11
  131. package/src/dht/contact/Remote.ts +1 -10
  132. package/src/dht/contact/SortedContactList.ts +12 -25
  133. package/src/dht/discovery/DiscoverySession.ts +20 -23
  134. package/src/dht/discovery/PeerDiscovery.ts +45 -44
  135. package/src/dht/find/RecursiveFindSession.ts +12 -13
  136. package/src/dht/find/RecursiveFinder.ts +16 -19
  137. package/src/dht/registerExternalApiRpcMethods.ts +1 -1
  138. package/src/dht/routing/DuplicateDetector.ts +3 -10
  139. package/src/dht/routing/RemoteRouter.ts +5 -5
  140. package/src/dht/routing/Router.ts +35 -39
  141. package/src/dht/routing/RoutingSession.ts +37 -28
  142. package/src/dht/store/DataStore.ts +11 -11
  143. package/src/exports.ts +1 -8
  144. package/src/helpers/PeerID.ts +0 -7
  145. package/src/helpers/browser/isBrowserEnvironment.ts +1 -0
  146. package/src/helpers/browser/isBrowserEnvironment_override.ts +3 -0
  147. package/src/helpers/kademliaId.ts +8 -0
  148. package/src/helpers/peerIdFromPeerDescriptor.ts +1 -1
  149. package/src/proto/packages/dht/protos/DhtRpc.ts +1 -6
  150. package/test/benchmark/KademliaCorrectness.test.ts +5 -2
  151. package/test/benchmark/RecursiveFind.test.ts +6 -6
  152. package/test/end-to-end/Layer0-Layer1.test.ts +14 -14
  153. package/test/end-to-end/Layer0WebRTC-Layer1.test.ts +5 -5
  154. package/test/end-to-end/Layer0WebRTC.test.ts +5 -6
  155. package/test/end-to-end/Layer1-Scale-WebRTC.test.ts +13 -8
  156. package/test/end-to-end/Layer1-Scale-WebSocket.test.ts +15 -10
  157. package/test/end-to-end/WebSocketConnectionRequest.test.ts +5 -5
  158. package/test/integration/ConnectionLocking.test.ts +32 -26
  159. package/test/integration/ConnectionManager.test.ts +90 -93
  160. package/test/integration/DhtJoinPeerDiscovery.test.ts +53 -0
  161. package/test/integration/DhtRpc.test.ts +4 -6
  162. package/test/integration/Layer1-scale.test.ts +8 -8
  163. package/test/integration/MigrateData.test.ts +9 -9
  164. package/test/integration/Mock-Layer1-Layer0.test.ts +1 -2
  165. package/test/integration/RecursiveFind.test.ts +5 -5
  166. package/test/integration/{DhtPeer.test.ts → RemoteDhtNode.test.ts} +11 -12
  167. package/test/integration/RemoteRouter.test.ts +5 -6
  168. package/test/integration/RemoteStore.test.ts +4 -5
  169. package/test/integration/RouteMessage.test.ts +7 -9
  170. package/test/integration/RpcErrors.test.ts +25 -10
  171. package/test/integration/ScaleDownDht.test.ts +8 -8
  172. package/test/integration/SimultaneousConnections.test.ts +35 -36
  173. package/test/integration/Store.test.ts +8 -9
  174. package/test/integration/StoreAndDelete.test.ts +11 -11
  175. package/test/integration/StoreOnDhtWithTwoNodes.test.ts +7 -7
  176. package/test/integration/WebRtcConnectionManagement.test.ts +26 -19
  177. package/test/integration/WebRtcConnectorRpc.test.ts +6 -8
  178. package/test/integration/WebSocket.test.ts +4 -2
  179. package/test/integration/WebSocketConnectionManagement.test.ts +30 -17
  180. package/test/integration/WebSocketConnectorRpc.test.ts +2 -3
  181. package/test/unit/DuplicateDetector.test.ts +3 -4
  182. package/test/unit/LocalDataStore.test.ts +6 -8
  183. package/test/unit/RandomContactList.test.ts +25 -74
  184. package/test/unit/RecursiveFinder.test.ts +8 -12
  185. package/test/unit/Router.test.ts +18 -21
  186. package/test/unit/SortedContactList.test.ts +62 -112
  187. package/test/unit/WebSocketConnector.test.ts +64 -0
  188. package/test/unit/WebSocketServer.test.ts +24 -12
  189. package/test/utils/mock/RecursiveFinder.ts +2 -2
  190. package/test/utils/mock/Router.ts +9 -11
  191. package/test/utils/mock/Transport.ts +2 -2
  192. package/test/utils/utils.ts +40 -49
  193. package/dist/src/dht/DhtPeer.js.map +0 -1
  194. package/dist/src/helpers/browser/isBrowser.d.ts +0 -1
  195. package/dist/src/helpers/browser/isBrowser.js +0 -6
  196. package/dist/src/helpers/browser/isBrowser.js.map +0 -1
  197. package/dist/src/helpers/browser/isNodeJS.d.ts +0 -1
  198. package/dist/src/helpers/browser/isNodeJS.js +0 -6
  199. package/dist/src/helpers/browser/isNodeJS.js.map +0 -1
  200. package/src/helpers/browser/isBrowser.ts +0 -1
  201. package/src/helpers/browser/isNodeJS.ts +0 -1
  202. package/test/integration/DhtWithMockConnectionLatencies.test.ts +0 -46
  203. package/test/integration/DhtWithMockConnections.test.ts +0 -46
  204. package/test/integration/DhtWithRealConnectionLatencies.test.ts +0 -47
  205. /package/test/unit/{webrtcReplaceInternalIpWithExternalIp.ts → webrtcReplaceInternalIpWithExternalIp.test.ts} +0 -0
@@ -3,8 +3,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.DhtNode = exports.createPeerDescriptor = exports.DhtNodeConfig = void 0;
7
- const DhtPeer_1 = require("./DhtPeer");
6
+ exports.DhtNode = exports.createPeerDescriptor = void 0;
7
+ const RemoteDhtNode_1 = require("./RemoteDhtNode");
8
8
  const k_bucket_1 = __importDefault(require("k-bucket"));
9
9
  const eventemitter3_1 = require("eventemitter3");
10
10
  const SortedContactList_1 = require("./contact/SortedContactList");
@@ -24,37 +24,12 @@ const PeerDiscovery_1 = require("./discovery/PeerDiscovery");
24
24
  const LocalDataStore_1 = require("./store/LocalDataStore");
25
25
  const registerExternalApiRpcMethods_1 = require("./registerExternalApiRpcMethods");
26
26
  const RemoteExternalApi_1 = require("./RemoteExternalApi");
27
- const exports_1 = require("../exports");
28
- const isNodeJS_1 = require("../helpers/browser/isNodeJS");
27
+ const UUID_1 = require("../helpers/UUID");
28
+ const isBrowserEnvironment_1 = require("../helpers/browser/isBrowserEnvironment");
29
29
  const lodash_1 = require("lodash");
30
- class DhtNodeConfig {
31
- constructor(conf) {
32
- this.serviceId = 'layer0';
33
- this.joinParallelism = 3;
34
- this.maxNeighborListSize = 200;
35
- this.numberOfNodesPerKBucket = 8;
36
- this.joinNoProgressLimit = 4;
37
- this.dhtJoinTimeout = 60000;
38
- this.getClosestContactsLimit = 5;
39
- this.maxConnections = 80;
40
- this.storeHighestTtl = 60000;
41
- this.storeMaxTtl = 60000;
42
- this.storeNumberOfCopies = 5;
43
- this.metricsContext = new utils_1.MetricsContext();
44
- this.peerId = new exports_1.UUID().toHex();
45
- // assign given non-undefined config vars over defaults
46
- let k;
47
- for (k in conf) {
48
- if (conf[k] === undefined) {
49
- delete conf[k];
50
- }
51
- }
52
- Object.assign(this, conf);
53
- }
54
- }
55
- exports.DhtNodeConfig = DhtNodeConfig;
30
+ const ConnectorFacade_1 = require("../connection/ConnectorFacade");
56
31
  const logger = new utils_1.Logger(module);
57
- const createPeerDescriptor = (msg, peerId, nodeName) => {
32
+ const createPeerDescriptor = (msg, peerId) => {
58
33
  let kademliaId;
59
34
  if (msg) {
60
35
  kademliaId = peerId ? (0, utils_1.hexToBinary)(peerId) : PeerID_1.PeerID.fromIp(msg.host).value;
@@ -62,7 +37,8 @@ const createPeerDescriptor = (msg, peerId, nodeName) => {
62
37
  else {
63
38
  kademliaId = (0, utils_1.hexToBinary)(peerId);
64
39
  }
65
- const ret = { kademliaId, nodeName: nodeName ? nodeName : (0, utils_1.binaryToHex)(kademliaId), type: DhtRpc_1.NodeType.NODEJS };
40
+ const nodeType = (0, isBrowserEnvironment_1.isBrowserEnvironment)() ? DhtRpc_1.NodeType.BROWSER : DhtRpc_1.NodeType.NODEJS;
41
+ const ret = { kademliaId, type: nodeType };
66
42
  if (msg && msg.websocket) {
67
43
  ret.websocket = { host: msg.websocket.host, port: msg.websocket.port, tls: msg.websocket.tls };
68
44
  ret.openInternet = true;
@@ -77,8 +53,6 @@ class DhtNode extends eventemitter3_1.EventEmitter {
77
53
  this.localDataStore = new LocalDataStore_1.LocalDataStore();
78
54
  this.started = false;
79
55
  this.stopped = false;
80
- this.contactAddCounter = 0;
81
- this.contactOnAddedCounter = 0;
82
56
  this.initKBuckets = (selfId) => {
83
57
  this.bucket = new k_bucket_1.default({
84
58
  localNodeId: selfId.value,
@@ -88,47 +62,62 @@ class DhtNode extends eventemitter3_1.EventEmitter {
88
62
  this.bucket.on('ping', (oldContacts, newContact) => this.onKBucketPing(oldContacts, newContact));
89
63
  this.bucket.on('removed', (contact) => this.onKBucketRemoved(contact));
90
64
  this.bucket.on('added', (contact) => this.onKBucketAdded(contact));
91
- this.bucket.on('updated', (_oldContact, _newContact) => {
65
+ this.bucket.on('updated', () => {
92
66
  // TODO: Update contact info to the connection manager and reconnect
93
67
  });
94
68
  this.neighborList = new SortedContactList_1.SortedContactList(selfId, this.config.maxNeighborListSize);
95
- this.neighborList.on('contactRemoved', (peerDescriptor, activeContacts) => {
69
+ this.neighborList.on('contactRemoved', (removedContact, activeContacts) => {
96
70
  if (this.stopped) {
97
71
  return;
98
72
  }
99
- this.emit('contactRemoved', peerDescriptor, activeContacts);
100
- this.randomPeers.addContact(new DhtPeer_1.DhtPeer(this.ownPeerDescriptor, peerDescriptor, (0, proto_rpc_1.toProtoRpcClient)(new DhtRpc_client_1.DhtRpcServiceClient(this.rpcCommunicator.getRpcClientTransport())), this.config.serviceId));
73
+ this.emit('contactRemoved', removedContact.getPeerDescriptor(), activeContacts.map((c) => c.getPeerDescriptor()));
74
+ this.randomPeers.addContact(new RemoteDhtNode_1.RemoteDhtNode(this.ownPeerDescriptor, removedContact.getPeerDescriptor(), (0, proto_rpc_1.toProtoRpcClient)(new DhtRpc_client_1.DhtRpcServiceClient(this.rpcCommunicator.getRpcClientTransport())), this.config.serviceId));
101
75
  });
102
- this.neighborList.on('newContact', (peerDescriptor, activeContacts) => this.emit('newContact', peerDescriptor, activeContacts));
76
+ this.neighborList.on('newContact', (newContact, activeContacts) => this.emit('newContact', newContact.getPeerDescriptor(), activeContacts.map((c) => c.getPeerDescriptor())));
103
77
  this.openInternetPeers = new SortedContactList_1.SortedContactList(selfId, this.config.maxNeighborListSize / 2);
104
- this.openInternetPeers.on('contactRemoved', (peerDescriptor, activeContacts) => this.emit('openInternetContactRemoved', peerDescriptor, activeContacts));
105
- this.openInternetPeers.on('newContact', (peerDescriptor, activeContacts) => this.emit('newOpenInternetContact', peerDescriptor, activeContacts));
106
- this.transportLayer.on('connected', (peerDescriptor) => this.onTransportConnected(peerDescriptor));
107
- this.transportLayer.on('disconnected', (peerDescriptor, disonnectionType) => {
78
+ this.openInternetPeers.on('contactRemoved', (removedContact, activeContacts) => this.emit('openInternetContactRemoved', removedContact.getPeerDescriptor(), activeContacts.map((c) => c.getPeerDescriptor())));
79
+ this.openInternetPeers.on('newContact', (newContact, activeContacts) => this.emit('newOpenInternetContact', newContact.getPeerDescriptor(), activeContacts.map((c) => c.getPeerDescriptor())));
80
+ this.transport.on('connected', (peerDescriptor) => this.onTransportConnected(peerDescriptor));
81
+ this.transport.on('disconnected', (peerDescriptor, disonnectionType) => {
108
82
  this.onTransportDisconnected(peerDescriptor, disonnectionType);
109
83
  });
110
- this.transportLayer.getAllConnectionPeerDescriptors().map((peer) => {
111
- const peerId = (0, peerIdFromPeerDescriptor_1.peerIdFromPeerDescriptor)(peer);
112
- const dhtPeer = new DhtPeer_1.DhtPeer(this.ownPeerDescriptor, peer, (0, proto_rpc_1.toProtoRpcClient)(new DhtRpc_client_1.DhtRpcServiceClient(this.rpcCommunicator.getRpcClientTransport())), this.config.serviceId);
113
- if (peerId.equals(this.ownPeerId)) {
84
+ this.transport.getAllConnectionPeerDescriptors().forEach((peer) => {
85
+ const remoteDhtNode = new RemoteDhtNode_1.RemoteDhtNode(this.ownPeerDescriptor, peer, (0, proto_rpc_1.toProtoRpcClient)(new DhtRpc_client_1.DhtRpcServiceClient(this.rpcCommunicator.getRpcClientTransport())), this.config.serviceId);
86
+ if ((0, peerIdFromPeerDescriptor_1.areEqualPeerDescriptors)(peer, this.ownPeerDescriptor)) {
114
87
  logger.error('own peerdescriptor added to connections in initKBucket');
115
88
  }
116
- this.connections.set(peerId.toKey(), dhtPeer);
89
+ this.connections.set((0, peerIdFromPeerDescriptor_1.keyFromPeerDescriptor)(peer), remoteDhtNode);
117
90
  });
118
91
  this.randomPeers = new RandomContactList_1.RandomContactList(selfId, this.config.maxNeighborListSize);
119
- this.randomPeers.on('contactRemoved', (peerDescriptor, activeContacts) => this.emit('randomContactRemoved', peerDescriptor, activeContacts));
120
- this.randomPeers.on('newContact', (peerDescriptor, activeContacts) => this.emit('newRandomContact', peerDescriptor, activeContacts));
92
+ this.randomPeers.on('contactRemoved', (removedContact, activeContacts) => this.emit('randomContactRemoved', removedContact.getPeerDescriptor(), activeContacts.map((c) => c.getPeerDescriptor())));
93
+ this.randomPeers.on('newContact', (newContact, activeContacts) => this.emit('newRandomContact', newContact.getPeerDescriptor(), activeContacts.map((c) => c.getPeerDescriptor())));
121
94
  };
122
95
  this.generatePeerDescriptorCallBack = (connectivityResponse) => {
123
96
  if (this.config.peerDescriptor) {
124
97
  this.ownPeerDescriptor = this.config.peerDescriptor;
125
98
  }
126
99
  else {
127
- this.ownPeerDescriptor = (0, exports.createPeerDescriptor)(connectivityResponse, this.config.peerId, this.config.nodeName);
100
+ this.ownPeerDescriptor = (0, exports.createPeerDescriptor)(connectivityResponse, this.config.peerId);
128
101
  }
129
102
  return this.ownPeerDescriptor;
130
103
  };
131
- this.config = new DhtNodeConfig(conf);
104
+ this.config = {
105
+ serviceId: 'layer0',
106
+ joinParallelism: 3,
107
+ maxNeighborListSize: 200,
108
+ numberOfNodesPerKBucket: 8,
109
+ joinNoProgressLimit: 4,
110
+ dhtJoinTimeout: 60000,
111
+ getClosestContactsLimit: 5,
112
+ maxConnections: 80,
113
+ storeHighestTtl: 60000,
114
+ storeMaxTtl: 60000,
115
+ networkConnectivityTimeout: 10000,
116
+ storeNumberOfCopies: 5,
117
+ metricsContext: new utils_1.MetricsContext(),
118
+ peerId: new UUID_1.UUID().toHex(),
119
+ ...conf // TODO use merge() if we don't want that explicit undefined values override defaults?
120
+ };
132
121
  this.send = this.send.bind(this);
133
122
  }
134
123
  async start() {
@@ -137,62 +126,64 @@ class DhtNode extends eventemitter3_1.EventEmitter {
137
126
  }
138
127
  logger.trace(`Starting new Streamr Network DHT Node with serviceId ${this.config.serviceId}`);
139
128
  this.started = true;
140
- if (!(0, isNodeJS_1.isNodeJS)()) {
129
+ if ((0, isBrowserEnvironment_1.isBrowserEnvironment)()) {
141
130
  this.config.websocketPortRange = undefined;
142
131
  if (this.config.peerDescriptor) {
143
132
  this.config.peerDescriptor.websocket = undefined;
144
133
  }
145
134
  }
146
- // If transportLayer is given, do not create a ConnectionManager
147
- if (this.config.transportLayer) {
148
- this.transportLayer = this.config.transportLayer;
149
- this.ownPeerDescriptor = this.transportLayer.getPeerDescriptor();
150
- if (this.config.transportLayer instanceof ConnectionManager_1.ConnectionManager) {
151
- this.connectionManager = this.config.transportLayer;
135
+ // If transport is given, do not create a ConnectionManager
136
+ if (this.config.transport) {
137
+ this.transport = this.config.transport;
138
+ this.ownPeerDescriptor = this.transport.getPeerDescriptor();
139
+ if (this.config.transport instanceof ConnectionManager_1.ConnectionManager) {
140
+ this.connectionManager = this.config.transport;
152
141
  }
153
142
  }
154
143
  else {
155
- const connectionManagerConfig = {
156
- transportLayer: this,
144
+ const connectorFacadeConfig = {
145
+ transport: this,
157
146
  entryPoints: this.config.entryPoints,
158
147
  iceServers: this.config.iceServers,
159
- metricsContext: this.config.metricsContext,
160
148
  webrtcAllowPrivateAddresses: this.config.webrtcAllowPrivateAddresses,
161
149
  webrtcDatachannelBufferThresholdLow: this.config.webrtcDatachannelBufferThresholdLow,
162
150
  webrtcDatachannelBufferThresholdHigh: this.config.webrtcDatachannelBufferThresholdHigh,
163
151
  webrtcNewConnectionTimeout: this.config.webrtcNewConnectionTimeout,
164
152
  webrtcPortRange: this.config.webrtcPortRange,
165
- maxConnections: this.config.maxConnections,
153
+ maxMessageSize: this.config.maxMessageSize,
166
154
  tlsCertificate: this.config.tlsCertificate,
167
- externalIp: this.config.externalIp
155
+ externalIp: this.config.externalIp,
156
+ createOwnPeerDescriptor: (connectivityResponse) => this.generatePeerDescriptorCallBack(connectivityResponse),
168
157
  };
169
158
  // If own PeerDescriptor is given in config, create a ConnectionManager with ws server
170
159
  if (this.config.peerDescriptor?.websocket) {
171
- connectionManagerConfig.websocketHost = this.config.peerDescriptor.websocket.host;
172
- connectionManagerConfig.websocketPortRange = {
160
+ connectorFacadeConfig.websocketHost = this.config.peerDescriptor.websocket.host;
161
+ connectorFacadeConfig.websocketPortRange = {
173
162
  min: this.config.peerDescriptor.websocket.port,
174
163
  max: this.config.peerDescriptor.websocket.port
175
164
  };
176
165
  // If websocketPortRange is given, create ws server using it, websocketHost can be undefined
177
166
  }
178
167
  else if (this.config.websocketPortRange) {
179
- connectionManagerConfig.websocketHost = this.config.websocketHost;
180
- connectionManagerConfig.websocketPortRange = this.config.websocketPortRange;
168
+ connectorFacadeConfig.websocketHost = this.config.websocketHost;
169
+ connectorFacadeConfig.websocketPortRange = this.config.websocketPortRange;
181
170
  }
182
- const connectionManager = new ConnectionManager_1.ConnectionManager(connectionManagerConfig);
183
- await connectionManager.start(this.generatePeerDescriptorCallBack);
171
+ const connectionManager = new ConnectionManager_1.ConnectionManager({
172
+ createConnectorFacade: () => new ConnectorFacade_1.DefaultConnectorFacade(connectorFacadeConfig),
173
+ maxConnections: this.config.maxConnections,
174
+ metricsContext: this.config.metricsContext
175
+ });
176
+ await connectionManager.start();
184
177
  this.connectionManager = connectionManager;
185
- this.transportLayer = connectionManager;
178
+ this.transport = connectionManager;
186
179
  }
187
- this.rpcCommunicator = new RoutingRpcCommunicator_1.RoutingRpcCommunicator(this.config.serviceId, this.transportLayer.send, { rpcRequestTimeout: this.config.rpcRequestTimeout });
188
- this.transportLayer.on('message', (message) => this.handleMessage(message));
180
+ this.rpcCommunicator = new RoutingRpcCommunicator_1.RoutingRpcCommunicator(this.config.serviceId, this.transport.send, { rpcRequestTimeout: this.config.rpcRequestTimeout });
181
+ this.transport.on('message', (message) => this.handleMessage(message));
189
182
  this.bindDefaultServerMethods();
190
- this.ownPeerId = (0, peerIdFromPeerDescriptor_1.peerIdFromPeerDescriptor)(this.ownPeerDescriptor);
191
- this.initKBuckets(this.ownPeerId);
183
+ this.initKBuckets((0, peerIdFromPeerDescriptor_1.peerIdFromPeerDescriptor)(this.ownPeerDescriptor));
192
184
  this.peerDiscovery = new PeerDiscovery_1.PeerDiscovery({
193
185
  rpcCommunicator: this.rpcCommunicator,
194
186
  ownPeerDescriptor: this.ownPeerDescriptor,
195
- ownPeerId: this.ownPeerId,
196
187
  bucket: this.bucket,
197
188
  connections: this.connections,
198
189
  neighborList: this.neighborList,
@@ -210,7 +201,6 @@ class DhtNode extends eventemitter3_1.EventEmitter {
210
201
  rpcCommunicator: this.rpcCommunicator,
211
202
  connections: this.connections,
212
203
  ownPeerDescriptor: this.ownPeerDescriptor,
213
- ownPeerId: this.ownPeerId,
214
204
  addContact: this.addNewContact.bind(this),
215
205
  serviceId: this.config.serviceId,
216
206
  connectionManager: this.connectionManager
@@ -222,7 +212,6 @@ class DhtNode extends eventemitter3_1.EventEmitter {
222
212
  connections: this.connections,
223
213
  ownPeerDescriptor: this.ownPeerDescriptor,
224
214
  serviceId: this.config.serviceId,
225
- ownPeerId: this.ownPeerId,
226
215
  addContact: this.addNewContact.bind(this),
227
216
  isPeerCloserToIdThanSelf: this.isPeerCloserToIdThanSelf.bind(this),
228
217
  localDataStore: this.localDataStore
@@ -243,39 +232,37 @@ class DhtNode extends eventemitter3_1.EventEmitter {
243
232
  });
244
233
  (0, registerExternalApiRpcMethods_1.registerExternalApiRpcMethods)(this);
245
234
  if (this.connectionManager && this.config.entryPoints && this.config.entryPoints.length > 0
246
- && !(0, peerIdFromPeerDescriptor_1.isSamePeerDescriptor)(this.config.entryPoints[0], this.ownPeerDescriptor)) {
235
+ && !(0, peerIdFromPeerDescriptor_1.areEqualPeerDescriptors)(this.config.entryPoints[0], this.ownPeerDescriptor)) {
247
236
  this.connectToEntryPoint(this.config.entryPoints[0]);
248
237
  }
249
238
  }
250
239
  onTransportConnected(peerDescriptor) {
251
- if (this.ownPeerId.equals(PeerID_1.PeerID.fromValue(peerDescriptor.kademliaId))) {
240
+ if ((0, peerIdFromPeerDescriptor_1.areEqualPeerDescriptors)(this.ownPeerDescriptor, peerDescriptor)) {
252
241
  logger.error('onTransportConnected() to self');
253
242
  }
254
- const dhtPeer = new DhtPeer_1.DhtPeer(this.ownPeerDescriptor, peerDescriptor, (0, proto_rpc_1.toProtoRpcClient)(new DhtRpc_client_1.DhtRpcServiceClient(this.rpcCommunicator.getRpcClientTransport())), this.config.serviceId);
255
- if (!this.connections.has(PeerID_1.PeerID.fromValue(dhtPeer.id).toKey())) {
256
- this.connections.set(PeerID_1.PeerID.fromValue(dhtPeer.id).toKey(), dhtPeer);
257
- logger.trace(' ' + this.config.nodeName + ' connectionschange add ' + this.connections.size);
243
+ const remoteDhtNode = new RemoteDhtNode_1.RemoteDhtNode(this.ownPeerDescriptor, peerDescriptor, (0, proto_rpc_1.toProtoRpcClient)(new DhtRpc_client_1.DhtRpcServiceClient(this.rpcCommunicator.getRpcClientTransport())), this.config.serviceId);
244
+ if (!this.connections.has(PeerID_1.PeerID.fromValue(remoteDhtNode.id).toKey())) {
245
+ this.connections.set(PeerID_1.PeerID.fromValue(remoteDhtNode.id).toKey(), remoteDhtNode);
246
+ logger.trace('connectionschange add ' + this.connections.size);
258
247
  }
259
248
  else {
260
249
  logger.trace('new connection not set to connections, there is already a connection with the peer ID');
261
250
  }
262
- if (this.ownPeerDescriptor.nodeName === 'entrypoint') {
263
- logger.trace('connected: ' + this.ownPeerDescriptor.nodeName + ', ' + peerDescriptor.nodeName + ' ' + this.connections.size);
264
- }
251
+ logger.trace('connected: ' + (0, peerIdFromPeerDescriptor_1.keyFromPeerDescriptor)(peerDescriptor) + ' ' + this.connections.size);
265
252
  this.emit('connected', peerDescriptor);
266
253
  }
267
254
  onTransportDisconnected(peerDescriptor, dicsonnectionType) {
268
- logger.trace('disconnected: ' + this.config.nodeName + ', ' + peerDescriptor.nodeName + ' ');
255
+ logger.trace('disconnected: ' + (0, peerIdFromPeerDescriptor_1.keyFromPeerDescriptor)(peerDescriptor));
269
256
  this.connections.delete((0, peerIdFromPeerDescriptor_1.keyFromPeerDescriptor)(peerDescriptor));
270
257
  // only remove from bucket if we are on layer 0
271
258
  if (this.connectionManager) {
272
259
  this.bucket.remove(peerDescriptor.kademliaId);
273
260
  if (dicsonnectionType === 'OUTGOING_GRACEFUL_LEAVE' || dicsonnectionType === 'INCOMING_GRACEFUL_LEAVE') {
274
- logger.trace(this.config.nodeName + ', ' + peerDescriptor.nodeName + ' ' + 'onTransportDisconnected with type ' + dicsonnectionType);
261
+ logger.trace((0, peerIdFromPeerDescriptor_1.keyFromPeerDescriptor)(peerDescriptor) + ' ' + 'onTransportDisconnected with type ' + dicsonnectionType);
275
262
  this.removeContact(peerDescriptor, true);
276
263
  }
277
264
  else {
278
- logger.trace(this.config.nodeName + ', ' + peerDescriptor.nodeName + ' ' + 'onTransportDisconnected with type ' + dicsonnectionType);
265
+ logger.trace((0, peerIdFromPeerDescriptor_1.keyFromPeerDescriptor)(peerDescriptor) + ' ' + 'onTransportDisconnected with type ' + dicsonnectionType);
279
266
  }
280
267
  }
281
268
  this.emit('disconnected', peerDescriptor, dicsonnectionType);
@@ -296,25 +283,24 @@ class DhtNode extends eventemitter3_1.EventEmitter {
296
283
  }
297
284
  handleMessage(message) {
298
285
  if (message.serviceId === this.config.serviceId) {
299
- logger.trace('callig this.handleMessageFromPeer ' + this.config.nodeName + ', ' +
300
- message.sourceDescriptor?.nodeName + ' ' + message.serviceId + ' ' + message.messageId);
286
+ logger.trace('callig this.handleMessageFromPeer ' + (0, peerIdFromPeerDescriptor_1.keyFromPeerDescriptor)(message.sourceDescriptor)
287
+ + ' ' + message.serviceId + ' ' + message.messageId);
301
288
  this.rpcCommunicator?.handleMessageFromPeer(message);
302
289
  }
303
290
  else {
304
- logger.trace('emit "message" ' + this.config.nodeName + ', ' + message.sourceDescriptor?.nodeName +
305
- ' ' + message.serviceId + ' ' + message.messageId);
291
+ logger.trace('emit "message" ' + (0, peerIdFromPeerDescriptor_1.keyFromPeerDescriptor)(message.sourceDescriptor) + ' ' + message.serviceId + ' ' + message.messageId);
306
292
  this.emit('message', message);
307
293
  }
308
294
  }
309
295
  getClosestPeerDescriptors(kademliaId, limit) {
310
296
  const closestPeers = this.bucket.closest(kademliaId, limit);
311
- return closestPeers.map((dhtPeer) => dhtPeer.getPeerDescriptor());
297
+ return closestPeers.map((remoteDhtNode) => remoteDhtNode.getPeerDescriptor());
312
298
  }
313
299
  onKBucketPing(oldContacts, newContact) {
314
300
  if (this.stopped) {
315
301
  return;
316
302
  }
317
- const sortingList = new SortedContactList_1.SortedContactList(this.ownPeerId, 100);
303
+ const sortingList = new SortedContactList_1.SortedContactList(this.getNodeId(), 100);
318
304
  sortingList.addContacts(oldContacts);
319
305
  const sortedContacts = sortingList.getAllContacts();
320
306
  this.connectionManager?.weakUnlockConnection(sortedContacts[sortedContacts.length - 1].getPeerDescriptor());
@@ -326,7 +312,7 @@ class DhtNode extends eventemitter3_1.EventEmitter {
326
312
  return;
327
313
  }
328
314
  this.connectionManager?.weakUnlockConnection(contact.getPeerDescriptor());
329
- logger.trace(`Removed contact ${contact.getPeerId().value.toString()}`);
315
+ logger.trace(`Removed contact ${(0, peerIdFromPeerDescriptor_1.keyFromPeerDescriptor)(contact.getPeerDescriptor())}`);
330
316
  this.emit('kbucketContactRemoved', contact.getPeerDescriptor());
331
317
  if (this.bucket.count() === 0
332
318
  && !this.peerDiscovery.isJoinOngoing()
@@ -341,23 +327,22 @@ class DhtNode extends eventemitter3_1.EventEmitter {
341
327
  if (this.stopped) {
342
328
  return;
343
329
  }
344
- this.contactOnAddedCounter++;
345
- if (!this.stopped && !contact.getPeerId().equals(this.ownPeerId)) {
330
+ if (!this.stopped && !contact.getPeerId().equals(this.getNodeId())) {
346
331
  // Important to lock here, before the ping result is known
347
332
  this.connectionManager?.weakLockConnection(contact.getPeerDescriptor());
348
333
  if (this.connections.has(contact.getPeerId().toKey())) {
349
- logger.trace(`Added new contact ${contact.getPeerId().value.toString()}`);
334
+ logger.trace(`Added new contact ${(0, peerIdFromPeerDescriptor_1.keyFromPeerDescriptor)(contact.getPeerDescriptor())}`);
350
335
  this.emit('newKbucketContact', contact.getPeerDescriptor(), this.neighborList.getClosestContacts(this.config.getClosestContactsLimit).map((peer) => peer.getPeerDescriptor()));
351
336
  }
352
337
  else { // open connection by pinging
353
- logger.trace('starting ping ' + this.config.nodeName + ', ' + contact.getPeerDescriptor().nodeName + ' ');
338
+ logger.trace('starting ping ' + (0, peerIdFromPeerDescriptor_1.keyFromPeerDescriptor)(contact.getPeerDescriptor()));
354
339
  contact.ping().then((result) => {
355
340
  if (result) {
356
- logger.trace(`Added new contact ${contact.getPeerId().value.toString()}`);
341
+ logger.trace(`Added new contact ${(0, peerIdFromPeerDescriptor_1.keyFromPeerDescriptor)(contact.getPeerDescriptor())}`);
357
342
  this.emit('newKbucketContact', contact.getPeerDescriptor(), this.neighborList.getClosestContacts(this.config.getClosestContactsLimit).map((peer) => peer.getPeerDescriptor()));
358
343
  }
359
344
  else {
360
- logger.trace('ping failed ' + this.config.nodeName + ', ' + contact.getPeerDescriptor().nodeName + ' ');
345
+ logger.trace('ping failed ' + (0, peerIdFromPeerDescriptor_1.keyFromPeerDescriptor)(contact.getPeerDescriptor()));
361
346
  this.connectionManager?.weakUnlockConnection(contact.getPeerDescriptor());
362
347
  this.removeContact(contact.getPeerDescriptor());
363
348
  this.addClosestContactToBucket();
@@ -388,11 +373,11 @@ class DhtNode extends eventemitter3_1.EventEmitter {
388
373
  }
389
374
  return undefined;
390
375
  }
391
- getNeighborList() {
392
- return this.neighborList;
376
+ getClosestContacts(maxCount) {
377
+ return this.neighborList.getClosestContacts(maxCount).map((c) => c.getPeerDescriptor());
393
378
  }
394
379
  getNodeId() {
395
- return this.ownPeerId;
380
+ return (0, peerIdFromPeerDescriptor_1.peerIdFromPeerDescriptor)(this.ownPeerDescriptor);
396
381
  }
397
382
  getBucketSize() {
398
383
  return this.bucket.count();
@@ -401,24 +386,23 @@ class DhtNode extends eventemitter3_1.EventEmitter {
401
386
  if (!this.started || this.stopped) {
402
387
  return;
403
388
  }
404
- const peerId = (0, peerIdFromPeerDescriptor_1.peerIdFromPeerDescriptor)(contact);
405
- if (!peerId.equals(this.ownPeerId)) {
406
- logger.trace(`Adding new contact ${contact.kademliaId.toString()}`);
407
- const dhtPeer = new DhtPeer_1.DhtPeer(this.ownPeerDescriptor, contact, (0, proto_rpc_1.toProtoRpcClient)(new DhtRpc_client_1.DhtRpcServiceClient(this.rpcCommunicator.getRpcClientTransport())), this.config.serviceId);
389
+ if (!(0, peerIdFromPeerDescriptor_1.areEqualPeerDescriptors)(contact, this.ownPeerDescriptor)) {
390
+ logger.trace(`Adding new contact ${(0, peerIdFromPeerDescriptor_1.keyFromPeerDescriptor)(contact)}`);
391
+ const remoteDhtNode = new RemoteDhtNode_1.RemoteDhtNode(this.ownPeerDescriptor, contact, (0, proto_rpc_1.toProtoRpcClient)(new DhtRpc_client_1.DhtRpcServiceClient(this.rpcCommunicator.getRpcClientTransport())), this.config.serviceId);
408
392
  if (!this.bucket.get(contact.kademliaId) && !this.neighborList.getContact((0, peerIdFromPeerDescriptor_1.peerIdFromPeerDescriptor)(contact))) {
409
- this.neighborList.addContact(dhtPeer);
393
+ this.neighborList.addContact(remoteDhtNode);
410
394
  if (contact.openInternet) {
411
- this.openInternetPeers.addContact(dhtPeer);
395
+ this.openInternetPeers.addContact(remoteDhtNode);
412
396
  }
413
397
  if (setActive) {
398
+ const peerId = (0, peerIdFromPeerDescriptor_1.peerIdFromPeerDescriptor)(contact);
414
399
  this.neighborList.setActive(peerId);
415
400
  this.openInternetPeers.setActive(peerId);
416
401
  }
417
- this.contactAddCounter++;
418
- this.bucket.add(dhtPeer);
402
+ this.bucket.add(remoteDhtNode);
419
403
  }
420
404
  else {
421
- this.randomPeers.addContact(dhtPeer);
405
+ this.randomPeers.addContact(remoteDhtNode);
422
406
  }
423
407
  }
424
408
  }
@@ -432,7 +416,7 @@ class DhtNode extends eventemitter3_1.EventEmitter {
432
416
  if (!this.started || this.stopped) {
433
417
  return;
434
418
  }
435
- logger.trace(`Removing contact ${contact.kademliaId.toString()}`);
419
+ logger.trace(`Removing contact ${(0, peerIdFromPeerDescriptor_1.keyFromPeerDescriptor)(contact)}`);
436
420
  const peerId = (0, peerIdFromPeerDescriptor_1.peerIdFromPeerDescriptor)(contact);
437
421
  this.bucket.remove(peerId.value);
438
422
  this.neighborList.removeContact(peerId);
@@ -441,24 +425,24 @@ class DhtNode extends eventemitter3_1.EventEmitter {
441
425
  this.openInternetPeers.removeContact(peerId);
442
426
  }
443
427
  }
444
- async send(msg, _doNotConnect) {
428
+ async send(msg) {
445
429
  if (!this.started || this.stopped) {
446
430
  return;
447
431
  }
448
432
  const reachableThrough = this.peerDiscovery.isJoinOngoing() ? this.config.entryPoints || [] : [];
449
433
  await this.router.send(msg, reachableThrough);
450
434
  }
451
- async joinDht(entryPointDescriptors, doRandomJoin, retry) {
435
+ async joinDht(entryPointDescriptors, doAdditionalRandomPeerDiscovery, retry) {
452
436
  if (!this.started) {
453
437
  throw new Error('Cannot join DHT before calling start() on DhtNode');
454
438
  }
455
- await Promise.all(entryPointDescriptors.map((entryPoint) => this.peerDiscovery.joinDht(entryPoint, doRandomJoin, retry)));
439
+ await Promise.all(entryPointDescriptors.map((entryPoint) => this.peerDiscovery.joinDht(entryPoint, doAdditionalRandomPeerDiscovery, retry)));
456
440
  }
457
441
  async startRecursiveFind(idToFind, findMode, excludedPeer) {
458
442
  return this.recursiveFinder.startRecursiveFind(idToFind, findMode, excludedPeer);
459
443
  }
460
444
  async storeDataToDht(key, data) {
461
- if (this.isJoinOngoing() && this.config.entryPoints && this.config.entryPoints.length > 0) {
445
+ if (this.peerDiscovery.isJoinOngoing() && this.config.entryPoints && this.config.entryPoints.length > 0) {
462
446
  return this.storeDataViaPeer(key, data, (0, lodash_1.sample)(this.config.entryPoints));
463
447
  }
464
448
  return this.dataStore.storeDataToDht(key, data);
@@ -468,7 +452,11 @@ class DhtNode extends eventemitter3_1.EventEmitter {
468
452
  return await target.storeData(key, data);
469
453
  }
470
454
  async getDataFromDht(idToFind) {
471
- return this.recursiveFinder.startRecursiveFind(idToFind, DhtRpc_1.FindMode.DATA);
455
+ if (this.peerDiscovery.isJoinOngoing() && this.config.entryPoints && this.config.entryPoints.length > 0) {
456
+ return this.findDataViaPeer(idToFind, (0, lodash_1.sample)(this.config.entryPoints));
457
+ }
458
+ const result = await this.recursiveFinder.startRecursiveFind(idToFind, DhtRpc_1.FindMode.DATA);
459
+ return result.dataEntries ?? [];
472
460
  }
473
461
  async deleteDataFromDht(idToDelete) {
474
462
  if (!this.stopped) {
@@ -483,7 +471,7 @@ class DhtNode extends eventemitter3_1.EventEmitter {
483
471
  return this.rpcCommunicator;
484
472
  }
485
473
  getTransport() {
486
- return this.transportLayer;
474
+ return this.transport;
487
475
  }
488
476
  getPeerDescriptor() {
489
477
  return this.ownPeerDescriptor;
@@ -491,14 +479,8 @@ class DhtNode extends eventemitter3_1.EventEmitter {
491
479
  getAllConnectionPeerDescriptors() {
492
480
  return Array.from(this.connections.values()).map((peer) => peer.getPeerDescriptor());
493
481
  }
494
- getK() {
495
- return this.config.numberOfNodesPerKBucket;
496
- }
497
482
  getKBucketPeers() {
498
- return this.bucket.toArray().map((dhtPeer) => dhtPeer.getPeerDescriptor());
499
- }
500
- getOpenInternetPeerDescriptors() {
501
- return this.openInternetPeers.getAllContacts().map((contact) => contact.getPeerDescriptor());
483
+ return this.bucket.toArray().map((remoteDhtNode) => remoteDhtNode.getPeerDescriptor());
502
484
  }
503
485
  getNumberOfConnections() {
504
486
  return this.connections.size;
@@ -512,15 +494,12 @@ class DhtNode extends eventemitter3_1.EventEmitter {
512
494
  getNumberOfWeakLockedConnections() {
513
495
  return this.connectionManager.getNumberOfWeakLockedConnections();
514
496
  }
515
- isJoinOngoing() {
516
- return this.peerDiscovery.isJoinOngoing();
497
+ async waitForNetworkConnectivity() {
498
+ await (0, utils_1.waitForCondition)(() => this.connections.size > 0, this.config.networkConnectivityTimeout);
517
499
  }
518
500
  hasJoined() {
519
501
  return this.peerDiscovery.isJoinCalled();
520
502
  }
521
- getKnownEntryPoints() {
522
- return this.config.entryPoints || [];
523
- }
524
503
  async stop() {
525
504
  if (this.stopped || !this.started) {
526
505
  return;
@@ -530,7 +509,7 @@ class DhtNode extends eventemitter3_1.EventEmitter {
530
509
  if (this.entryPointDisconnectTimeout) {
531
510
  clearTimeout(this.entryPointDisconnectTimeout);
532
511
  }
533
- this.bucket.toArray().map((dhtPeer) => this.bucket.remove(dhtPeer.id));
512
+ this.bucket.toArray().forEach((remoteDhtNode) => this.bucket.remove(remoteDhtNode.id));
534
513
  this.bucket.removeAllListeners();
535
514
  this.localDataStore.clear();
536
515
  this.neighborList.stop();
@@ -543,7 +522,7 @@ class DhtNode extends eventemitter3_1.EventEmitter {
543
522
  if (this.connectionManager) {
544
523
  await this.connectionManager.stop();
545
524
  }
546
- this.transportLayer = undefined;
525
+ this.transport = undefined;
547
526
  this.connectionManager = undefined;
548
527
  this.connections.clear();
549
528
  this.removeAllListeners();
@@ -559,7 +538,7 @@ class DhtNode extends eventemitter3_1.EventEmitter {
559
538
  }
560
539
  // IDHTRpcService implementation
561
540
  async ping(request, context) {
562
- logger.trace('received ping request: ' + this.config.nodeName + ', ' + context.incomingSourceDescriptor?.nodeName);
541
+ logger.trace('received ping request: ' + (0, peerIdFromPeerDescriptor_1.keyFromPeerDescriptor)(context.incomingSourceDescriptor));
563
542
  setImmediate(() => {
564
543
  this.addNewContact(context.incomingSourceDescriptor);
565
544
  });