@streamr/dht 100.0.0-pretestnet.0 → 100.0.0-pretestnet.3

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 (317) hide show
  1. package/dist/src/connection/ConnectionLockHandler.d.ts +7 -8
  2. package/dist/src/connection/ConnectionLockHandler.js +16 -14
  3. package/dist/src/connection/ConnectionLockHandler.js.map +1 -1
  4. package/dist/src/connection/ConnectionLockRpcLocal.d.ts +20 -0
  5. package/dist/src/connection/ConnectionLockRpcLocal.js +47 -0
  6. package/dist/src/connection/ConnectionLockRpcLocal.js.map +1 -0
  7. package/dist/src/connection/ConnectionLockRpcRemote.d.ts +4 -3
  8. package/dist/src/connection/ConnectionLockRpcRemote.js +6 -6
  9. package/dist/src/connection/ConnectionLockRpcRemote.js.map +1 -1
  10. package/dist/src/connection/ConnectionManager.d.ts +5 -8
  11. package/dist/src/connection/ConnectionManager.js +77 -107
  12. package/dist/src/connection/ConnectionManager.js.map +1 -1
  13. package/dist/src/connection/ConnectivityChecker.d.ts +7 -6
  14. package/dist/src/connection/ConnectivityChecker.js +23 -20
  15. package/dist/src/connection/ConnectivityChecker.js.map +1 -1
  16. package/dist/src/connection/ConnectorFacade.d.ts +15 -12
  17. package/dist/src/connection/ConnectorFacade.js +61 -26
  18. package/dist/src/connection/ConnectorFacade.js.map +1 -1
  19. package/dist/src/connection/Handshaker.d.ts +2 -2
  20. package/dist/src/connection/Handshaker.js +28 -28
  21. package/dist/src/connection/Handshaker.js.map +1 -1
  22. package/dist/src/connection/IConnection.d.ts +5 -6
  23. package/dist/src/connection/IConnection.js.map +1 -1
  24. package/dist/src/connection/ManagedConnection.d.ts +3 -4
  25. package/dist/src/connection/ManagedConnection.js +30 -30
  26. package/dist/src/connection/ManagedConnection.js.map +1 -1
  27. package/dist/src/connection/ManagedWebrtcConnection.d.ts +7 -0
  28. package/dist/src/connection/ManagedWebrtcConnection.js +20 -0
  29. package/dist/src/connection/ManagedWebrtcConnection.js.map +1 -0
  30. package/dist/src/connection/{Simulator → simulator}/Simulator.js +3 -3
  31. package/dist/src/connection/{Simulator → simulator}/Simulator.js.map +1 -1
  32. package/dist/src/connection/{Simulator → simulator}/SimulatorConnection.d.ts +3 -4
  33. package/dist/src/connection/{Simulator → simulator}/SimulatorConnection.js +22 -22
  34. package/dist/src/connection/simulator/SimulatorConnection.js.map +1 -0
  35. package/dist/src/connection/{Simulator → simulator}/SimulatorConnector.d.ts +2 -2
  36. package/dist/src/connection/{Simulator → simulator}/SimulatorConnector.js +11 -11
  37. package/dist/src/connection/{Simulator → simulator}/SimulatorConnector.js.map +1 -1
  38. package/dist/src/connection/{Simulator → simulator}/SimulatorTransport.d.ts +1 -1
  39. package/dist/src/connection/{Simulator → simulator}/SimulatorTransport.js +2 -2
  40. package/dist/src/connection/simulator/SimulatorTransport.js.map +1 -0
  41. package/dist/src/connection/{Simulator → simulator}/pings.js.map +1 -1
  42. package/dist/src/connection/{WebRTC/IWebRtcConnection.d.ts → webrtc/IWebrtcConnection.d.ts} +2 -2
  43. package/dist/src/connection/{WebRTC/IWebRtcConnection.js → webrtc/IWebrtcConnection.js} +1 -1
  44. package/dist/src/connection/webrtc/IWebrtcConnection.js.map +1 -0
  45. package/dist/src/connection/{WebRTC/NodeWebRtcConnection.d.ts → webrtc/NodeWebrtcConnection.d.ts} +6 -7
  46. package/dist/src/connection/{WebRTC/NodeWebRtcConnection.js → webrtc/NodeWebrtcConnection.js} +36 -36
  47. package/dist/src/connection/webrtc/NodeWebrtcConnection.js.map +1 -0
  48. package/dist/src/connection/webrtc/WebrtcConnector.d.ts +38 -0
  49. package/dist/src/connection/webrtc/WebrtcConnector.js +178 -0
  50. package/dist/src/connection/webrtc/WebrtcConnector.js.map +1 -0
  51. package/dist/src/connection/webrtc/WebrtcConnectorRpcLocal.d.ts +26 -0
  52. package/dist/src/connection/webrtc/WebrtcConnectorRpcLocal.js +99 -0
  53. package/dist/src/connection/webrtc/WebrtcConnectorRpcLocal.js.map +1 -0
  54. package/dist/src/connection/{WebRTC/WebRtcConnectorRpcRemote.d.ts → webrtc/WebrtcConnectorRpcRemote.d.ts} +4 -4
  55. package/dist/src/connection/{WebRTC/WebRtcConnectorRpcRemote.js → webrtc/WebrtcConnectorRpcRemote.js} +6 -8
  56. package/dist/src/connection/webrtc/WebrtcConnectorRpcRemote.js.map +1 -0
  57. package/dist/src/connection/{WebRTC → webrtc}/iceServerAsString.d.ts +1 -1
  58. package/dist/src/connection/{WebRTC → webrtc}/iceServerAsString.js.map +1 -1
  59. package/dist/src/connection/websocket/AutoCertifierClientFacade.d.ts +26 -0
  60. package/dist/src/connection/websocket/AutoCertifierClientFacade.js +37 -0
  61. package/dist/src/connection/websocket/AutoCertifierClientFacade.js.map +1 -0
  62. package/dist/src/connection/{WebSocket/ClientWebSocket.d.ts → websocket/ClientWebsocket.d.ts} +5 -4
  63. package/dist/src/connection/{WebSocket/ClientWebSocket.js → websocket/ClientWebsocket.js} +20 -16
  64. package/dist/src/connection/websocket/ClientWebsocket.js.map +1 -0
  65. package/dist/src/connection/{WebSocket/ServerWebSocket.d.ts → websocket/ServerWebsocket.d.ts} +2 -2
  66. package/dist/src/connection/{WebSocket/ServerWebSocket.js → websocket/ServerWebsocket.js} +23 -27
  67. package/dist/src/connection/websocket/ServerWebsocket.js.map +1 -0
  68. package/dist/src/connection/{WebSocket/WebSocketConnectorRpcLocal.d.ts → websocket/WebsocketConnector.d.ts} +23 -15
  69. package/dist/src/connection/{WebSocket/WebSocketConnectorRpcLocal.js → websocket/WebsocketConnector.js} +108 -102
  70. package/dist/src/connection/websocket/WebsocketConnector.js.map +1 -0
  71. package/dist/src/connection/websocket/WebsocketConnectorRpcLocal.d.ts +17 -0
  72. package/dist/src/connection/websocket/WebsocketConnectorRpcLocal.js +26 -0
  73. package/dist/src/connection/websocket/WebsocketConnectorRpcLocal.js.map +1 -0
  74. package/dist/src/connection/{WebSocket/WebSocketConnectorRpcRemote.d.ts → websocket/WebsocketConnectorRpcRemote.d.ts} +3 -3
  75. package/dist/src/connection/{WebSocket/WebSocketConnectorRpcRemote.js → websocket/WebsocketConnectorRpcRemote.js} +5 -10
  76. package/dist/src/connection/{WebSocket/WebSocketConnectorRpcRemote.js.map → websocket/WebsocketConnectorRpcRemote.js.map} +1 -1
  77. package/dist/src/connection/{WebSocket/WebSocketServer.d.ts → websocket/WebsocketServer.d.ts} +6 -3
  78. package/dist/src/connection/{WebSocket/WebSocketServer.js → websocket/WebsocketServer.js} +39 -19
  79. package/dist/src/connection/websocket/WebsocketServer.js.map +1 -0
  80. package/dist/src/dht/DhtNode.d.ts +11 -19
  81. package/dist/src/dht/DhtNode.js +119 -150
  82. package/dist/src/dht/DhtNode.js.map +1 -1
  83. package/dist/src/dht/DhtNodeRpcLocal.d.ts +22 -0
  84. package/dist/src/dht/DhtNodeRpcLocal.js +42 -0
  85. package/dist/src/dht/DhtNodeRpcLocal.js.map +1 -0
  86. package/dist/src/dht/{RemoteDhtNode.d.ts → DhtNodeRpcRemote.d.ts} +5 -3
  87. package/dist/src/dht/{RemoteDhtNode.js → DhtNodeRpcRemote.js} +17 -21
  88. package/dist/src/dht/DhtNodeRpcRemote.js.map +1 -0
  89. package/dist/src/dht/ExternalApiRpcLocal.d.ts +16 -0
  90. package/dist/src/dht/ExternalApiRpcLocal.js +30 -0
  91. package/dist/src/dht/ExternalApiRpcLocal.js.map +1 -0
  92. package/dist/src/dht/ExternalApiRpcRemote.d.ts +1 -1
  93. package/dist/src/dht/ExternalApiRpcRemote.js +2 -2
  94. package/dist/src/dht/ExternalApiRpcRemote.js.map +1 -1
  95. package/dist/src/dht/contact/Remote.d.ts +4 -1
  96. package/dist/src/dht/contact/Remote.js +28 -2
  97. package/dist/src/dht/contact/Remote.js.map +1 -1
  98. package/dist/src/dht/contact/SortedContactList.d.ts +2 -2
  99. package/dist/src/dht/contact/SortedContactList.js +3 -3
  100. package/dist/src/dht/contact/SortedContactList.js.map +1 -1
  101. package/dist/src/dht/discovery/DiscoverySession.d.ts +9 -7
  102. package/dist/src/dht/discovery/DiscoverySession.js +8 -8
  103. package/dist/src/dht/discovery/DiscoverySession.js.map +1 -1
  104. package/dist/src/dht/discovery/PeerDiscovery.d.ts +7 -10
  105. package/dist/src/dht/discovery/PeerDiscovery.js +5 -5
  106. package/dist/src/dht/discovery/PeerDiscovery.js.map +1 -1
  107. package/dist/src/dht/find/FindRpcLocal.d.ts +14 -0
  108. package/dist/src/dht/find/FindRpcLocal.js +25 -0
  109. package/dist/src/dht/find/FindRpcLocal.js.map +1 -0
  110. package/dist/src/dht/find/{RecursiveFindSession.d.ts → FindSession.d.ts} +12 -13
  111. package/dist/src/dht/find/{RecursiveFindSession.js → FindSession.js} +18 -15
  112. package/dist/src/dht/find/FindSession.js.map +1 -0
  113. package/dist/src/dht/find/FindSessionRpcLocal.d.ts +12 -0
  114. package/dist/src/dht/find/FindSessionRpcLocal.js +17 -0
  115. package/dist/src/dht/find/FindSessionRpcLocal.js.map +1 -0
  116. package/dist/src/dht/find/{RemoteRecursiveFindSession.d.ts → FindSessionRpcRemote.d.ts} +2 -2
  117. package/dist/src/dht/find/{RemoteRecursiveFindSession.js → FindSessionRpcRemote.js} +5 -5
  118. package/dist/src/dht/find/FindSessionRpcRemote.js.map +1 -0
  119. package/dist/src/dht/find/{RecursiveFinder.d.ts → Finder.d.ts} +16 -19
  120. package/dist/src/dht/find/{RecursiveFinder.js → Finder.js} +51 -46
  121. package/dist/src/dht/find/Finder.js.map +1 -0
  122. package/dist/src/dht/routing/FindRpcRemote.d.ts +6 -0
  123. package/dist/src/dht/routing/FindRpcRemote.js +41 -0
  124. package/dist/src/dht/routing/FindRpcRemote.js.map +1 -0
  125. package/dist/src/dht/routing/Router.d.ts +10 -17
  126. package/dist/src/dht/routing/Router.js +48 -90
  127. package/dist/src/dht/routing/Router.js.map +1 -1
  128. package/dist/src/dht/routing/RouterRpcLocal.d.ts +22 -0
  129. package/dist/src/dht/routing/RouterRpcLocal.js +66 -0
  130. package/dist/src/dht/routing/RouterRpcLocal.js.map +1 -0
  131. package/dist/src/dht/routing/RouterRpcRemote.d.ts +0 -1
  132. package/dist/src/dht/routing/RouterRpcRemote.js +15 -43
  133. package/dist/src/dht/routing/RouterRpcRemote.js.map +1 -1
  134. package/dist/src/dht/routing/RoutingSession.d.ts +17 -8
  135. package/dist/src/dht/routing/RoutingSession.js +124 -131
  136. package/dist/src/dht/routing/RoutingSession.js.map +1 -1
  137. package/dist/src/dht/routing/getPreviousPeer.d.ts +2 -0
  138. package/dist/src/dht/routing/getPreviousPeer.js +9 -0
  139. package/dist/src/dht/routing/getPreviousPeer.js.map +1 -0
  140. package/dist/src/dht/store/StoreRpcLocal.d.ts +11 -8
  141. package/dist/src/dht/store/StoreRpcLocal.js +25 -24
  142. package/dist/src/dht/store/StoreRpcLocal.js.map +1 -1
  143. package/dist/src/dht/store/StoreRpcRemote.js +3 -7
  144. package/dist/src/dht/store/StoreRpcRemote.js.map +1 -1
  145. package/dist/src/exports.d.ts +11 -5
  146. package/dist/src/exports.js +17 -4
  147. package/dist/src/exports.js.map +1 -1
  148. package/dist/src/helpers/Connectivity.d.ts +4 -0
  149. package/dist/src/helpers/Connectivity.js +24 -0
  150. package/dist/src/helpers/Connectivity.js.map +1 -0
  151. package/dist/src/helpers/errors.d.ts +3 -3
  152. package/dist/src/helpers/errors.js +7 -7
  153. package/dist/src/helpers/protoClasses.js +3 -3
  154. package/dist/src/proto/packages/dht/protos/DhtRpc.client.d.ts +56 -39
  155. package/dist/src/proto/packages/dht/protos/DhtRpc.client.js +49 -36
  156. package/dist/src/proto/packages/dht/protos/DhtRpc.client.js.map +1 -1
  157. package/dist/src/proto/packages/dht/protos/DhtRpc.d.ts +64 -84
  158. package/dist/src/proto/packages/dht/protos/DhtRpc.js +64 -66
  159. package/dist/src/proto/packages/dht/protos/DhtRpc.js.map +1 -1
  160. package/dist/src/proto/packages/dht/protos/DhtRpc.server.d.ts +26 -21
  161. package/dist/src/rpc-protocol/DhtCallContext.d.ts +0 -1
  162. package/dist/src/rpc-protocol/DhtCallContext.js.map +1 -1
  163. package/dist/src/transport/ITransport.d.ts +5 -6
  164. package/dist/src/transport/ListeningRpcCommunicator.d.ts +5 -1
  165. package/dist/src/transport/ListeningRpcCommunicator.js +8 -2
  166. package/dist/src/transport/ListeningRpcCommunicator.js.map +1 -1
  167. package/dist/src/transport/RoutingRpcCommunicator.d.ts +2 -1
  168. package/dist/src/transport/RoutingRpcCommunicator.js +0 -1
  169. package/dist/src/transport/RoutingRpcCommunicator.js.map +1 -1
  170. package/dist/src/types/ServiceID.d.ts +1 -0
  171. package/dist/src/types/ServiceID.js +3 -0
  172. package/dist/src/types/ServiceID.js.map +1 -0
  173. package/karma.config.js +4 -4
  174. package/package.json +10 -8
  175. package/protos/DhtRpc.proto +32 -35
  176. package/src/connection/ConnectionLockHandler.ts +19 -17
  177. package/src/connection/ConnectionLockRpcLocal.ts +74 -0
  178. package/src/connection/ConnectionLockRpcRemote.ts +7 -6
  179. package/src/connection/ConnectionManager.ts +59 -95
  180. package/src/connection/ConnectivityChecker.ts +30 -26
  181. package/src/connection/ConnectorFacade.ts +74 -34
  182. package/src/connection/Handshaker.ts +9 -9
  183. package/src/connection/IConnection.ts +5 -6
  184. package/src/connection/ManagedConnection.ts +21 -22
  185. package/src/connection/{ManagedWebRtcConnection.ts → ManagedWebrtcConnection.ts} +9 -9
  186. package/src/connection/{Simulator → simulator}/Simulator.ts +4 -4
  187. package/src/connection/{Simulator → simulator}/SimulatorConnection.ts +23 -24
  188. package/src/connection/{Simulator → simulator}/SimulatorConnector.ts +13 -13
  189. package/src/connection/{Simulator → simulator}/SimulatorTransport.ts +2 -2
  190. package/src/connection/{WebRTC/BrowserWebRtcConnection.ts → webrtc/BrowserWebrtcConnection.ts} +12 -13
  191. package/src/connection/{WebRTC/IWebRtcConnection.ts → webrtc/IWebrtcConnection.ts} +2 -2
  192. package/src/connection/{WebRTC/NodeWebRtcConnection.ts → webrtc/NodeWebrtcConnection.ts} +32 -33
  193. package/src/connection/webrtc/WebrtcConnector.ts +225 -0
  194. package/src/connection/webrtc/WebrtcConnectorRpcLocal.ts +132 -0
  195. package/src/connection/{WebRTC/WebRtcConnectorRpcRemote.ts → webrtc/WebrtcConnectorRpcRemote.ts} +6 -7
  196. package/src/connection/{WebRTC → webrtc}/iceServerAsString.ts +1 -1
  197. package/src/connection/websocket/AutoCertifierClientFacade.ts +91 -0
  198. package/src/connection/{WebSocket/ClientWebSocket.ts → websocket/ClientWebsocket.ts} +19 -17
  199. package/src/connection/{WebSocket/ServerWebSocket.ts → websocket/ServerWebsocket.ts} +21 -27
  200. package/src/connection/{WebSocket/WebSocketConnectorRpcLocal.ts → websocket/WebsocketConnector.ts} +110 -101
  201. package/src/connection/websocket/WebsocketConnectorRpcLocal.ts +41 -0
  202. package/src/connection/{WebSocket/WebSocketConnectorRpcRemote.ts → websocket/WebsocketConnectorRpcRemote.ts} +6 -12
  203. package/src/connection/{WebSocket/WebSocketServer.ts → websocket/WebsocketServer.ts} +40 -22
  204. package/src/dht/DhtNode.ts +144 -179
  205. package/src/dht/DhtNodeRpcLocal.ts +68 -0
  206. package/src/dht/{RemoteDhtNode.ts → DhtNodeRpcRemote.ts} +12 -13
  207. package/src/dht/ExternalApiRpcLocal.ts +46 -0
  208. package/src/dht/ExternalApiRpcRemote.ts +4 -4
  209. package/src/dht/contact/Remote.ts +32 -4
  210. package/src/dht/contact/SortedContactList.ts +4 -4
  211. package/src/dht/discovery/DiscoverySession.ts +23 -20
  212. package/src/dht/discovery/PeerDiscovery.ts +14 -17
  213. package/src/dht/find/FindRpcLocal.ts +35 -0
  214. package/src/dht/find/{RecursiveFindSession.ts → FindSession.ts} +26 -25
  215. package/src/dht/find/FindSessionRpcLocal.ts +25 -0
  216. package/src/dht/find/{RemoteRecursiveFindSession.ts → FindSessionRpcRemote.ts} +9 -5
  217. package/src/dht/find/{RecursiveFinder.ts → Finder.ts} +78 -71
  218. package/src/dht/routing/FindRpcRemote.ts +40 -0
  219. package/src/dht/routing/Router.ts +70 -105
  220. package/src/dht/routing/RouterRpcLocal.ts +81 -0
  221. package/src/dht/routing/RouterRpcRemote.ts +15 -45
  222. package/src/dht/routing/RoutingSession.ts +56 -61
  223. package/src/dht/routing/getPreviousPeer.ts +6 -0
  224. package/src/dht/store/StoreRpcLocal.ts +44 -37
  225. package/src/dht/store/StoreRpcRemote.ts +4 -8
  226. package/src/exports.ts +11 -5
  227. package/src/helpers/Connectivity.ts +19 -0
  228. package/src/helpers/errors.ts +3 -3
  229. package/src/helpers/protoClasses.ts +6 -6
  230. package/src/proto/packages/dht/protos/DhtRpc.client.ts +75 -59
  231. package/src/proto/packages/dht/protos/DhtRpc.server.ts +26 -21
  232. package/src/proto/packages/dht/protos/DhtRpc.ts +87 -114
  233. package/src/rpc-protocol/DhtCallContext.ts +0 -1
  234. package/src/transport/ITransport.ts +5 -8
  235. package/src/transport/ListeningRpcCommunicator.ts +14 -4
  236. package/src/transport/RoutingRpcCommunicator.ts +3 -4
  237. package/src/types/ServiceID.ts +1 -0
  238. package/test/benchmark/{RecursiveFind.test.ts → Find.test.ts} +6 -6
  239. package/test/benchmark/KademliaCorrectness.test.ts +2 -2
  240. package/test/benchmark/kademlia-simulation/SimulationNode.ts +3 -3
  241. package/test/end-to-end/Layer0-Layer1.test.ts +13 -5
  242. package/test/end-to-end/Layer0.test.ts +35 -17
  243. package/test/end-to-end/Layer0MixedConnectionTypes.test.ts +24 -6
  244. package/test/end-to-end/{Layer0WebRTC-Layer1.test.ts → Layer0Webrtc-Layer1.test.ts} +1 -1
  245. package/test/end-to-end/{Layer0WebRTC.test.ts → Layer0Webrtc.test.ts} +14 -10
  246. package/test/end-to-end/Layer1-Scale-WebSocket.test.ts +8 -4
  247. package/test/end-to-end/{Layer1-Scale-WebRTC.test.ts → Layer1-Scale-Webrtc.test.ts} +2 -2
  248. package/test/end-to-end/RecoveryFromFailedAutoCertification.test.ts +52 -0
  249. package/test/end-to-end/{WebSocketConnectionRequest.test.ts → WebsocketConnectionRequest.test.ts} +16 -8
  250. package/test/end-to-end/memory-leak.test.ts +85 -0
  251. package/test/integration/ConnectionLocking.test.ts +4 -4
  252. package/test/integration/ConnectionManager.test.ts +37 -28
  253. package/test/integration/DhtJoinPeerDiscovery.test.ts +2 -2
  254. package/test/integration/DhtNodeExternalAPI.test.ts +10 -10
  255. package/test/integration/{RemoteDhtNode.test.ts → DhtNodeRpcRemote.test.ts} +10 -10
  256. package/test/integration/DhtRpc.test.ts +5 -5
  257. package/test/integration/{RecursiveFind.test.ts → Find.test.ts} +3 -3
  258. package/test/integration/Layer1-scale.test.ts +1 -1
  259. package/test/integration/MigrateData.test.ts +6 -5
  260. package/test/integration/Mock-Layer1-Layer0.test.ts +1 -1
  261. package/test/integration/MultipleEntryPointJoining.test.ts +6 -6
  262. package/test/integration/RouteMessage.test.ts +26 -26
  263. package/test/integration/RpcErrors.test.ts +10 -10
  264. package/test/integration/ScaleDownDht.test.ts +3 -3
  265. package/test/integration/SimultaneousConnections.test.ts +10 -7
  266. package/test/integration/Store.test.ts +1 -1
  267. package/test/integration/StoreAndDelete.test.ts +1 -1
  268. package/test/integration/StoreOnDhtWithTwoNodes.test.ts +12 -12
  269. package/test/integration/{WebRtcConnectionManagement.test.ts → WebrtcConnectionManagement.test.ts} +4 -4
  270. package/test/integration/{WebRtcConnectorRpc.test.ts → WebrtcConnectorRpc.test.ts} +7 -8
  271. package/test/integration/{WebSocket.test.ts → Websocket.test.ts} +14 -13
  272. package/test/integration/{WebSocketConnectionManagement.test.ts → WebsocketConnectionManagement.test.ts} +4 -4
  273. package/test/integration/{WebSocketConnectorRpc.test.ts → WebsocketConnectorRpc.test.ts} +15 -15
  274. package/test/unit/AutoCertifierClientFacade.test.ts +58 -0
  275. package/test/unit/ConnectivityHelpers.test.ts +69 -0
  276. package/test/unit/{RecursiveFinder.test.ts → Finder.test.ts} +19 -17
  277. package/test/unit/Router.test.ts +26 -26
  278. package/test/unit/UUID.test.ts +1 -1
  279. package/test/unit/{WebSocketConnectorRpcLocal.test.ts → WebsocketConnector.test.ts} +8 -8
  280. package/test/unit/{WebSocketServer.test.ts → WebsocketServer.test.ts} +20 -14
  281. package/test/unit/webrtcReplaceInternalIpWithExternalIp.test.ts +1 -1
  282. package/test/utils/FakeRpcCommunicator.ts +23 -0
  283. package/test/utils/mock/Transport.ts +1 -1
  284. package/test/utils/utils.ts +14 -24
  285. package/tsconfig.browser.json +1 -1
  286. package/tsconfig.jest.json +3 -2
  287. package/tsconfig.node.json +3 -2
  288. package/dist/src/connection/ManagedWebRtcConnection.d.ts +0 -7
  289. package/dist/src/connection/ManagedWebRtcConnection.js +0 -20
  290. package/dist/src/connection/ManagedWebRtcConnection.js.map +0 -1
  291. package/dist/src/connection/Simulator/SimulatorConnection.js.map +0 -1
  292. package/dist/src/connection/Simulator/SimulatorTransport.js.map +0 -1
  293. package/dist/src/connection/WebRTC/IWebRtcConnection.js.map +0 -1
  294. package/dist/src/connection/WebRTC/NodeWebRtcConnection.js.map +0 -1
  295. package/dist/src/connection/WebRTC/WebRtcConnectorRpcLocal.d.ts +0 -51
  296. package/dist/src/connection/WebRTC/WebRtcConnectorRpcLocal.js +0 -249
  297. package/dist/src/connection/WebRTC/WebRtcConnectorRpcLocal.js.map +0 -1
  298. package/dist/src/connection/WebRTC/WebRtcConnectorRpcRemote.js.map +0 -1
  299. package/dist/src/connection/WebSocket/ClientWebSocket.js.map +0 -1
  300. package/dist/src/connection/WebSocket/ServerWebSocket.js.map +0 -1
  301. package/dist/src/connection/WebSocket/WebSocketConnectorRpcLocal.js.map +0 -1
  302. package/dist/src/connection/WebSocket/WebSocketServer.js.map +0 -1
  303. package/dist/src/dht/RemoteDhtNode.js.map +0 -1
  304. package/dist/src/dht/find/RecursiveFindSession.js.map +0 -1
  305. package/dist/src/dht/find/RecursiveFinder.js.map +0 -1
  306. package/dist/src/dht/find/RemoteRecursiveFindSession.js.map +0 -1
  307. package/dist/src/dht/registerExternalApiRpcMethods.d.ts +0 -2
  308. package/dist/src/dht/registerExternalApiRpcMethods.js +0 -32
  309. package/dist/src/dht/registerExternalApiRpcMethods.js.map +0 -1
  310. package/src/connection/WebRTC/WebRtcConnectorRpcLocal.ts +0 -335
  311. package/src/dht/registerExternalApiRpcMethods.ts +0 -44
  312. package/test/utils/mock/RecursiveFinder.ts +0 -19
  313. /package/dist/src/connection/{Simulator → simulator}/Simulator.d.ts +0 -0
  314. /package/dist/src/connection/{Simulator → simulator}/pings.d.ts +0 -0
  315. /package/dist/src/connection/{Simulator → simulator}/pings.js +0 -0
  316. /package/dist/src/connection/{WebRTC → webrtc}/iceServerAsString.js +0 -0
  317. /package/src/connection/{Simulator → simulator}/pings.ts +0 -0
