@streamr/trackerless-network 100.0.0-testnet-two.4 → 100.0.0-testnet-three.0

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 (176) hide show
  1. package/dist/src/NetworkNode.d.ts +2 -1
  2. package/dist/src/NetworkNode.js +6 -2
  3. package/dist/src/NetworkNode.js.map +1 -1
  4. package/dist/src/NetworkStack.d.ts +6 -2
  5. package/dist/src/NetworkStack.js +21 -1
  6. package/dist/src/NetworkStack.js.map +1 -1
  7. package/dist/src/exports.d.ts +1 -0
  8. package/dist/src/exports.js +4 -1
  9. package/dist/src/exports.js.map +1 -1
  10. package/dist/src/logic/DeliveryRpcLocal.js +1 -0
  11. package/dist/src/logic/DeliveryRpcLocal.js.map +1 -1
  12. package/dist/src/logic/DuplicateMessageDetector.d.ts +3 -3
  13. package/dist/src/logic/DuplicateMessageDetector.js +10 -6
  14. package/dist/src/logic/DuplicateMessageDetector.js.map +1 -1
  15. package/dist/src/logic/EntryPointDiscovery.js +8 -5
  16. package/dist/src/logic/EntryPointDiscovery.js.map +1 -1
  17. package/dist/src/logic/Layer0Node.d.ts +2 -0
  18. package/dist/src/logic/Layer1Node.d.ts +4 -4
  19. package/dist/src/logic/NodeList.d.ts +6 -8
  20. package/dist/src/logic/NodeList.js +10 -12
  21. package/dist/src/logic/NodeList.js.map +1 -1
  22. package/dist/src/logic/RandomGraphNode.d.ts +5 -5
  23. package/dist/src/logic/RandomGraphNode.js +26 -22
  24. package/dist/src/logic/RandomGraphNode.js.map +1 -1
  25. package/dist/src/logic/StreamrNode.d.ts +3 -2
  26. package/dist/src/logic/StreamrNode.js +25 -6
  27. package/dist/src/logic/StreamrNode.js.map +1 -1
  28. package/dist/src/logic/createRandomGraphNode.d.ts +2 -2
  29. package/dist/src/logic/createRandomGraphNode.js +14 -14
  30. package/dist/src/logic/createRandomGraphNode.js.map +1 -1
  31. package/dist/src/logic/inspect/InspectSession.js +3 -2
  32. package/dist/src/logic/inspect/InspectSession.js.map +1 -1
  33. package/dist/src/logic/inspect/Inspector.d.ts +2 -3
  34. package/dist/src/logic/inspect/Inspector.js +7 -1
  35. package/dist/src/logic/inspect/Inspector.js.map +1 -1
  36. package/dist/src/logic/neighbor-discovery/HandshakeRpcLocal.d.ts +1 -1
  37. package/dist/src/logic/neighbor-discovery/HandshakeRpcLocal.js +18 -17
  38. package/dist/src/logic/neighbor-discovery/HandshakeRpcLocal.js.map +1 -1
  39. package/dist/src/logic/neighbor-discovery/HandshakeRpcRemote.js.map +1 -1
  40. package/dist/src/logic/neighbor-discovery/Handshaker.d.ts +3 -4
  41. package/dist/src/logic/neighbor-discovery/Handshaker.js +29 -27
  42. package/dist/src/logic/neighbor-discovery/Handshaker.js.map +1 -1
  43. package/dist/src/logic/neighbor-discovery/NeighborFinder.d.ts +1 -1
  44. package/dist/src/logic/neighbor-discovery/NeighborFinder.js +4 -2
  45. package/dist/src/logic/neighbor-discovery/NeighborFinder.js.map +1 -1
  46. package/dist/src/logic/neighbor-discovery/NeighborUpdateManager.d.ts +1 -1
  47. package/dist/src/logic/neighbor-discovery/NeighborUpdateManager.js +8 -4
  48. package/dist/src/logic/neighbor-discovery/NeighborUpdateManager.js.map +1 -1
  49. package/dist/src/logic/neighbor-discovery/NeighborUpdateRpcLocal.d.ts +1 -1
  50. package/dist/src/logic/neighbor-discovery/NeighborUpdateRpcLocal.js +5 -4
  51. package/dist/src/logic/neighbor-discovery/NeighborUpdateRpcLocal.js.map +1 -1
  52. package/dist/src/logic/neighbor-discovery/NeighborUpdateRpcRemote.js.map +1 -1
  53. package/dist/src/logic/node-info/NodeInfoClient.d.ts +9 -0
  54. package/dist/src/logic/node-info/NodeInfoClient.js +19 -0
  55. package/dist/src/logic/node-info/NodeInfoClient.js.map +1 -0
  56. package/dist/src/logic/node-info/NodeInfoRpcLocal.d.ts +12 -0
  57. package/dist/src/logic/node-info/NodeInfoRpcLocal.js +29 -0
  58. package/dist/src/logic/node-info/NodeInfoRpcLocal.js.map +1 -0
  59. package/dist/src/logic/node-info/NodeInfoRpcRemote.d.ts +6 -0
  60. package/dist/src/logic/node-info/NodeInfoRpcRemote.js +11 -0
  61. package/dist/src/logic/node-info/NodeInfoRpcRemote.js.map +1 -0
  62. package/dist/src/logic/propagation/FifoMapWithTTL.js +7 -3
  63. package/dist/src/logic/propagation/FifoMapWithTTL.js.map +1 -1
  64. package/dist/src/logic/propagation/Propagation.js +3 -0
  65. package/dist/src/logic/propagation/Propagation.js.map +1 -1
  66. package/dist/src/logic/propagation/PropagationTaskStore.js +1 -0
  67. package/dist/src/logic/propagation/PropagationTaskStore.js.map +1 -1
  68. package/dist/src/logic/protocol-integration/stream-message/GroupKeyRequestTranslator.js +1 -1
  69. package/dist/src/logic/protocol-integration/stream-message/GroupKeyRequestTranslator.js.map +1 -1
  70. package/dist/src/logic/protocol-integration/stream-message/GroupKeyResponseTranslator.js +1 -1
  71. package/dist/src/logic/protocol-integration/stream-message/GroupKeyResponseTranslator.js.map +1 -1
  72. package/dist/src/logic/protocol-integration/stream-message/StreamMessageTranslator.js +43 -15
  73. package/dist/src/logic/protocol-integration/stream-message/StreamMessageTranslator.js.map +1 -1
  74. package/dist/src/logic/protocol-integration/stream-message/oldStreamMessageBinaryUtils.d.ts +3 -0
  75. package/dist/src/logic/protocol-integration/stream-message/oldStreamMessageBinaryUtils.js +14 -0
  76. package/dist/src/logic/protocol-integration/stream-message/oldStreamMessageBinaryUtils.js.map +1 -0
  77. package/dist/src/logic/proxy/ProxyClient.d.ts +1 -1
  78. package/dist/src/logic/proxy/ProxyClient.js +18 -11
  79. package/dist/src/logic/proxy/ProxyClient.js.map +1 -1
  80. package/dist/src/logic/proxy/ProxyConnectionRpcLocal.js +2 -1
  81. package/dist/src/logic/proxy/ProxyConnectionRpcLocal.js.map +1 -1
  82. package/dist/src/logic/proxy/ProxyConnectionRpcRemote.js.map +1 -1
  83. package/dist/src/logic/temporary-connection/TemporaryConnectionRpcLocal.d.ts +2 -2
  84. package/dist/src/logic/temporary-connection/TemporaryConnectionRpcLocal.js +4 -2
  85. package/dist/src/logic/temporary-connection/TemporaryConnectionRpcLocal.js.map +1 -1
  86. package/dist/src/logic/temporary-connection/TemporaryConnectionRpcRemote.js.map +1 -1
  87. package/dist/src/logic/utils.js.map +1 -1
  88. package/dist/src/proto/google/protobuf/any.js.map +1 -1
  89. package/dist/src/proto/google/protobuf/timestamp.js.map +1 -1
  90. package/dist/src/proto/packages/dht/protos/DhtRpc.client.d.ts +4 -5
  91. package/dist/src/proto/packages/dht/protos/DhtRpc.client.js +38 -29
  92. package/dist/src/proto/packages/dht/protos/DhtRpc.client.js.map +1 -1
  93. package/dist/src/proto/packages/dht/protos/DhtRpc.d.ts +22 -12
  94. package/dist/src/proto/packages/dht/protos/DhtRpc.js +11 -16
  95. package/dist/src/proto/packages/dht/protos/DhtRpc.js.map +1 -1
  96. package/dist/src/proto/packages/dht/protos/DhtRpc.server.d.ts +2 -3
  97. package/dist/src/proto/packages/proto-rpc/protos/ProtoRpc.js +1 -1
  98. package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.client.d.ts +27 -0
  99. package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.client.js +43 -17
  100. package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.client.js.map +1 -1
  101. package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.d.ts +106 -5
  102. package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.js +79 -7
  103. package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.js.map +1 -1
  104. package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.server.d.ts +11 -0
  105. package/dist/test/benchmark/first-message.js +7 -5
  106. package/dist/test/benchmark/first-message.js.map +1 -1
  107. package/dist/test/utils/utils.js +2 -1
  108. package/dist/test/utils/utils.js.map +1 -1
  109. package/jest.config.js +3 -38
  110. package/package.json +7 -7
  111. package/protos/NetworkRpc.proto +34 -5
  112. package/src/NetworkNode.ts +5 -1
  113. package/src/NetworkStack.ts +23 -2
  114. package/src/exports.ts +4 -0
  115. package/src/logic/DuplicateMessageDetector.ts +7 -7
  116. package/src/logic/EntryPointDiscovery.ts +3 -3
  117. package/src/logic/Layer0Node.ts +2 -0
  118. package/src/logic/Layer1Node.ts +4 -4
  119. package/src/logic/NodeList.ts +9 -15
  120. package/src/logic/RandomGraphNode.ts +24 -23
  121. package/src/logic/StreamrNode.ts +18 -4
  122. package/src/logic/createRandomGraphNode.ts +17 -17
  123. package/src/logic/inspect/Inspector.ts +3 -4
  124. package/src/logic/neighbor-discovery/HandshakeRpcLocal.ts +18 -18
  125. package/src/logic/neighbor-discovery/Handshaker.ts +31 -32
  126. package/src/logic/neighbor-discovery/NeighborFinder.ts +2 -2
  127. package/src/logic/neighbor-discovery/NeighborUpdateManager.ts +6 -5
  128. package/src/logic/neighbor-discovery/NeighborUpdateRpcLocal.ts +5 -5
  129. package/src/logic/node-info/NodeInfoClient.ts +21 -0
  130. package/src/logic/node-info/NodeInfoRpcLocal.ts +35 -0
  131. package/src/logic/node-info/NodeInfoRpcRemote.ts +11 -0
  132. package/src/logic/protocol-integration/stream-message/GroupKeyRequestTranslator.ts +1 -1
  133. package/src/logic/protocol-integration/stream-message/GroupKeyResponseTranslator.ts +1 -1
  134. package/src/logic/protocol-integration/stream-message/StreamMessageTranslator.ts +56 -27
  135. package/src/logic/protocol-integration/stream-message/oldStreamMessageBinaryUtils.ts +11 -0
  136. package/src/logic/proxy/ProxyClient.ts +10 -10
  137. package/src/logic/temporary-connection/TemporaryConnectionRpcLocal.ts +3 -3
  138. package/src/proto/packages/dht/protos/DhtRpc.client.ts +6 -7
  139. package/src/proto/packages/dht/protos/DhtRpc.server.ts +3 -4
  140. package/src/proto/packages/dht/protos/DhtRpc.ts +32 -20
  141. package/src/proto/packages/proto-rpc/protos/ProtoRpc.ts +1 -1
  142. package/src/proto/packages/trackerless-network/protos/NetworkRpc.client.ts +30 -1
  143. package/src/proto/packages/trackerless-network/protos/NetworkRpc.server.ts +12 -1
  144. package/src/proto/packages/trackerless-network/protos/NetworkRpc.ts +138 -11
  145. package/test/benchmark/first-message.ts +28 -8
  146. package/test/end-to-end/inspect.test.ts +13 -1
  147. package/test/end-to-end/proxy-and-full-node.test.ts +14 -1
  148. package/test/end-to-end/proxy-connections.test.ts +14 -2
  149. package/test/end-to-end/proxy-key-exchange.test.ts +15 -8
  150. package/test/end-to-end/random-graph-with-real-connections.test.ts +21 -21
  151. package/test/end-to-end/webrtc-full-node-network.test.ts +3 -3
  152. package/test/end-to-end/websocket-full-node-network.test.ts +3 -3
  153. package/test/integration/Handshakes.test.ts +8 -8
  154. package/test/integration/NetworkNode.test.ts +19 -1
  155. package/test/integration/NetworkRpc.test.ts +3 -2
  156. package/test/integration/NodeInfoRpc.test.ts +103 -0
  157. package/test/integration/Propagation.test.ts +2 -2
  158. package/test/integration/RandomGraphNode-Layer1Node-Latencies.test.ts +20 -21
  159. package/test/integration/RandomGraphNode-Layer1Node.test.ts +22 -19
  160. package/test/integration/stream-without-default-entrypoints.test.ts +17 -11
  161. package/test/unit/HandshakeRpcLocal.test.ts +15 -15
  162. package/test/unit/Handshaker.test.ts +3 -3
  163. package/test/unit/NeighborFinder.test.ts +5 -5
  164. package/test/unit/NodeList.test.ts +56 -57
  165. package/test/unit/Propagation.test.ts +4 -2
  166. package/test/unit/RandomGraphNode.test.ts +7 -8
  167. package/test/unit/StreamMessageTranslator.test.ts +7 -4
  168. package/test/unit/StreamrNode.test.ts +2 -0
  169. package/test/unit/oldStreamMessageBinaryUtils.test.ts +39 -0
  170. package/test/utils/mock/MockLayer0Node.ts +6 -1
  171. package/test/utils/mock/MockLayer1Node.ts +2 -2
  172. package/test/utils/mock/Transport.ts +1 -1
  173. package/test/utils/utils.ts +3 -1
  174. package/tsconfig.jest.json +3 -3
  175. package/tsconfig.node.json +0 -1
  176. package/dist/package.json +0 -55
