@streamr/dht 0.0.1-tatum.6 → 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 (196) 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 -40
  4. package/dist/src/connection/ConnectionManager.js +138 -204
  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 +15 -51
  41. package/dist/src/dht/DhtNode.js +107 -129
  42. package/dist/src/dht/DhtNode.js.map +1 -1
  43. package/dist/src/dht/{DhtPeer.d.ts → RemoteDhtNode.d.ts} +2 -3
  44. package/dist/src/dht/{DhtPeer.js → RemoteDhtNode.js} +21 -19
  45. package/dist/src/dht/RemoteDhtNode.js.map +1 -0
  46. package/dist/src/dht/contact/ContactList.d.ts +0 -1
  47. package/dist/src/dht/contact/ContactList.js +0 -3
  48. package/dist/src/dht/contact/ContactList.js.map +1 -1
  49. package/dist/src/dht/contact/RandomContactList.d.ts +0 -1
  50. package/dist/src/dht/contact/RandomContactList.js +0 -3
  51. package/dist/src/dht/contact/RandomContactList.js.map +1 -1
  52. package/dist/src/dht/contact/SortedContactList.d.ts +0 -3
  53. package/dist/src/dht/contact/SortedContactList.js +0 -9
  54. package/dist/src/dht/contact/SortedContactList.js.map +1 -1
  55. package/dist/src/dht/discovery/DiscoverySession.d.ts +5 -7
  56. package/dist/src/dht/discovery/DiscoverySession.js +9 -10
  57. package/dist/src/dht/discovery/DiscoverySession.js.map +1 -1
  58. package/dist/src/dht/discovery/PeerDiscovery.d.ts +11 -10
  59. package/dist/src/dht/discovery/PeerDiscovery.js +32 -37
  60. package/dist/src/dht/discovery/PeerDiscovery.js.map +1 -1
  61. package/dist/src/dht/find/RecursiveFindSession.d.ts +5 -6
  62. package/dist/src/dht/find/RecursiveFindSession.js +8 -8
  63. package/dist/src/dht/find/RecursiveFindSession.js.map +1 -1
  64. package/dist/src/dht/find/RecursiveFinder.d.ts +2 -4
  65. package/dist/src/dht/find/RecursiveFinder.js +11 -12
  66. package/dist/src/dht/find/RecursiveFinder.js.map +1 -1
  67. package/dist/src/dht/registerExternalApiRpcMethods.d.ts +1 -1
  68. package/dist/src/dht/routing/DuplicateDetector.d.ts +1 -2
  69. package/dist/src/dht/routing/DuplicateDetector.js +2 -7
  70. package/dist/src/dht/routing/DuplicateDetector.js.map +1 -1
  71. package/dist/src/dht/routing/RemoteRouter.js +1 -1
  72. package/dist/src/dht/routing/RemoteRouter.js.map +1 -1
  73. package/dist/src/dht/routing/Router.d.ts +10 -13
  74. package/dist/src/dht/routing/Router.js +28 -29
  75. package/dist/src/dht/routing/Router.js.map +1 -1
  76. package/dist/src/dht/routing/RoutingSession.d.ts +3 -4
  77. package/dist/src/dht/routing/RoutingSession.js +4 -3
  78. package/dist/src/dht/routing/RoutingSession.js.map +1 -1
  79. package/dist/src/dht/store/DataStore.d.ts +2 -2
  80. package/dist/src/dht/store/DataStore.js +7 -7
  81. package/dist/src/dht/store/DataStore.js.map +1 -1
  82. package/dist/src/exports.d.ts +1 -7
  83. package/dist/src/exports.js +2 -14
  84. package/dist/src/exports.js.map +1 -1
  85. package/dist/src/helpers/PeerID.d.ts +0 -1
  86. package/dist/src/helpers/PeerID.js +0 -6
  87. package/dist/src/helpers/PeerID.js.map +1 -1
  88. package/dist/src/helpers/browser/isBrowserEnvironment.d.ts +1 -0
  89. package/dist/src/helpers/browser/isBrowserEnvironment.js +6 -0
  90. package/dist/src/helpers/browser/isBrowserEnvironment.js.map +1 -0
  91. package/dist/src/helpers/browser/isBrowserEnvironment_override.d.ts +1 -0
  92. package/dist/src/helpers/browser/isBrowserEnvironment_override.js +7 -0
  93. package/dist/src/helpers/browser/isBrowserEnvironment_override.js.map +1 -0
  94. package/dist/src/helpers/kademliaId.d.ts +1 -0
  95. package/dist/src/helpers/kademliaId.js +14 -0
  96. package/dist/src/helpers/kademliaId.js.map +1 -0
  97. package/dist/src/helpers/peerIdFromPeerDescriptor.d.ts +1 -1
  98. package/dist/src/helpers/peerIdFromPeerDescriptor.js +3 -3
  99. package/dist/src/helpers/peerIdFromPeerDescriptor.js.map +1 -1
  100. package/dist/src/proto/packages/dht/protos/DhtRpc.d.ts +0 -4
  101. package/dist/src/proto/packages/dht/protos/DhtRpc.js +1 -2
  102. package/dist/src/proto/packages/dht/protos/DhtRpc.js.map +1 -1
  103. package/package.json +10 -9
  104. package/protos/DhtRpc.proto +0 -1
  105. package/src/connection/ConnectionLockHandler.ts +1 -1
  106. package/src/connection/ConnectionManager.ts +157 -254
  107. package/src/connection/ConnectivityChecker.ts +14 -11
  108. package/src/connection/ConnectorFacade.ts +143 -0
  109. package/src/connection/ManagedConnection.ts +23 -34
  110. package/src/connection/RemoteConnectionLocker.ts +4 -3
  111. package/src/connection/Simulator/Simulator.ts +0 -7
  112. package/src/connection/Simulator/SimulatorConnection.ts +16 -13
  113. package/src/connection/Simulator/SimulatorConnector.ts +11 -12
  114. package/src/connection/Simulator/SimulatorTransport.ts +6 -1
  115. package/src/connection/WebRTC/NodeWebRtcConnection.ts +14 -13
  116. package/src/connection/WebRTC/WebRtcConnector.ts +31 -31
  117. package/src/connection/WebSocket/RemoteWebSocketConnector.ts +2 -1
  118. package/src/connection/WebSocket/WebSocketConnector.ts +85 -62
  119. package/src/connection/WebSocket/WebSocketServer.ts +26 -8
  120. package/src/dht/DhtNode.ts +155 -181
  121. package/src/dht/{DhtPeer.ts → RemoteDhtNode.ts} +11 -9
  122. package/src/dht/contact/ContactList.ts +0 -4
  123. package/src/dht/contact/RandomContactList.ts +0 -4
  124. package/src/dht/contact/SortedContactList.ts +0 -12
  125. package/src/dht/discovery/DiscoverySession.ts +20 -23
  126. package/src/dht/discovery/PeerDiscovery.ts +45 -44
  127. package/src/dht/find/RecursiveFindSession.ts +12 -13
  128. package/src/dht/find/RecursiveFinder.ts +16 -19
  129. package/src/dht/registerExternalApiRpcMethods.ts +1 -1
  130. package/src/dht/routing/DuplicateDetector.ts +3 -10
  131. package/src/dht/routing/RemoteRouter.ts +2 -2
  132. package/src/dht/routing/Router.ts +35 -39
  133. package/src/dht/routing/RoutingSession.ts +9 -9
  134. package/src/dht/store/DataStore.ts +11 -11
  135. package/src/exports.ts +1 -7
  136. package/src/helpers/PeerID.ts +0 -7
  137. package/src/helpers/browser/isBrowserEnvironment.ts +1 -0
  138. package/src/helpers/browser/isBrowserEnvironment_override.ts +3 -0
  139. package/src/helpers/kademliaId.ts +8 -0
  140. package/src/helpers/peerIdFromPeerDescriptor.ts +1 -1
  141. package/src/proto/packages/dht/protos/DhtRpc.ts +1 -6
  142. package/test/benchmark/KademliaCorrectness.test.ts +4 -2
  143. package/test/benchmark/RecursiveFind.test.ts +6 -6
  144. package/test/end-to-end/Layer0-Layer1.test.ts +9 -9
  145. package/test/end-to-end/Layer0WebRTC-Layer1.test.ts +5 -5
  146. package/test/end-to-end/Layer0WebRTC.test.ts +5 -6
  147. package/test/end-to-end/Layer1-Scale-WebRTC.test.ts +13 -8
  148. package/test/end-to-end/Layer1-Scale-WebSocket.test.ts +15 -10
  149. package/test/end-to-end/WebSocketConnectionRequest.test.ts +5 -5
  150. package/test/integration/ConnectionLocking.test.ts +32 -26
  151. package/test/integration/ConnectionManager.test.ts +90 -93
  152. package/test/integration/DhtJoinPeerDiscovery.test.ts +53 -0
  153. package/test/integration/DhtRpc.test.ts +4 -6
  154. package/test/integration/Layer1-scale.test.ts +8 -8
  155. package/test/integration/MigrateData.test.ts +9 -9
  156. package/test/integration/Mock-Layer1-Layer0.test.ts +1 -2
  157. package/test/integration/RecursiveFind.test.ts +5 -5
  158. package/test/integration/{DhtPeer.test.ts → RemoteDhtNode.test.ts} +11 -12
  159. package/test/integration/RemoteRouter.test.ts +5 -6
  160. package/test/integration/RemoteStore.test.ts +4 -5
  161. package/test/integration/RouteMessage.test.ts +7 -9
  162. package/test/integration/RpcErrors.test.ts +25 -10
  163. package/test/integration/ScaleDownDht.test.ts +8 -8
  164. package/test/integration/SimultaneousConnections.test.ts +35 -36
  165. package/test/integration/Store.test.ts +8 -9
  166. package/test/integration/StoreAndDelete.test.ts +11 -11
  167. package/test/integration/StoreOnDhtWithTwoNodes.test.ts +7 -7
  168. package/test/integration/WebRtcConnectionManagement.test.ts +26 -19
  169. package/test/integration/WebRtcConnectorRpc.test.ts +6 -8
  170. package/test/integration/WebSocket.test.ts +4 -2
  171. package/test/integration/WebSocketConnectionManagement.test.ts +30 -17
  172. package/test/integration/WebSocketConnectorRpc.test.ts +2 -3
  173. package/test/unit/DuplicateDetector.test.ts +3 -4
  174. package/test/unit/LocalDataStore.test.ts +6 -8
  175. package/test/unit/RandomContactList.test.ts +1 -1
  176. package/test/unit/RecursiveFinder.test.ts +8 -12
  177. package/test/unit/Router.test.ts +18 -21
  178. package/test/unit/WebSocketConnector.test.ts +64 -0
  179. package/test/unit/WebSocketServer.test.ts +24 -12
  180. package/test/utils/mock/RecursiveFinder.ts +2 -2
  181. package/test/utils/mock/Router.ts +9 -11
  182. package/test/utils/mock/Transport.ts +2 -2
  183. package/test/utils/utils.ts +40 -49
  184. package/dist/src/dht/DhtPeer.js.map +0 -1
  185. package/dist/src/helpers/browser/isBrowser.d.ts +0 -1
  186. package/dist/src/helpers/browser/isBrowser.js +0 -6
  187. package/dist/src/helpers/browser/isBrowser.js.map +0 -1
  188. package/dist/src/helpers/browser/isNodeJS.d.ts +0 -1
  189. package/dist/src/helpers/browser/isNodeJS.js +0 -6
  190. package/dist/src/helpers/browser/isNodeJS.js.map +0 -1
  191. package/src/helpers/browser/isBrowser.ts +0 -1
  192. package/src/helpers/browser/isNodeJS.ts +0 -1
  193. package/test/integration/DhtWithMockConnectionLatencies.test.ts +0 -46
  194. package/test/integration/DhtWithMockConnections.test.ts +0 -46
  195. package/test/integration/DhtWithRealConnectionLatencies.test.ts +0 -47
  196. /package/test/unit/{webrtcReplaceInternalIpWithExternalIp.ts → webrtcReplaceInternalIpWithExternalIp.test.ts} +0 -0
