@streamr/dht 100.0.0-testnet-three.2 → 100.0.0-testnet-three.4

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 (64) hide show
  1. package/README.md +90 -8
  2. package/dist/package.json +5 -5
  3. package/dist/src/connection/ConnectionManager.js +10 -2
  4. package/dist/src/connection/ConnectionManager.js.map +1 -1
  5. package/dist/src/connection/connectivityRequestHandler.d.ts +1 -0
  6. package/dist/src/connection/connectivityRequestHandler.js +39 -22
  7. package/dist/src/connection/connectivityRequestHandler.js.map +1 -1
  8. package/dist/src/connection/websocket/WebsocketConnector.js +32 -37
  9. package/dist/src/connection/websocket/WebsocketConnector.js.map +1 -1
  10. package/dist/src/dht/DhtNode.d.ts +2 -2
  11. package/dist/src/dht/DhtNode.js +16 -11
  12. package/dist/src/dht/DhtNode.js.map +1 -1
  13. package/dist/src/dht/DhtNodeRpcLocal.d.ts +1 -1
  14. package/dist/src/dht/DhtNodeRpcLocal.js +2 -2
  15. package/dist/src/dht/DhtNodeRpcLocal.js.map +1 -1
  16. package/dist/src/dht/PeerManager.d.ts +7 -9
  17. package/dist/src/dht/PeerManager.js +7 -14
  18. package/dist/src/dht/PeerManager.js.map +1 -1
  19. package/dist/src/dht/contact/ContactList.d.ts +1 -1
  20. package/dist/src/dht/contact/RandomContactList.js +1 -1
  21. package/dist/src/dht/contact/RandomContactList.js.map +1 -1
  22. package/dist/src/dht/contact/SortedContactList.js +14 -15
  23. package/dist/src/dht/contact/SortedContactList.js.map +1 -1
  24. package/dist/src/dht/discovery/DiscoverySession.d.ts +1 -1
  25. package/dist/src/dht/discovery/DiscoverySession.js +5 -5
  26. package/dist/src/dht/discovery/DiscoverySession.js.map +1 -1
  27. package/dist/src/dht/discovery/PeerDiscovery.js +2 -2
  28. package/dist/src/dht/discovery/PeerDiscovery.js.map +1 -1
  29. package/dist/src/dht/recursive-operation/RecursiveOperationRpcLocal.js +0 -1
  30. package/dist/src/dht/recursive-operation/RecursiveOperationRpcLocal.js.map +1 -1
  31. package/dist/src/dht/routing/RouterRpcLocal.js +2 -3
  32. package/dist/src/dht/routing/RouterRpcLocal.js.map +1 -1
  33. package/dist/src/dht/routing/RoutingSession.js +2 -1
  34. package/dist/src/dht/routing/RoutingSession.js.map +1 -1
  35. package/dist/src/dht/store/LocalDataStore.d.ts +1 -1
  36. package/dist/src/dht/store/LocalDataStore.js +2 -5
  37. package/dist/src/dht/store/LocalDataStore.js.map +1 -1
  38. package/dist/src/dht/store/StoreManager.d.ts +1 -1
  39. package/dist/src/dht/store/StoreManager.js +10 -17
  40. package/dist/src/dht/store/StoreManager.js.map +1 -1
  41. package/package.json +5 -5
  42. package/src/connection/ConnectionManager.ts +9 -2
  43. package/src/connection/connectivityRequestHandler.ts +39 -22
  44. package/src/connection/websocket/WebsocketConnector.ts +33 -37
  45. package/src/dht/DhtNode.ts +20 -15
  46. package/src/dht/DhtNodeRpcLocal.ts +3 -3
  47. package/src/dht/PeerManager.ts +12 -21
  48. package/src/dht/contact/ContactList.ts +1 -1
  49. package/src/dht/contact/RandomContactList.ts +1 -1
  50. package/src/dht/contact/SortedContactList.ts +14 -18
  51. package/src/dht/discovery/DiscoverySession.ts +5 -5
  52. package/src/dht/discovery/PeerDiscovery.ts +2 -2
  53. package/src/dht/recursive-operation/RecursiveOperationRpcLocal.ts +0 -1
  54. package/src/dht/routing/RouterRpcLocal.ts +2 -3
  55. package/src/dht/routing/RoutingSession.ts +2 -1
  56. package/src/dht/store/LocalDataStore.ts +2 -5
  57. package/src/dht/store/StoreManager.ts +10 -17
  58. package/test/end-to-end/Layer0Webrtc-Layer1.test.ts +8 -4
  59. package/test/end-to-end/Layer0Webrtc.test.ts +0 -2
  60. package/test/end-to-end/memory-leak.test.ts +3 -3
  61. package/test/unit/PeerManager.test.ts +1 -1
  62. package/test/unit/SortedContactList.test.ts +5 -5
  63. package/test/unit/StoreManager.test.ts +26 -23
  64. package/test/unit/connectivityRequestHandler.test.ts +39 -6
