@streamr/dht 100.0.0-pretestnet.2 → 100.0.0-pretestnet.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (325) 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 +9 -9
  9. package/dist/src/connection/ConnectionLockRpcRemote.js.map +1 -1
  10. package/dist/src/connection/ConnectionManager.d.ts +9 -16
  11. package/dist/src/connection/ConnectionManager.js +101 -132
  12. package/dist/src/connection/ConnectionManager.js.map +1 -1
  13. package/dist/src/connection/ConnectivityChecker.d.ts +7 -10
  14. package/dist/src/connection/ConnectivityChecker.js +30 -32
  15. package/dist/src/connection/ConnectivityChecker.js.map +1 -1
  16. package/dist/src/connection/ConnectorFacade.d.ts +19 -13
  17. package/dist/src/connection/ConnectorFacade.js +74 -29
  18. package/dist/src/connection/ConnectorFacade.js.map +1 -1
  19. package/dist/src/connection/Handshaker.d.ts +8 -8
  20. package/dist/src/connection/Handshaker.js +30 -33
  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 +9 -13
  25. package/dist/src/connection/ManagedConnection.js +63 -99
  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 +25 -24
  34. package/dist/src/connection/simulator/SimulatorConnection.js.map +1 -0
  35. package/dist/src/connection/{Simulator → simulator}/SimulatorConnector.d.ts +3 -3
  36. package/dist/src/connection/{Simulator → simulator}/SimulatorConnector.js +17 -18
  37. package/dist/src/connection/simulator/SimulatorConnector.js.map +1 -0
  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} +41 -42
  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} +23 -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} +25 -27
  67. package/dist/src/connection/websocket/ServerWebsocket.js.map +1 -0
  68. package/dist/src/connection/websocket/WebsocketConnector.d.ts +53 -0
  69. package/dist/src/connection/websocket/WebsocketConnector.js +242 -0
  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} +6 -11
  76. package/dist/src/connection/websocket/WebsocketConnectorRpcRemote.js.map +1 -0
  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 +135 -163
  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} +20 -24
  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 +9 -9
  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 +6 -6
  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 +50 -93
  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 +17 -45
  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 +26 -25
  142. package/dist/src/dht/store/StoreRpcLocal.js.map +1 -1
  143. package/dist/src/dht/store/StoreRpcRemote.js +6 -10
  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/peerIdFromPeerDescriptor.d.ts +1 -0
  154. package/dist/src/helpers/peerIdFromPeerDescriptor.js +7 -1
  155. package/dist/src/helpers/peerIdFromPeerDescriptor.js.map +1 -1
  156. package/dist/src/helpers/protoClasses.js +3 -3
  157. package/dist/src/proto/packages/dht/protos/DhtRpc.client.d.ts +56 -39
  158. package/dist/src/proto/packages/dht/protos/DhtRpc.client.js +49 -36
  159. package/dist/src/proto/packages/dht/protos/DhtRpc.client.js.map +1 -1
  160. package/dist/src/proto/packages/dht/protos/DhtRpc.d.ts +85 -96
  161. package/dist/src/proto/packages/dht/protos/DhtRpc.js +82 -71
  162. package/dist/src/proto/packages/dht/protos/DhtRpc.js.map +1 -1
  163. package/dist/src/proto/packages/dht/protos/DhtRpc.server.d.ts +26 -21
  164. package/dist/src/rpc-protocol/DhtCallContext.d.ts +0 -1
  165. package/dist/src/rpc-protocol/DhtCallContext.js.map +1 -1
  166. package/dist/src/transport/ITransport.d.ts +5 -6
  167. package/dist/src/transport/ListeningRpcCommunicator.d.ts +2 -1
  168. package/dist/src/transport/ListeningRpcCommunicator.js.map +1 -1
  169. package/dist/src/transport/RoutingRpcCommunicator.d.ts +2 -1
  170. package/dist/src/transport/RoutingRpcCommunicator.js +0 -1
  171. package/dist/src/transport/RoutingRpcCommunicator.js.map +1 -1
  172. package/dist/src/types/ServiceID.d.ts +1 -0
  173. package/dist/src/types/ServiceID.js +3 -0
  174. package/dist/src/types/ServiceID.js.map +1 -0
  175. package/karma.config.js +4 -4
  176. package/package.json +10 -8
  177. package/protos/DhtRpc.proto +41 -40
  178. package/src/connection/ConnectionLockHandler.ts +19 -17
  179. package/src/connection/ConnectionLockRpcLocal.ts +74 -0
  180. package/src/connection/ConnectionLockRpcRemote.ts +11 -11
  181. package/src/connection/ConnectionManager.ts +88 -130
  182. package/src/connection/ConnectivityChecker.ts +36 -34
  183. package/src/connection/ConnectorFacade.ts +91 -40
  184. package/src/connection/Handshaker.ts +20 -23
  185. package/src/connection/IConnection.ts +5 -6
  186. package/src/connection/ManagedConnection.ts +76 -101
  187. package/src/connection/{ManagedWebRtcConnection.ts → ManagedWebrtcConnection.ts} +12 -10
  188. package/src/connection/{Simulator → simulator}/Simulator.ts +4 -4
  189. package/src/connection/{Simulator → simulator}/SimulatorConnection.ts +27 -27
  190. package/src/connection/{Simulator → simulator}/SimulatorConnector.ts +22 -23
  191. package/src/connection/{Simulator → simulator}/SimulatorTransport.ts +2 -2
  192. package/src/connection/{WebRTC/BrowserWebRtcConnection.ts → webrtc/BrowserWebrtcConnection.ts} +13 -14
  193. package/src/connection/{WebRTC/IWebRtcConnection.ts → webrtc/IWebrtcConnection.ts} +2 -2
  194. package/src/connection/{WebRTC/NodeWebRtcConnection.ts → webrtc/NodeWebrtcConnection.ts} +38 -40
  195. package/src/connection/webrtc/WebrtcConnector.ts +226 -0
  196. package/src/connection/webrtc/WebrtcConnectorRpcLocal.ts +132 -0
  197. package/src/connection/{WebRTC/WebRtcConnectorRpcRemote.ts → webrtc/WebrtcConnectorRpcRemote.ts} +6 -7
  198. package/src/connection/{WebRTC → webrtc}/iceServerAsString.ts +1 -1
  199. package/src/connection/websocket/AutoCertifierClientFacade.ts +91 -0
  200. package/src/connection/{WebSocket/ClientWebSocket.ts → websocket/ClientWebsocket.ts} +22 -17
  201. package/src/connection/{WebSocket/ServerWebSocket.ts → websocket/ServerWebsocket.ts} +23 -27
  202. package/src/connection/websocket/WebsocketConnector.ts +328 -0
  203. package/src/connection/websocket/WebsocketConnectorRpcLocal.ts +41 -0
  204. package/src/connection/{WebSocket/WebSocketConnectorRpcRemote.ts → websocket/WebsocketConnectorRpcRemote.ts} +8 -14
  205. package/src/connection/{WebSocket/WebSocketServer.ts → websocket/WebsocketServer.ts} +40 -22
  206. package/src/dht/DhtNode.ts +166 -193
  207. package/src/dht/DhtNodeRpcLocal.ts +68 -0
  208. package/src/dht/{RemoteDhtNode.ts → DhtNodeRpcRemote.ts} +17 -18
  209. package/src/dht/ExternalApiRpcLocal.ts +46 -0
  210. package/src/dht/ExternalApiRpcRemote.ts +4 -4
  211. package/src/dht/contact/Remote.ts +32 -4
  212. package/src/dht/contact/SortedContactList.ts +4 -4
  213. package/src/dht/discovery/DiscoverySession.ts +25 -22
  214. package/src/dht/discovery/PeerDiscovery.ts +16 -19
  215. package/src/dht/find/FindRpcLocal.ts +35 -0
  216. package/src/dht/find/{RecursiveFindSession.ts → FindSession.ts} +25 -25
  217. package/src/dht/find/FindSessionRpcLocal.ts +25 -0
  218. package/src/dht/find/{RemoteRecursiveFindSession.ts → FindSessionRpcRemote.ts} +9 -5
  219. package/src/dht/find/{RecursiveFinder.ts → Finder.ts} +77 -71
  220. package/src/dht/routing/FindRpcRemote.ts +40 -0
  221. package/src/dht/routing/Router.ts +78 -109
  222. package/src/dht/routing/RouterRpcLocal.ts +81 -0
  223. package/src/dht/routing/RouterRpcRemote.ts +18 -49
  224. package/src/dht/routing/RoutingSession.ts +58 -63
  225. package/src/dht/routing/getPreviousPeer.ts +6 -0
  226. package/src/dht/store/StoreRpcLocal.ts +46 -39
  227. package/src/dht/store/StoreRpcRemote.ts +8 -12
  228. package/src/exports.ts +11 -5
  229. package/src/helpers/Connectivity.ts +19 -0
  230. package/src/helpers/errors.ts +3 -3
  231. package/src/helpers/peerIdFromPeerDescriptor.ts +6 -0
  232. package/src/helpers/protoClasses.ts +6 -6
  233. package/src/proto/packages/dht/protos/DhtRpc.client.ts +75 -59
  234. package/src/proto/packages/dht/protos/DhtRpc.server.ts +26 -21
  235. package/src/proto/packages/dht/protos/DhtRpc.ts +112 -131
  236. package/src/rpc-protocol/DhtCallContext.ts +0 -1
  237. package/src/transport/ITransport.ts +5 -8
  238. package/src/transport/ListeningRpcCommunicator.ts +2 -1
  239. package/src/transport/RoutingRpcCommunicator.ts +3 -4
  240. package/src/types/ServiceID.ts +1 -0
  241. package/test/benchmark/{RecursiveFind.test.ts → Find.test.ts} +7 -7
  242. package/test/benchmark/KademliaCorrectness.test.ts +3 -3
  243. package/test/benchmark/kademlia-simulation/SimulationNode.ts +3 -3
  244. package/test/end-to-end/Layer0-Layer1.test.ts +13 -5
  245. package/test/end-to-end/Layer0.test.ts +35 -17
  246. package/test/end-to-end/Layer0MixedConnectionTypes.test.ts +28 -9
  247. package/test/end-to-end/{Layer0WebRTC-Layer1.test.ts → Layer0Webrtc-Layer1.test.ts} +1 -1
  248. package/test/end-to-end/{Layer0WebRTC.test.ts → Layer0Webrtc.test.ts} +14 -10
  249. package/test/end-to-end/Layer1-Scale-WebSocket.test.ts +8 -4
  250. package/test/end-to-end/{Layer1-Scale-WebRTC.test.ts → Layer1-Scale-Webrtc.test.ts} +2 -2
  251. package/test/end-to-end/RecoveryFromFailedAutoCertification.test.ts +52 -0
  252. package/test/end-to-end/{WebSocketConnectionRequest.test.ts → WebsocketConnectionRequest.test.ts} +16 -8
  253. package/test/end-to-end/memory-leak.test.ts +85 -0
  254. package/test/integration/ConnectionLocking.test.ts +10 -7
  255. package/test/integration/ConnectionManager.test.ts +107 -30
  256. package/test/integration/DhtJoinPeerDiscovery.test.ts +2 -2
  257. package/test/integration/DhtNodeExternalAPI.test.ts +10 -10
  258. package/test/integration/{RemoteDhtNode.test.ts → DhtNodeRpcRemote.test.ts} +10 -10
  259. package/test/integration/DhtRpc.test.ts +5 -5
  260. package/test/integration/{RecursiveFind.test.ts → Find.test.ts} +6 -9
  261. package/test/integration/Layer1-scale.test.ts +1 -1
  262. package/test/integration/MigrateData.test.ts +8 -7
  263. package/test/integration/Mock-Layer1-Layer0.test.ts +1 -1
  264. package/test/integration/MultipleEntryPointJoining.test.ts +8 -8
  265. package/test/integration/RouteMessage.test.ts +26 -26
  266. package/test/integration/RpcErrors.test.ts +10 -10
  267. package/test/integration/ScaleDownDht.test.ts +6 -6
  268. package/test/integration/SimultaneousConnections.test.ts +10 -7
  269. package/test/integration/Store.test.ts +4 -7
  270. package/test/integration/StoreAndDelete.test.ts +4 -7
  271. package/test/integration/StoreOnDhtWithTwoNodes.test.ts +12 -12
  272. package/test/integration/{WebRtcConnectionManagement.test.ts → WebrtcConnectionManagement.test.ts} +5 -5
  273. package/test/integration/{WebRtcConnectorRpc.test.ts → WebrtcConnectorRpc.test.ts} +7 -8
  274. package/test/integration/{WebSocket.test.ts → Websocket.test.ts} +14 -13
  275. package/test/integration/{WebSocketConnectionManagement.test.ts → WebsocketConnectionManagement.test.ts} +4 -4
  276. package/test/integration/{WebSocketConnectorRpc.test.ts → WebsocketConnectorRpc.test.ts} +15 -15
  277. package/test/unit/AutoCertifierClientFacade.test.ts +58 -0
  278. package/test/unit/ConnectivityHelpers.test.ts +69 -0
  279. package/test/unit/{RecursiveFinder.test.ts → Finder.test.ts} +19 -17
  280. package/test/unit/Router.test.ts +26 -26
  281. package/test/unit/UUID.test.ts +1 -1
  282. package/test/unit/{WebSocketConnectorRpcLocal.test.ts → WebsocketConnector.test.ts} +8 -8
  283. package/test/unit/{WebSocketServer.test.ts → WebsocketServer.test.ts} +20 -14
  284. package/test/unit/webrtcReplaceInternalIpWithExternalIp.test.ts +1 -1
  285. package/test/utils/FakeRpcCommunicator.ts +23 -0
  286. package/test/utils/mock/Transport.ts +1 -1
  287. package/test/utils/utils.ts +22 -26
  288. package/tsconfig.browser.json +1 -1
  289. package/tsconfig.jest.json +3 -2
  290. package/tsconfig.node.json +3 -2
  291. package/dist/src/connection/ManagedWebRtcConnection.d.ts +0 -7
  292. package/dist/src/connection/ManagedWebRtcConnection.js +0 -20
  293. package/dist/src/connection/ManagedWebRtcConnection.js.map +0 -1
  294. package/dist/src/connection/Simulator/SimulatorConnection.js.map +0 -1
  295. package/dist/src/connection/Simulator/SimulatorConnector.js.map +0 -1
  296. package/dist/src/connection/Simulator/SimulatorTransport.js.map +0 -1
  297. package/dist/src/connection/WebRTC/IWebRtcConnection.js.map +0 -1
  298. package/dist/src/connection/WebRTC/NodeWebRtcConnection.js.map +0 -1
  299. package/dist/src/connection/WebRTC/WebRtcConnectorRpcLocal.d.ts +0 -51
  300. package/dist/src/connection/WebRTC/WebRtcConnectorRpcLocal.js +0 -249
  301. package/dist/src/connection/WebRTC/WebRtcConnectorRpcLocal.js.map +0 -1
  302. package/dist/src/connection/WebRTC/WebRtcConnectorRpcRemote.js.map +0 -1
  303. package/dist/src/connection/WebSocket/ClientWebSocket.js.map +0 -1
  304. package/dist/src/connection/WebSocket/ServerWebSocket.js.map +0 -1
  305. package/dist/src/connection/WebSocket/WebSocketConnectorRpcLocal.d.ts +0 -45
  306. package/dist/src/connection/WebSocket/WebSocketConnectorRpcLocal.js +0 -234
  307. package/dist/src/connection/WebSocket/WebSocketConnectorRpcLocal.js.map +0 -1
  308. package/dist/src/connection/WebSocket/WebSocketConnectorRpcRemote.js.map +0 -1
  309. package/dist/src/connection/WebSocket/WebSocketServer.js.map +0 -1
  310. package/dist/src/dht/RemoteDhtNode.js.map +0 -1
  311. package/dist/src/dht/find/RecursiveFindSession.js.map +0 -1
  312. package/dist/src/dht/find/RecursiveFinder.js.map +0 -1
  313. package/dist/src/dht/find/RemoteRecursiveFindSession.js.map +0 -1
  314. package/dist/src/dht/registerExternalApiRpcMethods.d.ts +0 -2
  315. package/dist/src/dht/registerExternalApiRpcMethods.js +0 -32
  316. package/dist/src/dht/registerExternalApiRpcMethods.js.map +0 -1
  317. package/src/connection/WebRTC/WebRtcConnectorRpcLocal.ts +0 -335
  318. package/src/connection/WebSocket/WebSocketConnectorRpcLocal.ts +0 -295
  319. package/src/dht/registerExternalApiRpcMethods.ts +0 -44
  320. package/test/utils/mock/RecursiveFinder.ts +0 -19
  321. /package/dist/src/connection/{Simulator → simulator}/Simulator.d.ts +0 -0
  322. /package/dist/src/connection/{Simulator → simulator}/pings.d.ts +0 -0
  323. /package/dist/src/connection/{Simulator → simulator}/pings.js +0 -0
  324. /package/dist/src/connection/{WebRTC → webrtc}/iceServerAsString.js +0 -0
  325. /package/src/connection/{Simulator → simulator}/pings.ts +0 -0
