@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
@@ -8,11 +8,11 @@ import { PeerIDKey } from '../helpers/PeerID'
8
8
  import * as Err from '../helpers/errors'
9
9
  import {
10
10
  areEqualPeerDescriptors,
11
+ getNodeIdFromPeerDescriptor,
11
12
  keyFromPeerDescriptor,
12
13
  peerIdFromPeerDescriptor
13
14
  } from '../helpers/peerIdFromPeerDescriptor'
14
15
  import { protoToString } from '../helpers/protoToString'
15
- import { Empty } from '../proto/google/protobuf/empty'
16
16
  import {
17
17
  DisconnectMode,
18
18
  DisconnectNotice,
@@ -25,15 +25,15 @@ import {
25
25
  UnlockRequest
26
26
  } from '../proto/packages/dht/protos/DhtRpc'
27
27
  import { ConnectionLockRpcClient } from '../proto/packages/dht/protos/DhtRpc.client'
28
- import { DisconnectionType, ITransport, TransportEvents } from '../transport/ITransport'
28
+ import { ITransport, TransportEvents } from '../transport/ITransport'
29
29
  import { RoutingRpcCommunicator } from '../transport/RoutingRpcCommunicator'
30
- import { ConnectionLockHandler } from './ConnectionLockHandler'
30
+ import { ConnectionLockHandler, LockID } from './ConnectionLockHandler'
31
31
  import { ConnectorFacade } from './ConnectorFacade'
32
32
  import { ManagedConnection, Events as ManagedConnectionEvents } from './ManagedConnection'
33
33
  import { ConnectionLockRpcRemote } from './ConnectionLockRpcRemote'
34
- import { WEB_RTC_CLEANUP } from './WebRTC/NodeWebRtcConnection'
34
+ import { WEBRTC_CLEANUP } from './webrtc/NodeWebrtcConnection'
35
35
  import { ServerCallContext } from '@protobuf-ts/runtime-rpc'
36
- import { DhtCallContext } from '../rpc-protocol/DhtCallContext'
36
+ import { ConnectionLockRpcLocal } from './ConnectionLockRpcLocal'
37
37
 
38
38
  export interface ConnectionManagerConfig {
39
39
  maxConnections?: number
@@ -67,10 +67,6 @@ enum ConnectionManagerState {
67
67
  STOPPED = 'stopped'
68
68
  }
69
69
 
70
- interface ConnectionManagerEvents {
71
- newConnection: (connection: ManagedConnection) => void
72
- }
73
-
74
70
  export interface ConnectionLocker {
75
71
  lockConnection(targetDescriptor: PeerDescriptor, serviceId: ServiceId): void
76
72
  unlockConnection(targetDescriptor: PeerDescriptor, serviceId: ServiceId): void
@@ -88,28 +84,26 @@ export interface TlsCertificate {
88
84
  certFileName: string
89
85
  }
90
86
 
91
- export type Events = TransportEvents & ConnectionManagerEvents
92
-
93
87
  const INTERNAL_SERVICE_ID = 'system/connection-manager'
94
88
 
95
89
  // Form an string representation from a peer description which can be undefined. This output
96
90
  // should only be used only for log output. TODO remove this method if we no longer use
97
91
  // peerDescriptors which can be undefined, e.g.
98
92
  // - if we refactor ConnectionManager so that it doesn't process handshake requests too early
99
- // and therefore this.ownPeerDescriptor can't be undefine (NET-1129)
93
+ // and therefore this.localPeerDescriptor can't be undefine (NET-1129)
100
94
  // - if the peerDescriptor of ManagedConnection is always available
101
95
  // - if we create stricter types for incoming messages (message.sourceDescriptor or
102
96
  // disconnectNotice.peerDescriptor)
103
97
  // - if ManagedConnection#peerDescriptor is never undefined
104
- export const keyOrUnknownFromPeerDescriptor = (peerDescriptor: PeerDescriptor | undefined): string => {
98
+ export const getNodeIdOrUnknownFromPeerDescriptor = (peerDescriptor: PeerDescriptor | undefined): string => {
105
99
  if (peerDescriptor !== undefined) {
106
- return keyFromPeerDescriptor(peerDescriptor)
100
+ return getNodeIdFromPeerDescriptor(peerDescriptor)
107
101
  } else {
108
102
  return 'unknown'
109
103
  }
110
104
  }
111
105
 
112
- export class ConnectionManager extends EventEmitter<Events> implements ITransport, ConnectionLocker {
106
+ export class ConnectionManager extends EventEmitter<TransportEvents> implements ITransport, ConnectionLocker {
113
107
 
114
108
  private config: ConnectionManagerConfig
115
109
  private readonly metricsContext: MetricsContext
@@ -126,8 +120,9 @@ export class ConnectionManager extends EventEmitter<Events> implements ITranspor
126
120
  super()
127
121
  this.config = config
128
122
  this.onData = this.onData.bind(this)
129
- this.onIncomingConnection = this.onIncomingConnection.bind(this)
130
- this.metricsContext = this.config.metricsContext || new MetricsContext()
123
+ this.send = this.send.bind(this)
124
+ this.onNewConnection = this.onNewConnection.bind(this)
125
+ this.metricsContext = this.config.metricsContext ?? new MetricsContext()
131
126
  this.metrics = {
132
127
  sendMessagesPerSecond: new RateMetric(),
133
128
  sendBytesPerSecond: new RateMetric(),
@@ -142,29 +137,37 @@ export class ConnectionManager extends EventEmitter<Events> implements ITranspor
142
137
  this.rpcCommunicator = new RoutingRpcCommunicator(INTERNAL_SERVICE_ID, this.send, {
143
138
  rpcRequestTimeout: 10000
144
139
  })
140
+ const lockRpcLocal = new ConnectionLockRpcLocal({
141
+ addRemoteLocked: (id: PeerIDKey, serviceId: string) => this.locks.addRemoteLocked(id, serviceId),
142
+ removeRemoteLocked: (id: PeerIDKey, serviceId: string) => this.locks.removeRemoteLocked(id, serviceId),
143
+ closeConnection: (peerDescriptor: PeerDescriptor, gracefulLeave: boolean, reason?: string) => {
144
+ this.closeConnection(peerDescriptor, gracefulLeave, reason)
145
+ },
146
+ getLocalPeerDescriptor: () => this.getLocalPeerDescriptor()
147
+ })
145
148
  this.rpcCommunicator.registerRpcMethod(LockRequest, LockResponse, 'lockRequest',
146
- (req: LockRequest, context: ServerCallContext) => this.lockRequest(req, context))
149
+ (req: LockRequest, context: ServerCallContext) => lockRpcLocal.lockRequest(req, context))
147
150
  this.rpcCommunicator.registerRpcNotification(UnlockRequest, 'unlockRequest',
148
- (req: UnlockRequest, context: ServerCallContext) => this.unlockRequest(req, context))
151
+ (req: UnlockRequest, context: ServerCallContext) => lockRpcLocal.unlockRequest(req, context))
149
152
  this.rpcCommunicator.registerRpcMethod(DisconnectNotice, DisconnectNoticeResponse, 'gracefulDisconnect',
150
- (req: DisconnectNotice, context: ServerCallContext) => this.gracefulDisconnect(req, context))
153
+ (req: DisconnectNotice, context: ServerCallContext) => lockRpcLocal.gracefulDisconnect(req, context))
151
154
  }
152
155
 
153
156
  public garbageCollectConnections(maxConnections: number, lastUsedLimit: number): void {
154
157
  if (this.connections.size <= maxConnections) {
155
158
  return
156
159
  }
157
- const disconnectionCandidates = new SortedContactList<Contact>(peerIdFromPeerDescriptor(this.getOwnPeerDescriptor()), 100000)
160
+ const disconnectionCandidates = new SortedContactList<Contact>(peerIdFromPeerDescriptor(this.getLocalPeerDescriptor()), 100000)
158
161
  this.connections.forEach((connection) => {
159
162
  if (!this.locks.isLocked(connection.peerIdKey) && Date.now() - connection.getLastUsed() > lastUsedLimit) {
160
- logger.trace('disconnecting in timeout interval: ' + keyOrUnknownFromPeerDescriptor(connection.getPeerDescriptor()))
163
+ logger.trace('disconnecting in timeout interval: ' + getNodeIdOrUnknownFromPeerDescriptor(connection.getPeerDescriptor()))
161
164
  disconnectionCandidates.addContact(new Contact(connection.getPeerDescriptor()!))
162
165
  }
163
166
  })
164
167
  const sortedCandidates = disconnectionCandidates.getAllContacts()
165
168
  const targetNum = this.connections.size - maxConnections
166
169
  for (let i = 0; i < sortedCandidates.length && i < targetNum; i++) {
167
- logger.trace('garbageCollecting ' + keyFromPeerDescriptor(sortedCandidates[sortedCandidates.length - 1 - i].getPeerDescriptor()))
170
+ logger.trace('garbageCollecting ' + getNodeIdFromPeerDescriptor(sortedCandidates[sortedCandidates.length - 1 - i].getPeerDescriptor()))
168
171
  this.gracefullyDisconnectAsync(sortedCandidates[sortedCandidates.length - 1 - i].getPeerDescriptor(),
169
172
  DisconnectMode.NORMAL).catch((_e) => { })
170
173
  }
@@ -177,8 +180,9 @@ export class ConnectionManager extends EventEmitter<Events> implements ITranspor
177
180
  this.state = ConnectionManagerState.RUNNING
178
181
  logger.trace(`Starting ConnectionManager...`)
179
182
  await this.connectorFacade.start(
180
- (connection: ManagedConnection) => this.onIncomingConnection(connection),
181
- (peerDescriptor: PeerDescriptor) => this.canConnect(peerDescriptor)
183
+ (connection: ManagedConnection) => this.onNewConnection(connection),
184
+ (peerDescriptor: PeerDescriptor) => this.canConnect(peerDescriptor),
185
+ this
182
186
  )
183
187
  // Garbage collection of connections
184
188
  this.disconnectorIntervalRef = setInterval(() => {
@@ -209,7 +213,7 @@ export class ConnectionManager extends EventEmitter<Events> implements ITranspor
209
213
  } else {
210
214
  logger.trace('handshake of connection not completed, force-closing')
211
215
  const eventReceived = waitForEvent3<ManagedConnectionEvents>(peer, 'disconnected', 2000)
212
- peer.close('OTHER')
216
+ peer.close(true)
213
217
  try {
214
218
  await eventReceived
215
219
  logger.trace('resolving after receiving disconnected event from non-handshaked connection')
@@ -224,10 +228,10 @@ export class ConnectionManager extends EventEmitter<Events> implements ITranspor
224
228
  this.duplicateMessageDetector.clear()
225
229
  this.locks.clear()
226
230
  this.removeAllListeners()
227
- // TODO would it make sense to move this call to WebRtcConnector#stop()?
231
+ // TODO would it make sense to move this call to WebrtcConnector#stop()?
228
232
  // - but note that we should call this only after connections have been closed
229
233
  // (i.e the this.gracefullyDisconnectAsync() calls above)
230
- WEB_RTC_CLEANUP.cleanUp()
234
+ WEBRTC_CLEANUP.cleanUp()
231
235
  }
232
236
 
233
237
  public getNumberOfLocalLockedConnections(): number {
@@ -246,22 +250,20 @@ export class ConnectionManager extends EventEmitter<Events> implements ITranspor
246
250
  if (this.state === ConnectionManagerState.STOPPED && !doNotMindStopped) {
247
251
  return
248
252
  }
249
-
250
253
  const peerDescriptor = message.targetDescriptor!
251
254
  if (this.isConnectionToSelf(peerDescriptor)) {
252
255
  throw new Err.CannotConnectToSelf('Cannot send to self')
253
256
  }
254
- logger.trace(`Sending message to: ${keyFromPeerDescriptor(peerDescriptor)}`)
257
+ logger.trace(`Sending message to: ${getNodeIdFromPeerDescriptor(peerDescriptor)}`)
255
258
  message = {
256
259
  ...message,
257
- targetDescriptor: message.targetDescriptor || peerDescriptor,
258
- sourceDescriptor: message.sourceDescriptor || this.getOwnPeerDescriptor(),
260
+ sourceDescriptor: this.getLocalPeerDescriptor()
259
261
  }
260
262
  const peerIdKey = keyFromPeerDescriptor(peerDescriptor)
261
263
  let connection = this.connections.get(peerIdKey)
262
264
  if (!connection && !doNotConnect) {
263
265
  connection = this.connectorFacade.createConnection(peerDescriptor)
264
- this.onIncomingConnection(connection)
266
+ this.onNewConnection(connection)
265
267
  } else if (!connection) {
266
268
  throw new Err.SendFailed('No connection to target, doNotConnect flag is true')
267
269
  }
@@ -272,14 +274,14 @@ export class ConnectionManager extends EventEmitter<Events> implements ITranspor
272
274
  }
273
275
 
274
276
  private isConnectionToSelf(peerDescriptor: PeerDescriptor): boolean {
275
- return areEqualPeerDescriptors(peerDescriptor, this.getOwnPeerDescriptor()) || this.isOwnWebSocketServer(peerDescriptor)
277
+ return areEqualPeerDescriptors(peerDescriptor, this.getLocalPeerDescriptor()) || this.isOwnWebsocketServer(peerDescriptor)
276
278
  }
277
279
 
278
- private isOwnWebSocketServer(peerDescriptor: PeerDescriptor): boolean {
279
- const ownPeerDescriptor = this.getOwnPeerDescriptor()
280
- if ((peerDescriptor.websocket !== undefined) && (ownPeerDescriptor.websocket !== undefined)) {
281
- return ((peerDescriptor.websocket.port === ownPeerDescriptor.websocket.port)
282
- && (peerDescriptor.websocket.host === ownPeerDescriptor.websocket.host))
280
+ private isOwnWebsocketServer(peerDescriptor: PeerDescriptor): boolean {
281
+ const localPeerDescriptor = this.getLocalPeerDescriptor()
282
+ if ((peerDescriptor.websocket !== undefined) && (localPeerDescriptor.websocket !== undefined)) {
283
+ return ((peerDescriptor.websocket.port === localPeerDescriptor.websocket.port)
284
+ && (peerDescriptor.websocket.host === localPeerDescriptor.websocket.host))
283
285
  } else {
284
286
  return false
285
287
  }
@@ -290,13 +292,8 @@ export class ConnectionManager extends EventEmitter<Events> implements ITranspor
290
292
  return this.connections.get(peerIdKey)
291
293
  }
292
294
 
293
- // TODO remove this method or getOwnPeerDescriptor
294
- public getPeerDescriptor(): PeerDescriptor {
295
- return this.getOwnPeerDescriptor()
296
- }
297
-
298
- private getOwnPeerDescriptor(): PeerDescriptor {
299
- return this.connectorFacade.getOwnPeerDescriptor()!
295
+ public getLocalPeerDescriptor(): PeerDescriptor {
296
+ return this.connectorFacade.getLocalPeerDescriptor()!
300
297
  }
301
298
 
302
299
  public hasConnection(peerDescriptor: PeerDescriptor): boolean {
@@ -326,7 +323,7 @@ export class ConnectionManager extends EventEmitter<Events> implements ITranspor
326
323
  return
327
324
  }
328
325
  if (this.duplicateMessageDetector.isMostLikelyDuplicate(message.messageId)) {
329
- logger.trace('handleMessage filtered duplicate ' + keyFromPeerDescriptor(message.sourceDescriptor!)
326
+ logger.trace('handleMessage filtered duplicate ' + getNodeIdFromPeerDescriptor(message.sourceDescriptor!)
330
327
  + ' ' + message.serviceId + ' ' + message.messageId)
331
328
  return
332
329
  }
@@ -334,7 +331,8 @@ export class ConnectionManager extends EventEmitter<Events> implements ITranspor
334
331
  if (message.serviceId === INTERNAL_SERVICE_ID) {
335
332
  this.rpcCommunicator?.handleMessageFromPeer(message)
336
333
  } else {
337
- logger.trace('emit "message" ' + keyFromPeerDescriptor(message.sourceDescriptor!) + ' ' + message.serviceId + ' ' + message.messageId)
334
+ logger.trace('emit "message" ' + getNodeIdFromPeerDescriptor(message.sourceDescriptor!)
335
+ + ' ' + message.serviceId + ' ' + message.messageId)
338
336
  this.emit('message', message)
339
337
  }
340
338
  }
@@ -361,71 +359,70 @@ export class ConnectionManager extends EventEmitter<Events> implements ITranspor
361
359
  }
362
360
  }
363
361
 
364
- private onConnected = (connection: ManagedConnection) => {
362
+ private onConnected(connection: ManagedConnection) {
365
363
  const peerDescriptor = connection.getPeerDescriptor()!
366
364
  this.emit('connected', peerDescriptor)
367
- logger.trace(keyFromPeerDescriptor(peerDescriptor) + ' onConnected() ' + connection.connectionType)
365
+ logger.trace(getNodeIdFromPeerDescriptor(peerDescriptor) + ' onConnected() ' + connection.connectionType)
368
366
  this.onConnectionCountChange()
369
367
  }
370
368
 
371
- private onDisconnected = (connection: ManagedConnection, disconnectionType: DisconnectionType) => {
372
- logger.trace(keyOrUnknownFromPeerDescriptor(connection.getPeerDescriptor()) + ' onDisconnected() ' + disconnectionType)
369
+ private onDisconnected(connection: ManagedConnection, gracefulLeave: boolean) {
370
+ logger.trace(getNodeIdOrUnknownFromPeerDescriptor(connection.getPeerDescriptor()) + ' onDisconnected() gracefulLeave: ' + gracefulLeave)
373
371
 
374
372
  const peerIdKey = keyFromPeerDescriptor(connection.getPeerDescriptor()!)
375
373
  const storedConnection = this.connections.get(peerIdKey)
376
374
  if (storedConnection && storedConnection.connectionId.equals(connection.connectionId)) {
377
375
  this.locks.clearAllLocks(peerIdKey)
378
376
  this.connections.delete(peerIdKey)
379
- logger.trace(keyOrUnknownFromPeerDescriptor(connection.getPeerDescriptor())
380
- + ' deleted connection in onDisconnected() ' + disconnectionType)
381
- this.emit('disconnected', connection.getPeerDescriptor()!, disconnectionType)
377
+ logger.trace(getNodeIdOrUnknownFromPeerDescriptor(connection.getPeerDescriptor())
378
+ + ' deleted connection in onDisconnected() gracefulLeave: ' + gracefulLeave)
379
+ this.emit('disconnected', connection.getPeerDescriptor()!, gracefulLeave)
382
380
  this.onConnectionCountChange()
383
381
  } else {
384
- logger.trace(keyOrUnknownFromPeerDescriptor(connection.getPeerDescriptor())
382
+ logger.trace(getNodeIdOrUnknownFromPeerDescriptor(connection.getPeerDescriptor())
385
383
  + ' onDisconnected() did nothing, no such connection in connectionManager')
386
384
  if (storedConnection) {
387
- logger.trace(keyOrUnknownFromPeerDescriptor(connection.getPeerDescriptor())
385
+ logger.trace(getNodeIdOrUnknownFromPeerDescriptor(connection.getPeerDescriptor())
388
386
  + ' connectionIds do not match ' + storedConnection.connectionId + ' ' + connection.connectionId)
389
387
  }
390
388
  }
391
389
 
392
390
  }
393
391
 
394
- private onIncomingConnection(connection: ManagedConnection): boolean {
392
+ private onNewConnection(connection: ManagedConnection): boolean {
395
393
  if (this.state === ConnectionManagerState.STOPPED) {
396
394
  return false
397
395
  }
398
- logger.trace('onIncomingConnection()')
396
+ logger.trace('onNewConnection()')
399
397
  connection.offeredAsIncoming = true
400
- if (!this.acceptIncomingConnection(connection)) {
398
+ if (!this.acceptNewConnection(connection)) {
401
399
  return false
402
400
  }
403
401
  connection.on('managedData', this.onData)
404
- connection.on('disconnected', (disconnectionType: DisconnectionType) => {
405
- this.onDisconnected(connection, disconnectionType)
402
+ connection.on('disconnected', (gracefulLeave: boolean) => {
403
+ this.onDisconnected(connection, gracefulLeave)
406
404
  })
407
- this.emit('newConnection', connection)
408
405
  if (connection.isHandshakeCompleted()) {
409
406
  this.onConnected(connection)
410
407
  } else {
411
- connection.once('handshakeCompleted', ()=> {
408
+ connection.once('handshakeCompleted', () => {
412
409
  this.onConnected(connection)
413
410
  })
414
411
  }
415
412
  return true
416
413
  }
417
414
 
418
- private acceptIncomingConnection(newConnection: ManagedConnection): boolean {
419
- logger.trace(keyFromPeerDescriptor(newConnection.getPeerDescriptor()!) + ' acceptIncomingConnection()')
415
+ private acceptNewConnection(newConnection: ManagedConnection): boolean {
416
+ logger.trace(getNodeIdFromPeerDescriptor(newConnection.getPeerDescriptor()!) + ' acceptIncomingConnection()')
420
417
  const newPeerID = peerIdFromPeerDescriptor(newConnection.getPeerDescriptor()!)
421
418
  const peerIdKey = keyFromPeerDescriptor(newConnection.getPeerDescriptor()!)
422
419
  if (this.connections.has(peerIdKey)) {
423
- if (newPeerID.hasSmallerHashThan(peerIdFromPeerDescriptor(this.getOwnPeerDescriptor()))) {
424
- logger.trace(keyOrUnknownFromPeerDescriptor(newConnection.getPeerDescriptor())
420
+ if (newPeerID.hasSmallerHashThan(peerIdFromPeerDescriptor(this.getLocalPeerDescriptor()))) {
421
+ logger.trace(getNodeIdOrUnknownFromPeerDescriptor(newConnection.getPeerDescriptor())
425
422
  + ' acceptIncomingConnection() replace current connection')
426
423
  // replace the current connection
427
424
  const oldConnection = this.connections.get(newPeerID.toKey())!
428
- logger.trace('replaced: ' + keyFromPeerDescriptor(newConnection.getPeerDescriptor()!))
425
+ logger.trace('replaced: ' + getNodeIdFromPeerDescriptor(newConnection.getPeerDescriptor()!))
429
426
  const buffer = oldConnection.stealOutputBuffer()
430
427
 
431
428
  for (const data of buffer) {
@@ -435,65 +432,64 @@ export class ConnectionManager extends EventEmitter<Events> implements ITranspor
435
432
  oldConnection.reportBufferSentByOtherConnection()
436
433
  oldConnection.replacedByOtherConnection = true
437
434
  } else {
438
- newConnection.rejectedAsIncoming = true
439
435
  return false
440
436
  }
441
437
  }
442
438
 
443
- logger.trace(keyFromPeerDescriptor(newConnection.getPeerDescriptor()!) + ' added to connections at acceptIncomingConnection')
439
+ logger.trace(getNodeIdFromPeerDescriptor(newConnection.getPeerDescriptor()!) + ' added to connections at acceptIncomingConnection')
444
440
  this.connections.set(peerIdKey, newConnection)
445
441
 
446
442
  return true
447
443
  }
448
444
 
449
- private async closeConnection(peerDescriptor: PeerDescriptor, disconnectionType: DisconnectionType, reason?: string): Promise<void> {
450
- logger.trace(keyFromPeerDescriptor(peerDescriptor) + ' ' + 'closeConnection() ' + reason)
445
+ private async closeConnection(peerDescriptor: PeerDescriptor, gracefulLeave: boolean, reason?: string): Promise<void> {
446
+ logger.trace(getNodeIdFromPeerDescriptor(peerDescriptor) + ' ' + 'closeConnection() ' + reason)
451
447
  const id = keyFromPeerDescriptor(peerDescriptor)
452
448
  this.locks.clearAllLocks(id)
453
449
  if (this.connections.has(id)) {
454
450
  const connectionToClose = this.connections.get(id)!
455
- await connectionToClose.close(disconnectionType)
451
+ await connectionToClose.close(gracefulLeave)
456
452
 
457
453
  } else {
458
- logger.trace(keyFromPeerDescriptor(peerDescriptor) + ' ' + 'closeConnection() this.connections did not have the id')
459
- this.emit('disconnected', peerDescriptor, 'OTHER')
454
+ logger.trace(getNodeIdFromPeerDescriptor(peerDescriptor) + ' ' + 'closeConnection() this.connections did not have the id')
455
+ this.emit('disconnected', peerDescriptor, false)
460
456
  }
461
457
  }
462
458
 
463
- public lockConnection(targetDescriptor: PeerDescriptor, serviceId: ServiceId): void {
464
- if (this.state === ConnectionManagerState.STOPPED || areEqualPeerDescriptors(targetDescriptor, this.getOwnPeerDescriptor())) {
459
+ public lockConnection(targetDescriptor: PeerDescriptor, lockId: LockID): void {
460
+ if (this.state === ConnectionManagerState.STOPPED || areEqualPeerDescriptors(targetDescriptor, this.getLocalPeerDescriptor())) {
465
461
  return
466
462
  }
467
463
  const peerIdKey = keyFromPeerDescriptor(targetDescriptor)
468
464
  const rpcRemote = new ConnectionLockRpcRemote(
469
- this.getOwnPeerDescriptor(),
465
+ this.getLocalPeerDescriptor(),
470
466
  targetDescriptor,
471
467
  toProtoRpcClient(new ConnectionLockRpcClient(this.rpcCommunicator!.getRpcClientTransport()))
472
468
  )
473
- this.locks.addLocalLocked(peerIdKey, serviceId)
474
- rpcRemote.lockRequest(serviceId)
469
+ this.locks.addLocalLocked(peerIdKey, lockId)
470
+ rpcRemote.lockRequest(lockId)
475
471
  .then((_accepted) => logger.trace('LockRequest successful'))
476
472
  .catch((err) => { logger.debug(err) })
477
473
  }
478
474
 
479
- public unlockConnection(targetDescriptor: PeerDescriptor, serviceId: ServiceId): void {
480
- if (this.state === ConnectionManagerState.STOPPED || areEqualPeerDescriptors(targetDescriptor, this.getOwnPeerDescriptor())) {
475
+ public unlockConnection(targetDescriptor: PeerDescriptor, lockId: LockID): void {
476
+ if (this.state === ConnectionManagerState.STOPPED || areEqualPeerDescriptors(targetDescriptor, this.getLocalPeerDescriptor())) {
481
477
  return
482
478
  }
483
479
  const peerIdKey = keyFromPeerDescriptor(targetDescriptor)
484
- this.locks.removeLocalLocked(peerIdKey, serviceId)
480
+ this.locks.removeLocalLocked(peerIdKey, lockId)
485
481
  const rpcRemote = new ConnectionLockRpcRemote(
486
- this.getOwnPeerDescriptor(),
482
+ this.getLocalPeerDescriptor(),
487
483
  targetDescriptor,
488
484
  toProtoRpcClient(new ConnectionLockRpcClient(this.rpcCommunicator!.getRpcClientTransport()))
489
485
  )
490
486
  if (this.connections.has(peerIdKey)) {
491
- rpcRemote.unlockRequest(serviceId)
487
+ rpcRemote.unlockRequest(lockId)
492
488
  }
493
489
  }
494
490
 
495
491
  public weakLockConnection(targetDescriptor: PeerDescriptor): void {
496
- if (this.state === ConnectionManagerState.STOPPED || areEqualPeerDescriptors(targetDescriptor, this.getOwnPeerDescriptor())) {
492
+ if (this.state === ConnectionManagerState.STOPPED || areEqualPeerDescriptors(targetDescriptor, this.getLocalPeerDescriptor())) {
497
493
  return
498
494
  }
499
495
  const peerIdKey = keyFromPeerDescriptor(targetDescriptor)
@@ -501,7 +497,7 @@ export class ConnectionManager extends EventEmitter<Events> implements ITranspor
501
497
  }
502
498
 
503
499
  public weakUnlockConnection(targetDescriptor: PeerDescriptor): void {
504
- if (this.state === ConnectionManagerState.STOPPED || areEqualPeerDescriptors(targetDescriptor, this.getOwnPeerDescriptor())) {
500
+ if (this.state === ConnectionManagerState.STOPPED || areEqualPeerDescriptors(targetDescriptor, this.getLocalPeerDescriptor())) {
505
501
  return
506
502
  }
507
503
  const peerIdKey = keyFromPeerDescriptor(targetDescriptor)
@@ -526,7 +522,7 @@ export class ConnectionManager extends EventEmitter<Events> implements ITranspor
526
522
  })
527
523
  .catch((e) => {
528
524
  logger.trace('force-closing connection after timeout ' + e)
529
- connection.close('OTHER')
525
+ connection.close(true)
530
526
  })
531
527
  .finally(() => {
532
528
  logger.trace('resolving after receiving disconnected event')
@@ -544,16 +540,16 @@ export class ConnectionManager extends EventEmitter<Events> implements ITranspor
544
540
  }
545
541
 
546
542
  private async doGracefullyDisconnectAsync(targetDescriptor: PeerDescriptor, disconnectMode: DisconnectMode): Promise<void> {
547
- logger.trace(keyFromPeerDescriptor(targetDescriptor) + ' gracefullyDisconnectAsync()')
543
+ logger.trace(getNodeIdFromPeerDescriptor(targetDescriptor) + ' gracefullyDisconnectAsync()')
548
544
  const rpcRemote = new ConnectionLockRpcRemote(
549
- this.getOwnPeerDescriptor(),
545
+ this.getLocalPeerDescriptor(),
550
546
  targetDescriptor,
551
547
  toProtoRpcClient(new ConnectionLockRpcClient(this.rpcCommunicator!.getRpcClientTransport()))
552
548
  )
553
549
  try {
554
550
  await rpcRemote.gracefulDisconnect(disconnectMode)
555
551
  } catch (ex) {
556
- logger.trace(keyFromPeerDescriptor(targetDescriptor) + ' remote.gracefulDisconnect() failed' + ex)
552
+ logger.trace(getNodeIdFromPeerDescriptor(targetDescriptor) + ' remote.gracefulDisconnect() failed' + ex)
557
553
  }
558
554
  }
559
555
 
@@ -563,44 +559,6 @@ export class ConnectionManager extends EventEmitter<Events> implements ITranspor
563
559
  .map((managedConnection: ManagedConnection) => managedConnection.getPeerDescriptor()!)
564
560
  }
565
561
 
566
- // ConnectionLockRpc local RPC method
567
- private async lockRequest(lockRequest: LockRequest, context: ServerCallContext): Promise<LockResponse> {
568
- const senderPeerDescriptor = (context as DhtCallContext).incomingSourceDescriptor!
569
- const remotePeerId = peerIdFromPeerDescriptor(senderPeerDescriptor)
570
- if (areEqualPeerDescriptors(senderPeerDescriptor, this.getOwnPeerDescriptor())) {
571
- const response: LockResponse = {
572
- accepted: false
573
- }
574
- return response
575
- }
576
- this.locks.addRemoteLocked(remotePeerId.toKey(), lockRequest.serviceId)
577
- const response: LockResponse = {
578
- accepted: true
579
- }
580
- return response
581
- }
582
-
583
- // ConnectionLockRpc local RPC method
584
- private async unlockRequest(unlockRequest: UnlockRequest, context: ServerCallContext): Promise<Empty> {
585
- const senderPeerDescriptor = (context as DhtCallContext).incomingSourceDescriptor!
586
- const peerIdKey = keyFromPeerDescriptor(senderPeerDescriptor)
587
- this.locks.removeRemoteLocked(peerIdKey, unlockRequest.serviceId)
588
- return {}
589
- }
590
-
591
- // ConnectionLockRpc local RPC method
592
- private async gracefulDisconnect(disconnectNotice: DisconnectNotice, context: ServerCallContext): Promise<Empty> {
593
- const senderPeerDescriptor = (context as DhtCallContext).incomingSourceDescriptor!
594
- logger.trace(keyOrUnknownFromPeerDescriptor(senderPeerDescriptor) + ' received gracefulDisconnect notice')
595
-
596
- if (disconnectNotice.disconnectMode === DisconnectMode.LEAVING) {
597
- this.closeConnection(senderPeerDescriptor, 'INCOMING_GRACEFUL_LEAVE', 'graceful leave notified')
598
- } else {
599
- this.closeConnection(senderPeerDescriptor, 'INCOMING_GRACEFUL_DISCONNECT', 'graceful disconnect notified')
600
- }
601
- return {}
602
- }
603
-
604
562
  private onConnectionCountChange() {
605
563
  this.metrics.connectionAverageCount.record(this.connections.size)
606
564
  }