@@ -1,7 +1,6 @@
1
- import { ConnectionLocker, DhtAddress, PeerDescriptor, getNodeIdFromPeerDescriptor } from '@streamr/dht'
1
+ import { ConnectionLocker, DhtAddress, PeerDescriptor, ListeningRpcCommunicator, getNodeIdFromPeerDescriptor } from '@streamr/dht'
2
2
  import { NodeList } from '../NodeList'
3
3
  import { DeliveryRpcRemote } from '../DeliveryRpcRemote'
4
- import { RpcCommunicator } from '@streamr/proto-rpc'
5
4
  import {
6
5
  DeliveryRpcClient, HandshakeRpcClient
7
6
  } from '../../proto/packages/trackerless-network/protos/NetworkRpc.client'
@@ -21,10 +20,10 @@ interface HandshakerConfig {
21
20
  localPeerDescriptor: PeerDescriptor
22
21
  streamPartId: StreamPartID
23
22
  connectionLocker: ConnectionLocker
24
- targetNeighbors: NodeList
23
+ neighbors: NodeList
25
24
  nearbyNodeView: NodeList
26
25
  randomNodeView: NodeList
27
- rpcCommunicator: RpcCommunicator
26
+ rpcCommunicator: ListeningRpcCommunicator
28
27
  maxNeighborCount: number
29
28
  rpcRequestTimeout?: number
30
29
  }