@@ -1,69 +1,78 @@
1
1
  import { ConnectionEvents, ConnectionID, ConnectionType, IConnection } from './IConnection'
2
2
  import * as Err from '../helpers/errors'
3
3
  import { Handshaker } from './Handshaker'
4
- import { PeerDescriptor } from '../proto/packages/dht/protos/DhtRpc'
5
- import { Logger, raceEvents3, runAndRaceEvents3, RunAndRaceEventsReturnType } from '@streamr/utils'
4
+ import { HandshakeError, PeerDescriptor } from '../proto/packages/dht/protos/DhtRpc'
5
+ import { Logger, runAndRaceEvents3, RunAndRaceEventsReturnType } from '@streamr/utils'
6
6
  import EventEmitter from 'eventemitter3'
7
7
  import { PeerIDKey } from '../helpers/PeerID'
8
8
  import { keyFromPeerDescriptor } from '../helpers/peerIdFromPeerDescriptor'
9
- import { DisconnectionType } from '../transport/ITransport'
10
- import { keyOrUnknownFromPeerDescriptor } from './ConnectionManager'
9
+ import { getNodeIdOrUnknownFromPeerDescriptor } from './ConnectionManager'
11
10
 
12
11
  export interface ManagedConnectionEvents {
13
12
  managedData: (bytes: Uint8Array, remotePeerDescriptor: PeerDescriptor) => void
14
- handshakeRequest: (peerDescriptor: PeerDescriptor) => void
13
+ handshakeRequest: (source: PeerDescriptor, target?: PeerDescriptor) => void
15
14
  handshakeCompleted: (peerDescriptor: PeerDescriptor) => void
16
15
  handshakeFailed: () => void
17
16
  bufferSentByOtherConnection: () => void
18
17
  closing: () => void
19
- internal_disconnected: () => void
18
+ }
19
+
20
+ interface OutpuBufferEvents {
21
+ bufferSent: () => void
22
+ bufferSendingFailed: () => void
23
+ }
24
+
25
+ interface OutpuBufferEvents {
26
+ bufferSent: () => void
27
+ bufferSendingFailed: () => void
20
28
  }
