@streamr/dht 100.0.0-pretestnet.2 → 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 (316) 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} +107 -101
  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} +17 -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} +50 -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 +47 -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 +2 -1
  165. package/dist/src/transport/ListeningRpcCommunicator.js.map +1 -1
  166. package/dist/src/transport/RoutingRpcCommunicator.d.ts +2 -1
  167. package/dist/src/transport/RoutingRpcCommunicator.js +0 -1
  168. package/dist/src/transport/RoutingRpcCommunicator.js.map +1 -1
  169. package/dist/src/types/ServiceID.d.ts +1 -0
  170. package/dist/src/types/ServiceID.js +3 -0
  171. package/dist/src/types/ServiceID.js.map +1 -0
  172. package/karma.config.js +4 -4
  173. package/package.json +10 -8
  174. package/protos/DhtRpc.proto +32 -35
  175. package/src/connection/ConnectionLockHandler.ts +19 -17
  176. package/src/connection/ConnectionLockRpcLocal.ts +74 -0
  177. package/src/connection/ConnectionLockRpcRemote.ts +7 -6
  178. package/src/connection/ConnectionManager.ts +59 -95
  179. package/src/connection/ConnectivityChecker.ts +30 -26
  180. package/src/connection/ConnectorFacade.ts +74 -34
  181. package/src/connection/Handshaker.ts +9 -9
  182. package/src/connection/IConnection.ts +5 -6
  183. package/src/connection/ManagedConnection.ts +21 -22
  184. package/src/connection/{ManagedWebRtcConnection.ts → ManagedWebrtcConnection.ts} +9 -9
  185. package/src/connection/{Simulator → simulator}/Simulator.ts +4 -4
  186. package/src/connection/{Simulator → simulator}/SimulatorConnection.ts +23 -24
  187. package/src/connection/{Simulator → simulator}/SimulatorConnector.ts +13 -13
  188. package/src/connection/{Simulator → simulator}/SimulatorTransport.ts +2 -2
  189. package/src/connection/{WebRTC/BrowserWebRtcConnection.ts → webrtc/BrowserWebrtcConnection.ts} +12 -13
  190. package/src/connection/{WebRTC/IWebRtcConnection.ts → webrtc/IWebrtcConnection.ts} +2 -2
  191. package/src/connection/{WebRTC/NodeWebRtcConnection.ts → webrtc/NodeWebrtcConnection.ts} +32 -33
  192. package/src/connection/webrtc/WebrtcConnector.ts +225 -0
  193. package/src/connection/webrtc/WebrtcConnectorRpcLocal.ts +132 -0
  194. package/src/connection/{WebRTC/WebRtcConnectorRpcRemote.ts → webrtc/WebrtcConnectorRpcRemote.ts} +6 -7
  195. package/src/connection/{WebRTC → webrtc}/iceServerAsString.ts +1 -1
  196. package/src/connection/websocket/AutoCertifierClientFacade.ts +91 -0
  197. package/src/connection/{WebSocket/ClientWebSocket.ts → websocket/ClientWebsocket.ts} +19 -17
  198. package/src/connection/{WebSocket/ServerWebSocket.ts → websocket/ServerWebsocket.ts} +21 -27
  199. package/src/connection/{WebSocket/WebSocketConnectorRpcLocal.ts → websocket/WebsocketConnector.ts} +109 -100
  200. package/src/connection/websocket/WebsocketConnectorRpcLocal.ts +41 -0
  201. package/src/connection/{WebSocket/WebSocketConnectorRpcRemote.ts → websocket/WebsocketConnectorRpcRemote.ts} +6 -12
  202. package/src/connection/{WebSocket/WebSocketServer.ts → websocket/WebsocketServer.ts} +40 -22
  203. package/src/dht/DhtNode.ts +144 -179
  204. package/src/dht/DhtNodeRpcLocal.ts +68 -0
  205. package/src/dht/{RemoteDhtNode.ts → DhtNodeRpcRemote.ts} +12 -13
  206. package/src/dht/ExternalApiRpcLocal.ts +46 -0
  207. package/src/dht/ExternalApiRpcRemote.ts +4 -4
  208. package/src/dht/contact/Remote.ts +32 -4
  209. package/src/dht/contact/SortedContactList.ts +4 -4
  210. package/src/dht/discovery/DiscoverySession.ts +23 -20
  211. package/src/dht/discovery/PeerDiscovery.ts +14 -17
  212. package/src/dht/find/FindRpcLocal.ts +35 -0
  213. package/src/dht/find/{RecursiveFindSession.ts → FindSession.ts} +25 -25
  214. package/src/dht/find/FindSessionRpcLocal.ts +25 -0
  215. package/src/dht/find/{RemoteRecursiveFindSession.ts → FindSessionRpcRemote.ts} +9 -5
  216. package/src/dht/find/{RecursiveFinder.ts → Finder.ts} +77 -71
  217. package/src/dht/routing/FindRpcRemote.ts +40 -0
  218. package/src/dht/routing/Router.ts +69 -105
  219. package/src/dht/routing/RouterRpcLocal.ts +81 -0
  220. package/src/dht/routing/RouterRpcRemote.ts +15 -45
  221. package/src/dht/routing/RoutingSession.ts +56 -61
  222. package/src/dht/routing/getPreviousPeer.ts +6 -0
  223. package/src/dht/store/StoreRpcLocal.ts +44 -37
  224. package/src/dht/store/StoreRpcRemote.ts +4 -8
  225. package/src/exports.ts +11 -5
  226. package/src/helpers/Connectivity.ts +19 -0
  227. package/src/helpers/errors.ts +3 -3
  228. package/src/helpers/protoClasses.ts +6 -6
  229. package/src/proto/packages/dht/protos/DhtRpc.client.ts +75 -59
  230. package/src/proto/packages/dht/protos/DhtRpc.server.ts +26 -21
  231. package/src/proto/packages/dht/protos/DhtRpc.ts +87 -114
  232. package/src/rpc-protocol/DhtCallContext.ts +0 -1
  233. package/src/transport/ITransport.ts +5 -8
  234. package/src/transport/ListeningRpcCommunicator.ts +2 -1
  235. package/src/transport/RoutingRpcCommunicator.ts +3 -4
  236. package/src/types/ServiceID.ts +1 -0
  237. package/test/benchmark/{RecursiveFind.test.ts → Find.test.ts} +6 -6
  238. package/test/benchmark/KademliaCorrectness.test.ts +2 -2
  239. package/test/benchmark/kademlia-simulation/SimulationNode.ts +3 -3
  240. package/test/end-to-end/Layer0-Layer1.test.ts +13 -5
  241. package/test/end-to-end/Layer0.test.ts +35 -17
  242. package/test/end-to-end/Layer0MixedConnectionTypes.test.ts +24 -6
  243. package/test/end-to-end/{Layer0WebRTC-Layer1.test.ts → Layer0Webrtc-Layer1.test.ts} +1 -1
  244. package/test/end-to-end/{Layer0WebRTC.test.ts → Layer0Webrtc.test.ts} +14 -10
  245. package/test/end-to-end/Layer1-Scale-WebSocket.test.ts +8 -4
  246. package/test/end-to-end/{Layer1-Scale-WebRTC.test.ts → Layer1-Scale-Webrtc.test.ts} +2 -2
  247. package/test/end-to-end/RecoveryFromFailedAutoCertification.test.ts +52 -0
  248. package/test/end-to-end/{WebSocketConnectionRequest.test.ts → WebsocketConnectionRequest.test.ts} +16 -8
  249. package/test/end-to-end/memory-leak.test.ts +85 -0
  250. package/test/integration/ConnectionLocking.test.ts +4 -4
  251. package/test/integration/ConnectionManager.test.ts +37 -28
  252. package/test/integration/DhtJoinPeerDiscovery.test.ts +2 -2
  253. package/test/integration/DhtNodeExternalAPI.test.ts +10 -10
  254. package/test/integration/{RemoteDhtNode.test.ts → DhtNodeRpcRemote.test.ts} +10 -10
  255. package/test/integration/DhtRpc.test.ts +5 -5
  256. package/test/integration/{RecursiveFind.test.ts → Find.test.ts} +3 -3
  257. package/test/integration/Layer1-scale.test.ts +1 -1
  258. package/test/integration/MigrateData.test.ts +6 -5
  259. package/test/integration/Mock-Layer1-Layer0.test.ts +1 -1
  260. package/test/integration/MultipleEntryPointJoining.test.ts +6 -6
  261. package/test/integration/RouteMessage.test.ts +26 -26
  262. package/test/integration/RpcErrors.test.ts +10 -10
  263. package/test/integration/ScaleDownDht.test.ts +3 -3
  264. package/test/integration/SimultaneousConnections.test.ts +10 -7
  265. package/test/integration/Store.test.ts +1 -1
  266. package/test/integration/StoreAndDelete.test.ts +1 -1
  267. package/test/integration/StoreOnDhtWithTwoNodes.test.ts +12 -12
  268. package/test/integration/{WebRtcConnectionManagement.test.ts → WebrtcConnectionManagement.test.ts} +4 -4
  269. package/test/integration/{WebRtcConnectorRpc.test.ts → WebrtcConnectorRpc.test.ts} +7 -8
  270. package/test/integration/{WebSocket.test.ts → Websocket.test.ts} +14 -13
  271. package/test/integration/{WebSocketConnectionManagement.test.ts → WebsocketConnectionManagement.test.ts} +4 -4
  272. package/test/integration/{WebSocketConnectorRpc.test.ts → WebsocketConnectorRpc.test.ts} +15 -15
  273. package/test/unit/AutoCertifierClientFacade.test.ts +58 -0
  274. package/test/unit/ConnectivityHelpers.test.ts +69 -0
  275. package/test/unit/{RecursiveFinder.test.ts → Finder.test.ts} +19 -17
  276. package/test/unit/Router.test.ts +26 -26
  277. package/test/unit/UUID.test.ts +1 -1
  278. package/test/unit/{WebSocketConnectorRpcLocal.test.ts → WebsocketConnector.test.ts} +8 -8
  279. package/test/unit/{WebSocketServer.test.ts → WebsocketServer.test.ts} +20 -14
  280. package/test/unit/webrtcReplaceInternalIpWithExternalIp.test.ts +1 -1
  281. package/test/utils/FakeRpcCommunicator.ts +23 -0
  282. package/test/utils/mock/Transport.ts +1 -1
  283. package/test/utils/utils.ts +14 -24
  284. package/tsconfig.browser.json +1 -1
  285. package/tsconfig.jest.json +3 -2
  286. package/tsconfig.node.json +3 -2
  287. package/dist/src/connection/ManagedWebRtcConnection.d.ts +0 -7
  288. package/dist/src/connection/ManagedWebRtcConnection.js +0 -20
  289. package/dist/src/connection/ManagedWebRtcConnection.js.map +0 -1
  290. package/dist/src/connection/Simulator/SimulatorConnection.js.map +0 -1
  291. package/dist/src/connection/Simulator/SimulatorTransport.js.map +0 -1
  292. package/dist/src/connection/WebRTC/IWebRtcConnection.js.map +0 -1
  293. package/dist/src/connection/WebRTC/NodeWebRtcConnection.js.map +0 -1
  294. package/dist/src/connection/WebRTC/WebRtcConnectorRpcLocal.d.ts +0 -51
  295. package/dist/src/connection/WebRTC/WebRtcConnectorRpcLocal.js +0 -249
  296. package/dist/src/connection/WebRTC/WebRtcConnectorRpcLocal.js.map +0 -1
  297. package/dist/src/connection/WebRTC/WebRtcConnectorRpcRemote.js.map +0 -1
  298. package/dist/src/connection/WebSocket/ClientWebSocket.js.map +0 -1
  299. package/dist/src/connection/WebSocket/ServerWebSocket.js.map +0 -1
  300. package/dist/src/connection/WebSocket/WebSocketConnectorRpcLocal.js.map +0 -1
  301. package/dist/src/connection/WebSocket/WebSocketServer.js.map +0 -1
  302. package/dist/src/dht/RemoteDhtNode.js.map +0 -1
  303. package/dist/src/dht/find/RecursiveFindSession.js.map +0 -1
  304. package/dist/src/dht/find/RecursiveFinder.js.map +0 -1
  305. package/dist/src/dht/find/RemoteRecursiveFindSession.js.map +0 -1
  306. package/dist/src/dht/registerExternalApiRpcMethods.d.ts +0 -2
  307. package/dist/src/dht/registerExternalApiRpcMethods.js +0 -32
  308. package/dist/src/dht/registerExternalApiRpcMethods.js.map +0 -1
  309. package/src/connection/WebRTC/WebRtcConnectorRpcLocal.ts +0 -335
  310. package/src/dht/registerExternalApiRpcMethods.ts +0 -44
  311. package/test/utils/mock/RecursiveFinder.ts +0 -19
  312. /package/dist/src/connection/{Simulator → simulator}/Simulator.d.ts +0 -0
  313. /package/dist/src/connection/{Simulator → simulator}/pings.d.ts +0 -0
  314. /package/dist/src/connection/{Simulator → simulator}/pings.js +0 -0
  315. /package/dist/src/connection/{WebRTC → webrtc}/iceServerAsString.js +0 -0
  316. /package/src/connection/{Simulator → simulator}/pings.ts +0 -0