@@ -43,7 +42,7 @@ export class Handshaker {
43
42
  this.config = config
44
43
  this.rpcLocal = new HandshakeRpcLocal({
45
44
  streamPartId: this.config.streamPartId,
46
- targetNeighbors: this.config.targetNeighbors,
45
+ neighbors: this.config.neighbors,
47
46
  connectionLocker: this.config.connectionLocker,
48
47
  ongoingHandshakes: this.ongoingHandshakes,
49
48
  ongoingInterleaves: new Set(),
@@ -60,10 +59,10 @@ export class Handshaker {
60
59
 
61
60
  async attemptHandshakesOnContacts(excludedIds: DhtAddress[]): Promise<DhtAddress[]> {
62
61
  // TODO use config option or named constant? or why the value 2?
63
- if (this.config.targetNeighbors.size() + this.ongoingHandshakes.size < this.config.maxNeighborCount - 2) {
62
+ if (this.config.neighbors.size() + this.ongoingHandshakes.size < this.config.maxNeighborCount - 2) {
64
63
  logger.trace(`Attempting parallel handshakes with ${PARALLEL_HANDSHAKE_COUNT} targets`)
65
64
  return this.selectParallelTargetsAndHandshake(excludedIds)
66
- } else if (this.config.targetNeighbors.size() + this.ongoingHandshakes.size < this.config.maxNeighborCount) {
65
+ } else if (this.config.neighbors.size() + this.ongoingHandshakes.size < this.config.maxNeighborCount) {
67
66
  logger.trace(`Attempting handshake with new target`)
68
67
  return this.selectNewTargetAndHandshake(excludedIds)
69
68
  }
@@ -71,21 +70,21 @@ export class Handshaker {
71
70
  }
72
71
 
73
72
  private async selectParallelTargetsAndHandshake(excludedIds: DhtAddress[]): Promise<DhtAddress[]> {
74
- const exclude = excludedIds.concat(this.config.targetNeighbors.getIds())
75
- const targetNeighbors = this.selectParallelTargets(exclude)
76
- targetNeighbors.forEach((contact) => this.ongoingHandshakes.add(getNodeIdFromPeerDescriptor(contact.getPeerDescriptor())))
77
- return this.doParallelHandshakes(targetNeighbors, exclude)
73
+ const exclude = excludedIds.concat(this.config.neighbors.getIds())
74
+ const neighbors = this.selectParallelTargets(exclude)
75
+ neighbors.forEach((contact) => this.ongoingHandshakes.add(getNodeIdFromPeerDescriptor(contact.getPeerDescriptor())))
76
+ return this.doParallelHandshakes(neighbors, exclude)
78
77
  }
79
78
 
80
79
  private selectParallelTargets(excludedIds: DhtAddress[]): HandshakeRpcRemote[] {
81
- const targetNeighbors = this.config.nearbyNodeView.getClosestAndFurthest(excludedIds)
82
- while (targetNeighbors.length < PARALLEL_HANDSHAKE_COUNT && this.config.randomNodeView.size(excludedIds) > 0) {
80
+ const neighbors = this.config.nearbyNodeView.getFirstAndLast(excludedIds)
81
+ while (neighbors.length < PARALLEL_HANDSHAKE_COUNT && this.config.randomNodeView.size(excludedIds) > 0) {
83
82
  const random = this.config.randomNodeView.getRandom(excludedIds)
84
83
  if (random) {
85
- targetNeighbors.push(random)
84
+ neighbors.push(random)
86
85
  }
87
86
  }
88
- return targetNeighbors.map((neighbor) => this.createRpcRemote(neighbor.getPeerDescriptor()))
87
+ return neighbors.map((neighbor) => this.createRpcRemote(neighbor.getPeerDescriptor()))
89
88
  }
90
89
 
91
90
  private async doParallelHandshakes(targets: HandshakeRpcRemote[], excludedIds: DhtAddress[]): Promise<DhtAddress[]> {
@@ -106,28 +105,28 @@ export class Handshaker {
106
105
  }
107
106
 
108
107
  private async selectNewTargetAndHandshake(excludedIds: DhtAddress[]): Promise<DhtAddress[]> {
109
- const exclude = excludedIds.concat(this.config.targetNeighbors.getIds())
110
- const targetNeighbor = this.config.nearbyNodeView.getClosest(exclude) ?? this.config.randomNodeView.getRandom(exclude)
111
- if (targetNeighbor) {
112
- const accepted = await this.handshakeWithTarget(this.createRpcRemote(targetNeighbor.getPeerDescriptor()))
108
+ const exclude = excludedIds.concat(this.config.neighbors.getIds())
109
+ const neighbor = this.config.nearbyNodeView.getFirst(exclude) ?? this.config.randomNodeView.getRandom(exclude)
110
+ if (neighbor) {
111
+ const accepted = await this.handshakeWithTarget(this.createRpcRemote(neighbor.getPeerDescriptor()))
113
112
  if (!accepted) {
114
- excludedIds.push(getNodeIdFromPeerDescriptor(targetNeighbor.getPeerDescriptor()))
113
+ excludedIds.push(getNodeIdFromPeerDescriptor(neighbor.getPeerDescriptor()))
115
114
  }
116
115
  }
117
116
  return excludedIds
118
117
  }
119
118
 
120
- private async handshakeWithTarget(targetNeighbor: HandshakeRpcRemote, concurrentNodeId?: DhtAddress): Promise<boolean> {
121
- const targetNodeId = getNodeIdFromPeerDescriptor(targetNeighbor.getPeerDescriptor())
119
+ private async handshakeWithTarget(neighbor: HandshakeRpcRemote, concurrentNodeId?: DhtAddress): Promise<boolean> {
120
+ const targetNodeId = getNodeIdFromPeerDescriptor(neighbor.getPeerDescriptor())
122
121
  this.ongoingHandshakes.add(targetNodeId)
123
- const result = await targetNeighbor.handshake(
122
+ const result = await neighbor.handshake(
124
123
  this.config.streamPartId,
125
- this.config.targetNeighbors.getIds(),
124
+ this.config.neighbors.getIds(),
126
125
  concurrentNodeId
127
126
  )
128
127
  if (result.accepted) {
129
- this.config.targetNeighbors.add(this.createDeliveryRpcRemote(targetNeighbor.getPeerDescriptor()))
130
- this.config.connectionLocker.lockConnection(targetNeighbor.getPeerDescriptor(), this.config.streamPartId)
128
+ this.config.neighbors.add(this.createDeliveryRpcRemote(neighbor.getPeerDescriptor()))
129
+ this.config.connectionLocker.lockConnection(neighbor.getPeerDescriptor(), this.config.streamPartId)
131
130
  }
132
131
  if (result.interleaveTargetDescriptor) {
133
132
  await this.handshakeWithInterleaving(result.interleaveTargetDescriptor, targetNodeId)
@@ -137,18 +136,18 @@ export class Handshaker {
137
136
  }
138
137
 
139
138
  private async handshakeWithInterleaving(target: PeerDescriptor, interleaveSourceId: DhtAddress): Promise<boolean> {
140
- const targetNeighbor = this.createRpcRemote(target)
141
- const targetNodeId = getNodeIdFromPeerDescriptor(targetNeighbor.getPeerDescriptor())
139
+ const neighbor = this.createRpcRemote(target)
140
+ const targetNodeId = getNodeIdFromPeerDescriptor(neighbor.getPeerDescriptor())
142
141
  this.ongoingHandshakes.add(targetNodeId)
143
- const result = await targetNeighbor.handshake(
142
+ const result = await neighbor.handshake(
144
143
  this.config.streamPartId,
145
- this.config.targetNeighbors.getIds(),
144
+ this.config.neighbors.getIds(),
146
145
  undefined,
147
146
  interleaveSourceId
148
147
  )
149
148
  if (result.accepted) {
150
- this.config.targetNeighbors.add(this.createDeliveryRpcRemote(targetNeighbor.getPeerDescriptor()))
151
- this.config.connectionLocker.lockConnection(targetNeighbor.getPeerDescriptor(), this.config.streamPartId)
149
+ this.config.neighbors.add(this.createDeliveryRpcRemote(neighbor.getPeerDescriptor()))
150
+ this.config.connectionLocker.lockConnection(neighbor.getPeerDescriptor(), this.config.streamPartId)
152
151
  }
153
152
  this.ongoingHandshakes.delete(targetNodeId)
154
153
  return result.accepted
@@ -3,7 +3,7 @@ import { NodeList } from '../NodeList'
3
3
  import { DhtAddress } from '@streamr/dht'
4
4
 
5
5
  interface FindNeighborsSessionConfig {
6
- targetNeighbors: NodeList
6
+ neighbors: NodeList
7
7
  nearbyNodeView: NodeList
8
8
  doFindNeighbors: (excludedNodes: DhtAddress[]) => Promise<DhtAddress[]>
9
9
  minCount: number
@@ -27,7 +27,7 @@ export class NeighborFinder {
27
27
  return
28
28
  }
29
29
  const newExcludes = await this.config.doFindNeighbors(excluded)
30
- if (this.config.targetNeighbors.size() < this.config.minCount && newExcludes.length < this.config.nearbyNodeView.size()) {
30
+ if (this.config.neighbors.size() < this.config.minCount && newExcludes.length < this.config.nearbyNodeView.size()) {
31
31
  // TODO should we catch possible promise rejection?
32
32
  setAbortableTimeout(() => this.findNeighbors(newExcludes), INTERVAL, this.abortController.signal)
33
33
  } else {
@@ -10,7 +10,7 @@ import { StreamPartID } from '@streamr/protocol'
10
10
 
11
11
  interface NeighborUpdateManagerConfig {
12
12
  localPeerDescriptor: PeerDescriptor
13
- targetNeighbors: NodeList
13
+ neighbors: NodeList
14
14
  nearbyNodeView: NodeList
15
15
  neighborFinder: NeighborFinder
16
16
  streamPartId: StreamPartID
@@ -44,12 +44,13 @@ export class NeighborUpdateManager {
44
44
 
45
45
  private async updateNeighborInfo(): Promise<void> {
46
46
  logger.trace(`Updating neighbor info to nodes`)
47
- const neighborDescriptors = this.config.targetNeighbors.getAll().map((neighbor) => neighbor.getPeerDescriptor())
48
- await Promise.allSettled(this.config.targetNeighbors.getAll().map(async (neighbor) => {
47
+ const neighborDescriptors = this.config.neighbors.getAll().map((neighbor) => neighbor.getPeerDescriptor())
48
+ await Promise.allSettled(this.config.neighbors.getAll().map(async (neighbor) => {
49
49
  const res = await this.createRemote(neighbor.getPeerDescriptor()).updateNeighbors(this.config.streamPartId, neighborDescriptors)
50
50
  if (res.removeMe) {
51
- this.config.targetNeighbors.remove(neighbor.getPeerDescriptor())
52
- this.config.neighborFinder.start([getNodeIdFromPeerDescriptor(neighbor.getPeerDescriptor())])
51
+ const nodeId = getNodeIdFromPeerDescriptor(neighbor.getPeerDescriptor())
52
+ this.config.neighbors.remove(nodeId)
53
+ this.config.neighborFinder.start([nodeId])
53
54
  }
54
55
  }))
55
56
  }
@@ -11,7 +11,7 @@ import { StreamPartID } from '@streamr/protocol'
11
11
  interface NeighborUpdateRpcLocalConfig {
12
12
  localPeerDescriptor: PeerDescriptor
13
13
  streamPartId: StreamPartID
14
- targetNeighbors: NodeList
14
+ neighbors: NodeList
15
15
  nearbyNodeView: NodeList
16
16
  neighborFinder: NeighborFinder
17
17
  rpcCommunicator: ListeningRpcCommunicator
@@ -29,11 +29,11 @@ export class NeighborUpdateRpcLocal implements INeighborUpdateRpc {
29
29
  async neighborUpdate(message: NeighborUpdate, context: ServerCallContext): Promise<NeighborUpdate> {
30
30
  const senderPeerDescriptor = (context as DhtCallContext).incomingSourceDescriptor!
31
31
  const senderId = getNodeIdFromPeerDescriptor(senderPeerDescriptor)
32
- if (this.config.targetNeighbors.hasNodeById(senderId)) {
32
+ if (this.config.neighbors.has(senderId)) {
33
33
  const ownNodeId = getNodeIdFromPeerDescriptor(this.config.localPeerDescriptor)
34
34
  const newPeerDescriptors = message.neighborDescriptors.filter((peerDescriptor) => {
35
35
  const nodeId = getNodeIdFromPeerDescriptor(peerDescriptor)
36
- return nodeId !== ownNodeId && !this.config.targetNeighbors.getIds().includes(nodeId)
36
+ return nodeId !== ownNodeId && !this.config.neighbors.getIds().includes(nodeId)
37
37
  })
38
38
  newPeerDescriptors.forEach((peerDescriptor) => this.config.nearbyNodeView.add(
39
39
  new DeliveryRpcRemote(
@@ -46,14 +46,14 @@ export class NeighborUpdateRpcLocal implements INeighborUpdateRpc {
46
46
  this.config.neighborFinder.start()
47
47
  const response: NeighborUpdate = {
48
48
  streamPartId: this.config.streamPartId,
49
- neighborDescriptors: this.config.targetNeighbors.getAll().map((neighbor) => neighbor.getPeerDescriptor()),
49
+ neighborDescriptors: this.config.neighbors.getAll().map((neighbor) => neighbor.getPeerDescriptor()),
50
50
  removeMe: false
51
51
  }
52
52
  return response
53
53
  } else {
54
54
  const response: NeighborUpdate = {
55
55
  streamPartId: this.config.streamPartId,
56
- neighborDescriptors: this.config.targetNeighbors.getAll().map((neighbor) => neighbor.getPeerDescriptor()),
56
+ neighborDescriptors: this.config.neighbors.getAll().map((neighbor) => neighbor.getPeerDescriptor()),
57
57
  removeMe: true
58
58
  }
59
59
  return response
@@ -0,0 +1,21 @@
1
+ import { DhtCallContext, PeerDescriptor } from '@streamr/dht'
2
+ import { NodeInfoResponse } from '../../proto/packages/trackerless-network/protos/NetworkRpc'
3
+ import { NodeInfoRpcRemote } from './NodeInfoRpcRemote'
4
+ import { RpcCommunicator } from '@streamr/proto-rpc'
5
+ import { NodeInfoRpcClient } from '../../proto/packages/trackerless-network/protos/NetworkRpc.client'
6
+
7
+ export class NodeInfoClient {
8
+ private readonly ownPeerDescriptor: PeerDescriptor
9
+ private readonly rpcCommunicator: RpcCommunicator<DhtCallContext>
10
+
11
+ constructor(ownPeerDescriptor: PeerDescriptor, rpcCommunicator: RpcCommunicator<DhtCallContext>) {
12
+ this.ownPeerDescriptor = ownPeerDescriptor
13
+ this.rpcCommunicator = rpcCommunicator
14
+ }
15
+
16
+ async getInfo(node: PeerDescriptor): Promise<NodeInfoResponse> {
17
+ const remote = new NodeInfoRpcRemote(this.ownPeerDescriptor, node, this.rpcCommunicator, NodeInfoRpcClient)
18
+ return remote.getInfo()
19
+ }
20
+
21
+ }
@@ -0,0 +1,35 @@
1
+ import { NodeInfoRequest, NodeInfoResponse } from '../../proto/packages/trackerless-network/protos/NetworkRpc'
2
+ import { INodeInfoRpc } from '../../proto/packages/trackerless-network/protos/NetworkRpc.server'
3
+ import { NetworkStack } from '../../NetworkStack'
4
+ import { ListeningRpcCommunicator } from '@streamr/dht'
5
+
6
+ export const NODE_INFO_RPC_SERVICE_ID = 'system/node-info-rpc'
7
+
8
+ export class NodeInfoRpcLocal implements INodeInfoRpc {
9
+
10
+ private readonly stack: NetworkStack
11
+ private readonly rpcCommunicator: ListeningRpcCommunicator
12
+
13
+ constructor(stack: NetworkStack, rpcCommunicator: ListeningRpcCommunicator) {
14
+ this.stack = stack
15
+ this.rpcCommunicator = rpcCommunicator
16
+ this.registerDefaultServerMethods()
17
+ }
18
+
19
+ private registerDefaultServerMethods(): void {
20
+ this.rpcCommunicator.registerRpcMethod(NodeInfoRequest, NodeInfoResponse, 'getInfo',
21
+ () => this.getInfo())
22
+ }
23
+
24
+ async getInfo(): Promise<NodeInfoResponse> {
25
+ return {
26
+ peerDescriptor: this.stack.getLayer0Node().getLocalPeerDescriptor(),
27
+ controlLayer: {
28
+ connections: this.stack.getLayer0Node().getConnections(),
29
+ neighbors: this.stack.getLayer0Node().getNeighbors()
30
+ },
31
+ streamPartitions: this.stack.getStreamrNode().getNodeInfo()
32
+ }
33
+ }
34
+
35
+ }
@@ -0,0 +1,11 @@
1
+ import { NodeInfoResponse } from '../../proto/packages/trackerless-network/protos/NetworkRpc'
2
+ import { NodeInfoRpcClient } from '../../proto/packages/trackerless-network/protos/NetworkRpc.client'
3
+ import { RpcRemote } from '@streamr/dht'
4
+
5
+ export class NodeInfoRpcRemote extends RpcRemote<NodeInfoRpcClient> {
6
+
7
+ async getInfo(): Promise<NodeInfoResponse> {
8
+ return this.getClient().getInfo({}, this.formDhtRpcOptions())
9
+ }
10
+
11
+ }
@@ -10,7 +10,7 @@ export class GroupKeyRequestTranslator {
10
10
  recipientId: hexToBinary(msg.recipient),
11
11
  requestId: msg.requestId,
12
12
  rsaPublicKey: utf8ToBinary(msg.rsaPublicKey),
13
- groupKeyIds: msg.groupKeyIds
13
+ groupKeyIds: [...msg.groupKeyIds]
14
14
  }
15
15
  return translated
16
16
  }
@@ -10,7 +10,7 @@ export class GroupKeyResponseTranslator {
10
10
  const groupKeys = msg.encryptedGroupKeys.map((groupKey) => {
11
11
  return {
12
12
  data: groupKey.data,
13
- id: groupKey.groupKeyId
13
+ id: groupKey.id
14
14
  }
15
15
  })
16
16
  const translated: GroupKeyResponse = {
@@ -4,11 +4,14 @@ import {
4
4
  StreamMessageType as OldStreamMessageType,
5
5
  MessageRef as OldMessageRef,
6
6
  EncryptedGroupKey as OldEncryptedGroupKey,
7
- GroupKeyRequest as OldGroupKeyRequest,
8
- GroupKeyResponse as OldGroupKeyResponse,
9
7
  StreamID,
10
8
  EncryptionType as OldEncryptionType,
11
- ContentType as OldContentType
9
+ SignatureType as OldSignatureType,
10
+ ContentType as OldContentType,
11
+ serializeGroupKeyRequest as serializeOldGroupKeyRequest,
12
+ serializeGroupKeyResponse as serializeOldGroupKeyResponse,
13
+ deserializeGroupKeyRequest as deserializeOldGroupKeyRequest,
14
+ deserializeGroupKeyResponse as deserializeOldGroupKeyResponse
12
15
  } from '@streamr/protocol'
13
16
  import {
14
17
  ContentType,
@@ -17,11 +20,12 @@ import {
17
20
  GroupKeyRequest,
18
21
  GroupKeyResponse,
19
22
  MessageRef,
23
+ SignatureType,
20
24
  StreamMessage,
21
25
  StreamMessageType,
22
26
  MessageID
23
27
  } from '../../../proto/packages/trackerless-network/protos/NetworkRpc'
24
- import { toEthereumAddress, binaryToHex, binaryToUtf8, hexToBinary, utf8ToBinary } from '@streamr/utils'
28
+ import { toEthereumAddress, binaryToHex, hexToBinary } from '@streamr/utils'
25
29
  import { GroupKeyRequestTranslator } from './GroupKeyRequestTranslator'
26
30
  import { GroupKeyResponseTranslator } from './GroupKeyResponseTranslator'
27
31
 
@@ -39,6 +43,35 @@ const newToOldEncryptionType = (type: EncryptionType): OldEncryptionType => {
39
43
  return OldEncryptionType.NONE
40
44
  }
41
45
 
46
+ const oldToNewContentType = (type: OldContentType): ContentType => {
47
+ if (type === OldContentType.JSON) {
48
+ return ContentType.JSON
49
+ }
50
+ return ContentType.BINARY
51
+ }
52
+
53
+ const newToOldContentType = (type: ContentType): OldContentType => {
54
+ if (type === ContentType.JSON) {
55
+ return OldContentType.JSON
56
+ }
57
+ return OldContentType.BINARY
58
+ }
59
+
60
+ const oldToNewSignatureType = (type: OldSignatureType): SignatureType => {
61
+ if (type === OldSignatureType.LEGACY_SECP256K1) {
62
+ return SignatureType.LEGACY_SECP256K1
63
+ }
64
+ return SignatureType.SECP256K1
65
+ }
66
+
67
+ const newToOldSignatureType = (type: SignatureType): OldSignatureType => {
68
+ if (type === SignatureType.LEGACY_SECP256K1) {
69
+ return OldSignatureType.LEGACY_SECP256K1
70
+ }
71
+ return OldSignatureType.SECP256K1
72
+
73
+ }
74
+
42
75
  // eslint-disable-next-line @typescript-eslint/no-extraneous-class
43
76
  export class StreamMessageTranslator {
44
77
 
@@ -46,24 +79,16 @@ export class StreamMessageTranslator {
46
79
  let content: Uint8Array
47
80
  let messageType: StreamMessageType
48
81
  if (msg.messageType === OldStreamMessageType.MESSAGE) {
49
- content = msg.serializedContent
82
+ content = msg.content
50
83
  messageType = StreamMessageType.MESSAGE
51
84
  } else if (msg.messageType === OldStreamMessageType.GROUP_KEY_REQUEST) {
52
85
  content = GroupKeyRequest.toBinary(
53
- GroupKeyRequestTranslator.toProtobuf(
54
- OldGroupKeyRequest.deserialize(
55
- binaryToUtf8(msg.serializedContent),
56
- OldStreamMessageType.GROUP_KEY_REQUEST) as OldGroupKeyRequest
57
- )
86
+ GroupKeyRequestTranslator.toProtobuf(deserializeOldGroupKeyRequest(msg.content))
58
87
  )
59
88
  messageType = StreamMessageType.GROUP_KEY_REQUEST
60
89
  } else if (msg.messageType === OldStreamMessageType.GROUP_KEY_RESPONSE) {
61
90
  content = GroupKeyResponse.toBinary(
62
- GroupKeyResponseTranslator.toProtobuf(
63
- OldGroupKeyResponse.deserialize(
64
- binaryToUtf8(msg.serializedContent),
65
- OldStreamMessageType.GROUP_KEY_RESPONSE) as OldGroupKeyResponse
66
- )
91
+ GroupKeyResponseTranslator.toProtobuf(deserializeOldGroupKeyResponse(msg.content))
67
92
  )
68
93
  messageType = StreamMessageType.GROUP_KEY_RESPONSE
69
94
  } else {
@@ -78,17 +103,17 @@ export class StreamMessageTranslator {
78
103
  messageChainId: msg.getMsgChainId()
79
104
  }
80
105
  let previousMessageRef: MessageRef | undefined = undefined
81
- if (msg.getPreviousMessageRef()) {
106
+ if (msg.prevMsgRef) {
82
107
  previousMessageRef = {
83
- timestamp: msg.getPreviousMessageRef()!.timestamp,
84
- sequenceNumber: msg.getPreviousMessageRef()!.sequenceNumber,
108
+ timestamp: msg.prevMsgRef.timestamp,
109
+ sequenceNumber: msg.prevMsgRef.sequenceNumber,
85
110
  }
86
111
  }
87
112
  let newGroupKey: GroupKey | undefined = undefined
88
- if (msg.getNewGroupKey()) {
113
+ if (msg.newGroupKey) {
89
114
  newGroupKey = {
90
- id: msg.getNewGroupKey()!.groupKeyId,
91
- data: msg.getNewGroupKey()!.data
115
+ id: msg.newGroupKey.id,
116
+ data: msg.newGroupKey.data
92
117
  }
93
118
  }
94
119
  const translated: StreamMessage = {
@@ -96,11 +121,12 @@ export class StreamMessageTranslator {
96
121
  previousMessageRef,
97
122
  content,
98
123
  messageType,
99
- contentType: ContentType.JSON,
124
+ contentType: oldToNewContentType(msg.contentType),
100
125
  encryptionType: oldToNewEncryptionType(msg.encryptionType),
101
126
  groupKeyId: msg.groupKeyId ?? undefined,
102
127
  newGroupKey,
103
- signature: msg.signature
128
+ signature: msg.signature,
129
+ signatureType: oldToNewSignatureType(msg.signatureType),
104
130
  }
105
131
  return translated
106
132
  }
@@ -115,7 +141,8 @@ export class StreamMessageTranslator {
115
141
  messageType = OldStreamMessageType.GROUP_KEY_REQUEST
116
142
  try {
117
143
  const parsedRequest = GroupKeyRequest.fromBinary(msg.content)
118
- content = utf8ToBinary(GroupKeyRequestTranslator.toClientProtocol(parsedRequest).serialize())
144
+ const oldGroupKeyRequest = GroupKeyRequestTranslator.toClientProtocol(parsedRequest)
145
+ content = serializeOldGroupKeyRequest(oldGroupKeyRequest)
119
146
  } catch (err) {
120
147
  throw new Error(`invalid group key request: ${err}`)
121
148
  }
@@ -123,7 +150,8 @@ export class StreamMessageTranslator {
123
150
  messageType = OldStreamMessageType.GROUP_KEY_RESPONSE
124
151
  try {
125
152
  const parsedResponse = GroupKeyResponse.fromBinary(msg.content)
126
- content = utf8ToBinary(GroupKeyResponseTranslator.toClientProtocol(parsedResponse).serialize())
153
+ const oldGroupKeyResponse = GroupKeyResponseTranslator.toClientProtocol(parsedResponse)
154
+ content = serializeOldGroupKeyResponse(oldGroupKeyResponse)
127
155
  } catch (err) {
128
156
  throw new Error(`invalid group key response: ${err}`)
129
157
  }
@@ -154,11 +182,12 @@ export class StreamMessageTranslator {
154
182
  prevMsgRef,
155
183
  content,
156
184
  messageType,
157
- contentType: OldContentType.JSON,
185
+ contentType: newToOldContentType(msg.contentType),
158
186
  encryptionType: newToOldEncryptionType(msg.encryptionType),
159
187
  groupKeyId: msg.groupKeyId,
160
188
  newGroupKey,
161
- signature: msg.signature
189
+ signature: msg.signature,
190
+ signatureType: newToOldSignatureType(msg.signatureType)
162
191
  })
163
192
  return translated
164
193
  }
@@ -0,0 +1,11 @@
1
+ import { StreamMessage as OldStreamMessage } from '@streamr/protocol'
2
+ import { StreamMessageTranslator } from './StreamMessageTranslator'
3
+ import { StreamMessage } from '../../../proto/packages/trackerless-network/protos/NetworkRpc'
4
+
5
+ export function convertStreamMessageToBytes(oldStreamMessage: OldStreamMessage): Uint8Array {
6
+ return StreamMessage.toBinary(StreamMessageTranslator.toProtobuf(oldStreamMessage))
7
+ }
8
+
9
+ export function convertBytesToStreamMessage(bytes: Uint8Array): OldStreamMessage {
10
+ return StreamMessageTranslator.toClientProtocol(StreamMessage.fromBinary(bytes))
11
+ }
@@ -75,7 +75,7 @@ export class ProxyClient extends EventEmitter<Events> {
75
75
  private definition?: ProxyDefinition
76
76
  private readonly connections: Map<DhtAddress, ProxyDirection> = new Map()
77
77
  private readonly propagation: Propagation
78
- private readonly targetNeighbors: NodeList
78
+ private readonly neighbors: NodeList
79
79
  private readonly abortController: AbortController
80
80
 
81
81
  constructor(config: ProxyClientConfig) {
@@ -83,14 +83,14 @@ export class ProxyClient extends EventEmitter<Events> {
83
83
  this.config = config
84
84
  this.rpcCommunicator = new ListeningRpcCommunicator(formStreamPartDeliveryServiceId(config.streamPartId), config.transport)
85
85
  // TODO use config option or named constant?
86
- this.targetNeighbors = new NodeList(getNodeIdFromPeerDescriptor(this.config.localPeerDescriptor), 1000)
86
+ this.neighbors = new NodeList(getNodeIdFromPeerDescriptor(this.config.localPeerDescriptor), 1000)
87
87
  this.deliveryRpcLocal = new DeliveryRpcLocal({
88
88
  localPeerDescriptor: this.config.localPeerDescriptor,
89
89
  streamPartId: this.config.streamPartId,
90
90
  markAndCheckDuplicate: (msg: MessageID, prev?: MessageRef) => markAndCheckDuplicate(this.duplicateDetectors, msg, prev),
91
91
  broadcast: (message: StreamMessage, previousNode?: DhtAddress) => this.broadcast(message, previousNode),
92
92
  onLeaveNotice: (senderId: DhtAddress) => {
93
- const contact = this.targetNeighbors.get(senderId)
93
+ const contact = this.neighbors.get(senderId)
94
94
  if (contact) {
95
95
  // TODO should we catch possible promise rejection?
96
96
  setImmediate(() => this.onNodeDisconnected(contact.getPeerDescriptor()))
@@ -103,7 +103,7 @@ export class ProxyClient extends EventEmitter<Events> {
103
103
  // TODO use config option or named constant?
104
104
  minPropagationTargets: config.minPropagationTargets ?? 2,
105
105
  sendToNeighbor: async (neighborId: DhtAddress, msg: StreamMessage): Promise<void> => {
106
- const remote = this.targetNeighbors.get(neighborId)
106
+ const remote = this.neighbors.get(neighborId)
107
107
  if (remote) {
108
108
  await remote.sendStreamMessage(msg)
109
109
  } else {
@@ -190,7 +190,7 @@ export class ProxyClient extends EventEmitter<Events> {
190
190
  this.rpcCommunicator,
191
191
  DeliveryRpcClient
192
192
  )
193
- this.targetNeighbors.add(remote)
193
+ this.neighbors.add(remote)
194
194
  this.propagation.onNeighborJoined(nodeId)
195
195
  logger.info('Open proxy connection', {
196
196
  nodeId,
@@ -214,7 +214,7 @@ export class ProxyClient extends EventEmitter<Events> {
214
214
  logger.info('Close proxy connection', {
215
215
  nodeId
216
216
  })
217
- const server = this.targetNeighbors.get(nodeId)
217
+ const server = this.neighbors.get(nodeId)
218
218
  server?.leaveStreamPartNotice(this.config.streamPartId, false)
219
219
  this.removeConnection(nodeId)
220
220
  }
@@ -222,7 +222,7 @@ export class ProxyClient extends EventEmitter<Events> {
222
222
 
223
223
  private removeConnection(nodeId: DhtAddress): void {
224
224
  this.connections.delete(nodeId)
225
- this.targetNeighbors.removeById(nodeId)
225
+ this.neighbors.remove(nodeId)
226
226
  }
227
227
 
228
228
  broadcast(msg: StreamMessage, previousNode?: DhtAddress): void {
@@ -230,7 +230,7 @@ export class ProxyClient extends EventEmitter<Events> {
230
230
  markAndCheckDuplicate(this.duplicateDetectors, msg.messageId!, msg.previousMessageRef)
231
231
  }
232
232
  this.emit('message', msg)
233
- this.propagation.feedUnseenMessage(msg, this.targetNeighbors.getIds(), previousNode ?? null)
233
+ this.propagation.feedUnseenMessage(msg, this.neighbors.getIds(), previousNode ?? null)
234
234
  }
235
235
 
236
236
  hasConnection(nodeId: DhtAddress, direction: ProxyDirection): boolean {
@@ -262,11 +262,11 @@ export class ProxyClient extends EventEmitter<Events> {
262
262
  }
263
263
 
264
264
  stop(): void {
265
- this.targetNeighbors.getAll().forEach((remote) => {
265
+ this.neighbors.getAll().forEach((remote) => {
266
266
  this.config.connectionLocker.unlockConnection(remote.getPeerDescriptor(), SERVICE_ID)
267
267
  remote.leaveStreamPartNotice(this.config.streamPartId, false)
268
268
  })
269
- this.targetNeighbors.stop()
269
+ this.neighbors.stop()
270
270
  this.rpcCommunicator.destroy()
271
271
  this.connections.clear()
272
272
  this.abortController.abort()
@@ -1,7 +1,7 @@
1
1
  import { ServerCallContext } from '@protobuf-ts/runtime-rpc'
2
2
  import { TemporaryConnectionRequest, TemporaryConnectionResponse } from '../../proto/packages/trackerless-network/protos/NetworkRpc'
3
3
  import { ITemporaryConnectionRpc } from '../../proto/packages/trackerless-network/protos/NetworkRpc.server'
4
- import { DhtCallContext, ListeningRpcCommunicator, getNodeIdFromPeerDescriptor } from '@streamr/dht'
4
+ import { DhtAddress, DhtCallContext, ListeningRpcCommunicator, getNodeIdFromPeerDescriptor } from '@streamr/dht'
5
5
  import { DeliveryRpcClient } from '../../proto/packages/trackerless-network/protos/NetworkRpc.client'
6
6
  import { NodeList } from '../NodeList'
7
7
  import { DeliveryRpcRemote } from '../DeliveryRpcRemote'
@@ -27,8 +27,8 @@ export class TemporaryConnectionRpcLocal implements ITemporaryConnectionRpc {
27
27
  return this.temporaryNodes
28
28
  }
29
29
 
30
- removeNode(peerDescriptor: PeerDescriptor): void {
31
- this.temporaryNodes.remove(peerDescriptor)
30
+ removeNode(nodeId: DhtAddress): void {
31
+ this.temporaryNodes.remove(nodeId)
32
32
  }
33
33
 
34
34
  async openConnection(
@@ -1,4 +1,4 @@
1
- // @generated by protobuf-ts 2.9.1 with parameter server_generic,generate_dependencies,long_type_number
1
+ // @generated by protobuf-ts 2.9.3 with parameter server_generic,generate_dependencies,long_type_number
2
2
  // @generated from protobuf file "packages/dht/protos/DhtRpc.proto" (package "dht", syntax proto3)
3
3
  // tslint:disable
4
4
  import { ExternalApiRpc } from "./DhtRpc";
@@ -7,7 +7,6 @@ import type { ExternalStoreDataRequest } from "./DhtRpc";
7
7
  import type { ExternalFindDataResponse } from "./DhtRpc";
8
8
  import type { ExternalFindDataRequest } from "./DhtRpc";
9
9
  import { ConnectionLockRpc } from "./DhtRpc";
10
- import type { DisconnectNoticeResponse } from "./DhtRpc";
11
10
  import type { DisconnectNotice } from "./DhtRpc";
12
11
  import type { UnlockRequest } from "./DhtRpc";
13
12
  import type { LockResponse } from "./DhtRpc";
@@ -313,9 +312,9 @@ export interface IConnectionLockRpcClient {
313
312
  */
314
313
  unlockRequest(input: UnlockRequest, options?: RpcOptions): UnaryCall<UnlockRequest, Empty>;
315
314
  /**
316
- * @generated from protobuf rpc: gracefulDisconnect(dht.DisconnectNotice) returns (dht.DisconnectNoticeResponse);
315
+ * @generated from protobuf rpc: gracefulDisconnect(dht.DisconnectNotice) returns (google.protobuf.Empty);
317
316
  */
318
- gracefulDisconnect(input: DisconnectNotice, options?: RpcOptions): UnaryCall<DisconnectNotice, DisconnectNoticeResponse>;
317
+ gracefulDisconnect(input: DisconnectNotice, options?: RpcOptions): UnaryCall<DisconnectNotice, Empty>;
319
318
  }
320
319
  /**
321
320
  * @generated from protobuf service dht.ConnectionLockRpc
@@ -341,11 +340,11 @@ export class ConnectionLockRpcClient implements IConnectionLockRpcClient, Servic
341
340
  return stackIntercept<UnlockRequest, Empty>("unary", this._transport, method, opt, input);
342
341
  }
343
342
  /**
344
- * @generated from protobuf rpc: gracefulDisconnect(dht.DisconnectNotice) returns (dht.DisconnectNoticeResponse);
343
+ * @generated from protobuf rpc: gracefulDisconnect(dht.DisconnectNotice) returns (google.protobuf.Empty);
345
344
  */
346
- gracefulDisconnect(input: DisconnectNotice, options?: RpcOptions): UnaryCall<DisconnectNotice, DisconnectNoticeResponse> {
345
+ gracefulDisconnect(input: DisconnectNotice, options?: RpcOptions): UnaryCall<DisconnectNotice, Empty> {
347
346
  const method = this.methods[2], opt = this._transport.mergeOptions(options);
348
- return stackIntercept<DisconnectNotice, DisconnectNoticeResponse>("unary", this._transport, method, opt, input);
347
+ return stackIntercept<DisconnectNotice, Empty>("unary", this._transport, method, opt, input);
349
348
  }
350
349
  }
351
350
  /**