@@ -0,0 +1,25 @@
1
+ import { IFindSessionRpc } from '../../proto/packages/dht/protos/DhtRpc.server'
2
+ import { Empty } from '../../proto/google/protobuf/empty'
3
+ import { DataEntry, FindResponse, PeerDescriptor } from '../../proto/packages/dht/protos/DhtRpc'
4
+ import { Logger } from '@streamr/utils'
5
+
6
+ const logger = new Logger(module)
7
+
8
+ interface FindSessionRpcLocalConfig {
9
+ doSendFindResponse: (routingPath: PeerDescriptor[], nodes: PeerDescriptor[], dataEntries: DataEntry[], noCloserNodesFound?: boolean) => void
10
+ }
11
+
12
+ export class FindSessionRpcLocal implements IFindSessionRpc {
13
+
14
+ private readonly config: FindSessionRpcLocalConfig
15
+
16
+ constructor(config: FindSessionRpcLocalConfig) {
17
+ this.config = config
18
+ }
19
+
20
+ async sendFindResponse(report: FindResponse): Promise<Empty> {
21
+ logger.trace('FindResponse arrived: ' + JSON.stringify(report))
22
+ this.config.doSendFindResponse(report.routingPath, report.closestConnectedPeers, report.dataEntries, report.noCloserNodesFound)
23
+ return {}
24
+ }
25
+ }
@@ -3,16 +3,20 @@ import {
3
3
  PeerDescriptor,
4
4
  FindResponse
5
5
  } from '../../proto/packages/dht/protos/DhtRpc'