@@ -1,6 +1,4 @@
1
- import { Message } from '../../proto/packages/dht/protos/DhtRpc'
2
-
3
- type QueueEntry = [timeStamp: number, value: string, senderId: string, message?: Message]
1
+ type QueueEntry = [timestamp: number, value: string]
4
2
 
5
3
  export class DuplicateDetector {
6
4
 
@@ -17,13 +15,9 @@ export class DuplicateDetector {
17
15
  this.maxAge = maxAgeInSeconds * 1000
18
16
  }
19
17
 
20
- public add(value: string, senderId: string, message?: Message): void {
18
+ public add(value: string): void {
21
19
  this.values.add(value)
22
- if (message) {
23
- this.queue.push([Date.now(), value, senderId, message])
24
- } else {
25
- this.queue.push([Date.now(), value, senderId])
26
- }
20
+ this.queue.push([Date.now(), value])
27
21
  this.cleanUp()
28
22
  }
29
23
 
@@ -49,5 +43,4 @@ export class DuplicateDetector {
49
43
  this.values.clear()
50
44
  this.queue = []
51
45
  }
52
-
53
46
  }
@@ -1,7 +1,7 @@
1
1
  import { RouteMessageWrapper } from '../../proto/packages/dht/protos/DhtRpc'
2
2
  import { v4 } from 'uuid'
3
3
  import {
4
- isSamePeerDescriptor,
4
+ areEqualPeerDescriptors,
5
5
  keyFromPeerDescriptor,
6
6
  peerIdFromPeerDescriptor
7
7
  } from '../../helpers/peerIdFromPeerDescriptor'
@@ -30,7 +30,7 @@ export class RemoteRouter extends Remote<IRoutingServiceClient> {
30
30
  const ack = await this.getClient().routeMessage(message, options)
31
31
  // Success signal if sent to destination and error includes duplicate
32
32
  if (
33
- isSamePeerDescriptor(params.destinationPeer!, this.getPeerDescriptor())
33
+ areEqualPeerDescriptors(params.destinationPeer!, this.getPeerDescriptor())
34
34
  && ack.error.includes('duplicate')
35
35
  ) {
36
36
  return true
@@ -1,13 +1,12 @@
1
1
  import { Message, PeerDescriptor, RouteMessageAck, RouteMessageWrapper } from '../../proto/packages/dht/protos/DhtRpc'
2
- import { ServerCallContext } from '@protobuf-ts/runtime-rpc'
3
- import { keyFromPeerDescriptor, peerIdFromPeerDescriptor } from '../../helpers/peerIdFromPeerDescriptor'
2
+ import { areEqualPeerDescriptors, keyFromPeerDescriptor, peerIdFromPeerDescriptor } from '../../helpers/peerIdFromPeerDescriptor'
4
3
  import { RoutingMode, RoutingSession, RoutingSessionEvents } from './RoutingSession'
5
4
  import { Logger, executeSafePromise, raceEvents3, withTimeout } from '@streamr/utils'
6
5
  import { RoutingRpcCommunicator } from '../../transport/RoutingRpcCommunicator'
7
- import { PeerID, PeerIDKey } from '../../helpers/PeerID'
6
+ import { PeerIDKey } from '../../helpers/PeerID'
8
7
  import { DuplicateDetector } from './DuplicateDetector'
9
8
  import { ConnectionManager } from '../../connection/ConnectionManager'
10
- import { DhtPeer } from '../DhtPeer'
9
+ import { RemoteDhtNode } from '../RemoteDhtNode'
11
10
  import { v4 } from 'uuid'
12
11
  import { IRoutingService } from '../../proto/packages/dht/protos/DhtRpc.server'
13
12
 
@@ -29,8 +28,7 @@ export enum RoutingErrors {
29
28
  export interface RouterConfig {
30
29
  rpcCommunicator: RoutingRpcCommunicator
31
30
  ownPeerDescriptor: PeerDescriptor
32
- ownPeerId: PeerID
33
- connections: Map<PeerIDKey, DhtPeer>
31
+ connections: Map<PeerIDKey, RemoteDhtNode>
34
32
  addContact: (contact: PeerDescriptor, setActive?: boolean) => void
35
33
  serviceId: string
36
34
  connectionManager?: ConnectionManager
@@ -44,8 +42,8 @@ interface ForwardingTableEntry {
44
42
  interface IRouterFunc {
45
43
  doRouteMessage(routedMessage: RouteMessageWrapper, mode: RoutingMode, excludedPeer?: PeerDescriptor): RouteMessageAck
46
44
  send(msg: Message, reachableThrough: PeerDescriptor[]): Promise<void>
47
- checkDuplicate(messageId: string): boolean
48
- addToDuplicateDetector(messageId: string, senderId: string, message?: Message): void
45
+ isMostLikelyDuplicate(requestId: string): boolean
46
+ addToDuplicateDetector(requestId: string): void
49
47
  addRoutingSession(session: RoutingSession): void
50
48
  removeRoutingSession(sessionId: string): void
51
49
  stop(): void
@@ -58,28 +56,26 @@ const logger = new Logger(module)
58
56
  export class Router implements IRouter {
59
57
  private readonly rpcCommunicator: RoutingRpcCommunicator
60
58
  private readonly ownPeerDescriptor: PeerDescriptor
61
- private readonly ownPeerId: PeerID
62
- private readonly connections: Map<PeerIDKey, DhtPeer>
59
+ private readonly connections: Map<PeerIDKey, RemoteDhtNode>
63
60
  private readonly addContact: (contact: PeerDescriptor, setActive?: boolean) => void
64
61
  private readonly serviceId: string
65
62
  private readonly connectionManager?: ConnectionManager
66
63
  private readonly forwardingTable: Map<string, ForwardingTableEntry> = new Map()
67
64
  private ongoingRoutingSessions: Map<string, RoutingSession> = new Map()
68
- private readonly routerDuplicateDetector: DuplicateDetector = new DuplicateDetector(100000, 100)
65
+ private readonly duplicateRequestDetector: DuplicateDetector = new DuplicateDetector(100000, 100)
69
66
  private stopped = false
70
67
 
71
68
  constructor(config: RouterConfig) {
72
69
  this.rpcCommunicator = config.rpcCommunicator
73
70
  this.ownPeerDescriptor = config.ownPeerDescriptor
74
- this.ownPeerId = config.ownPeerId
75
71
  this.connections = config.connections
76
72
  this.addContact = config.addContact
77
73
  this.serviceId = config.serviceId
78
74
  this.connectionManager = config.connectionManager
79
75
  this.rpcCommunicator.registerRpcMethod(RouteMessageWrapper, RouteMessageAck, 'forwardMessage',
80
- (forwardMessage: RouteMessageWrapper, context) => this.forwardMessage(forwardMessage, context))
76
+ (forwardMessage: RouteMessageWrapper) => this.forwardMessage(forwardMessage))
81
77
  this.rpcCommunicator.registerRpcMethod(RouteMessageWrapper, RouteMessageAck, 'routeMessage',
82
- (routedMessage: RouteMessageWrapper, context) => this.routeMessage(routedMessage, context))
78
+ (routedMessage: RouteMessageWrapper) => this.routeMessage(routedMessage))
83
79
  }
84
80
 
85
81
  public async send(msg: Message, reachableThrough: PeerDescriptor[]): Promise<void> {
@@ -114,8 +110,8 @@ export class Router implements IRouter {
114
110
  if (this.stopped) {
115
111
  return createRouteMessageAck(routedMessage, RoutingErrors.STOPPED)
116
112
  }
117
- logger.trace(`Peer ${this.ownPeerId.value} routing message ${routedMessage.requestId}
118
- from ${routedMessage.sourcePeer?.kademliaId} to ${routedMessage.destinationPeer?.kademliaId}`)
113
+ logger.trace(`Routing message ${routedMessage.requestId} from ${keyFromPeerDescriptor(routedMessage.sourcePeer!)} `
114
+ + `to ${keyFromPeerDescriptor(routedMessage.destinationPeer!)}`)
119
115
  routedMessage.routingPath.push(this.ownPeerDescriptor)
120
116
  const session = this.createRoutingSession(routedMessage, mode, excludedPeer)
121
117
  this.addRoutingSession(session)
@@ -141,7 +137,7 @@ export class Router implements IRouter {
141
137
  })
142
138
  session.start()
143
139
  } catch (e) {
144
- if (peerIdFromPeerDescriptor(routedMessage.sourcePeer!).equals(this.ownPeerId)) {
140
+ if (areEqualPeerDescriptors(routedMessage.sourcePeer!, this.ownPeerDescriptor)) {
145
141
  logger.warn(
146
142
  `Failed to send (routeMessage: ${this.serviceId}) to ${keyFromPeerDescriptor(routedMessage.destinationPeer!)}: ${e}`
147
143
  )
@@ -162,19 +158,19 @@ export class Router implements IRouter {
162
158
  this.ownPeerDescriptor,
163
159
  routedMessage,
164
160
  this.connections,
165
- this.ownPeerId.equals(peerIdFromPeerDescriptor(routedMessage.sourcePeer!)) ? 2 : 1,
161
+ areEqualPeerDescriptors(this.ownPeerDescriptor, routedMessage.sourcePeer!) ? 2 : 1,
166
162
  mode,
167
163
  undefined,
168
164
  excludedPeers
169
165
  )
170
166
  }
171
167
 
172
- public checkDuplicate(messageId: string): boolean {
173
- return this.routerDuplicateDetector.isMostLikelyDuplicate(messageId)
168
+ public isMostLikelyDuplicate(requestId: string): boolean {
169
+ return this.duplicateRequestDetector.isMostLikelyDuplicate(requestId)
174
170
  }
175
171
 
176
- public addToDuplicateDetector(messageId: string, senderId: string, message?: Message): void {
177
- this.routerDuplicateDetector.add(messageId, senderId, message)
172
+ public addToDuplicateDetector(requestId: string): void {
173
+ this.duplicateRequestDetector.add(requestId)
178
174
  }
179
175
 
180
176
  public addRoutingSession(session: RoutingSession): void {
@@ -195,23 +191,23 @@ export class Router implements IRouter {
195
191
  clearTimeout(entry.timeout)
196
192
  })
197
193
  this.forwardingTable.clear()
198
- this.routerDuplicateDetector.clear()
194
+ this.duplicateRequestDetector.clear()
199
195
  }
200
196
 
201
197
  // IRoutingService method
202
- async routeMessage(routedMessage: RouteMessageWrapper, _context: ServerCallContext): Promise<RouteMessageAck> {
198
+ async routeMessage(routedMessage: RouteMessageWrapper): Promise<RouteMessageAck> {
203
199
  if (this.stopped) {
204
200
  return createRouteMessageAck(routedMessage, 'routeMessage() service is not running')
205
- } else if (this.routerDuplicateDetector.isMostLikelyDuplicate(routedMessage.requestId)) {
206
- logger.trace(`Peer ${this.ownPeerId?.value} routing message ${routedMessage.requestId}
207
- from ${routedMessage.sourcePeer!.kademliaId} to ${routedMessage.destinationPeer!.kademliaId} is likely a duplicate`)
201
+ } else if (this.duplicateRequestDetector.isMostLikelyDuplicate(routedMessage.requestId)) {
202
+ logger.trace(`Routing message ${routedMessage.requestId} from ${keyFromPeerDescriptor(routedMessage.sourcePeer!)} `
203
+ + `to ${keyFromPeerDescriptor(routedMessage.destinationPeer!)} is likely a duplicate`)
208
204
  return createRouteMessageAck(routedMessage, 'message given to routeMessage() service is likely a duplicate')
209
205
  }
210
206
  logger.trace(`Processing received routeMessage ${routedMessage.requestId}`)
211
207
  this.addContact(routedMessage.sourcePeer!, true)
212
- this.addToDuplicateDetector(routedMessage.requestId, keyFromPeerDescriptor(routedMessage.sourcePeer!))
213
- if (this.ownPeerId.equals(peerIdFromPeerDescriptor(routedMessage.destinationPeer!))) {
214
- logger.trace(`${this.ownPeerDescriptor.nodeName} routing message targeted to self ${routedMessage.requestId}`)
208
+ this.addToDuplicateDetector(routedMessage.requestId)
209
+ if (areEqualPeerDescriptors(this.ownPeerDescriptor, routedMessage.destinationPeer!)) {
210
+ logger.trace(`routing message targeted to self ${routedMessage.requestId}`)
215
211
  this.setForwardingEntries(routedMessage)
216
212
  this.connectionManager?.handleMessage(routedMessage.message!)
217
213
  return createRouteMessageAck(routedMessage)
@@ -222,7 +218,7 @@ export class Router implements IRouter {
222
218
 
223
219
  private setForwardingEntries(routedMessage: RouteMessageWrapper): void {
224
220
  const reachableThroughWithoutSelf = routedMessage.reachableThrough.filter((peer) => {
225
- return !peerIdFromPeerDescriptor(peer).equals(this.ownPeerId)
221
+ return !areEqualPeerDescriptors(peer, this.ownPeerDescriptor)
226
222
  })
227
223
 
228
224
  if (reachableThroughWithoutSelf.length > 0) {
@@ -243,18 +239,18 @@ export class Router implements IRouter {
243
239
  }
244
240
 
245
241
  // IRoutingService method
246
- async forwardMessage(forwardMessage: RouteMessageWrapper, _context: ServerCallContext): Promise<RouteMessageAck> {
242
+ async forwardMessage(forwardMessage: RouteMessageWrapper): Promise<RouteMessageAck> {
247
243
  if (this.stopped) {
248
244
  return createRouteMessageAck(forwardMessage, 'forwardMessage() service is not running')
249
- } else if (this.routerDuplicateDetector.isMostLikelyDuplicate(forwardMessage.requestId)) {
250
- logger.trace(`Peer ${this.ownPeerId.value} forwarding message ${forwardMessage.requestId}
251
- from ${forwardMessage.sourcePeer?.kademliaId} to ${forwardMessage.destinationPeer?.kademliaId} is likely a duplicate`)
245
+ } else if (this.duplicateRequestDetector.isMostLikelyDuplicate(forwardMessage.requestId)) {
246
+ logger.trace(`Forwarding message ${forwardMessage.requestId} from ${keyFromPeerDescriptor(forwardMessage.sourcePeer!)} `
247
+ + `to ${keyFromPeerDescriptor(forwardMessage.destinationPeer!)} is likely a duplicate`)
252
248
  return createRouteMessageAck(forwardMessage, 'message given to forwardMessage() service is likely a duplicate')
253
249
  }
254
250
  logger.trace(`Processing received forward routeMessage ${forwardMessage.requestId}`)
255
251
  this.addContact(forwardMessage.sourcePeer!, true)
256
- this.addToDuplicateDetector(forwardMessage.requestId, keyFromPeerDescriptor(forwardMessage.sourcePeer!))
257
- if (this.ownPeerId.equals(peerIdFromPeerDescriptor(forwardMessage.destinationPeer!))) {
252
+ this.addToDuplicateDetector(forwardMessage.requestId)
253
+ if (areEqualPeerDescriptors(this.ownPeerDescriptor, forwardMessage.destinationPeer!)) {
258
254
  return this.forwardToDestination(forwardMessage)
259
255
  } else {
260
256
  return this.doRouteMessage(forwardMessage, RoutingMode.FORWARD)
@@ -262,9 +258,9 @@ export class Router implements IRouter {
262
258
  }
263
259
 
264
260
  private forwardToDestination(routedMessage: RouteMessageWrapper): RouteMessageAck {
265
- logger.trace(`Peer ${this.ownPeerId.value} forwarding found message targeted to self ${routedMessage.requestId}`)
261
+ logger.trace(`Forwarding found message targeted to self ${routedMessage.requestId}`)
266
262
  const forwardedMessage = routedMessage.message!
267
- if (this.ownPeerId.equals(peerIdFromPeerDescriptor(forwardedMessage.targetDescriptor!))) {
263
+ if (areEqualPeerDescriptors(this.ownPeerDescriptor, forwardedMessage.targetDescriptor!)) {
268
264
  this.connectionManager?.handleMessage(forwardedMessage)
269
265
  return createRouteMessageAck(routedMessage)
270
266
  }
@@ -1,11 +1,11 @@
1
- import { PeerDescriptor } from '../../exports'
2
- import { DhtPeer } from '../DhtPeer'
1
+ import { RemoteDhtNode } from '../RemoteDhtNode'
3
2
  import { SortedContactList } from '../contact/SortedContactList'
4
3
  import { PeerID, PeerIDKey } from '../../helpers/PeerID'
4
+ import { keyFromPeerDescriptor } from '../../helpers/peerIdFromPeerDescriptor'
5
5
  import { Logger } from '@streamr/utils'
6
6
  import EventEmitter from 'eventemitter3'
7
7
  import { v4 } from 'uuid'
8
- import { RouteMessageWrapper } from '../../proto/packages/dht/protos/DhtRpc'
8
+ import { PeerDescriptor, RouteMessageWrapper } from '../../proto/packages/dht/protos/DhtRpc'
9
9
  import { RemoteRouter } from './RemoteRouter'
10
10
  import { RoutingRpcCommunicator } from '../../transport/RoutingRpcCommunicator'
11
11
  import { RoutingServiceClient } from '../../proto/packages/dht/protos/DhtRpc.client'
@@ -20,7 +20,7 @@ class RemoteContact extends Contact {
20
20
 
21
21
  private router: RemoteRouter
22
22
 
23
- constructor(peer: DhtPeer, ownPeerDescriptor: PeerDescriptor, rpcCommunicator: RoutingRpcCommunicator) {
23
+ constructor(peer: RemoteDhtNode, ownPeerDescriptor: PeerDescriptor, rpcCommunicator: RoutingRpcCommunicator) {
24
24
  super(peer.getPeerDescriptor())
25
25
  this.router = new RemoteRouter(
26
26
  ownPeerDescriptor,
@@ -58,7 +58,7 @@ export class RoutingSession extends EventEmitter<RoutingSessionEvents> {
58
58
  private contactList: SortedContactList<RemoteContact>
59
59
  private readonly ownPeerDescriptor: PeerDescriptor
60
60
  private readonly messageToRoute: RouteMessageWrapper
61
- private connections: Map<PeerIDKey, DhtPeer>
61
+ private connections: Map<PeerIDKey, RemoteDhtNode>
62
62
  private readonly parallelism: number
63
63
  private failedHopCounter = 0
64
64
  private successfulHopCounter = 0
@@ -69,7 +69,7 @@ export class RoutingSession extends EventEmitter<RoutingSessionEvents> {
69
69
  rpcCommunicator: RoutingRpcCommunicator,
70
70
  ownPeerDescriptor: PeerDescriptor,
71
71
  messageToRoute: RouteMessageWrapper,
72
- connections: Map<PeerIDKey, DhtPeer>,
72
+ connections: Map<PeerIDKey, RemoteDhtNode>,
73
73
  parallelism: number,
74
74
  mode: RoutingMode = RoutingMode.ROUTE,
75
75
  destinationId?: Uint8Array,
@@ -122,7 +122,7 @@ export class RoutingSession extends EventEmitter<RoutingSessionEvents> {
122
122
  }
123
123
  }
124
124
 
125
- private onRequestSucceeded = (_peerId: PeerID) => {
125
+ private onRequestSucceeded = () => {
126
126
  logger.trace('onRequestSucceeded() sessionId: ' + this.sessionId)
127
127
  if (this.stopped) {
128
128
  return
@@ -187,14 +187,14 @@ export class RoutingSession extends EventEmitter<RoutingSessionEvents> {
187
187
  while ((this.ongoingRequests.size) < this.parallelism && (uncontacted.length > 0) && !this.stopped) {
188
188
  const nextPeer = uncontacted.shift()
189
189
  // eslint-disable-next-line max-len
190
- logger.trace(`Sending routeMessage request from ${this.ownPeerDescriptor.kademliaId} to contact: ${nextPeer!.getPeerId()} (sessionId=${this.sessionId})`)
190
+ logger.trace(`Sending routeMessage request to contact: ${keyFromPeerDescriptor(nextPeer!.getPeerDescriptor())} (sessionId=${this.sessionId})`)
191
191
  this.contactList.setContacted(nextPeer!.getPeerId())
192
192
  this.ongoingRequests.add(nextPeer!.getPeerId().toKey())
193
193
  setImmediate(async () => {
194
194
  try {
195
195
  const succeeded = await this.sendRouteMessageRequest(nextPeer!)
196
196
  if (succeeded) {
197
- this.onRequestSucceeded(nextPeer!.getPeerId())
197
+ this.onRequestSucceeded()
198
198
  } else {
199
199
  this.onRequestFailed(nextPeer!.getPeerId())
200
200
  }
@@ -10,7 +10,7 @@ import { toProtoRpcClient } from '@streamr/proto-rpc'
10
10
  import { StoreServiceClient } from '../../proto/packages/dht/protos/DhtRpc.client'
11
11
  import { RoutingRpcCommunicator } from '../../transport/RoutingRpcCommunicator'
12
12
  import { IRecursiveFinder } from '../find/RecursiveFinder'
13
- import { isSamePeerDescriptor, peerIdFromPeerDescriptor } from '../../helpers/peerIdFromPeerDescriptor'
13
+ import { areEqualPeerDescriptors, keyFromPeerDescriptor, peerIdFromPeerDescriptor } from '../../helpers/peerIdFromPeerDescriptor'
14
14
  import { Logger } from '@streamr/utils'
15
15
  import { LocalDataStore } from './LocalDataStore'
16
16
  import { IStoreService } from '../../proto/packages/dht/protos/DhtRpc.server'
@@ -20,7 +20,7 @@ import EventEmitter from 'eventemitter3'
20
20
  import { Events } from '../DhtNode'
21
21
  import { SortedContactList } from '../contact/SortedContactList'
22
22
  import { Contact } from '../contact/Contact'
23
- import { DhtPeer } from '../DhtPeer'
23
+ import { RemoteDhtNode } from '../RemoteDhtNode'
24
24
 
25
25
  interface DataStoreConfig {
26
26
  rpcCommunicator: RoutingRpcCommunicator
@@ -32,7 +32,7 @@ interface DataStoreConfig {
32
32
  highestTtl: number
33
33
  numberOfCopies: number
34
34
  dhtNodeEmitter: EventEmitter<Events>
35
- getNodesClosestToIdFromBucket: (id: Uint8Array, n?: number) => DhtPeer[]
35
+ getNodesClosestToIdFromBucket: (id: Uint8Array, n?: number) => RemoteDhtNode[]
36
36
  }
37
37
 
38
38
  const logger = new Logger(module)
@@ -48,7 +48,7 @@ export class DataStore implements IStoreService {
48
48
  private readonly highestTtl: number
49
49
  private readonly numberOfCopies: number
50
50
  private readonly dhtNodeEmitter: EventEmitter<Events>
51
- private readonly getNodesClosestToIdFromBucket: (id: Uint8Array, n?: number) => DhtPeer[]
51
+ private readonly getNodesClosestToIdFromBucket: (id: Uint8Array, n?: number) => RemoteDhtNode[]
52
52
 
53
53
  constructor(config: DataStoreConfig) {
54
54
  this.rpcCommunicator = config.rpcCommunicator
@@ -68,7 +68,7 @@ export class DataStore implements IStoreService {
68
68
  this.rpcCommunicator.registerRpcMethod(DeleteDataRequest, DeleteDataResponse, 'deleteData',
69
69
  (request: DeleteDataRequest, context: ServerCallContext) => this.deleteData(request, context))
70
70
 
71
- this.dhtNodeEmitter.on('newContact', (peerDescriptor: PeerDescriptor, _closestPeers: PeerDescriptor[]) => {
71
+ this.dhtNodeEmitter.on('newContact', (peerDescriptor: PeerDescriptor) => {
72
72
  this.localDataStore.getStore().forEach((dataMap, _dataKey) => {
73
73
  dataMap.forEach((dataEntry) => {
74
74
  if (this.shouldMigrateDataToNewNode(dataEntry.dataEntry, peerDescriptor)) {
@@ -151,7 +151,7 @@ export class DataStore implements IStoreService {
151
151
  const ttl = this.highestTtl // ToDo: make TTL decrease according to some nice curve
152
152
  const storerTime = Timestamp.now()
153
153
  for (let i = 0; i < closestNodes.length && successfulNodes.length < this.numberOfCopies; i++) {
154
- if (isSamePeerDescriptor(this.ownPeerDescriptor, closestNodes[i])) {
154
+ if (areEqualPeerDescriptors(this.ownPeerDescriptor, closestNodes[i])) {
155
155
  this.localDataStore.storeEntry({
156
156
  kademliaId: key,
157
157
  storer: this.ownPeerDescriptor,
@@ -201,7 +201,7 @@ export class DataStore implements IStoreService {
201
201
  const closestNodes = result.closestNodes
202
202
  const successfulNodes: PeerDescriptor[] = []
203
203
  for (let i = 0; i < closestNodes.length && successfulNodes.length < this.numberOfCopies; i++) {
204
- if (isSamePeerDescriptor(this.ownPeerDescriptor, closestNodes[i])) {
204
+ if (areEqualPeerDescriptors(this.ownPeerDescriptor, closestNodes[i])) {
205
205
  this.localDataStore.markAsDeleted(key, peerIdFromPeerDescriptor(this.ownPeerDescriptor))
206
206
  successfulNodes.push(closestNodes[i])
207
207
  continue
@@ -217,7 +217,7 @@ export class DataStore implements IStoreService {
217
217
  if (response.deleted) {
218
218
  logger.trace('remoteStore.deleteData() returned success')
219
219
  } else {
220
- logger.trace('could not delete data from ' + PeerID.fromValue(closestNodes[i].kademliaId))
220
+ logger.trace('could not delete data from ' + keyFromPeerDescriptor(closestNodes[i]))
221
221
  }
222
222
  successfulNodes.push(closestNodes[i])
223
223
  } catch (e) {
@@ -246,7 +246,7 @@ export class DataStore implements IStoreService {
246
246
  this.localDataStore.setAllEntriesAsStale(PeerID.fromValue(kademliaId))
247
247
  }
248
248
 
249
- logger.trace(this.ownPeerDescriptor.nodeName + ' storeData()')
249
+ logger.trace('storeData()')
250
250
  return StoreDataResponse.create()
251
251
  }
252
252
 
@@ -260,7 +260,7 @@ export class DataStore implements IStoreService {
260
260
 
261
261
  // RPC service implementation
262
262
  public async migrateData(request: MigrateDataRequest, context: ServerCallContext): Promise<MigrateDataResponse> {
263
- logger.trace(this.ownPeerDescriptor.nodeName + ' server-side migrateData()')
263
+ logger.trace('server-side migrateData()')
264
264
  const dataEntry = request.dataEntry!
265
265
 
266
266
  const wasStored = this.localDataStore.storeEntry(dataEntry)
@@ -271,7 +271,7 @@ export class DataStore implements IStoreService {
271
271
  if (!this.selfIsOneOfClosestPeers(dataEntry.kademliaId)) {
272
272
  this.localDataStore.setAllEntriesAsStale(PeerID.fromValue(dataEntry.kademliaId))
273
273
  }
274
- logger.trace(this.ownPeerDescriptor.nodeName + ' server-side migrateData() at end')
274
+ logger.trace('server-side migrateData() at end')
275
275
  return MigrateDataResponse.create()
276
276
  }
277
277
 
package/src/exports.ts CHANGED
@@ -6,14 +6,8 @@ export { getRandomRegion, getRegionDelayMatrix } from './connection/Simulator/pi
6
6
  export { PeerDescriptor, Message, NodeType, DataEntry } from './proto/packages/dht/protos/DhtRpc'
7
7
  export { ITransport } from './transport/ITransport'
8
8
  export { ConnectionManager, ConnectionLocker, PortRange, TlsCertificate } from './connection/ConnectionManager'
9
- export { PeerID, PeerIDKey } from './helpers/PeerID'
10
- export { UUID } from './helpers/UUID'
11
9
  export { DhtRpcOptions } from './rpc-protocol/DhtRpcOptions'
12
- export { protoClasses } from './helpers/protoClasses'
13
- export { SortedContactList } from './dht/contact/SortedContactList'
14
- export { Contact } from './dht/contact/Contact'
15
10
  export { Remote } from './dht/contact/Remote'
16
- export { RecursiveFindResult } from './dht/find/RecursiveFinder'
17
- export { peerIdFromPeerDescriptor, keyFromPeerDescriptor, isSamePeerDescriptor } from './helpers/peerIdFromPeerDescriptor'
11
+ export { areEqualPeerDescriptors } from './helpers/peerIdFromPeerDescriptor'
18
12
  export { IceServer } from './connection/WebRTC/WebRtcConnector'
19
13
  export { DhtCallContext } from './rpc-protocol/DhtCallContext'
@@ -49,13 +49,6 @@ export class PeerID {
49
49
  return new PeerID({ stringValue })
50
50
  }
51
51
 
52
- static generateRandom(): PeerID {
53
- // generate 160 bit random Uint8array
54
- const value = new Uint8Array(20)
55
- crypto.randomFillSync(value)
56
- return new PeerID({ value })
57
- }
58
-
59
52
  // TODO convert to static method?
60
53
  // eslint-disable-next-line class-methods-use-this
61
54
  private ip2Int(ip: string): number {
@@ -0,0 +1 @@
1
+ export const isBrowserEnvironment = (): boolean => false
@@ -0,0 +1,3 @@
1
+ // webpack overwrites the isBrowserEnvironment.ts with this file when it creates the browser bundle
2
+
3
+ export const isBrowserEnvironment = (): boolean => true
@@ -0,0 +1,8 @@
1
+ import crypto from 'crypto'
2
+
3
+ // https://www.scs.stanford.edu/~dm/home/papers/kpos.pdf
4
+ const KADEMLIA_ID_LENGTH_IN_BYTES = 20
5
+
6
+ export const createRandomKademliaId = (): Uint8Array => {
7
+ return crypto.randomBytes(KADEMLIA_ID_LENGTH_IN_BYTES)
8
+ }
@@ -9,6 +9,6 @@ export const keyFromPeerDescriptor = (peerDescriptor: PeerDescriptor): PeerIDKey
9
9
  return PeerID.fromValue(peerDescriptor.kademliaId).toKey()
10
10
  }
11
11
 
12
- export const isSamePeerDescriptor = (peerDescriptor1: PeerDescriptor, peerDescriptor2: PeerDescriptor): boolean => {
12
+ export const areEqualPeerDescriptors = (peerDescriptor1: PeerDescriptor, peerDescriptor2: PeerDescriptor): boolean => {
13
13
  return peerIdFromPeerDescriptor(peerDescriptor1).equals(peerIdFromPeerDescriptor(peerDescriptor2))
14
14
  }
@@ -253,10 +253,6 @@ export interface PeerDescriptor {
253
253
  * @generated from protobuf field: optional uint32 region = 7;
254
254
  */
255
255
  region?: number;
256
- /**
257
- * @generated from protobuf field: optional string nodeName = 8;
258
- */
259
- nodeName?: string;
260
256
  }
261
257
  /**
262
258
  * @generated from protobuf message dht.ConnectivityMethod
@@ -1019,8 +1015,7 @@ class PeerDescriptor$Type extends MessageType$<PeerDescriptor> {
1019
1015
  { no: 4, name: "tcp", kind: "message", T: () => ConnectivityMethod },
1020
1016
  { no: 5, name: "websocket", kind: "message", T: () => ConnectivityMethod },
1021
1017
  { no: 6, name: "openInternet", kind: "scalar", opt: true, T: 8 /*ScalarType.BOOL*/ },
1022
- { no: 7, name: "region", kind: "scalar", opt: true, T: 13 /*ScalarType.UINT32*/ },
1023
- { no: 8, name: "nodeName", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/ }
1018
+ { no: 7, name: "region", kind: "scalar", opt: true, T: 13 /*ScalarType.UINT32*/ }
1024
1019
  ]);
1025
1020
  }
1026
1021
  }
@@ -1,7 +1,8 @@
1
1
  /* eslint-disable no-console */
2
2
  import { Simulator } from '../../src/connection/Simulator/Simulator'
3
3
  import { DhtNode } from '../../src/dht/DhtNode'
4
- import { PeerID } from '../../src/exports'
4
+ import { PeerID } from '../../src/helpers/PeerID'
5
+ import { keyFromPeerDescriptor } from '../../src/helpers/peerIdFromPeerDescriptor'
5
6
  import { NodeType, PeerDescriptor } from '../../src/proto/packages/dht/protos/DhtRpc'
6
7
  import { createMockConnectionDhtNode } from '../utils/utils'
7
8
  import { execSync } from 'child_process'
@@ -87,7 +88,8 @@ describe('Kademlia correctness', () => {
87
88
  correctNeighbors++
88
89
  }
89
90
  } catch (e) {
90
- console.error('Node ' + nodes[i].getPeerDescriptor().nodeName + ' had only ' + kademliaNeighbors.length + ' kademlia neighbors')
91
+ console.error('Node ' + keyFromPeerDescriptor(nodes[i].getPeerDescriptor()) + ' had only '
92
+ + kademliaNeighbors.length + ' kademlia neighbors')
91
93
  }
92
94
  if (correctNeighbors === 0) {
93
95
  console.log('No correct neighbors found for node ' + i)
@@ -5,7 +5,8 @@ import { NodeType, PeerDescriptor } from '../../src/proto/packages/dht/protos/Dh
5
5
  import { createMockConnectionDhtNode } from '../utils/utils'
6
6
  import { execSync } from 'child_process'
7
7
  import fs from 'fs'
8
- import { PeerID, peerIdFromPeerDescriptor } from '../../src/exports'
8
+ import { PeerID } from '../../src/helpers/PeerID'
9
+ import { keyFromPeerDescriptor, peerIdFromPeerDescriptor } from '../../src/helpers/peerIdFromPeerDescriptor'
9
10
  import { Logger, wait } from '@streamr/utils'
10
11
  import { debugVars } from '../../src/helpers/debugHelpers'
11
12
 
@@ -31,19 +32,18 @@ describe('Recursive find correctness', () => {
31
32
 
32
33
  nodes = []
33
34
  const entryPointId = '0'
34
- entryPoint = await createMockConnectionDhtNode(entryPointId, simulator, Uint8Array.from(dhtIds[0].data), undefined, entryPointId)
35
+ entryPoint = await createMockConnectionDhtNode(entryPointId, simulator, Uint8Array.from(dhtIds[0].data), undefined)
35
36
  nodes.push(entryPoint)
36
37
  nodeIndicesById[entryPoint.getNodeId().toKey()] = 0
37
38
  entrypointDescriptor = {
38
39
  kademliaId: entryPoint.getNodeId().value,
39
- type: NodeType.NODEJS,
40
- nodeName: entryPointId
40
+ type: NodeType.NODEJS
41
41
  }
42
42
 
43
43
  for (let i = 1; i < NUM_NODES; i++) {
44
44
  const nodeId = `${i}`
45
45
 
46
- const node = await createMockConnectionDhtNode(nodeId, simulator, Uint8Array.from(dhtIds[i].data), undefined, nodeId)
46
+ const node = await createMockConnectionDhtNode(nodeId, simulator, Uint8Array.from(dhtIds[i].data), undefined)
47
47
  nodeIndicesById[node.getNodeId().toKey()] = i
48
48
  nodes.push(node)
49
49
  }
@@ -70,7 +70,7 @@ describe('Recursive find correctness', () => {
70
70
  debugVars['waiting'] = false
71
71
  logger.info('waiting over')
72
72
 
73
- nodes.forEach((node) => logger.info(node.getPeerDescriptor().nodeName + ': connections:' +
73
+ nodes.forEach((node) => logger.info(keyFromPeerDescriptor(node.getPeerDescriptor()) + ': connections:' +
74
74
  node.getNumberOfConnections() + ', kbucket: ' + node.getBucketSize()
75
75
  + ', localLocked: ' + node.getNumberOfLocalLockedConnections()
76
76
  + ', remoteLocked: ' + node.getNumberOfRemoteLockedConnections()
@@ -1,6 +1,6 @@
1
1
  import { NodeType, PeerDescriptor } from '../../src/proto/packages/dht/protos/DhtRpc'
2
2
  import { DhtNode } from '../../src/dht/DhtNode'
3
- import { isSamePeerDescriptor } from '../../src/helpers/peerIdFromPeerDescriptor'
3
+ import { areEqualPeerDescriptors } from '../../src/helpers/peerIdFromPeerDescriptor'
4
4
 
5
5
  describe('Layer0-Layer1', () => {
6
6
  const epPeerDescriptor: PeerDescriptor = {
@@ -35,11 +35,11 @@ describe('Layer0-Layer1', () => {
35
35
  await node1.start()
36
36
  await node2.start()
37
37
 
38
- stream1Node1 = new DhtNode({ transportLayer: epDhtNode, serviceId: STREAM_ID1 })
39
- stream1Node2 = new DhtNode({ transportLayer: node1, serviceId: STREAM_ID1 })
38
+ stream1Node1 = new DhtNode({ transport: epDhtNode, serviceId: STREAM_ID1 })
39
+ stream1Node2 = new DhtNode({ transport: node1, serviceId: STREAM_ID1 })
40
40
 
41
- stream2Node1 = new DhtNode({ transportLayer: epDhtNode, serviceId: STREAM_ID2 })
42
- stream2Node2 = new DhtNode({ transportLayer: node2, serviceId: STREAM_ID2 })
41
+ stream2Node1 = new DhtNode({ transport: epDhtNode, serviceId: STREAM_ID2 })
42
+ stream2Node2 = new DhtNode({ transport: node2, serviceId: STREAM_ID2 })
43
43
 
44
44
  await Promise.all([
45
45
  stream1Node1.start(),
@@ -81,9 +81,9 @@ describe('Layer0-Layer1', () => {
81
81
  expect(stream2Node1.getClosestContacts()).toHaveLength(1)
82
82
  expect(stream2Node2.getClosestContacts()).toHaveLength(1)
83
83
 
84
- expect(isSamePeerDescriptor(stream1Node1.getClosestContacts()[0], node1.getPeerDescriptor())).toBe(true)
85
- expect(isSamePeerDescriptor(stream1Node2.getClosestContacts()[0], epPeerDescriptor)).toBe(true)
86
- expect(isSamePeerDescriptor(stream2Node1.getClosestContacts()[0], node2.getPeerDescriptor())).toBe(true)
87
- expect(isSamePeerDescriptor(stream2Node2.getClosestContacts()[0], epPeerDescriptor)).toBe(true)
84
+ expect(areEqualPeerDescriptors(stream1Node1.getClosestContacts()[0], node1.getPeerDescriptor())).toBe(true)
85
+ expect(areEqualPeerDescriptors(stream1Node2.getClosestContacts()[0], epPeerDescriptor)).toBe(true)
86
+ expect(areEqualPeerDescriptors(stream2Node1.getClosestContacts()[0], node2.getPeerDescriptor())).toBe(true)
87
+ expect(areEqualPeerDescriptors(stream2Node2.getClosestContacts()[0], epPeerDescriptor)).toBe(true)
88
88
  })
89
89
  })
@@ -54,31 +54,31 @@ describe('Layer 1 on Layer 0 with mocked connections', () => {
54
54
 
55
55
  layer1EntryPoint = new DhtNode({
56
56
  peerId: binaryToHex(entrypointDescriptor.kademliaId),
57
- transportLayer: layer0EntryPoint,
57
+ transport: layer0EntryPoint,
58
58
  serviceId: 'layer1'
59
59
  })
60
60
 
61
61
  layer1Node1 = new DhtNode({
62
62
  peerId: layer0Node1Id,
63
- transportLayer: layer0Node1,
63
+ transport: layer0Node1,
64
64
  serviceId: 'layer1'
65
65
  })
66
66
 
67
67
  layer1Node2 = new DhtNode({
68
68
  peerId: layer0Node2Id,
69
- transportLayer: layer0Node2,
69
+ transport: layer0Node2,
70
70
  serviceId: 'layer1'
71
71
  })
72
72
 
73
73
  layer1Node3 = new DhtNode({
74
74
  peerId: layer0Node3Id,
75
- transportLayer: layer0Node3,
75
+ transport: layer0Node3,
76
76
  serviceId: 'layer1'
77
77
  })
78
78
 
79
79
  layer1Node4 = new DhtNode({
80
80
  peerId: layer0Node4Id,
81
- transportLayer: layer0Node4,
81
+ transport: layer0Node4,
82
82
  serviceId: 'layer1'
83
83
  })
84
84