@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,23 +6,25 @@ import {
6
6
  import { ITransport } from '../transport/ITransport'
7
7
  import { PortRange, TlsCertificate } from './ConnectionManager'
8
8
  import { ManagedConnection } from './ManagedConnection'
9
- import { Simulator } from './Simulator/Simulator'
10
- import { SimulatorConnector } from './Simulator/SimulatorConnector'
11
- import { IceServer, WebRtcConnectorRpcLocal } from './WebRTC/WebRtcConnectorRpcLocal'
12
- import { WebSocketConnectorRpcLocal } from './WebSocket/WebSocketConnectorRpcLocal'
9
+ import { Simulator } from './simulator/Simulator'
10
+ import { SimulatorConnector } from './simulator/SimulatorConnector'
11
+ import { IceServer, WebrtcConnector } from './webrtc/WebrtcConnector'
12
+ import { WebsocketConnector } from './websocket/WebsocketConnector'
13
13
 
14
14
  export interface ConnectorFacade {
15
15
  createConnection: (peerDescriptor: PeerDescriptor) => ManagedConnection
16
- getOwnPeerDescriptor: () => PeerDescriptor | undefined
16
+ getLocalPeerDescriptor: () => PeerDescriptor | undefined
17
17
  start: (
18
18
  onIncomingConnection: (connection: ManagedConnection) => boolean,
19
- canConnect: (peerDescriptor: PeerDescriptor) => boolean
19
+ canConnect: (peerDescriptor: PeerDescriptor) => boolean,
20
+ autoCertifierTransport: ITransport
20
21
  ) => Promise<void>
21
22
  stop: () => Promise<void>
22
23
  }
23
24
 
24
25
  const logger = new Logger(module)
25
26
 
27
+ // TODO: Wrap component specific configs to their own objects.
26
28
  export interface DefaultConnectorFacadeConfig {
27
29
  transport: ITransport
28
30
  websocketHost?: string
@@ -37,15 +39,18 @@ export interface DefaultConnectorFacadeConfig {
37
39
  webrtcPortRange?: PortRange
38
40
  maxMessageSize?: number
39
41
  tlsCertificate?: TlsCertificate
40
- createOwnPeerDescriptor: (connectivityResponse: ConnectivityResponse) => PeerDescriptor
42
+ websocketServerEnableTls?: boolean
43
+ autoCertifierUrl?: string
44
+ autoCertifierConfigFile?: string
45
+ createLocalPeerDescriptor: (connectivityResponse: ConnectivityResponse) => PeerDescriptor
41
46
  }
42
47
 
43
48
  export class DefaultConnectorFacade implements ConnectorFacade {
44
49
 
45
50
  private readonly config: DefaultConnectorFacadeConfig
46
- private ownPeerDescriptor?: PeerDescriptor
47
- private webSocketConnector?: WebSocketConnectorRpcLocal
48
- private webrtcConnector?: WebRtcConnectorRpcLocal
51
+ private localPeerDescriptor?: PeerDescriptor
52
+ private websocketConnector?: WebsocketConnector
53
+ private webrtcConnector?: WebrtcConnector
49
54
 
50
55
  constructor(config: DefaultConnectorFacadeConfig) {
51
56
  this.config = config
@@ -53,22 +58,28 @@ export class DefaultConnectorFacade implements ConnectorFacade {
53
58
 
54
59
  async start(
55
60
  onIncomingConnection: (connection: ManagedConnection) => boolean,
56
- canConnect: (peerDescriptor: PeerDescriptor) => boolean
61
+ canConnect: (peerDescriptor: PeerDescriptor) => boolean,
62
+ autoCertifierTransport: ITransport
57
63
  ): Promise<void> {
58
- logger.trace(`Creating WebSocketConnector`)
59
- this.webSocketConnector = new WebSocketConnectorRpcLocal({
64
+ logger.trace(`Creating WebsocketConnectorRpcLocal`)
65
+ const webSocketConnectorConfig = {
60
66
  transport: this.config.transport!,
61
- // TODO should we use canConnect also for WebRtcConnector? (NET-1142)
67
+ // TODO should we use canConnect also for WebrtcConnector? (NET-1142)
62
68
  canConnect: (peerDescriptor: PeerDescriptor) => canConnect(peerDescriptor),
63
69
  onIncomingConnection,
64
70
  portRange: this.config.websocketPortRange,
65
71
  host: this.config.websocketHost,
66
72
  entrypoints: this.config.entryPoints,
67
73
  tlsCertificate: this.config.tlsCertificate,
74
+ serverEnableTls: this.config.websocketServerEnableTls!,
75
+ autoCertifierUrl: this.config.autoCertifierUrl!,
76
+ autoCertifierConfigFile: this.config.autoCertifierConfigFile!,
77
+ autoCertifierTransport,
68
78
  maxMessageSize: this.config.maxMessageSize
69
- })
70
- logger.trace(`Creating WebRTCConnector`)
71
- this.webrtcConnector = new WebRtcConnectorRpcLocal({
79
+ }
80
+ this.websocketConnector = new WebsocketConnector(webSocketConnectorConfig)
81
+ logger.trace(`Creating WebRtcConnectorRpcLocal`)
82
+ this.webrtcConnector = new WebrtcConnector({
72
83
  transport: this.config.transport!,
73
84
  iceServers: this.config.iceServers,
74
85
  allowPrivateAddresses: this.config.webrtcAllowPrivateAddresses,
@@ -79,47 +90,76 @@ export class DefaultConnectorFacade implements ConnectorFacade {
79
90
  portRange: this.config.webrtcPortRange,
80
91
  maxMessageSize: this.config.maxMessageSize
81
92
  }, onIncomingConnection)
82
- await this.webSocketConnector.start()
83
- const connectivityResponse = await this.webSocketConnector.checkConnectivity()
84
- const ownPeerDescriptor = this.config.createOwnPeerDescriptor(connectivityResponse)
85
- this.ownPeerDescriptor = ownPeerDescriptor
86
- this.webSocketConnector.setOwnPeerDescriptor(ownPeerDescriptor)
87
- this.webrtcConnector.setOwnPeerDescriptor(ownPeerDescriptor)
93
+ await this.websocketConnector.start()
94
+ // TODO: generate a PeerDescriptor in a single function. Requires changes to the createOwnPeerDescriptor
95
+ // function in the config. Currently it's given by the DhtNode and it sets the PeerDescriptor for the
96
+ // DhtNode in each call.
97
+ // LocalPeerDescriptor could be stored in one place and passed from there to the connectors
98
+ const temporarilySelfSigned = (!this.config.tlsCertificate && this.config.websocketServerEnableTls === true)
99
+ const connectivityResponse = await this.websocketConnector.checkConnectivity(temporarilySelfSigned)
100
+ let localPeerDescriptor = this.config.createLocalPeerDescriptor(connectivityResponse)
101
+ this.localPeerDescriptor = localPeerDescriptor
102
+ this.websocketConnector.setLocalPeerDescriptor(localPeerDescriptor)
103
+ if (localPeerDescriptor.websocket && !this.config.tlsCertificate && this.config.websocketServerEnableTls) {
104
+ try {
105
+ await this.websocketConnector!.autoCertify()
106
+ const connectivityResponse = await this.websocketConnector!.checkConnectivity(false)
107
+ localPeerDescriptor = this.config.createLocalPeerDescriptor(connectivityResponse)
108
+ this.localPeerDescriptor = localPeerDescriptor
109
+ if (localPeerDescriptor.websocket === undefined) {
110
+ logger.warn('ConnectivityCheck failed after autocertification, websocket server connectivity disabled')
111
+ }
112
+ this.websocketConnector!.setLocalPeerDescriptor(localPeerDescriptor)
113
+ } catch (err) {
114
+ logger.warn('Failed to autocertify, disabling websocket server TLS')
115
+ await this.websocketConnector.destroy()
116
+ this.websocketConnector = new WebsocketConnector({
117
+ ...webSocketConnectorConfig,
118
+ serverEnableTls: false,
119
+ })
120
+ await this.websocketConnector.start()
121
+ const connectivityResponse = await this.websocketConnector.checkConnectivity(false)
122
+ localPeerDescriptor = this.config.createLocalPeerDescriptor(connectivityResponse)
123
+ this.localPeerDescriptor = localPeerDescriptor
124
+ this.websocketConnector.setLocalPeerDescriptor(localPeerDescriptor)
125
+ }
126
+ }
127
+ this.webrtcConnector.setLocalPeerDescriptor(localPeerDescriptor)
88
128
  }
89
129
 
90
130
  createConnection(peerDescriptor: PeerDescriptor): ManagedConnection {
91
- if (this.webSocketConnector!.isPossibleToFormConnection(peerDescriptor)) {
92
- return this.webSocketConnector!.connect(peerDescriptor)
131
+ if (this.websocketConnector!.isPossibleToFormConnection(peerDescriptor)) {
132
+ return this.websocketConnector!.connect(peerDescriptor)
93
133
  } else {
94
134
  return this.webrtcConnector!.connect(peerDescriptor)
95
135
  }
96
136
  }
97
137
 
98
- getOwnPeerDescriptor(): PeerDescriptor | undefined {
99
- return this.ownPeerDescriptor
138
+ getLocalPeerDescriptor(): PeerDescriptor | undefined {
139
+ return this.localPeerDescriptor
100
140
  }
101
141
 
102
142
  async stop(): Promise<void> {
103
- await this.webSocketConnector!.destroy()
143
+ await this.websocketConnector!.destroy()
104
144
  await this.webrtcConnector!.stop()
105
145
  }
106
146
  }
107
147
 
108
148
  export class SimulatorConnectorFacade implements ConnectorFacade {
109
149
 
110
- private readonly ownPeerDescriptor: PeerDescriptor
150
+ private readonly localPeerDescriptor: PeerDescriptor
111
151
  private simulatorConnector?: SimulatorConnector
112
152
  private simulator: Simulator
113
153
 
114
- constructor(ownPeerDescriptor: PeerDescriptor, simulator: Simulator) {
115
- this.ownPeerDescriptor = ownPeerDescriptor
154
+ constructor(localPeerDescriptor: PeerDescriptor, simulator: Simulator) {
155
+ this.localPeerDescriptor = localPeerDescriptor
116
156
  this.simulator = simulator
117
157
  }
118
158
 
119
159
  async start(onIncomingConnection: (connection: ManagedConnection) => boolean): Promise<void> {
120
160
  logger.trace(`Creating SimulatorConnector`)
121
161
  this.simulatorConnector = new SimulatorConnector(
122
- this.ownPeerDescriptor,
162
+ this.localPeerDescriptor,
123
163
  this.simulator,
124
164
  onIncomingConnection
125
165
  )
@@ -130,8 +170,8 @@ export class SimulatorConnectorFacade implements ConnectorFacade {
130
170
  return this.simulatorConnector!.connect(peerDescriptor)
131
171
  }
132
172
 
133
- getOwnPeerDescriptor(): PeerDescriptor {
134
- return this.ownPeerDescriptor
173
+ getLocalPeerDescriptor(): PeerDescriptor {
174
+ return this.localPeerDescriptor
135
175
  }
136
176
 
137
177
  async stop(): Promise<void> {
@@ -15,20 +15,20 @@ interface HandshakerEvents {
15
15
  export class Handshaker extends EventEmitter<HandshakerEvents> {
16
16
 
17
17
  private static readonly HANDSHAKER_SERVICE_ID = 'system/handshaker'
18
- private ownPeerDescriptor: PeerDescriptor
18
+ private localPeerDescriptor: PeerDescriptor
19
19
  private connection: IConnection
20
20
 
21
21
  constructor(
22
- ownPeerDescriptor: PeerDescriptor,
22
+ localPeerDescriptor: PeerDescriptor,
23
23
  connection: IConnection
24
24
  ) {
25
25
  super()
26
- this.ownPeerDescriptor = ownPeerDescriptor
26
+ this.localPeerDescriptor = localPeerDescriptor
27
27
  this.connection = connection
28
- this.connection.on('data', this.onData)
28
+ this.connection.on('data', (data: Uint8Array) => this.onData(data))
29
29
  }
30
30
 
31
- private onData = (data: Uint8Array) => {
31
+ private onData(data: Uint8Array) {
32
32
  try {
33
33
  const message = Message.fromBinary(data)
34
34
  if (message.body.oneofKind === 'handshakeRequest') {
@@ -53,8 +53,8 @@ export class Handshaker extends EventEmitter<HandshakerEvents> {
53
53
 
54
54
  public sendHandshakeRequest(): void {
55
55
  const outgoingHandshake: HandshakeRequest = {
56
- sourceId: this.ownPeerDescriptor.kademliaId,
57
- peerDescriptor: this.ownPeerDescriptor
56
+ sourceId: this.localPeerDescriptor.kademliaId,
57
+ peerDescriptor: this.localPeerDescriptor
58
58
  }
59
59
  const msg: Message = {
60
60
  serviceId: Handshaker.HANDSHAKER_SERVICE_ID,
@@ -71,8 +71,8 @@ export class Handshaker extends EventEmitter<HandshakerEvents> {
71
71
 
72
72
  public sendHandshakeResponse(error?: string): void {
73
73
  const outgoingHandshakeResponse: HandshakeResponse = {
74
- sourceId: this.ownPeerDescriptor.kademliaId,
75
- peerDescriptor: this.ownPeerDescriptor
74
+ sourceId: this.localPeerDescriptor.kademliaId,
75
+ peerDescriptor: this.localPeerDescriptor
76
76
  }
77
77
  if (error) {
78
78
  outgoingHandshakeResponse.responseError = error
@@ -1,10 +1,9 @@
1
1
  import { UUID } from '../helpers/UUID'
2
- import { DisconnectionType } from '../transport/ITransport'
3
2
 
4
3
  export interface ConnectionEvents {
5
4
  data: (bytes: Uint8Array) => void
6
5
  connected: () => void
7
- disconnected: (disconnectionType: DisconnectionType, code?: number, reason?: string) => void
6
+ disconnected: (gracefulLeave: boolean, code?: number, reason?: string) => void
8
7
  error: (name: string) => void
9
8
  }
10
9
 
@@ -29,19 +28,19 @@ export interface IConnection {
29
28
  on(event: 'data', listener: (bytes: Uint8Array) => void): this
30
29
  on(event: 'error', listener: (name: string) => void): this
31
30
  on(event: 'connected', listener: () => void): this
32
- on(event: 'disconnected', listener: (disconnectionType: DisconnectionType, code?: number, reason?: string) => void): this
31
+ on(event: 'disconnected', listener: (gracefulLeave: boolean, code?: number, reason?: string) => void): this
33
32
 
34
33
  once(event: 'data', listener: (bytes: Uint8Array) => void): this
35
34
  once(event: 'error', listener: (name: string) => void): this
36
35
  once(event: 'connected', listener: () => void): this
37
- once(event: 'disconnected', listener: (disconnectionType: DisconnectionType, code?: number, reason?: string) => void): this
36
+ once(event: 'disconnected', listener: (gracefulLeave: boolean, code?: number, reason?: string) => void): this
38
37
 
39
38
  off(event: 'data', listener: (bytes: Uint8Array) => void): void
40
39
  off(event: 'error', listener: (name: string) => void): void
41
40
  off(event: 'connected', listener: () => void): void
42
- off(event: 'disconnected', listener: (disconnectionType: DisconnectionType, code?: number, reason?: string) => void): void
41
+ off(event: 'disconnected', listener: (gracefulLeave: boolean, code?: number, reason?: string) => void): void
43
42
 
44
43
  send(data: Uint8Array): void
45
- close(disconnectionType: DisconnectionType): Promise<void>
44
+ close(gracefulLeave: boolean): Promise<void>
46
45
  destroy(): void
47
46
  }
@@ -6,7 +6,6 @@ import { Logger, raceEvents3, runAndRaceEvents3, RunAndRaceEventsReturnType } fr
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
9
  import { keyOrUnknownFromPeerDescriptor } from './ConnectionManager'
11
10
 
12
11
  export interface ManagedConnectionEvents {
@@ -44,12 +43,12 @@ export class ManagedConnection extends EventEmitter<Events> {
44
43
  private bufferSentbyOtherConnection = false
45
44
  private closing = false
46
45
  public replacedByOtherConnection = false
47
- private ownPeerDescriptor: PeerDescriptor
46
+ private localPeerDescriptor: PeerDescriptor
48
47
  protected outgoingConnection?: IConnection
49
48
  protected incomingConnection?: IConnection
50
49
 
51
50
  constructor(
52
- ownPeerDescriptor: PeerDescriptor,
51
+ localPeerDescriptor: PeerDescriptor,
53
52
  connectionType: ConnectionType,
54
53
  outgoingConnection?: IConnection,
55
54
  incomingConnection?: IConnection,
@@ -58,7 +57,7 @@ export class ManagedConnection extends EventEmitter<Events> {
58
57
 
59
58
  this.send = this.send.bind(this)
60
59
 
61
- this.ownPeerDescriptor = ownPeerDescriptor
60
+ this.localPeerDescriptor = localPeerDescriptor
62
61
  this.outgoingConnection = outgoingConnection
63
62
  this.incomingConnection = incomingConnection
64
63
  this.connectionType = connectionType
@@ -72,7 +71,7 @@ export class ManagedConnection extends EventEmitter<Events> {
72
71
  }
73
72
 
74
73
  if (outgoingConnection) {
75
- this.handshaker = new Handshaker(this.ownPeerDescriptor, outgoingConnection)
74
+ this.handshaker = new Handshaker(this.localPeerDescriptor, outgoingConnection)
76
75
 
77
76
  this.handshaker.once('handshakeFailed', (errorMessage) => {
78
77
  logger.trace(keyOrUnknownFromPeerDescriptor(this.peerDescriptor) + ' handshakeFailed: ' + errorMessage)
@@ -95,7 +94,7 @@ export class ManagedConnection extends EventEmitter<Events> {
95
94
 
96
95
  } else {
97
96
  if (incomingConnection) {
98
- this.handshaker = new Handshaker(this.ownPeerDescriptor, incomingConnection)
97
+ this.handshaker = new Handshaker(this.localPeerDescriptor, incomingConnection)
99
98
  this.handshaker.on('handshakeRequest', (peerDescriptor: PeerDescriptor) => {
100
99
  this.setPeerDescriptor(peerDescriptor)
101
100
  this.emit('handshakeRequest', peerDescriptor)
@@ -165,7 +164,7 @@ export class ManagedConnection extends EventEmitter<Events> {
165
164
  return this.peerDescriptor
166
165
  }
167
166
 
168
- private onHandshakeCompleted = (peerDescriptor: PeerDescriptor) => {
167
+ private onHandshakeCompleted(peerDescriptor: PeerDescriptor) {
169
168
  this.lastUsed = Date.now()
170
169
 
171
170
  this.setPeerDescriptor(peerDescriptor)
@@ -186,7 +185,7 @@ export class ManagedConnection extends EventEmitter<Events> {
186
185
 
187
186
  impl.on('data', (bytes: Uint8Array) => {
188
187
  this.lastUsed = Date.now()
189
- if (this.listenerCount('managedData') < 1) {
188
+ if (this.listenerCount('managedData') === 0) {
190
189
 
191
190
  this.inputBuffer.push(bytes)
192
191
  } else {
@@ -207,13 +206,13 @@ export class ManagedConnection extends EventEmitter<Events> {
207
206
  impl.on('disconnected', this.onDisconnected)
208
207
  }
209
208
 
210
- private onDisconnected(disconnectionType: DisconnectionType): void {
211
- logger.trace(keyOrUnknownFromPeerDescriptor(this.peerDescriptor) + ' onDisconnected() ' + disconnectionType)
209
+ private onDisconnected(gracefulLeave: boolean): void {
210
+ logger.trace(keyOrUnknownFromPeerDescriptor(this.peerDescriptor) + ' onDisconnected() ' + gracefulLeave)
212
211
  if (this.bufferSentbyOtherConnection) {
213
212
  return
214
213
  }
215
214
  this.emit('internal_disconnected')
216
- this.doDisconnect(disconnectionType)
215
+ this.doDisconnect(gracefulLeave)
217
216
  }
218
217
 
219
218
  async send(data: Uint8Array, doNotConnect = false): Promise<void> {
@@ -246,14 +245,14 @@ export class ManagedConnection extends EventEmitter<Events> {
246
245
 
247
246
  if (result.winnerName === 'internal_disconnected') {
248
247
  this.doNotEmitDisconnected = false
249
- this.doDisconnect('OTHER')
248
+ this.doDisconnect(false)
250
249
  } else if (result.winnerName === 'handshakeFailed') {
251
250
  logger.trace(keyOrUnknownFromPeerDescriptor(this.peerDescriptor) + ' handshakeFailed received')
252
251
 
253
252
  if (this.bufferSentbyOtherConnection) {
254
253
  logger.trace('bufferSentByOtherConnection already true')
255
254
  this.doNotEmitDisconnected = false
256
- this.doDisconnect('OTHER')
255
+ this.doDisconnect(false)
257
256
  } else {
258
257
  let result2: RunAndRaceEventsReturnType<Events>
259
258
 
@@ -268,7 +267,7 @@ export class ManagedConnection extends EventEmitter<Events> {
268
267
  if (result2.winnerName === 'bufferSentByOtherConnection') {
269
268
  logger.trace('bufferSentByOtherConnection received')
270
269
  this.doNotEmitDisconnected = false
271
- this.doDisconnect('OTHER')
270
+ this.doDisconnect(false)
272
271
  } else if (result2.winnerName === 'closing') {
273
272
  logger.trace('bufferSentByOtherConnection not received, instead received a closing event')
274
273
  } else if (result2.winnerName === 'disconnected') {
@@ -305,7 +304,7 @@ export class ManagedConnection extends EventEmitter<Events> {
305
304
  // This happens when connectionRequest has been made and answered
306
305
  if (this.implementation) {
307
306
  if (!this.handshaker) {
308
- this.handshaker = new Handshaker(this.ownPeerDescriptor, this.implementation)
307
+ this.handshaker = new Handshaker(this.localPeerDescriptor, this.implementation)
309
308
  }
310
309
 
311
310
  this.handshaker.sendHandshakeResponse()
@@ -322,18 +321,18 @@ export class ManagedConnection extends EventEmitter<Events> {
322
321
  this.handshaker!.sendHandshakeResponse(errorMessage)
323
322
  }
324
323
 
325
- private doDisconnect(disconnectionType: DisconnectionType) {
324
+ private doDisconnect(gracefulLeave: boolean) {
326
325
  logger.trace(keyOrUnknownFromPeerDescriptor(this.peerDescriptor) + ' doDisconnect() emitting')
327
326
 
328
327
  if (!this.doNotEmitDisconnected) {
329
328
  logger.trace(keyOrUnknownFromPeerDescriptor(this.peerDescriptor) + ' emitting disconnected')
330
- this.emit('disconnected', disconnectionType)
329
+ this.emit('disconnected', gracefulLeave)
331
330
  } else {
332
331
  logger.trace(keyOrUnknownFromPeerDescriptor(this.peerDescriptor) + ' not emitting disconnected because doNotEmitDisconnected flag is set')
333
332
  }
334
333
  }
335
334
 
336
- public async close(disconnectionType: DisconnectionType): Promise<void> {
335
+ public async close(gracefulLeave: boolean): Promise<void> {
337
336
  if (this.replacedByOtherConnection) {
338
337
  logger.trace('close() called on replaced connection')
339
338
  }
@@ -341,13 +340,13 @@ export class ManagedConnection extends EventEmitter<Events> {
341
340
  this.emit('closing')
342
341
  this.doNotEmitDisconnected = false
343
342
  if (this.implementation) {
344
- await this.implementation?.close(disconnectionType)
343
+ await this.implementation?.close(gracefulLeave)
345
344
  } else if (this.outgoingConnection) {
346
- await this.outgoingConnection?.close(disconnectionType)
345
+ await this.outgoingConnection?.close(gracefulLeave)
347
346
  } else if (this.incomingConnection) {
348
- await this.incomingConnection?.close(disconnectionType)
347
+ await this.incomingConnection?.close(gracefulLeave)
349
348
  } else {
350
- this.doDisconnect(disconnectionType)
349
+ this.doDisconnect(gracefulLeave)
351
350
  }
352
351
  }
353
352
 
@@ -1,25 +1,25 @@
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
  super(
12
- ownPeerDescriptor,
12
+ localPeerDescriptor,
13
13
  ConnectionType.WEBRTC,
14
14
  connectingConnection,
15
15
  connectedConnection)
16
16
  }
17
17
 
18
- public getWebRtcConnection(): NodeWebRtcConnection {
18
+ public getWebrtcConnection(): NodeWebrtcConnection {
19
19
  if (this.outgoingConnection) {
20
- return this.outgoingConnection as unknown as NodeWebRtcConnection
20
+ return this.outgoingConnection as unknown as NodeWebrtcConnection
21
21
  } else {
22
- return this.incomingConnection as unknown as NodeWebRtcConnection
22
+ return this.incomingConnection as unknown as NodeWebrtcConnection
23
23
  }
24
24
  }
25
25
  }
@@ -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,7 +4,6 @@ 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
7
  import { keyFromPeerDescriptor } from '../../helpers/peerIdFromPeerDescriptor'
9
8
 
10
9
  const logger = new Logger(module)
@@ -12,19 +11,19 @@ const logger = new Logger(module)
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,36 @@ 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(keyFromPeerDescriptor(this.localPeerDescriptor) + ', ' + keyFromPeerDescriptor(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(keyFromPeerDescriptor(this.localPeerDescriptor) + ', ' + keyFromPeerDescriptor(this.targetPeerDescriptor) + ' close()')
56
55
 
57
56
  if (!this.stopped) {
58
- logger.trace(keyFromPeerDescriptor(this.ownPeerDescriptor) + ', '
57
+ logger.trace(keyFromPeerDescriptor(this.localPeerDescriptor) + ', '
59
58
  + keyFromPeerDescriptor(this.targetPeerDescriptor) + ' close() not stopped')
60
59
  this.stopped = true
61
60
 
62
61
  try {
63
- logger.trace(keyFromPeerDescriptor(this.ownPeerDescriptor) + ', ' + keyFromPeerDescriptor(this.targetPeerDescriptor) +
62
+ logger.trace(keyFromPeerDescriptor(this.localPeerDescriptor) + ', ' + keyFromPeerDescriptor(this.targetPeerDescriptor) +
64
63
  ' close() calling simulator.disconnect()')
65
64
  this.simulator.close(this)
66
- logger.trace(keyFromPeerDescriptor(this.ownPeerDescriptor) + ', ' + keyFromPeerDescriptor(this.targetPeerDescriptor) +
65
+ logger.trace(keyFromPeerDescriptor(this.localPeerDescriptor) + ', ' + keyFromPeerDescriptor(this.targetPeerDescriptor) +
67
66
  ' close() simulator.disconnect returned')
68
67
  } catch (e) {
69
- logger.trace(keyFromPeerDescriptor(this.ownPeerDescriptor) + ', ' + keyFromPeerDescriptor(this.targetPeerDescriptor) +
68
+ logger.trace(keyFromPeerDescriptor(this.localPeerDescriptor) + ', ' + keyFromPeerDescriptor(this.targetPeerDescriptor) +
70
69
  'close aborted' + e)
71
70
  } finally {
72
- logger.trace(keyFromPeerDescriptor(this.ownPeerDescriptor) + ', ' + keyFromPeerDescriptor(this.targetPeerDescriptor) +
71
+ logger.trace(keyFromPeerDescriptor(this.localPeerDescriptor) + ', ' + keyFromPeerDescriptor(this.targetPeerDescriptor) +
73
72
  ' calling this.doDisconnect')
74
- this.doDisconnect(disconnectionType)
73
+ this.doDisconnect(gracefulLeave)
75
74
  }
76
75
 
77
76
  } else {
78
- logger.trace(keyFromPeerDescriptor(this.ownPeerDescriptor) + ', ' + keyFromPeerDescriptor(this.targetPeerDescriptor) +
77
+ logger.trace(keyFromPeerDescriptor(this.localPeerDescriptor) + ', ' + keyFromPeerDescriptor(this.targetPeerDescriptor) +
79
78
  ' close() tried to close a stopped connection')
80
79
  }
81
80
  }
@@ -87,7 +86,7 @@ export class SimulatorConnection extends Connection implements IConnection {
87
86
  this.simulator.connect(this, this.targetPeerDescriptor, (error?: string) => {
88
87
  if (error) {
89
88
  logger.trace(error)
90
- this.doDisconnect('OTHER')
89
+ this.doDisconnect(false)
91
90
  } else {
92
91
  this.emit('connected')
93
92
  }
@@ -109,9 +108,9 @@ export class SimulatorConnection extends Connection implements IConnection {
109
108
 
110
109
  public handleIncomingDisconnection(): void {
111
110
  if (!this.stopped) {
112
- logger.trace(keyFromPeerDescriptor(this.ownPeerDescriptor) + ' handleIncomingDisconnection()')
111
+ logger.trace(keyFromPeerDescriptor(this.localPeerDescriptor) + ' handleIncomingDisconnection()')
113
112
  this.stopped = true
114
- this.doDisconnect('OTHER')
113
+ this.doDisconnect(false)
115
114
  } else {
116
115
  logger.trace('tried to call handleIncomingDisconnection() a stopped connection')
117
116
  }
@@ -119,22 +118,22 @@ export class SimulatorConnection extends Connection implements IConnection {
119
118
 
120
119
  public destroy(): void {
121
120
  if (!this.stopped) {
122
- logger.trace(keyFromPeerDescriptor(this.ownPeerDescriptor) + ' destroy()')
121
+ logger.trace(keyFromPeerDescriptor(this.localPeerDescriptor) + ' destroy()')
123
122
  this.removeAllListeners()
124
- this.close('OTHER').catch((_e) => { })
123
+ this.close(false).catch((_e) => { })
125
124
  } else {
126
- logger.trace(keyFromPeerDescriptor(this.ownPeerDescriptor) + ' tried to call destroy() a stopped connection')
125
+ logger.trace(keyFromPeerDescriptor(this.localPeerDescriptor) + ' tried to call destroy() a stopped connection')
127
126
  }
128
127
  }
129
128
 
130
- private doDisconnect(disconnectionType: DisconnectionType) {
131
- logger.trace(keyFromPeerDescriptor(this.ownPeerDescriptor) + ' doDisconnect()')
129
+ private doDisconnect(gracefulLeave: boolean) {
130
+ logger.trace(keyFromPeerDescriptor(this.localPeerDescriptor) + ' doDisconnect()')
132
131
  this.stopped = true
133
132
 
134
- logger.trace(keyFromPeerDescriptor(this.ownPeerDescriptor) + ', '
133
+ logger.trace(keyFromPeerDescriptor(this.localPeerDescriptor) + ', '
135
134
  + keyFromPeerDescriptor(this.targetPeerDescriptor) + ' doDisconnect emitting')
136
135
 
137
- this.emit('disconnected', disconnectionType)
136
+ this.emit('disconnected', gracefulLeave)
138
137
 
139
138
  }
140
139
  }