6
- import { IRecursiveFindSessionServiceClient } from '../../proto/packages/dht/protos/DhtRpc.client'
6
+ import { IFindSessionRpcClient } from '../../proto/packages/dht/protos/DhtRpc.client'
7
7
  import { Logger } from '@streamr/utils'
8
8
  import { Remote } from '../contact/Remote'
9
9
 
10
10
  const logger = new Logger(module)
11
11
 
12
- export class RemoteRecursiveFindSession extends Remote<IRecursiveFindSessionServiceClient> {
12
+ export class FindSessionRpcRemote extends Remote<IFindSessionRpcClient> {
13
13
 
14
- sendFindResponse(routingPath: PeerDescriptor[], closestNodes: PeerDescriptor[],
15
- dataEntries: DataEntry[], noCloserNodesFound: boolean): void {
14
+ sendFindResponse(
15
+ routingPath: PeerDescriptor[],
16
+ closestNodes: PeerDescriptor[],
17
+ dataEntries: DataEntry[],
18
+ noCloserNodesFound: boolean
19
+ ): void {
16
20
  const report: FindResponse = {
17
21
  routingPath,
18
22
  closestConnectedPeers: closestNodes,
@@ -20,7 +24,7 @@ export class RemoteRecursiveFindSession extends Remote<IRecursiveFindSessionServ
20
24
  noCloserNodesFound
21
25
  }
22
26
  this.getClient().sendFindResponse(report, this.formDhtRpcOptions()).catch((_e) => {
23
- logger.trace('Failed to send FindResult')
27
+ logger.trace('Failed to send FindResponse')
24
28
  })
25
29
  }
26
30
  }
@@ -9,115 +9,134 @@ import {
9
9
  RouteMessageWrapper
10
10
  } from '../../proto/packages/dht/protos/DhtRpc'
11
11
  import { PeerID, PeerIDKey } from '../../helpers/PeerID'
12
- import { createRouteMessageAck, RoutingErrors, IRouter } from '../routing/Router'
12
+ import { RoutingErrors, IRouter } from '../routing/Router'
13
13
  import { RoutingMode } from '../routing/RoutingSession'
14
- import { areEqualPeerDescriptors, keyFromPeerDescriptor, peerIdFromPeerDescriptor } from '../../helpers/peerIdFromPeerDescriptor'
14
+ import { areEqualPeerDescriptors, peerIdFromPeerDescriptor } from '../../helpers/peerIdFromPeerDescriptor'
15
15
  import { Logger, runAndWaitForEvents3 } from '@streamr/utils'
16
16
  import { RoutingRpcCommunicator } from '../../transport/RoutingRpcCommunicator'
17
- import { RemoteRecursiveFindSession } from './RemoteRecursiveFindSession'
17
+ import { FindSessionRpcRemote } from './FindSessionRpcRemote'
18
18
  import { v4 } from 'uuid'
19
- import { RecursiveFindSession, RecursiveFindSessionEvents } from './RecursiveFindSession'
20
- import { RemoteDhtNode } from '../RemoteDhtNode'
19
+ import { FindSession, FindSessionEvents } from './FindSession'
20
+ import { DhtNodeRpcRemote } from '../DhtNodeRpcRemote'
21
21
  import { ITransport } from '../../transport/ITransport'
22
22
  import { LocalDataStore } from '../store/LocalDataStore'
23
- import { IRouterRpc } from '../../proto/packages/dht/protos/DhtRpc.server'
24
23
  import { ListeningRpcCommunicator } from '../../transport/ListeningRpcCommunicator'
25
- import { RecursiveFindSessionServiceClient } from '../../proto/packages/dht/protos/DhtRpc.client'
24
+ import { FindSessionRpcClient } from '../../proto/packages/dht/protos/DhtRpc.client'
26
25
  import { toProtoRpcClient } from '@streamr/proto-rpc'
27
26
  import { SortedContactList } from '../contact/SortedContactList'
27
+ import { getPreviousPeer } from '../routing/getPreviousPeer'
28
+ import { createRouteMessageAck } from '../routing/RouterRpcLocal'
29
+ import { ServiceID } from '../../types/ServiceID'
30
+ import { FindRpcLocal } from './FindRpcLocal'
28
31
 
29
- interface RecursiveFinderConfig {
32
+ interface FinderConfig {
30
33
  rpcCommunicator: RoutingRpcCommunicator
31
34
  sessionTransport: ITransport
32
- connections: Map<PeerIDKey, RemoteDhtNode>
35
+ connections: Map<PeerIDKey, DhtNodeRpcRemote>
33
36
  router: IRouter
34
- ownPeerDescriptor: PeerDescriptor
35
- serviceId: string
37
+ localPeerDescriptor: PeerDescriptor
38
+ serviceId: ServiceID
36
39
  localDataStore: LocalDataStore
37
40
  addContact: (contact: PeerDescriptor, setActive?: boolean) => void
38
41
  isPeerCloserToIdThanSelf: (peer1: PeerDescriptor, compareToId: PeerID) => boolean
39
42
  }
40
43
 
41
- interface RecursiveFinderFunc {
42
- startRecursiveFind(idToFind: Uint8Array, fetchData?: boolean): Promise<RecursiveFindResult>
44
+ export interface IFinder {
45
+ startFind(idToFind: Uint8Array, fetchData?: boolean): Promise<FindResult>
43
46
  }
44
47
 
45
- export interface IRecursiveFinder extends Pick<IRouterRpc, 'findRecursively'>, RecursiveFinderFunc {}
46
-
47
- export interface RecursiveFindResult { closestNodes: Array<PeerDescriptor>, dataEntries?: Array<DataEntry> }
48
+ export interface FindResult { closestNodes: Array<PeerDescriptor>, dataEntries?: Array<DataEntry> }
48
49
 
49
50
  const logger = new Logger(module)
50
51
 
51
- export class RecursiveFinder implements IRecursiveFinder {
52
+ export class Finder implements IFinder {
52
53
 
53
54
  private readonly rpcCommunicator: RoutingRpcCommunicator
54
55
  private readonly sessionTransport: ITransport
55
- private readonly connections: Map<PeerIDKey, RemoteDhtNode>
56
+ private readonly connections: Map<PeerIDKey, DhtNodeRpcRemote>
56
57
  private readonly router: IRouter
57
- private readonly ownPeerDescriptor: PeerDescriptor
58
- private readonly serviceId: string
58
+ private readonly localPeerDescriptor: PeerDescriptor
59
+ private readonly serviceId: ServiceID
59
60
  private readonly localDataStore: LocalDataStore
60
- private readonly addContact: (contact: PeerDescriptor, setActive?: boolean) => void
61
61
  private readonly isPeerCloserToIdThanSelf: (peer1: PeerDescriptor, compareToId: PeerID) => boolean
62
- private ongoingSessions: Map<string, RecursiveFindSession> = new Map()
62
+ private ongoingSessions: Map<string, FindSession> = new Map()
63
63
  private stopped = false
64
64
 
65
- constructor(config: RecursiveFinderConfig) {
65
+ constructor(config: FinderConfig) {
66
66
  this.rpcCommunicator = config.rpcCommunicator
67
67
  this.sessionTransport = config.sessionTransport
68
68
  this.connections = config.connections
69
69
  this.router = config.router
70
- this.ownPeerDescriptor = config.ownPeerDescriptor
70
+ this.localPeerDescriptor = config.localPeerDescriptor
71
71
  this.serviceId = config.serviceId
72
72
  this.localDataStore = config.localDataStore
73
- this.addContact = config.addContact
74
73
  this.isPeerCloserToIdThanSelf = config.isPeerCloserToIdThanSelf
75
- this.rpcCommunicator.registerRpcMethod(RouteMessageWrapper, RouteMessageAck, 'findRecursively',
76
- (routedMessage: RouteMessageWrapper) => this.findRecursively(routedMessage))
74
+ this.registerLocalRpcMethods(config)
75
+ }
76
+
77
+ private registerLocalRpcMethods(config: FinderConfig) {
78
+ const rpcLocal = new FindRpcLocal({
79
+ doRouteFindRequest: (routedMessage: RouteMessageWrapper) => this.doRouteFindRequest(routedMessage),
80
+ addContact: (contact: PeerDescriptor, setActive?: boolean) => config.addContact(contact, setActive),
81
+ isMostLikelyDuplicate: (requestId: string) => this.router.isMostLikelyDuplicate(requestId),
82
+ addToDuplicateDetector: (requestId: string) => this.router.addToDuplicateDetector(requestId)
83
+ })
84
+ this.rpcCommunicator.registerRpcMethod(
85
+ RouteMessageWrapper,
86
+ RouteMessageAck,
87
+ 'routeFindRequest',
88
+ async (routedMessage: RouteMessageWrapper) => {
89
+ if (this.stopped) {
90
+ return createRouteMessageAck(routedMessage, 'routeFindRequest() service is not running')
91
+ } else {
92
+ return rpcLocal.routeFindRequest(routedMessage)
93
+ }
94
+ }
95
+ )
77
96
  }
78
97
 
79
- public async startRecursiveFind(
98
+ public async startFind(
80
99
  idToFind: Uint8Array,
81
100
  fetchData: boolean = false,
82
101
  excludedPeer?: PeerDescriptor
83
- ): Promise<RecursiveFindResult> {
102
+ ): Promise<FindResult> {
84
103
  if (this.stopped) {
85
104
  return { closestNodes: [] }
86
105
  }
87
106
  const sessionId = v4()
88
- const recursiveFindSession = new RecursiveFindSession({
107
+ const session = new FindSession({
89
108
  serviceId: sessionId,
90
109
  transport: this.sessionTransport,
91
110
  kademliaIdToFind: idToFind,
92
- ownPeerId: peerIdFromPeerDescriptor(this.ownPeerDescriptor),
111
+ localPeerId: peerIdFromPeerDescriptor(this.localPeerDescriptor),
93
112
  waitedRoutingPathCompletions: this.connections.size > 1 ? 2 : 1,
94
113
  fetchData
95
114
  })
96
115
  if (this.connections.size === 0) {
97
116
  const data = this.localDataStore.getEntry(PeerID.fromValue(idToFind))
98
- recursiveFindSession.doSendFindResponse(
99
- [this.ownPeerDescriptor],
100
- [this.ownPeerDescriptor],
117
+ session.doSendFindResponse(
118
+ [this.localPeerDescriptor],
119
+ [this.localPeerDescriptor],
101
120
  data ? Array.from(data.values()) : [],
102
121
  true
103
122
  )
104
- return recursiveFindSession.getResults()
123
+ return session.getResults()
105
124
  }
106
125
  const routeMessage = this.wrapFindRequest(idToFind, sessionId, fetchData)
107
- this.ongoingSessions.set(sessionId, recursiveFindSession)
126
+ this.ongoingSessions.set(sessionId, session)
108
127
  try {
109
- await runAndWaitForEvents3<RecursiveFindSessionEvents>(
110
- [() => this.doFindRecursevily(routeMessage, excludedPeer)],
111
- [[recursiveFindSession, 'findCompleted']],
128
+ await runAndWaitForEvents3<FindSessionEvents>(
129
+ [() => this.doRouteFindRequest(routeMessage, excludedPeer)],
130
+ [[session, 'findCompleted']],
112
131
  15000
113
132
  )
114
133
  } catch (err) {
115
- logger.debug(`doFindRecursively failed with error ${err}`)
134
+ logger.debug(`doRouteFindRequest failed with error ${err}`)
116
135
  }
117
- this.findAndReportLocalData(idToFind, fetchData, [], this.ownPeerDescriptor, sessionId)
136
+ this.findAndReportLocalData(idToFind, fetchData, [], this.localPeerDescriptor, sessionId)
118
137
  this.ongoingSessions.delete(sessionId)
119
- recursiveFindSession.stop()
120
- return recursiveFindSession.getResults()
138
+ session.stop()
139
+ return session.getResults()
121
140
  }
122
141
 
123
142
  private wrapFindRequest(idToFind: Uint8Array, sessionId: string, fetchData: boolean): RouteMessageWrapper {
@@ -130,7 +149,7 @@ export class RecursiveFinder implements IRecursiveFinder {
130
149
  fetchData
131
150
  }
132
151
  const msg: Message = {
133
- messageType: MessageType.RECURSIVE_FIND_REQUEST,
152
+ messageType: MessageType.FIND_REQUEST,
134
153
  messageId: v4(),
135
154
  serviceId: this.serviceId,
136
155
  body: {
@@ -142,7 +161,7 @@ export class RecursiveFinder implements IRecursiveFinder {
142
161
  message: msg,
143
162
  requestId: v4(),
144
163
  destinationPeer: targetDescriptor,
145
- sourcePeer: this.ownPeerDescriptor,
164
+ sourcePeer: this.localPeerDescriptor,
146
165
  reachableThrough: [],
147
166
  routingPath: []
148
167
  }
@@ -176,29 +195,31 @@ export class RecursiveFinder implements IRecursiveFinder {
176
195
  private sendFindResponse(
177
196
  routingPath: PeerDescriptor[],
178
197
  targetPeerDescriptor: PeerDescriptor,
179
- serviceId: string,
198
+ serviceId: ServiceID,
180
199
  closestNodes: PeerDescriptor[],
181
200
  data: Map<PeerIDKey, DataEntry> | undefined,
182
201
  noCloserNodesFound: boolean = false
183
202
  ): void {
184
203
  const dataEntries = data ? Array.from(data.values(), DataEntry.create.bind(DataEntry)) : []
185
- const isOwnNode = areEqualPeerDescriptors(this.ownPeerDescriptor, targetPeerDescriptor)
204
+ const isOwnNode = areEqualPeerDescriptors(this.localPeerDescriptor, targetPeerDescriptor)
186
205
  if (isOwnNode && this.ongoingSessions.has(serviceId)) {
187
206
  this.ongoingSessions.get(serviceId)!
188
207
  .doSendFindResponse(routingPath, closestNodes, dataEntries, noCloserNodesFound)
189
208
  } else {
190
209
  const remoteCommunicator = new ListeningRpcCommunicator(serviceId, this.sessionTransport, { rpcRequestTimeout: 15000 })
191
- const remoteSession = new RemoteRecursiveFindSession(
192
- this.ownPeerDescriptor,
210
+ const rpcRemote = new FindSessionRpcRemote(
211
+ this.localPeerDescriptor,
193
212
  targetPeerDescriptor,
194
213
  serviceId,
195
- toProtoRpcClient(new RecursiveFindSessionServiceClient(remoteCommunicator.getRpcClientTransport()))
214
+ toProtoRpcClient(new FindSessionRpcClient(remoteCommunicator.getRpcClientTransport())),
215
+ 10000
196
216
  )
197
- remoteSession.sendFindResponse(routingPath, closestNodes, dataEntries, noCloserNodesFound)
217
+ rpcRemote.sendFindResponse(routingPath, closestNodes, dataEntries, noCloserNodesFound)
218
+ remoteCommunicator.destroy()
198
219
  }
199
220
  }
200
221
 
201
- private doFindRecursevily(routedMessage: RouteMessageWrapper, excludedPeer?: PeerDescriptor): RouteMessageAck {
222
+ private doRouteFindRequest(routedMessage: RouteMessageWrapper, excludedPeer?: PeerDescriptor): RouteMessageAck {
202
223
  if (this.stopped) {
203
224
  return createRouteMessageAck(routedMessage, 'DhtNode Stopped')
204
225
  }
@@ -207,14 +228,14 @@ export class RecursiveFinder implements IRecursiveFinder {
207
228
  const findRequest = msg?.body.oneofKind === 'findRequest' ? msg.body.findRequest : undefined
208
229
  const closestPeersToDestination = this.getClosestConnections(routedMessage.destinationPeer!.kademliaId, 5)
209
230
  const data = this.findLocalData(idToFind.value, findRequest!.fetchData)
210
- if (areEqualPeerDescriptors(this.ownPeerDescriptor, routedMessage.destinationPeer!)) {
231
+ if (areEqualPeerDescriptors(this.localPeerDescriptor, routedMessage.destinationPeer!)) {
211
232
  this.sendFindResponse(routedMessage.routingPath, routedMessage.sourcePeer!, findRequest!.sessionId,
212
233
  closestPeersToDestination, data, true)
213
234
  return createRouteMessageAck(routedMessage)
214
235
  }
215
- const ack = this.router.doRouteMessage(routedMessage, RoutingMode.RECURSIVE_FIND, excludedPeer)
236
+ const ack = this.router.doRouteMessage(routedMessage, RoutingMode.FIND, excludedPeer)
216
237
  if (ack.error === RoutingErrors.NO_CANDIDATES_FOUND) {
217
- logger.trace(`findRecursively Node found no candidates`)
238
+ logger.trace(`routeFindRequest Node found no candidates`)
218
239
  this.sendFindResponse(routedMessage.routingPath, routedMessage.sourcePeer!, findRequest!.sessionId,
219
240
  closestPeersToDestination, data, true)
220
241
  } else if (ack.error) {
@@ -222,7 +243,7 @@ export class RecursiveFinder implements IRecursiveFinder {
222
243
  } else {
223
244
  const noCloserContactsFound = (
224
245
  closestPeersToDestination.length > 0
225
- && routedMessage.previousPeer
246
+ && getPreviousPeer(routedMessage)
226
247
  && !this.isPeerCloserToIdThanSelf(closestPeersToDestination[0], idToFind)
227
248
  )
228
249
  this.sendFindResponse(routedMessage.routingPath, routedMessage.sourcePeer!, findRequest!.sessionId,
@@ -233,7 +254,7 @@ export class RecursiveFinder implements IRecursiveFinder {
233
254
 
234
255
  private getClosestConnections(kademliaId: Uint8Array, limit: number): PeerDescriptor[] {
235
256
  const connectedPeers = Array.from(this.connections.values())
236
- const closestPeers = new SortedContactList<RemoteDhtNode>(
257
+ const closestPeers = new SortedContactList<DhtNodeRpcRemote>(
237
258
  PeerID.fromValue(kademliaId),
238
259
  limit,
239
260
  undefined,
@@ -244,20 +265,6 @@ export class RecursiveFinder implements IRecursiveFinder {
244
265
  return closestPeers.getClosestContacts(limit).map((peer) => peer.getPeerDescriptor())
245
266
  }
246
267
 
247
- // IRouterRpc method
248
- async findRecursively(routedMessage: RouteMessageWrapper): Promise<RouteMessageAck> {
249
- if (this.stopped) {
250
- return createRouteMessageAck(routedMessage, 'findRecursively() service is not running')
251
- } else if (this.router.isMostLikelyDuplicate(routedMessage.requestId)) {
252
- return createRouteMessageAck(routedMessage, 'message given to findRecursively() service is likely a duplicate')
253
- }
254
- const senderKey = keyFromPeerDescriptor(routedMessage.previousPeer || routedMessage.sourcePeer!)
255
- logger.trace(`Received findRecursively call from ${senderKey}`)
256
- this.addContact(routedMessage.sourcePeer!, true)
257
- this.router.addToDuplicateDetector(routedMessage.requestId)
258
- return this.doFindRecursevily(routedMessage)
259
- }
260
-
261
268
  public stop(): void {
262
269
  this.stopped = true
263
270
  this.ongoingSessions.forEach((session, _id) => {
@@ -0,0 +1,40 @@
1
+ import { RouteMessageWrapper } from '../../proto/packages/dht/protos/DhtRpc'
2
+ import { v4 } from 'uuid'
3
+ import { keyFromPeerDescriptor } from '../../helpers/peerIdFromPeerDescriptor'
4
+ import { Remote } from '../contact/Remote'
5
+ import { Logger } from '@streamr/utils'
6
+ import { IFindRpcClient } from '../../proto/packages/dht/protos/DhtRpc.client'
7
+ import { getPreviousPeer } from './getPreviousPeer'
8
+
9
+ const logger = new Logger(module)
10
+
11
+ export class FindRpcRemote extends Remote<IFindRpcClient> {
12
+
13
+ async routeFindRequest(params: RouteMessageWrapper): Promise<boolean> {
14
+ const message: RouteMessageWrapper = {
15
+ destinationPeer: params.destinationPeer,
16
+ sourcePeer: params.sourcePeer,
17
+ message: params.message,
18
+ requestId: params.requestId ?? v4(),
19
+ reachableThrough: params.reachableThrough ?? [],
20
+ routingPath: params.routingPath
21
+ }
22
+ const options = this.formDhtRpcOptions()
23
+ try {
24
+ const ack = await this.getClient().routeFindRequest(message, options)
25
+ if (ack.error.length > 0) {
26
+ logger.debug('Next hop responded with error ' + ack.error)
27
+ return false
28
+ }
29
+ } catch (err) {
30
+ const previousPeer = getPreviousPeer(params)
31
+ const fromNode = previousPeer
32
+ ? keyFromPeerDescriptor(previousPeer)
33
+ : keyFromPeerDescriptor(params.sourcePeer!)
34
+ // eslint-disable-next-line max-len
35
+ logger.debug(`Failed to send routeFindRequest message from ${fromNode} to ${keyFromPeerDescriptor(this.getPeerDescriptor())} with: ${err}`)
36
+ return false
37
+ }
38
+ return true
39
+ }
40
+ }