21
29
 
22
30
  const logger = new Logger(module)
23
31
 
24
32
  export type Events = ManagedConnectionEvents & ConnectionEvents
33
+
25
34
  export class ManagedConnection extends EventEmitter<Events> {
26
35
 
27
36
  private implementation?: IConnection
28
37
 
38
+ private outputBufferEmitter = new EventEmitter<OutpuBufferEvents>()
29
39
  private outputBuffer: Uint8Array[] = []
40
+
30
41
  private inputBuffer: Uint8Array[] = []
31
42
 
32
43
  public connectionId: ConnectionID
33
- private peerDescriptor?: PeerDescriptor
44
+ private remotePeerDescriptor?: PeerDescriptor
34
45
  public connectionType: ConnectionType
35
46
 
36
47
  private handshaker?: Handshaker
37
48
  private handshakeCompleted = false
38
- private doNotEmitDisconnected = false
39
49
 
40
50
  private lastUsed: number = Date.now()
41
51
  private stopped = false
42
52
  public offeredAsIncoming = false
43
- public rejectedAsIncoming = false
44
53
  private bufferSentbyOtherConnection = false
45
54
  private closing = false
46
55
  public replacedByOtherConnection = false
47
- private ownPeerDescriptor: PeerDescriptor
56
+ private localPeerDescriptor: PeerDescriptor
48
57
  protected outgoingConnection?: IConnection
49
58
  protected incomingConnection?: IConnection
50
59
 
51
60
  constructor(
52
- ownPeerDescriptor: PeerDescriptor,
61
+ localPeerDescriptor: PeerDescriptor,
53
62
  connectionType: ConnectionType,
54
63
  outgoingConnection?: IConnection,
55
64
  incomingConnection?: IConnection,
65
+ targetPeerDescriptor?: PeerDescriptor
56
66
  ) {
57
67
  super()
58
68
 
59
- this.send = this.send.bind(this)
60
-
61
- this.ownPeerDescriptor = ownPeerDescriptor
69
+ this.localPeerDescriptor = localPeerDescriptor
62
70
  this.outgoingConnection = outgoingConnection
63
71
  this.incomingConnection = incomingConnection
64
72
  this.connectionType = connectionType
65
73
  this.connectionId = new ConnectionID()
66
74
 
75
+ this.send = this.send.bind(this)
67
76
  this.onDisconnected = this.onDisconnected.bind(this)
68
77
 
69
78
  logger.trace('creating ManagedConnection of type: ' + connectionType)
@@ -72,33 +81,37 @@ export class ManagedConnection extends EventEmitter<Events> {
72
81
  }
73
82
 
74
83
  if (outgoingConnection) {
75
- this.handshaker = new Handshaker(this.ownPeerDescriptor, outgoingConnection)
84
+ this.handshaker = new Handshaker(this.localPeerDescriptor, outgoingConnection)
76
85
 
77
- this.handshaker.once('handshakeFailed', (errorMessage) => {
78
- logger.trace(keyOrUnknownFromPeerDescriptor(this.peerDescriptor) + ' handshakeFailed: ' + errorMessage)
79
- this.emit('handshakeFailed')
86
+ this.handshaker.once('handshakeFailed', (error) => {
87
+ if (error === HandshakeError.INVALID_TARGET_PEER_DESCRIPTOR) {
88
+ this.close(false)
89
+ } else {
90
+ logger.trace(getNodeIdOrUnknownFromPeerDescriptor(this.remotePeerDescriptor) + ' handshakeFailed: ' + error)
91
+ this.emit('handshakeFailed')
92
+ }
80
93
  })
81
94
 
82
95
  this.handshaker.on('handshakeCompleted', (peerDescriptor: PeerDescriptor) => {
83
96
  logger.trace('handshake completed for outgoing connection '
84
- + ', ' + keyOrUnknownFromPeerDescriptor(this.peerDescriptor)
97
+ + ', ' + getNodeIdOrUnknownFromPeerDescriptor(this.remotePeerDescriptor)
85
98
  + ' outputBuffer.length: ' + this.outputBuffer.length)
86
99
  this.attachImplementation(outgoingConnection)
87
100
  this.onHandshakeCompleted(peerDescriptor)
88
101
  })
89
102
 
90
103
  outgoingConnection.once('connected', () => {
91
- this.handshaker!.sendHandshakeRequest()
104
+ this.handshaker!.sendHandshakeRequest(targetPeerDescriptor)
92
105
  this.emit('connected')
93
106
  })
94
107
  outgoingConnection.once('disconnected', this.onDisconnected)
95
108
 
96
109
  } else {
97
110
  if (incomingConnection) {
98
- this.handshaker = new Handshaker(this.ownPeerDescriptor, incomingConnection)
99
- this.handshaker.on('handshakeRequest', (peerDescriptor: PeerDescriptor) => {
100
- this.setPeerDescriptor(peerDescriptor)
101
- this.emit('handshakeRequest', peerDescriptor)
111
+ this.handshaker = new Handshaker(this.localPeerDescriptor, incomingConnection)
112
+ this.handshaker.on('handshakeRequest', (sourcePeerDescriptor: PeerDescriptor, targetPeerDescriptor?: PeerDescriptor) => {
113
+ this.setRemotePeerDescriptor(sourcePeerDescriptor)
114
+ this.emit('handshakeRequest', sourcePeerDescriptor, targetPeerDescriptor)
102
115
  })
103
116
 
104
117
  incomingConnection.on('disconnected', this.onDisconnected)
@@ -150,32 +163,32 @@ export class ManagedConnection extends EventEmitter<Events> {
150
163
  }
151
164
 
152
165
  public get peerIdKey(): PeerIDKey {
153
- return keyFromPeerDescriptor(this.peerDescriptor!)
166
+ return keyFromPeerDescriptor(this.remotePeerDescriptor!)
154
167
  }
155
168
 
156
169
  public getLastUsed(): number {
157
170
  return this.lastUsed
158
171
  }
159
172
 
160
- public setPeerDescriptor(peerDescriptor: PeerDescriptor): void {
161
- this.peerDescriptor = peerDescriptor
173
+ public setRemotePeerDescriptor(peerDescriptor: PeerDescriptor): void {
174
+ this.remotePeerDescriptor = peerDescriptor
162
175
  }
163
176
 
164
177
  public getPeerDescriptor(): PeerDescriptor | undefined {
165
- return this.peerDescriptor
178
+ return this.remotePeerDescriptor
166
179
  }
167
180
 
168
- private onHandshakeCompleted = (peerDescriptor: PeerDescriptor) => {
181
+ private onHandshakeCompleted(peerDescriptor: PeerDescriptor) {
169
182
  this.lastUsed = Date.now()
170
183
 
171
- this.setPeerDescriptor(peerDescriptor)
184
+ this.setRemotePeerDescriptor(peerDescriptor)
172
185
  this.handshakeCompleted = true
173
186
 
174
187
  while (this.outputBuffer.length > 0) {
175
188
  logger.trace('emptying outputBuffer')
176
189
  this.implementation!.send(this.outputBuffer.shift()!)
177
190
  }
178
-
191
+ this.outputBufferEmitter.emit('bufferSent')
179
192
  logger.trace('emitting handshake_completed')
180
193
  this.emit('handshakeCompleted', peerDescriptor)
181
194
  }
@@ -186,8 +199,7 @@ export class ManagedConnection extends EventEmitter<Events> {
186
199
 
187
200
  impl.on('data', (bytes: Uint8Array) => {
188
201
  this.lastUsed = Date.now()
189
- if (this.listenerCount('managedData') < 1) {
190
-
202
+ if (this.listenerCount('managedData') === 0) {
191
203
  this.inputBuffer.push(bytes)
192
204
  } else {
193
205
  this.emit('managedData', bytes, this.getPeerDescriptor()!)
@@ -203,25 +215,26 @@ export class ManagedConnection extends EventEmitter<Events> {
203
215
  this.emit('connected')
204
216
  })
205
217
 
218
+ //ensure that we have subscribed to the event only once
206
219
  impl.off('disconnected', this.onDisconnected)
207
220
  impl.on('disconnected', this.onDisconnected)
208
221
  }
209
222
 
210
- private onDisconnected(disconnectionType: DisconnectionType): void {
211
- logger.trace(keyOrUnknownFromPeerDescriptor(this.peerDescriptor) + ' onDisconnected() ' + disconnectionType)
223
+ private onDisconnected(gracefulLeave: boolean): void {
224
+ logger.trace(getNodeIdOrUnknownFromPeerDescriptor(this.remotePeerDescriptor) + ' onDisconnected() ' + gracefulLeave)
212
225
  if (this.bufferSentbyOtherConnection) {
213
226
  return
214
227
  }
215
- this.emit('internal_disconnected')
216
- this.doDisconnect(disconnectionType)
228
+ this.outputBufferEmitter.emit('bufferSendingFailed')
229
+ this.emit('disconnected', gracefulLeave)
217
230
  }
218
231
 
219
232
  async send(data: Uint8Array, doNotConnect = false): Promise<void> {
220
233
  if (this.stopped) {
221
- return
234
+ throw new Err.SendFailed('ManagedConnection is stopped')
222
235
  }
223
236
  if (this.closing) {
224
- return
237
+ throw new Err.SendFailed('ManagedConnection is closing')
225
238
  }
226
239
  this.lastUsed = Date.now()
227
240
 
@@ -232,52 +245,20 @@ export class ManagedConnection extends EventEmitter<Events> {
232
245
  } else {
233
246
  logger.trace('adding data to outputBuffer')
234
247
 
235
- let result: RunAndRaceEventsReturnType<Events>
236
-
237
- this.doNotEmitDisconnected = true
248
+ let result: RunAndRaceEventsReturnType<OutpuBufferEvents>
238
249
 
239
250
  try {
240
- result = await runAndRaceEvents3<Events>([() => { this.outputBuffer.push(data) }], this, ['handshakeCompleted', 'handshakeFailed',
241
- 'bufferSentByOtherConnection', 'closing', 'internal_disconnected'], 15000)
251
+ result = await runAndRaceEvents3<OutpuBufferEvents>([() => { this.outputBuffer.push(data) }],
252
+ this.outputBufferEmitter, ['bufferSent', 'bufferSendingFailed'], 15000)
242
253
  } catch (e) {
243
- logger.debug(`Connection to ${keyOrUnknownFromPeerDescriptor(this.peerDescriptor)} timed out`)
244
- throw e
254
+ logger.debug(`Connection to ${getNodeIdOrUnknownFromPeerDescriptor(this.remotePeerDescriptor)} timed out`)
255
+ throw new Err.SendFailed('Sending buffer timed out')
245
256
  }
246
257
 
247
- if (result.winnerName === 'internal_disconnected') {
248
- this.doNotEmitDisconnected = false
249
- this.doDisconnect('OTHER')
250
- } else if (result.winnerName === 'handshakeFailed') {
251
- logger.trace(keyOrUnknownFromPeerDescriptor(this.peerDescriptor) + ' handshakeFailed received')
252
-
253
- if (this.bufferSentbyOtherConnection) {
254
- logger.trace('bufferSentByOtherConnection already true')
255
- this.doNotEmitDisconnected = false
256
- this.doDisconnect('OTHER')
257
- } else {
258
- let result2: RunAndRaceEventsReturnType<Events>
259
-
260
- try {
261
- result2 = await raceEvents3<Events>(this,
262
- ['bufferSentByOtherConnection', 'closing', 'disconnected'], 15000)
263
- } catch (ex) {
264
- logger.trace(keyOrUnknownFromPeerDescriptor(this.peerDescriptor)
265
- + ' Exception from raceEvents3 while waiting bufferSentByOtherConnection or closing ' + ex)
266
- throw ex
267
- }
268
- if (result2.winnerName === 'bufferSentByOtherConnection') {
269
- logger.trace('bufferSentByOtherConnection received')
270
- this.doNotEmitDisconnected = false
271
- this.doDisconnect('OTHER')
272
- } else if (result2.winnerName === 'closing') {
273
- logger.trace('bufferSentByOtherConnection not received, instead received a closing event')
274
- } else if (result2.winnerName === 'disconnected') {
275
- logger.trace('disconnected while in raceEvents3')
276
- }
277
- }
278
- } else {
279
- this.doNotEmitDisconnected = false
258
+ if (result.winnerName === 'bufferSendingFailed') {
259
+ throw new Err.SendFailed('Sending buffer failed')
280
260
  }
261
+ // buffer was sent successfully, return normally
281
262
  }
282
263
  }
283
264
 
@@ -292,12 +273,13 @@ export class ManagedConnection extends EventEmitter<Events> {
292
273
  }
293
274
 
294
275
  public reportBufferSentByOtherConnection(): void {
295
- logger.trace(keyOrUnknownFromPeerDescriptor(this.peerDescriptor) + ' reportBufferSentByOtherConnection')
276
+ logger.trace(getNodeIdOrUnknownFromPeerDescriptor(this.remotePeerDescriptor) + ' reportBufferSentByOtherConnection')
296
277
  if (this.handshaker) {
297
278
  this.handshaker.removeAllListeners()
298
279
  }
299
280
  logger.trace('bufferSentByOtherConnection reported')
300
281
  this.bufferSentbyOtherConnection = true
282
+ this.outputBufferEmitter.emit('bufferSent')
301
283
  this.emit('bufferSentByOtherConnection')
302
284
  }
303
285
 
@@ -305,7 +287,7 @@ export class ManagedConnection extends EventEmitter<Events> {
305
287
  // This happens when connectionRequest has been made and answered
306
288
  if (this.implementation) {
307
289
  if (!this.handshaker) {
308
- this.handshaker = new Handshaker(this.ownPeerDescriptor, this.implementation)
290
+ this.handshaker = new Handshaker(this.localPeerDescriptor, this.implementation)
309
291
  }
310
292
 
311
293
  this.handshaker.sendHandshakeResponse()
@@ -315,44 +297,37 @@ export class ManagedConnection extends EventEmitter<Events> {
315
297
  this.attachImplementation(this.incomingConnection!)
316
298
  }
317
299
 
318
- this.onHandshakeCompleted(this.peerDescriptor!)
319
- }
320
-
321
- public rejectHandshake(errorMessage: string): void {
322
- this.handshaker!.sendHandshakeResponse(errorMessage)
300
+ this.onHandshakeCompleted(this.remotePeerDescriptor!)
323
301
  }
324
302
 
325
- private doDisconnect(disconnectionType: DisconnectionType) {
326
- logger.trace(keyOrUnknownFromPeerDescriptor(this.peerDescriptor) + ' doDisconnect() emitting')
327
-
328
- if (!this.doNotEmitDisconnected) {
329
- logger.trace(keyOrUnknownFromPeerDescriptor(this.peerDescriptor) + ' emitting disconnected')
330
- this.emit('disconnected', disconnectionType)
331
- } else {
332
- logger.trace(keyOrUnknownFromPeerDescriptor(this.peerDescriptor) + ' not emitting disconnected because doNotEmitDisconnected flag is set')
333
- }
303
+ public rejectHandshake(error: HandshakeError): void {
304
+ this.handshaker!.sendHandshakeResponse(error)
305
+ this.destroy()
334
306
  }
335
307
 
336
- public async close(disconnectionType: DisconnectionType): Promise<void> {
308
+ public async close(gracefulLeave: boolean): Promise<void> {
337
309
  if (this.replacedByOtherConnection) {
338
310
  logger.trace('close() called on replaced connection')
339
311
  }
340
312
  this.closing = true
313
+
314
+ this.outputBufferEmitter.emit('bufferSendingFailed')
341
315
  this.emit('closing')
342
- this.doNotEmitDisconnected = false
316
+
343
317
  if (this.implementation) {
344
- await this.implementation?.close(disconnectionType)
318
+ await this.implementation?.close(gracefulLeave)
345
319
  } else if (this.outgoingConnection) {
346
- await this.outgoingConnection?.close(disconnectionType)
320
+ await this.outgoingConnection?.close(gracefulLeave)
347
321
  } else if (this.incomingConnection) {
348
- await this.incomingConnection?.close(disconnectionType)
322
+ await this.incomingConnection?.close(gracefulLeave)
349
323
  } else {
350
- this.doDisconnect(disconnectionType)
324
+ this.emit('disconnected', gracefulLeave)
351
325
  }
352
326
  }
353
327
 
354
328
  public destroy(): void {
355
329
  this.closing = true
330
+
356
331
  this.emit('closing')
357
332
  if (!this.stopped) {
358
333
  this.stopped = true
@@ -1,25 +1,27 @@
1
1
  import { PeerDescriptor } from '../proto/packages/dht/protos/DhtRpc'
2
2
  import { ConnectionType } from './IConnection'
3
3
  import { ManagedConnection } from './ManagedConnection'
4
- import { NodeWebRtcConnection } from './WebRTC/NodeWebRtcConnection'
4
+ import { NodeWebrtcConnection } from './webrtc/NodeWebrtcConnection'
5
5
 
6
- export class ManagedWebRtcConnection extends ManagedConnection {
6
+ export class ManagedWebrtcConnection extends ManagedConnection {
7
7
 
8
- constructor(ownPeerDescriptor: PeerDescriptor,
9
- connectingConnection?: NodeWebRtcConnection,
10
- connectedConnection?: NodeWebRtcConnection) {
8
+ constructor(localPeerDescriptor: PeerDescriptor,
9
+ connectingConnection?: NodeWebrtcConnection,
10
+ connectedConnection?: NodeWebrtcConnection
11
+ ) {
11
12
  super(
12
- ownPeerDescriptor,
13
+ localPeerDescriptor,
13
14
  ConnectionType.WEBRTC,
14
15
  connectingConnection,
15
- connectedConnection)
16
+ connectedConnection
17
+ )
16
18
  }
17
19
 
18
- public getWebRtcConnection(): NodeWebRtcConnection {
20
+ public getWebrtcConnection(): NodeWebrtcConnection {
19
21
  if (this.outgoingConnection) {
20
- return this.outgoingConnection as unknown as NodeWebRtcConnection
22
+ return this.outgoingConnection as unknown as NodeWebrtcConnection
21
23
  } else {
22
- return this.incomingConnection as unknown as NodeWebRtcConnection
24
+ return this.incomingConnection as unknown as NodeWebrtcConnection
23
25
  }
24
26
  }
25
27
  }
@@ -333,7 +333,7 @@ export class Simulator extends EventEmitter<ConnectionSourceEvents> {
333
333
  const association = new Association(sourceConnection, undefined, connectedCallback)
334
334
  this.associations.set(sourceConnection.connectionId, association)
335
335
 
336
- const executionTime = this.generateExecutionTime(association, sourceConnection.ownPeerDescriptor.region, targetDescriptor.region)
336
+ const executionTime = this.generateExecutionTime(association, sourceConnection.localPeerDescriptor.region, targetDescriptor.region)
337
337
  association.setLastOperationAt(executionTime)
338
338
 
339
339
  const operation = new ConnectOperation(executionTime, association,
@@ -356,7 +356,7 @@ export class Simulator extends EventEmitter<ConnectionSourceEvents> {
356
356
  association.setClosing()
357
357
 
358
358
  const executionTime = this.generateExecutionTime(association,
359
- sourceConnection.ownPeerDescriptor.region,
359
+ sourceConnection.localPeerDescriptor.region,
360
360
  sourceConnection.getPeerDescriptor()?.region)
361
361
  association.setLastOperationAt(executionTime)
362
362
 
@@ -382,8 +382,8 @@ export class Simulator extends EventEmitter<ConnectionSourceEvents> {
382
382
  }
383
383
 
384
384
  const executionTime = this.generateExecutionTime(association,
385
- sourceConnection.ownPeerDescriptor.region,
386
- association.destinationConnection!.ownPeerDescriptor.region)
385
+ sourceConnection.localPeerDescriptor.region,
386
+ association.destinationConnection!.localPeerDescriptor.region)
387
387
 
388
388
  association.setLastOperationAt(executionTime)
389
389
 
@@ -4,27 +4,26 @@ import { Message, PeerDescriptor } from '../../proto/packages/dht/protos/DhtRpc'
4
4
  import { Connection } from '../Connection'
5
5
  import { Logger } from '@streamr/utils'
6
6
  import { protoToString } from '../../helpers/protoToString'
7
- import { DisconnectionType } from '../../transport/ITransport'
8
- import { keyFromPeerDescriptor } from '../../helpers/peerIdFromPeerDescriptor'
7
+ import { getNodeIdFromPeerDescriptor } from '../../helpers/peerIdFromPeerDescriptor'
9
8
 
10
9
  const logger = new Logger(module)
11
10
 
12
11
  export class SimulatorConnection extends Connection implements IConnection {
13
12
 
14
13
  private stopped = false
15
- public ownPeerDescriptor: PeerDescriptor
14
+ public localPeerDescriptor: PeerDescriptor
16
15
  private targetPeerDescriptor: PeerDescriptor
17
16
  private simulator: Simulator
18
17
 
19
18
  constructor(
20
- ownPeerDescriptor: PeerDescriptor,
19
+ localPeerDescriptor: PeerDescriptor,
21
20
  targetPeerDescriptor: PeerDescriptor,
22
21
  connectionType: ConnectionType,
23
22
  simulator: Simulator
24
23
  ) {
25
24
  super(connectionType)
26
25
 
27
- this.ownPeerDescriptor = ownPeerDescriptor
26
+ this.localPeerDescriptor = localPeerDescriptor
28
27
  this.setPeerDescriptor(targetPeerDescriptor)
29
28
  this.targetPeerDescriptor = targetPeerDescriptor
30
29
  this.connectionType = connectionType
@@ -46,36 +45,37 @@ export class SimulatorConnection extends Connection implements IConnection {
46
45
  this.simulator.send(this, data)
47
46
 
48
47
  } else {
49
- logger.error(keyFromPeerDescriptor(this.ownPeerDescriptor) + ', ' + keyFromPeerDescriptor(this.targetPeerDescriptor) +
48
+ logger.error(getNodeIdFromPeerDescriptor(this.localPeerDescriptor) + ', ' + getNodeIdFromPeerDescriptor(this.targetPeerDescriptor) +
50
49
  'tried to send() on a stopped connection')
51
50
  }
52
51
  }
53
52
 
54
- public async close(disconnectionType: DisconnectionType): Promise<void> {
55
- logger.trace(keyFromPeerDescriptor(this.ownPeerDescriptor) + ', ' + keyFromPeerDescriptor(this.targetPeerDescriptor) + ' close()')
53
+ public async close(gracefulLeave: boolean): Promise<void> {
54
+ logger.trace(getNodeIdFromPeerDescriptor(this.localPeerDescriptor)
55
+ + ', ' + getNodeIdFromPeerDescriptor(this.targetPeerDescriptor) + ' close()')
56
56
 
57
57
  if (!this.stopped) {
58
- logger.trace(keyFromPeerDescriptor(this.ownPeerDescriptor) + ', '
59
- + keyFromPeerDescriptor(this.targetPeerDescriptor) + ' close() not stopped')
58
+ logger.trace(getNodeIdFromPeerDescriptor(this.localPeerDescriptor) + ', '
59
+ + getNodeIdFromPeerDescriptor(this.targetPeerDescriptor) + ' close() not stopped')
60
60
  this.stopped = true
61
61
 
62
62
  try {
63
- logger.trace(keyFromPeerDescriptor(this.ownPeerDescriptor) + ', ' + keyFromPeerDescriptor(this.targetPeerDescriptor) +
63
+ logger.trace(getNodeIdFromPeerDescriptor(this.localPeerDescriptor) + ', ' + getNodeIdFromPeerDescriptor(this.targetPeerDescriptor) +
64
64
  ' close() calling simulator.disconnect()')
65
65
  this.simulator.close(this)
66
- logger.trace(keyFromPeerDescriptor(this.ownPeerDescriptor) + ', ' + keyFromPeerDescriptor(this.targetPeerDescriptor) +
66
+ logger.trace(getNodeIdFromPeerDescriptor(this.localPeerDescriptor) + ', ' + getNodeIdFromPeerDescriptor(this.targetPeerDescriptor) +
67
67
  ' close() simulator.disconnect returned')
68
68
  } catch (e) {
69
- logger.trace(keyFromPeerDescriptor(this.ownPeerDescriptor) + ', ' + keyFromPeerDescriptor(this.targetPeerDescriptor) +
69
+ logger.trace(getNodeIdFromPeerDescriptor(this.localPeerDescriptor) + ', ' + getNodeIdFromPeerDescriptor(this.targetPeerDescriptor) +
70
70
  'close aborted' + e)
71
71
  } finally {
72
- logger.trace(keyFromPeerDescriptor(this.ownPeerDescriptor) + ', ' + keyFromPeerDescriptor(this.targetPeerDescriptor) +
72
+ logger.trace(getNodeIdFromPeerDescriptor(this.localPeerDescriptor) + ', ' + getNodeIdFromPeerDescriptor(this.targetPeerDescriptor) +
73
73
  ' calling this.doDisconnect')
74
- this.doDisconnect(disconnectionType)
74
+ this.doDisconnect(gracefulLeave)
75
75
  }
76
76
 
77
77
  } else {
78
- logger.trace(keyFromPeerDescriptor(this.ownPeerDescriptor) + ', ' + keyFromPeerDescriptor(this.targetPeerDescriptor) +
78
+ logger.trace(getNodeIdFromPeerDescriptor(this.localPeerDescriptor) + ', ' + getNodeIdFromPeerDescriptor(this.targetPeerDescriptor) +
79
79
  ' close() tried to close a stopped connection')
80
80
  }
81
81
  }
@@ -87,7 +87,7 @@ export class SimulatorConnection extends Connection implements IConnection {
87
87
  this.simulator.connect(this, this.targetPeerDescriptor, (error?: string) => {
88
88
  if (error) {
89
89
  logger.trace(error)
90
- this.doDisconnect('OTHER')
90
+ this.doDisconnect(false)
91
91
  } else {
92
92
  this.emit('connected')
93
93
  }
@@ -109,9 +109,9 @@ export class SimulatorConnection extends Connection implements IConnection {
109
109
 
110
110
  public handleIncomingDisconnection(): void {
111
111
  if (!this.stopped) {
112
- logger.trace(keyFromPeerDescriptor(this.ownPeerDescriptor) + ' handleIncomingDisconnection()')
112
+ logger.trace(getNodeIdFromPeerDescriptor(this.localPeerDescriptor) + ' handleIncomingDisconnection()')
113
113
  this.stopped = true
114
- this.doDisconnect('OTHER')
114
+ this.doDisconnect(false)
115
115
  } else {
116
116
  logger.trace('tried to call handleIncomingDisconnection() a stopped connection')
117
117
  }
@@ -119,22 +119,22 @@ export class SimulatorConnection extends Connection implements IConnection {
119
119
 
120
120
  public destroy(): void {
121
121
  if (!this.stopped) {
122
- logger.trace(keyFromPeerDescriptor(this.ownPeerDescriptor) + ' destroy()')
122
+ logger.trace(getNodeIdFromPeerDescriptor(this.localPeerDescriptor) + ' destroy()')
123
123
  this.removeAllListeners()
124
- this.close('OTHER').catch((_e) => { })
124
+ this.close(false).catch((_e) => { })
125
125
  } else {
126
- logger.trace(keyFromPeerDescriptor(this.ownPeerDescriptor) + ' tried to call destroy() a stopped connection')
126
+ logger.trace(getNodeIdFromPeerDescriptor(this.localPeerDescriptor) + ' tried to call destroy() a stopped connection')
127
127
  }
128
128
  }
129
129
 
130
- private doDisconnect(disconnectionType: DisconnectionType) {
131
- logger.trace(keyFromPeerDescriptor(this.ownPeerDescriptor) + ' doDisconnect()')
130
+ private doDisconnect(gracefulLeave: boolean) {
131
+ logger.trace(getNodeIdFromPeerDescriptor(this.localPeerDescriptor) + ' doDisconnect()')
132
132
  this.stopped = true
133
133
 
134
- logger.trace(keyFromPeerDescriptor(this.ownPeerDescriptor) + ', '
135
- + keyFromPeerDescriptor(this.targetPeerDescriptor) + ' doDisconnect emitting')
134
+ logger.trace(getNodeIdFromPeerDescriptor(this.localPeerDescriptor) + ', '
135
+ + getNodeIdFromPeerDescriptor(this.targetPeerDescriptor) + ' doDisconnect emitting')
136
136
 
137
- this.emit('disconnected', disconnectionType)
137
+ this.emit('disconnected', gracefulLeave)
138
138
 
139
139
  }
140
140
  }