@@ -6,17 +6,10 @@ import { RoutingRpcCommunicator } from '../../transport/RoutingRpcCommunicator'
6
6
  import { PeerIDKey } from '../../helpers/PeerID'
7
7
  import { DuplicateDetector } from './DuplicateDetector'
8
8
  import { ConnectionManager } from '../../connection/ConnectionManager'
9
- import { RemoteDhtNode } from '../RemoteDhtNode'
9
+ import { DhtNodeRpcRemote } from '../DhtNodeRpcRemote'
10
10
  import { v4 } from 'uuid'
11
- import { IRouterRpc } from '../../proto/packages/dht/protos/DhtRpc.server'
12
-
13
- export const createRouteMessageAck = (routedMessage: RouteMessageWrapper, error?: string): RouteMessageAck => {
14
- const ack: RouteMessageAck = {
15
- requestId: routedMessage.requestId,
16
- error: error ? error : ''
17
- }
18
- return ack
19
- }
11
+ import { RouterRpcLocal, createRouteMessageAck } from './RouterRpcLocal'
12
+ import { ServiceID } from '../../types/ServiceID'
20
13
 
21
14
  export enum RoutingErrors {
22
15
  NO_CANDIDATES_FOUND = 'No routing candidates found',
@@ -25,11 +18,13 @@ export enum RoutingErrors {
25
18
 
26
19
  export interface RouterConfig {
27
20
  rpcCommunicator: RoutingRpcCommunicator
28
- ownPeerDescriptor: PeerDescriptor
29
- connections: Map<PeerIDKey, RemoteDhtNode>
21
+ localPeerDescriptor: PeerDescriptor
22
+ connections: Map<PeerIDKey, DhtNodeRpcRemote>
30
23
  addContact: (contact: PeerDescriptor, setActive?: boolean) => void
31
- serviceId: string
24
+ serviceId: ServiceID
32
25
  connectionManager?: ConnectionManager
26
+ rpcRequestTimeout?: number
27
+
33
28
  }
34
29
 
35
30
  interface ForwardingTableEntry {
@@ -37,7 +32,7 @@ interface ForwardingTableEntry {
37
32
  peerDescriptors: PeerDescriptor[]
38
33
  }
39
34
 
40
- interface IRouterFunc {
35
+ export interface IRouter {
41
36
  doRouteMessage(routedMessage: RouteMessageWrapper, mode: RoutingMode, excludedPeer?: PeerDescriptor): RouteMessageAck
42
37
  send(msg: Message, reachableThrough: PeerDescriptor[]): Promise<void>
43
38
  isMostLikelyDuplicate(requestId: string): boolean
@@ -47,17 +42,13 @@ interface IRouterFunc {
47
42
  stop(): void
48
43
  }
49
44
 
50
- export interface IRouter extends Omit<IRouterRpc, 'findRecursively'>, IRouterFunc {}
51
-
52
45
  const logger = new Logger(module)
53
46
 
54
47
  export class Router implements IRouter {
55
48
  private readonly rpcCommunicator: RoutingRpcCommunicator
56
- private readonly ownPeerDescriptor: PeerDescriptor
57
- private readonly connections: Map<PeerIDKey, RemoteDhtNode>
58
- private readonly addContact: (contact: PeerDescriptor, setActive?: boolean) => void
59
- private readonly serviceId: string
60
- private readonly connectionManager?: ConnectionManager
49
+ private readonly localPeerDescriptor: PeerDescriptor
50
+ private readonly connections: Map<PeerIDKey, DhtNodeRpcRemote>
51
+ private readonly serviceId: ServiceID
61
52
  private readonly forwardingTable: Map<string, ForwardingTableEntry> = new Map()
62
53
  private ongoingRoutingSessions: Map<string, RoutingSession> = new Map()
63
54
  private readonly duplicateRequestDetector: DuplicateDetector = new DuplicateDetector(100000, 100)
@@ -65,19 +56,48 @@ export class Router implements IRouter {
65
56
 
66
57
  constructor(config: RouterConfig) {
67
58
  this.rpcCommunicator = config.rpcCommunicator
68
- this.ownPeerDescriptor = config.ownPeerDescriptor
59
+ this.localPeerDescriptor = config.localPeerDescriptor
69
60
  this.connections = config.connections
70
- this.addContact = config.addContact
71
61
  this.serviceId = config.serviceId
72
- this.connectionManager = config.connectionManager
73
- this.rpcCommunicator.registerRpcMethod(RouteMessageWrapper, RouteMessageAck, 'forwardMessage',
74
- (forwardMessage: RouteMessageWrapper) => this.forwardMessage(forwardMessage))
75
- this.rpcCommunicator.registerRpcMethod(RouteMessageWrapper, RouteMessageAck, 'routeMessage',
76
- (routedMessage: RouteMessageWrapper) => this.routeMessage(routedMessage))
62
+ this.registerLocalRpcMethods(config)
63
+ }
64
+
65
+ private registerLocalRpcMethods(config: RouterConfig) {
66
+ const rpcLocal = new RouterRpcLocal({
67
+ doRouteMessage: (routedMessage: RouteMessageWrapper, mode?: RoutingMode) => this.doRouteMessage(routedMessage, mode),
68
+ addContact: (contact: PeerDescriptor, setActive: boolean) => config.addContact(contact, setActive),
69
+ setForwardingEntries: (routedMessage: RouteMessageWrapper) => this.setForwardingEntries(routedMessage),
70
+ duplicateRequestDetector: this.duplicateRequestDetector,
71
+ localPeerDescriptor: this.localPeerDescriptor,
72
+ connectionManager: config.connectionManager
73
+ })
74
+ this.rpcCommunicator.registerRpcMethod(
75
+ RouteMessageWrapper,
76
+ RouteMessageAck,
77
+ 'routeMessage',
78
+ async (routedMessage: RouteMessageWrapper) => {
79
+ if (this.stopped) {
80
+ return createRouteMessageAck(routedMessage, 'routeMessage() service is not running')
81
+ }
82
+ return rpcLocal.routeMessage(routedMessage)
83
+ }
84
+ )
85
+ this.rpcCommunicator.registerRpcMethod(
86
+ RouteMessageWrapper,
87
+ RouteMessageAck,
88
+ 'forwardMessage',
89
+ async (forwardMessage: RouteMessageWrapper) => {
90
+ if (this.stopped) {
91
+ return createRouteMessageAck(forwardMessage, 'forwardMessage() service is not running')
92
+ }
93
+ return rpcLocal.forwardMessage(forwardMessage)
94
+ }
95
+ )
96
+
77
97
  }
78
98
 
79
99
  public async send(msg: Message, reachableThrough: PeerDescriptor[]): Promise<void> {
80
- msg.sourceDescriptor = this.ownPeerDescriptor
100
+ msg.sourceDescriptor = this.localPeerDescriptor
81
101
  const targetPeerDescriptor = msg.targetDescriptor!
82
102
  const forwardingEntry = this.forwardingTable.get(keyFromPeerDescriptor(targetPeerDescriptor))
83
103
  if (forwardingEntry && forwardingEntry.peerDescriptors.length > 0) {
@@ -86,7 +106,7 @@ export class Router implements IRouter {
86
106
  message: msg,
87
107
  requestId: v4(),
88
108
  destinationPeer: forwardingPeer,
89
- sourcePeer: this.ownPeerDescriptor,
109
+ sourcePeer: this.localPeerDescriptor,
90
110
  reachableThrough,
91
111
  routingPath: []
92
112
  }
@@ -96,7 +116,7 @@ export class Router implements IRouter {
96
116
  message: msg,
97
117
  requestId: v4(),
98
118
  destinationPeer: targetPeerDescriptor,
99
- sourcePeer: this.ownPeerDescriptor,
119
+ sourcePeer: this.localPeerDescriptor,
100
120
  reachableThrough,
101
121
  routingPath: []
102
122
  }
@@ -104,23 +124,23 @@ export class Router implements IRouter {
104
124
  }
105
125
  }
106
126
 
107
- public doRouteMessage(routedMessage: RouteMessageWrapper, mode = RoutingMode.ROUTE, excludedPeer?: PeerDescriptor): RouteMessageAck {
127
+ public doRouteMessage(routedMessage: RouteMessageWrapper, mode = RoutingMode.ROUTE): RouteMessageAck {
108
128
  if (this.stopped) {
109
129
  return createRouteMessageAck(routedMessage, RoutingErrors.STOPPED)
110
130
  }
111
131
  logger.trace(`Routing message ${routedMessage.requestId} from ${keyFromPeerDescriptor(routedMessage.sourcePeer!)} `
112
132
  + `to ${keyFromPeerDescriptor(routedMessage.destinationPeer!)}`)
113
- routedMessage.routingPath.push(this.ownPeerDescriptor)
114
- const session = this.createRoutingSession(routedMessage, mode, excludedPeer)
115
- this.addRoutingSession(session)
116
- try {
133
+ const session = this.createRoutingSession(routedMessage, mode)
134
+ const contacts = session.findMoreContacts()
135
+ if (contacts.length > 0) {
136
+ this.addRoutingSession(session)
117
137
  // eslint-disable-next-line promise/catch-or-return
118
138
  logger.trace('starting to raceEvents from routingSession: ' + session.sessionId)
119
139
  let eventReceived: Promise<unknown>
120
140
  executeSafePromise(async () => {
121
141
  eventReceived = raceEvents3<RoutingSessionEvents>(
122
142
  session,
123
- ['routingSucceeded', 'partialSuccess', 'routingFailed', 'stopped', 'noCandidatesFound'],
143
+ ['routingSucceeded', 'partialSuccess', 'routingFailed', 'stopped'],
124
144
  null
125
145
  )
126
146
  })
@@ -134,33 +154,29 @@ export class Router implements IRouter {
134
154
  session.stop()
135
155
  this.removeRoutingSession(session.sessionId)
136
156
  })
137
- session.start()
138
- } catch (e) {
139
- if (areEqualPeerDescriptors(routedMessage.sourcePeer!, this.ownPeerDescriptor)) {
157
+ session.sendMoreRequests(contacts)
158
+ return createRouteMessageAck(routedMessage)
159
+ } else {
160
+ if (areEqualPeerDescriptors(routedMessage.sourcePeer!, this.localPeerDescriptor)) {
140
161
  logger.warn(
141
- `Failed to send (routeMessage: ${this.serviceId}) to ${keyFromPeerDescriptor(routedMessage.destinationPeer!)}: ${e}`
162
+ `Failed to send (routeMessage: ${this.serviceId}) to ${keyFromPeerDescriptor(routedMessage.destinationPeer!)}`
142
163
  )
143
164
  }
165
+ logger.trace('noCandidatesFound sessionId: ' + session.sessionId)
144
166
  return createRouteMessageAck(routedMessage, RoutingErrors.NO_CANDIDATES_FOUND)
145
167
  }
146
- return createRouteMessageAck(routedMessage)
147
168
  }
148
169
 
149
- private createRoutingSession(routedMessage: RouteMessageWrapper, mode: RoutingMode, excludedPeer?: PeerDescriptor): RoutingSession {
150
- const excludedPeers = routedMessage.routingPath.map((descriptor) => peerIdFromPeerDescriptor(descriptor))
151
- if (excludedPeer) {
152
- excludedPeers.push(peerIdFromPeerDescriptor(excludedPeer))
153
- }
154
- logger.trace(' routing session created with connections: ' + this.connections.size )
170
+ private createRoutingSession(routedMessage: RouteMessageWrapper, mode: RoutingMode): RoutingSession {
171
+ logger.trace('routing session created with connections: ' + this.connections.size)
155
172
  return new RoutingSession(
156
173
  this.rpcCommunicator,
157
- this.ownPeerDescriptor,
174
+ this.localPeerDescriptor,
158
175
  routedMessage,
159
176
  this.connections,
160
- areEqualPeerDescriptors(this.ownPeerDescriptor, routedMessage.sourcePeer!) ? 2 : 1,
177
+ areEqualPeerDescriptors(this.localPeerDescriptor, routedMessage.sourcePeer!) ? 2 : 1,
161
178
  mode,
162
- undefined,
163
- excludedPeers
179
+ routedMessage.routingPath.map((descriptor) => peerIdFromPeerDescriptor(descriptor))
164
180
  )
165
181
  }
166
182
 
@@ -192,32 +208,10 @@ export class Router implements IRouter {
192
208
  this.forwardingTable.clear()
193
209
  this.duplicateRequestDetector.clear()
194
210
  }
195
-
196
- // IRouterRpc method
197
- async routeMessage(routedMessage: RouteMessageWrapper): Promise<RouteMessageAck> {
198
- if (this.stopped) {
199
- return createRouteMessageAck(routedMessage, 'routeMessage() service is not running')
200
- } else if (this.duplicateRequestDetector.isMostLikelyDuplicate(routedMessage.requestId)) {
201
- logger.trace(`Routing message ${routedMessage.requestId} from ${keyFromPeerDescriptor(routedMessage.sourcePeer!)} `
202
- + `to ${keyFromPeerDescriptor(routedMessage.destinationPeer!)} is likely a duplicate`)
203
- return createRouteMessageAck(routedMessage, 'message given to routeMessage() service is likely a duplicate')
204
- }
205
- logger.trace(`Processing received routeMessage ${routedMessage.requestId}`)
206
- this.addContact(routedMessage.sourcePeer!, true)
207
- this.addToDuplicateDetector(routedMessage.requestId)
208
- if (areEqualPeerDescriptors(this.ownPeerDescriptor, routedMessage.destinationPeer!)) {
209
- logger.trace(`routing message targeted to self ${routedMessage.requestId}`)
210
- this.setForwardingEntries(routedMessage)
211
- this.connectionManager?.handleMessage(routedMessage.message!)
212
- return createRouteMessageAck(routedMessage)
213
- } else {
214
- return this.doRouteMessage(routedMessage)
215
- }
216
- }
217
211
 
218
212
  private setForwardingEntries(routedMessage: RouteMessageWrapper): void {
219
213
  const reachableThroughWithoutSelf = routedMessage.reachableThrough.filter((peer) => {
220
- return !areEqualPeerDescriptors(peer, this.ownPeerDescriptor)
214
+ return !areEqualPeerDescriptors(peer, this.localPeerDescriptor)
221
215
  })
222
216
 
223
217
  if (reachableThroughWithoutSelf.length > 0) {
@@ -236,34 +230,4 @@ export class Router implements IRouter {
236
230
  this.forwardingTable.set(sourceKey, forwardingEntry)
237
231
  }
238
232
  }
239
-
240
- // IRouterRpc method
241
- async forwardMessage(forwardMessage: RouteMessageWrapper): Promise<RouteMessageAck> {
242
- if (this.stopped) {
243
- return createRouteMessageAck(forwardMessage, 'forwardMessage() service is not running')
244
- } else if (this.duplicateRequestDetector.isMostLikelyDuplicate(forwardMessage.requestId)) {
245
- logger.trace(`Forwarding message ${forwardMessage.requestId} from ${keyFromPeerDescriptor(forwardMessage.sourcePeer!)} `
246
- + `to ${keyFromPeerDescriptor(forwardMessage.destinationPeer!)} is likely a duplicate`)
247
- return createRouteMessageAck(forwardMessage, 'message given to forwardMessage() service is likely a duplicate')
248
- }
249
- logger.trace(`Processing received forward routeMessage ${forwardMessage.requestId}`)
250
- this.addContact(forwardMessage.sourcePeer!, true)
251
- this.addToDuplicateDetector(forwardMessage.requestId)
252
- if (areEqualPeerDescriptors(this.ownPeerDescriptor, forwardMessage.destinationPeer!)) {
253
- return this.forwardToDestination(forwardMessage)
254
- } else {
255
- return this.doRouteMessage(forwardMessage, RoutingMode.FORWARD)
256
- }
257
- }
258
-
259
- private forwardToDestination(routedMessage: RouteMessageWrapper): RouteMessageAck {
260
- logger.trace(`Forwarding found message targeted to self ${routedMessage.requestId}`)
261
- const forwardedMessage = routedMessage.message!
262
- if (areEqualPeerDescriptors(this.ownPeerDescriptor, forwardedMessage.targetDescriptor!)) {
263
- this.connectionManager?.handleMessage(forwardedMessage)
264
- return createRouteMessageAck(routedMessage)
265
- }
266
- return this.doRouteMessage({ ...routedMessage, destinationPeer: forwardedMessage.targetDescriptor })
267
- }
268
-
269
233
  }
@@ -0,0 +1,81 @@
1
+ import { Logger } from '@streamr/utils'
2
+ import { ConnectionManager } from '../../connection/ConnectionManager'
3
+ import { areEqualPeerDescriptors, keyFromPeerDescriptor } from '../../helpers/peerIdFromPeerDescriptor'
4
+ import { PeerDescriptor, RouteMessageAck, RouteMessageWrapper } from '../../proto/packages/dht/protos/DhtRpc'
5
+ import { IRouterRpc } from '../../proto/packages/dht/protos/DhtRpc.server'
6
+ import { DuplicateDetector } from './DuplicateDetector'
7
+ import { RoutingMode } from './RoutingSession'
8
+
9
+ interface RouterRpcLocalConfig {
10
+ doRouteMessage: (routedMessage: RouteMessageWrapper, mode?: RoutingMode) => RouteMessageAck
11
+ addContact: (contact: PeerDescriptor, setActive: boolean) => void
12
+ setForwardingEntries: (routedMessage: RouteMessageWrapper) => void
13
+ duplicateRequestDetector: DuplicateDetector
14
+ localPeerDescriptor: PeerDescriptor
15
+ connectionManager?: ConnectionManager
16
+ }
17
+
18
+ const logger = new Logger(module)
19
+
20
+ export const createRouteMessageAck = (routedMessage: RouteMessageWrapper, error?: string): RouteMessageAck => {
21
+ const ack: RouteMessageAck = {
22
+ requestId: routedMessage.requestId,
23
+ error: error ? error : ''
24
+ }
25
+ return ack
26
+ }
27
+
28
+ export class RouterRpcLocal implements IRouterRpc {
29
+
30
+ private readonly config: RouterRpcLocalConfig
31
+
32
+ constructor(config: RouterRpcLocalConfig) {
33
+ this.config = config
34
+ }
35
+
36
+ async routeMessage(routedMessage: RouteMessageWrapper): Promise<RouteMessageAck> {
37
+ if (this.config.duplicateRequestDetector.isMostLikelyDuplicate(routedMessage.requestId)) {
38
+ logger.trace(`Routing message ${routedMessage.requestId} from ${keyFromPeerDescriptor(routedMessage.sourcePeer!)} `
39
+ + `to ${keyFromPeerDescriptor(routedMessage.destinationPeer!)} is likely a duplicate`)
40
+ return createRouteMessageAck(routedMessage, 'message given to routeMessage() service is likely a duplicate')
41
+ }
42
+ logger.trace(`Processing received routeMessage ${routedMessage.requestId}`)
43
+ this.config.addContact(routedMessage.sourcePeer!, true)
44
+ this.config.duplicateRequestDetector.add(routedMessage.requestId)
45
+ if (areEqualPeerDescriptors(this.config.localPeerDescriptor, routedMessage.destinationPeer!)) {
46
+ logger.trace(`routing message targeted to self ${routedMessage.requestId}`)
47
+ this.config.setForwardingEntries(routedMessage)
48
+ this.config.connectionManager?.handleMessage(routedMessage.message!)
49
+ return createRouteMessageAck(routedMessage)
50
+ } else {
51
+ return this.config.doRouteMessage(routedMessage)
52
+ }
53
+ }
54
+
55
+ async forwardMessage(forwardMessage: RouteMessageWrapper): Promise<RouteMessageAck> {
56
+ if (this.config.duplicateRequestDetector.isMostLikelyDuplicate(forwardMessage.requestId)) {
57
+ logger.trace(`Forwarding message ${forwardMessage.requestId} from ${keyFromPeerDescriptor(forwardMessage.sourcePeer!)} `
58
+ + `to ${keyFromPeerDescriptor(forwardMessage.destinationPeer!)} is likely a duplicate`)
59
+ return createRouteMessageAck(forwardMessage, 'message given to forwardMessage() service is likely a duplicate')
60
+ }
61
+ logger.trace(`Processing received forward routeMessage ${forwardMessage.requestId}`)
62
+ this.config.addContact(forwardMessage.sourcePeer!, true)
63
+ this.config.duplicateRequestDetector.add(forwardMessage.requestId)
64
+ if (areEqualPeerDescriptors(this.config.localPeerDescriptor, forwardMessage.destinationPeer!)) {
65
+ return this.forwardToDestination(forwardMessage)
66
+ } else {
67
+ return this.config.doRouteMessage(forwardMessage, RoutingMode.FORWARD)
68
+ }
69
+ }
70
+
71
+ private forwardToDestination(routedMessage: RouteMessageWrapper): RouteMessageAck {
72
+ logger.trace(`Forwarding found message targeted to self ${routedMessage.requestId}`)
73
+ const forwardedMessage = routedMessage.message!
74
+ if (areEqualPeerDescriptors(this.config.localPeerDescriptor, forwardedMessage.targetDescriptor!)) {
75
+ this.config.connectionManager?.handleMessage(forwardedMessage)
76
+ return createRouteMessageAck(routedMessage)
77
+ }
78
+ return this.config.doRouteMessage({ ...routedMessage, destinationPeer: forwardedMessage.targetDescriptor })
79
+ }
80
+
81
+ }
@@ -8,6 +8,7 @@ import {
8
8
  import { IRouterRpcClient } from '../../proto/packages/dht/protos/DhtRpc.client'
9
9
  import { Remote } from '../contact/Remote'
10
10
  import { Logger } from '@streamr/utils'
11
+ import { getPreviousPeer } from './getPreviousPeer'
11
12
 
12
13
  const logger = new Logger(module)
13
14
 
@@ -17,15 +18,12 @@ export class RouterRpcRemote extends Remote<IRouterRpcClient> {
17
18
  const message: RouteMessageWrapper = {
18
19
  destinationPeer: params.destinationPeer,
19
20
  sourcePeer: params.sourcePeer,
20
- previousPeer: params.previousPeer,
21
21
  message: params.message,
22
- requestId: params.requestId || v4(),
23
- reachableThrough: params.reachableThrough || [],
22
+ requestId: params.requestId ?? v4(),
23
+ reachableThrough: params.reachableThrough ?? [],
24
24
  routingPath: params.routingPath
25
25
  }
26
- const options = this.formDhtRpcOptions({
27
- timeout: 10000
28
- })
26
+ const options = this.formDhtRpcOptions()
29
27
  try {
30
28
  const ack = await this.getClient().routeMessage(message, options)
31
29
  // Success signal if sent to destination and error includes duplicate
@@ -38,8 +36,10 @@ export class RouterRpcRemote extends Remote<IRouterRpcClient> {
38
36
  return false
39
37
  }
40
38
  } catch (err) {
41
- const fromNode = params.previousPeer ?
42
- peerIdFromPeerDescriptor(params.previousPeer) : keyFromPeerDescriptor(params.sourcePeer!)
39
+ const previousPeer = getPreviousPeer(params)
40
+ const fromNode = previousPeer
41
+ ? peerIdFromPeerDescriptor(previousPeer)
42
+ : keyFromPeerDescriptor(params.sourcePeer!)
43
43
  logger.trace(`Failed to send routeMessage from ${fromNode} to ${keyFromPeerDescriptor(this.getPeerDescriptor())} with: ${err}`)
44
44
  return false
45
45
  }
@@ -50,24 +50,22 @@ export class RouterRpcRemote extends Remote<IRouterRpcClient> {
50
50
  const message: RouteMessageWrapper = {
51
51
  destinationPeer: params.destinationPeer,
52
52
  sourcePeer: params.sourcePeer,
53
- previousPeer: params.previousPeer,
54
53
  message: params.message,
55
- requestId: params.requestId || v4(),
56
- reachableThrough: params.reachableThrough || [],
54
+ requestId: params.requestId ?? v4(),
55
+ reachableThrough: params.reachableThrough ?? [],
57
56
  routingPath: params.routingPath
58
57
  }
59
- const options = this.formDhtRpcOptions({
60
- timeout: 10000
61
- })
58
+ const options = this.formDhtRpcOptions()
62
59
  try {
63
60
  const ack = await this.getClient().forwardMessage(message, options)
64
61
  if (ack.error.length > 0) {
65
62
  return false
66
63
  }
67
64
  } catch (err) {
68
- const fromNode = params.previousPeer ?
69
- keyFromPeerDescriptor(params.previousPeer) : keyFromPeerDescriptor(params.sourcePeer!)
70
-
65
+ const previousPeer = getPreviousPeer(params)
66
+ const fromNode = previousPeer
67
+ ? keyFromPeerDescriptor(previousPeer)
68
+ : keyFromPeerDescriptor(params.sourcePeer!)
71
69
  logger.trace(
72
70
  `Failed to send forwardMessage from ${fromNode} to ${keyFromPeerDescriptor(this.getPeerDescriptor())} with: ${err}`
73
71
  )
@@ -75,32 +73,4 @@ export class RouterRpcRemote extends Remote<IRouterRpcClient> {
75
73
  }
76
74
  return true
77
75
  }
78
-
79
- async findRecursively(params: RouteMessageWrapper): Promise<boolean> {
80
- const message: RouteMessageWrapper = {
81
- destinationPeer: params.destinationPeer,
82
- sourcePeer: params.sourcePeer,
83
- previousPeer: params.previousPeer,
84
- message: params.message,
85
- requestId: params.requestId || v4(),
86
- reachableThrough: params.reachableThrough || [],
87
- routingPath: params.routingPath
88
- }
89
- const options = this.formDhtRpcOptions({
90
- timeout: 10000
91
- })
92
- try {
93
- const ack = await this.getClient().findRecursively(message, options)
94
- if (ack.error.length > 0) {
95
- logger.debug('Next hop responded with error ' + ack.error)
96
- return false
97
- }
98
- } catch (err) {
99
- const fromNode = params.previousPeer ? keyFromPeerDescriptor(params.previousPeer) : keyFromPeerDescriptor(params.sourcePeer!)
100
- logger.debug(`Failed to send recursiveFind message from ${fromNode} to ${keyFromPeerDescriptor(this.getPeerDescriptor())} with: ${err}`)
101
- return false
102
- }
103
- return true
104
- }
105
-
106
76
  }