@@ -1 +1 @@
1
- {"version":3,"file":"RoutingSession.js","sourceRoot":"","sources":["../../../../src/dht/routing/RoutingSession.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RoutingSession.js","sourceRoot":"","sources":["../../../../src/dht/routing/RoutingSession.ts"],"names":[],"mappings":"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"}
@@ -7,7 +7,7 @@ export declare class LocalDataStore {
7
7
  storeEntry(dataEntry: DataEntry): boolean;
8
8
  markAsDeleted(key: DhtAddress, creator: DhtAddress): boolean;
9
9
  values(key?: DhtAddress): IterableIterator<DataEntry>;
10
- setStale(key: DhtAddress, creator: DhtAddress, stale: boolean): void;
10
+ keys(): IterableIterator<DhtAddress>;
11
11
  setAllEntriesAsStale(key: DhtAddress): void;
12
12
  deleteEntry(key: DhtAddress, creator: DhtAddress): void;
13
13
  clear(): void;
@@ -52,11 +52,8 @@ class LocalDataStore {
52
52
  }
53
53
  }
54
54
  }
55
- setStale(key, creator, stale) {
56
- const storedEntry = this.store.get(key)?.get(creator);
57
- if (storedEntry) {
58
- storedEntry.stale = stale;
59
- }
55
+ keys() {
56
+ return this.store.keys();
60
57
  }
61
58
  setAllEntriesAsStale(key) {
62
59
  this.store.get(key)?.forEach((value) => {
@@ -1 +1 @@
1
- {"version":3,"file":"LocalDataStore.js","sourceRoot":"","sources":["../../../../src/dht/store/LocalDataStore.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LocalDataStore.js","sourceRoot":"","sources":["../../../../src/dht/store/LocalDataStore.ts"],"names":[],"mappings":"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"}
@@ -21,7 +21,7 @@ export declare class StoreManager {
21
21
  private readonly config;
22
22
  constructor(config: StoreManagerConfig);
23
23
  private registerLocalRpcMethods;
24
- onNewContact(peerDescriptor: PeerDescriptor): void;
24
+ onContactAdded(peerDescriptor: PeerDescriptor): void;
25
25
  private replicateAndUpdateStaleState;
26
26
  private replicateDataToContact;
27
27
  storeDataToDht(key: DhtAddress, data: Any, creator: DhtAddress): Promise<PeerDescriptor[]>;
@@ -6,7 +6,6 @@ const utils_1 = require("@streamr/utils");
6
6
  const timestamp_1 = require("../../proto/google/protobuf/timestamp");
7
7
  const SortedContactList_1 = require("../contact/SortedContactList");
8
8
  const Contact_1 = require("../contact/Contact");
9
- const lodash_1 = require("lodash");
10
9
  const identifiers_1 = require("../../identifiers");
11
10
  const StoreRpcLocal_1 = require("./StoreRpcLocal");
12
11
  const PeerManager_1 = require("../PeerManager");
@@ -26,19 +25,17 @@ class StoreManager {
26
25
  this.config.rpcCommunicator.registerRpcMethod(DhtRpc_1.StoreDataRequest, DhtRpc_1.StoreDataResponse, 'storeData', (request) => rpcLocal.storeData(request));
27
26
  this.config.rpcCommunicator.registerRpcNotification(DhtRpc_1.ReplicateDataRequest, 'replicateData', (request, context) => rpcLocal.replicateData(request, context));
28
27
  }
29
- onNewContact(peerDescriptor) {
30
- for (const dataEntry of this.config.localDataStore.values()) {
31
- this.replicateAndUpdateStaleState(dataEntry, peerDescriptor);
28
+ onContactAdded(peerDescriptor) {
29
+ for (const key of this.config.localDataStore.keys()) {
30
+ this.replicateAndUpdateStaleState(key, peerDescriptor);
32
31
  }
33
32
  }
34
- replicateAndUpdateStaleState(dataEntry, newNode) {
33
+ replicateAndUpdateStaleState(key, newNode) {
35
34
  const newNodeId = (0, identifiers_1.getNodeIdFromPeerDescriptor)(newNode);
36
- const key = (0, identifiers_1.getDhtAddressFromRaw)(dataEntry.key);
37
- // TODO use config option or named constant?
38
- const closestToData = this.config.getClosestNeighborsTo(key, 10);
35
+ const closestToData = this.config.getClosestNeighborsTo(key, this.config.redundancyFactor);
39
36
  const sortedList = new SortedContactList_1.SortedContactList({
40
37
  referenceId: key,
41
- maxSize: 20, // TODO use config option or named constant?
38
+ maxSize: this.config.redundancyFactor,
42
39
  allowToContainReferenceId: true,
43
40
  emitEvents: false
44
41
  });
@@ -51,19 +48,15 @@ class StoreManager {
51
48
  const selfIsPrimaryStorer = (sortedList.getClosestContactId() === (0, identifiers_1.getNodeIdFromPeerDescriptor)(this.config.localPeerDescriptor));
52
49
  if (selfIsPrimaryStorer) {
53
50
  sortedList.addContact(new Contact_1.Contact(newNode));
54
- const sorted = sortedList.getContactIds();
55
- // findIndex should never return -1 here because we just added the new node to the list
56
- const index = (0, lodash_1.findIndex)(sorted, (nodeId) => (nodeId === newNodeId));
57
- // if new node is within the storageRedundancyFactor closest nodes to the data
58
- // do replicate data to it
59
- if (index < this.config.redundancyFactor) {
51
+ if (sortedList.getContact(newNodeId) !== undefined) {
60
52
  setImmediate(async () => {
61
- await this.replicateDataToContact(dataEntry, newNode);
53
+ const dataEntries = Array.from(this.config.localDataStore.values(key));
54
+ await Promise.all(dataEntries.map(async (dataEntry) => this.replicateDataToContact(dataEntry, newNode)));
62
55
  });
63
56
  }
64
57
  }
65
58
  else if (!this.selfIsWithinRedundancyFactor(key)) {
66
- this.config.localDataStore.setStale(key, (0, identifiers_1.getDhtAddressFromRaw)(dataEntry.creator), true);
59
+ this.config.localDataStore.setAllEntriesAsStale(key);
67
60
  }
68
61
  }
69
62
  async replicateDataToContact(dataEntry, contact) {
@@ -1 +1 @@
1
- {"version":3,"file":"StoreManager.js","sourceRoot":"","sources":["../../../../src/dht/store/StoreManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"StoreManager.js","sourceRoot":"","sources":["../../../../src/dht/store/StoreManager.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@streamr/dht",
3
- "version": "100.0.0-testnet-three.2",
3
+ "version": "100.0.0-testnet-three.4",
4
4
  "description": "Streamr Network DHT",
5
5
  "repository": {
6
6
  "type": "git",
@@ -30,9 +30,9 @@
30
30
  "dependencies": {
31
31
  "@protobuf-ts/runtime": "^2.8.2",
32
32
  "@protobuf-ts/runtime-rpc": "^2.8.2",
33
- "@streamr/autocertifier-client": "100.0.0-testnet-three.2",
34
- "@streamr/proto-rpc": "100.0.0-testnet-three.2",
35
- "@streamr/utils": "100.0.0-testnet-three.2",
33
+ "@streamr/autocertifier-client": "100.0.0-testnet-three.4",
34
+ "@streamr/proto-rpc": "100.0.0-testnet-three.4",
35
+ "@streamr/utils": "100.0.0-testnet-three.4",
36
36
  "eventemitter3": "^5.0.0",
37
37
  "heap": "^0.2.6",
38
38
  "ipaddr.js": "^2.0.1",
@@ -44,7 +44,7 @@
44
44
  },
45
45
  "devDependencies": {
46
46
  "@streamr/browser-test-runner": "^0.0.1",
47
- "@streamr/test-utils": "100.0.0-testnet-three.2",
47
+ "@streamr/test-utils": "100.0.0-testnet-three.4",
48
48
  "@types/express": "^4.17.21",
49
49
  "@types/heap": "^0.2.34",
50
50
  "@types/k-bucket": "^5.0.1",
@@ -153,8 +153,15 @@ export class ConnectionManager extends EventEmitter<TransportEvents> implements
153
153
  allowToContainReferenceId: false,
154
154
  emitEvents: false
155
155
  })
156
- this.connections.forEach((connection) => {
157
- if (!this.locks.isLocked(connection.getNodeId()) && Date.now() - connection.getLastUsed() > lastUsedLimit) {
156
+ this.connections.forEach((connection, key) => {
157
+ // TODO: Investigate why multiple invalid WS client connections to the same
158
+ // server with a different nodeId can remain in the this.connections map.
159
+ // Seems to only happen if the ConnectionManager acting as client is not running a WS server itself.
160
+ if (connection.getPeerDescriptor() !== undefined && !this.hasConnection(getNodeIdFromPeerDescriptor(connection.getPeerDescriptor()!))) {
161
+ logger.trace(`Attempting to disconnect a hanging connection to ${getNodeIdFromPeerDescriptor(connection.getPeerDescriptor()!)}`)
162
+ connection.close(false).catch(() => {})
163
+ this.connections.delete(key)
164
+ } else if (!this.locks.isLocked(connection.getNodeId()) && Date.now() - connection.getLastUsed() > lastUsedLimit) {
158
165
  logger.trace('disconnecting in timeout interval: ' + getNodeIdOrUnknownFromPeerDescriptor(connection.getPeerDescriptor()))
159
166
  disconnectionCandidates.addContact(connection)
160
167
  }
@@ -11,6 +11,8 @@ import { ServerWebsocket } from './websocket/ServerWebsocket'
11
11
  import { connectivityMethodToWebsocketUrl } from './websocket/WebsocketConnector'
12
12
  import { version as localVersion } from '../../package.json'
13
13
 
14
+ export const DISABLE_CONNECTIVITY_PROBE = 0
15
+
14
16
  const logger = new Logger(module)
15
17
 
16
18
  export const attachConnectivityRequestHandler = (connectionToListenTo: ServerWebsocket): void => {
@@ -34,10 +36,36 @@ export const attachConnectivityRequestHandler = (connectionToListenTo: ServerWeb
34
36
  }
35
37
 
36
38
  const handleIncomingConnectivityRequest = async (connection: ServerWebsocket, connectivityRequest: ConnectivityRequest): Promise<void> => {
37
- let outgoingConnection: IConnection | undefined
38
- let connectivityResponseMessage: ConnectivityResponse | undefined
39
39
  const host = connectivityRequest.host ?? connection.getRemoteAddress()
40
40
  const ipAddress = connection.getRemoteIp()
41
+ let connectivityResponse: ConnectivityResponse
42
+ if (connectivityRequest.port !== DISABLE_CONNECTIVITY_PROBE) {
43
+ connectivityResponse = await connectivityProbe(connectivityRequest, ipAddress, host)
44
+ } else {
45
+ logger.trace('ConnectivityRequest port is 0, replying without connectivityProbe')
46
+ connectivityResponse = {
47
+ host,
48
+ natType: NatType.UNKNOWN,
49
+ ipAddress: ipv4ToNumber(ipAddress),
50
+ version: localVersion
51
+ }
52
+ }
53
+ const msg: Message = {
54
+ serviceId: CONNECTIVITY_CHECKER_SERVICE_ID,
55
+ messageType: MessageType.CONNECTIVITY_RESPONSE,
56
+ messageId: v4(),
57
+ body: {
58
+ oneofKind: 'connectivityResponse',
59
+ connectivityResponse
60
+ }
61
+ }
62
+ connection.send(Message.toBinary(msg))
63
+ logger.trace('ConnectivityResponse sent: ' + JSON.stringify(Message.toJson(msg)))
64
+ }
65
+
66
+ const connectivityProbe = async (connectivityRequest: ConnectivityRequest, ipAddress: string, host: string): Promise<ConnectivityResponse> => {
67
+ let outgoingConnection: IConnection | undefined
68
+ let connectivityResponseMessage: ConnectivityResponse
41
69
  try {
42
70
  const wsServerInfo = {
43
71
  host,
@@ -50,6 +78,14 @@ const handleIncomingConnectivityRequest = async (connection: ServerWebsocket, co
50
78
  url,
51
79
  selfSigned: connectivityRequest.selfSigned
52
80
  })
81
+ logger.trace('Connectivity test produced positive result, communicating reply to the requester ' + host + ':' + connectivityRequest.port)
82
+ connectivityResponseMessage = {
83
+ host,
84
+ natType: NatType.OPEN_INTERNET,
85
+ websocket: { host, port: connectivityRequest.port, tls: connectivityRequest.tls },
86
+ ipAddress: ipv4ToNumber(ipAddress),
87
+ version: localVersion
88
+ }
53
89
  } catch (err) {
54
90
  logger.debug('error', { err })
55
91
  connectivityResponseMessage = {
@@ -62,25 +98,6 @@ const handleIncomingConnectivityRequest = async (connection: ServerWebsocket, co
62
98
  if (outgoingConnection) {
63
99
  // TODO should we have some handling for this floating promise?
64
100
  outgoingConnection.close(false)
65
- logger.trace('Connectivity test produced positive result, communicating reply to the requester ' + host + ':' + connectivityRequest.port)
66
-
67
- connectivityResponseMessage = {
68
- host,
69
- natType: NatType.OPEN_INTERNET,
70
- websocket: { host, port: connectivityRequest.port, tls: connectivityRequest.tls },
71
- ipAddress: ipv4ToNumber(ipAddress),
72
- version: localVersion
73
- }
74
101
  }
75
- const msg: Message = {
76
- serviceId: CONNECTIVITY_CHECKER_SERVICE_ID,
77
- messageType: MessageType.CONNECTIVITY_RESPONSE,
78
- messageId: v4(),
79
- body: {
80
- oneofKind: 'connectivityResponse',
81
- connectivityResponse: connectivityResponseMessage!
82
- }
83
- }
84
- connection.send(Message.toBinary(msg))
85
- logger.trace('ConnectivityResponse sent: ' + JSON.stringify(Message.toJson(msg)))
102
+ return connectivityResponseMessage
86
103
  }
@@ -25,7 +25,7 @@ import { ServerCallContext } from '@protobuf-ts/runtime-rpc'
25
25
  import { expectedConnectionType } from '../../helpers/Connectivity'
26
26
  import { WebsocketServerStartError } from '../../helpers/errors'
27
27
  import { AutoCertifierClientFacade } from './AutoCertifierClientFacade'
28
- import { attachConnectivityRequestHandler } from '../connectivityRequestHandler'
28
+ import { DISABLE_CONNECTIVITY_PROBE, attachConnectivityRequestHandler } from '../connectivityRequestHandler'
29
29
  import * as Err from '../../helpers/errors'
30
30
  import { Empty } from '../../proto/google/protobuf/empty'
31
31
  import { DhtAddress, areEqualPeerDescriptors, getNodeIdFromPeerDescriptor } from '../../identifiers'
@@ -41,7 +41,6 @@ export const connectivityMethodToWebsocketUrl = (ws: ConnectivityMethod, action?
41
41
  }
42
42
 
43
43
  const ENTRY_POINT_CONNECTION_ATTEMPTS = 5
44
-
45
44
  export interface WebsocketConnectorConfig {
46
45
  transport: ITransport
47
46
  onNewConnection: (connection: ManagedConnection) => boolean
@@ -170,47 +169,44 @@ export class WebsocketConnector {
170
169
  }
171
170
 
172
171
  public async checkConnectivity(selfSigned: boolean): Promise<ConnectivityResponse> {
173
- // TODO: this could throw if the server is not running
174
- const noServerConnectivityResponse: ConnectivityResponse = {
175
- host: '127.0.0.1',
176
- natType: NatType.UNKNOWN,
177
- ipAddress: ipv4ToNumber('127.0.0.1'),
178
- version: localVersion
179
- }
172
+ // TODO: this could throw?
180
173
  if (this.abortController.signal.aborted) {
181
- return noServerConnectivityResponse
174
+ return {
175
+ host: '127.0.0.1',
176
+ natType: NatType.UNKNOWN,
177
+ ipAddress: ipv4ToNumber('127.0.0.1'),
178
+ version: localVersion
179
+ }
180
+ }
181
+ if (!this.config.entrypoints || this.config.entrypoints.length === 0) {
182
+ // return connectivity info given in config
183
+ return {
184
+ host: this.host!,
185
+ natType: NatType.OPEN_INTERNET,
186
+ websocket: {
187
+ host: this.host!,
188
+ port: this.selectedPort!,
189
+ tls: this.config.tlsCertificate !== undefined
190
+ },
191
+ // TODO: Resolve the given host name or or use as is if IP was given.
192
+ ipAddress: ipv4ToNumber('127.0.0.1'),
193
+ version: localVersion
194
+ }
182
195
  }
183
196
  for (const reattempt of range(ENTRY_POINT_CONNECTION_ATTEMPTS)) {
184
197
  const entryPoint = sample(this.config.entrypoints)!
185
198
  try {
186
- if (!this.websocketServer) {
187
- return noServerConnectivityResponse
199
+ // Do real connectivity checking
200
+ const connectivityRequest = {
201
+ port: this.selectedPort ?? DISABLE_CONNECTIVITY_PROBE,
202
+ host: this.host,
203
+ tls: this.websocketServer ? this.config.serverEnableTls : false,
204
+ selfSigned
205
+ }
206
+ if (!this.abortController.signal.aborted) {
207
+ return await sendConnectivityRequest(connectivityRequest, entryPoint, localVersion)
188
208
  } else {
189
- if (!this.config.entrypoints || this.config.entrypoints.length === 0) {
190
- // return connectivity info given in config
191
- const preconfiguredConnectivityResponse: ConnectivityResponse = {
192
- host: this.host!,
193
- natType: NatType.OPEN_INTERNET,
194
- websocket: { host: this.host!, port: this.selectedPort!, tls: this.config.tlsCertificate !== undefined },
195
- // TODO: maybe do a DNS lookup here?
196
- ipAddress: ipv4ToNumber('127.0.0.1'),
197
- version: localVersion
198
- }
199
- return preconfiguredConnectivityResponse
200
- } else {
201
- // Do real connectivity checking
202
- const connectivityRequest = {
203
- port: this.selectedPort!,
204
- host: this.host,
205
- tls: this.config.serverEnableTls,
206
- selfSigned
207
- }
208
- if (!this.abortController.signal.aborted) {
209
- return await sendConnectivityRequest(connectivityRequest, entryPoint, localVersion)
210
- } else {
211
- throw new Err.ConnectionFailed('ConnectivityChecker is destroyed')
212
- }
213
- }
209
+ throw new Err.ConnectionFailed('ConnectivityChecker is destroyed')
214
210
  }
215
211
  } catch (err) {
216
212
  if (reattempt < ENTRY_POINT_CONNECTION_ATTEMPTS) {
@@ -48,9 +48,9 @@ import { StoreRpcRemote } from './store/StoreRpcRemote'
48
48
  import { createPeerDescriptor } from '../helpers/createPeerDescriptor'
49
49
 
50
50
  export interface DhtNodeEvents {
51
- newContact: (peerDescriptor: PeerDescriptor, closestPeers: PeerDescriptor[]) => void
51
+ contactAdded: (peerDescriptor: PeerDescriptor, closestPeers: PeerDescriptor[]) => void
52
52
  contactRemoved: (peerDescriptor: PeerDescriptor, closestPeers: PeerDescriptor[]) => void
53
- newRandomContact: (peerDescriptor: PeerDescriptor, closestPeers: PeerDescriptor[]) => void
53
+ randomContactAdded: (peerDescriptor: PeerDescriptor, closestPeers: PeerDescriptor[]) => void
54
54
  randomContactRemoved: (peerDescriptor: PeerDescriptor, closestPeers: PeerDescriptor[]) => void
55
55
  }
56
56
 
@@ -157,6 +157,11 @@ export class DhtNode extends EventEmitter<Events> implements ITransport {
157
157
  throw new Error(`Invalid nodeId, the length of the nodeId should be ${expectedNodeIdLength}`)
158
158
  }
159
159
  }
160
+ if (this.config.peerDescriptor !== undefined) {
161
+ if (this.config.peerDescriptor.nodeId.length !== KADEMLIA_ID_LENGTH_IN_BYTES) {
162
+ throw new Error(`Invalid peerDescriptor, the length of the nodeId should be ${KADEMLIA_ID_LENGTH_IN_BYTES} bytes`)
163
+ }
164
+ }
160
165
  }
161
166
 
162
167
  public async start(): Promise<void> {
@@ -244,7 +249,7 @@ export class DhtNode extends EventEmitter<Events> implements ITransport {
244
249
  rpcCommunicator: this.rpcCommunicator,
245
250
  connections: this.peerManager!.connections,
246
251
  localPeerDescriptor: this.localPeerDescriptor!,
247
- addContact: (contact: PeerDescriptor, setActive?: boolean) => this.peerManager!.handleNewPeers([contact], setActive),
252
+ addContact: (contact: PeerDescriptor, setActive?: boolean) => this.peerManager!.addContact([contact], setActive),
248
253
  connectionManager: this.connectionManager
249
254
  })
250
255
  this.recursiveOperationManager = new RecursiveOperationManager({
@@ -254,7 +259,7 @@ export class DhtNode extends EventEmitter<Events> implements ITransport {
254
259
  connections: this.peerManager!.connections,
255
260
  localPeerDescriptor: this.localPeerDescriptor!,
256
261
  serviceId: this.config.serviceId,
257
- addContact: (contact: PeerDescriptor) => this.peerManager!.handleNewPeers([contact]),
262
+ addContact: (contact: PeerDescriptor) => this.peerManager!.addContact([contact]),
258
263
  localDataStore: this.localDataStore
259
264
  })
260
265
  this.storeManager = new StoreManager({
@@ -278,8 +283,8 @@ export class DhtNode extends EventEmitter<Events> implements ITransport {
278
283
  )
279
284
  }
280
285
  })
281
- this.on('newContact', (peerDescriptor: PeerDescriptor) => {
282
- this.storeManager!.onNewContact(peerDescriptor)
286
+ this.on('contactAdded', (peerDescriptor: PeerDescriptor) => {
287
+ this.storeManager!.onContactAdded(peerDescriptor)
283
288
  })
284
289
  this.bindRpcLocalMethods()
285
290
  }
@@ -297,14 +302,14 @@ export class DhtNode extends EventEmitter<Events> implements ITransport {
297
302
  this.peerManager.on('contactRemoved', (peerDescriptor: PeerDescriptor, activeContacts: PeerDescriptor[]) => {
298
303
  this.emit('contactRemoved', peerDescriptor, activeContacts)
299
304
  })
300
- this.peerManager.on('newContact', (peerDescriptor: PeerDescriptor, activeContacts: PeerDescriptor[]) =>
301
- this.emit('newContact', peerDescriptor, activeContacts)
305
+ this.peerManager.on('contactAdded', (peerDescriptor: PeerDescriptor, activeContacts: PeerDescriptor[]) =>
306
+ this.emit('contactAdded', peerDescriptor, activeContacts)
302
307
  )
303
308
  this.peerManager.on('randomContactRemoved', (peerDescriptor: PeerDescriptor, activeContacts: PeerDescriptor[]) =>
304
309
  this.emit('randomContactRemoved', peerDescriptor, activeContacts)
305
310
  )
306
- this.peerManager.on('newRandomContact', (peerDescriptor: PeerDescriptor, activeContacts: PeerDescriptor[]) =>
307
- this.emit('newRandomContact', peerDescriptor, activeContacts)
311
+ this.peerManager.on('randomContactAdded', (peerDescriptor: PeerDescriptor, activeContacts: PeerDescriptor[]) =>
312
+ this.emit('randomContactAdded', peerDescriptor, activeContacts)
308
313
  )
309
314
  this.peerManager.on('kBucketEmpty', () => {
310
315
  if (!this.peerDiscovery!.isJoinOngoing()
@@ -320,15 +325,15 @@ export class DhtNode extends EventEmitter<Events> implements ITransport {
320
325
  }
321
326
  })
322
327
  this.transport!.on('connected', (peerDescriptor: PeerDescriptor) => {
323
- this.peerManager!.handleConnected(peerDescriptor)
328
+ this.peerManager!.onContactConnected(peerDescriptor)
324
329
  this.emit('connected', peerDescriptor)
325
330
  })
326
331
  this.transport!.on('disconnected', (peerDescriptor: PeerDescriptor, gracefulLeave: boolean) => {
327
- this.peerManager!.handleDisconnected(getNodeIdFromPeerDescriptor(peerDescriptor), gracefulLeave)
332
+ this.peerManager!.onContactDisconnected(getNodeIdFromPeerDescriptor(peerDescriptor), gracefulLeave)
328
333
  this.emit('disconnected', peerDescriptor, gracefulLeave)
329
334
  })
330
335
  this.transport!.getConnections().forEach((peer) => {
331
- this.peerManager!.handleConnected(peer)
336
+ this.peerManager!.onContactConnected(peer)
332
337
  })
333
338
  }
334
339
 
@@ -342,7 +347,7 @@ export class DhtNode extends EventEmitter<Events> implements ITransport {
342
347
  return this.peerManager!.getClosestNeighborsTo(nodeId, limit)
343
348
  .map((dhtPeer: DhtNodeRpcRemote) => dhtPeer.getPeerDescriptor())
344
349
  },
345
- addNewContact: (contact: PeerDescriptor) => this.peerManager!.handleNewPeers([contact]),
350
+ addContact: (contact: PeerDescriptor) => this.peerManager!.addContact([contact]),
346
351
  removeContact: (nodeId: DhtAddress) => this.removeContact(nodeId)
347
352
  })
348
353
  this.rpcCommunicator!.registerRpcMethod(ClosestPeersRequest, ClosestPeersResponse, 'getClosestPeers',
@@ -412,7 +417,7 @@ export class DhtNode extends EventEmitter<Events> implements ITransport {
412
417
  if (!this.started) { // the stopped state is checked in PeerManager
413
418
  return
414
419
  }
415
- this.peerManager!.handlePeerLeaving(nodeId)
420
+ this.peerManager!.removeContact(nodeId)
416
421
  }
417
422
 
418
423
  public async send(msg: Message): Promise<void> {
@@ -15,7 +15,7 @@ import { DhtAddress, getDhtAddressFromRaw, getNodeIdFromPeerDescriptor } from '.
15
15
  interface DhtNodeRpcLocalConfig {
16
16
  peerDiscoveryQueryBatchSize: number
17
17
  getClosestPeersTo: (nodeId: DhtAddress, limit: number) => PeerDescriptor[]
18
- addNewContact: (contact: PeerDescriptor) => void
18
+ addContact: (contact: PeerDescriptor) => void
19
19
  removeContact: (nodeId: DhtAddress) => void
20
20
  }
21
21
 
@@ -30,7 +30,7 @@ export class DhtNodeRpcLocal implements IDhtNodeRpc {
30
30
  }
31
31
 
32
32
  async getClosestPeers(request: ClosestPeersRequest, context: ServerCallContext): Promise<ClosestPeersResponse> {
33
- this.config.addNewContact((context as DhtCallContext).incomingSourceDescriptor!)
33
+ this.config.addContact((context as DhtCallContext).incomingSourceDescriptor!)
34
34
  const response = {
35
35
  peers: this.config.getClosestPeersTo(getDhtAddressFromRaw(request.nodeId), this.config.peerDiscoveryQueryBatchSize),
36
36
  requestId: request.requestId
@@ -41,7 +41,7 @@ export class DhtNodeRpcLocal implements IDhtNodeRpc {
41
41
  async ping(request: PingRequest, context: ServerCallContext): Promise<PingResponse> {
42
42
  logger.trace('received ping request: ' + getNodeIdFromPeerDescriptor((context as DhtCallContext).incomingSourceDescriptor!))
43
43
  setImmediate(() => {
44
- this.config.addNewContact((context as DhtCallContext).incomingSourceDescriptor!)
44
+ this.config.addContact((context as DhtCallContext).incomingSourceDescriptor!)
45
45
  })
46
46
  const response: PingResponse = {
47
47
  requestId: request.requestId