@streamr/trackerless-network 0.0.1-tatum.5 → 0.0.1-tatum.7

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 (177) hide show
  1. package/dist/package.json +10 -8
  2. package/dist/src/NetworkNode.js +1 -1
  3. package/dist/src/NetworkNode.js.map +1 -1
  4. package/dist/src/NetworkStack.d.ts +1 -3
  5. package/dist/src/NetworkStack.js +18 -47
  6. package/dist/src/NetworkStack.js.map +1 -1
  7. package/dist/src/identifiers.js +2 -2
  8. package/dist/src/identifiers.js.map +1 -1
  9. package/dist/src/logic/{StreamNodeServer.d.ts → DeliveryRpcLocal.d.ts} +6 -5
  10. package/dist/src/logic/{StreamNodeServer.js → DeliveryRpcLocal.js} +5 -5
  11. package/dist/src/logic/{StreamNodeServer.js.map → DeliveryRpcLocal.js.map} +1 -1
  12. package/dist/src/logic/{RemoteRandomGraphNode.d.ts → DeliveryRpcRemote.d.ts} +2 -2
  13. package/dist/src/logic/{RemoteRandomGraphNode.js → DeliveryRpcRemote.js} +5 -5
  14. package/dist/src/logic/DeliveryRpcRemote.js.map +1 -0
  15. package/dist/src/logic/EntryPointDiscovery.d.ts +35 -0
  16. package/dist/src/logic/EntryPointDiscovery.js +145 -0
  17. package/dist/src/logic/EntryPointDiscovery.js.map +1 -0
  18. package/dist/src/logic/ILayer0.d.ts +3 -6
  19. package/dist/src/logic/ILayer1.d.ts +2 -2
  20. package/dist/src/logic/NodeList.d.ts +10 -10
  21. package/dist/src/logic/NodeList.js +2 -2
  22. package/dist/src/logic/NodeList.js.map +1 -1
  23. package/dist/src/logic/RandomGraphNode.d.ts +8 -12
  24. package/dist/src/logic/RandomGraphNode.js +47 -46
  25. package/dist/src/logic/RandomGraphNode.js.map +1 -1
  26. package/dist/src/logic/StreamrNode.d.ts +9 -11
  27. package/dist/src/logic/StreamrNode.js +72 -75
  28. package/dist/src/logic/StreamrNode.js.map +1 -1
  29. package/dist/src/logic/createRandomGraphNode.d.ts +6 -1
  30. package/dist/src/logic/createRandomGraphNode.js +17 -23
  31. package/dist/src/logic/createRandomGraphNode.js.map +1 -1
  32. package/dist/src/logic/formStreamPartDeliveryServiceId.d.ts +2 -0
  33. package/dist/src/logic/formStreamPartDeliveryServiceId.js +8 -0
  34. package/dist/src/logic/formStreamPartDeliveryServiceId.js.map +1 -0
  35. package/dist/src/logic/inspect/Inspector.d.ts +3 -2
  36. package/dist/src/logic/inspect/Inspector.js +5 -5
  37. package/dist/src/logic/inspect/Inspector.js.map +1 -1
  38. package/dist/src/logic/neighbor-discovery/{HandshakerServer.d.ts → HandshakeRpcLocal.d.ts} +10 -10
  39. package/dist/src/logic/neighbor-discovery/{HandshakerServer.js → HandshakeRpcLocal.js} +13 -13
  40. package/dist/src/logic/neighbor-discovery/HandshakeRpcLocal.js.map +1 -0
  41. package/dist/src/logic/neighbor-discovery/{RemoteHandshaker.d.ts → HandshakeRpcRemote.d.ts} +1 -1
  42. package/dist/src/logic/neighbor-discovery/{RemoteHandshaker.js → HandshakeRpcRemote.js} +8 -7
  43. package/dist/src/logic/neighbor-discovery/HandshakeRpcRemote.js.map +1 -0
  44. package/dist/src/logic/neighbor-discovery/Handshaker.d.ts +8 -7
  45. package/dist/src/logic/neighbor-discovery/Handshaker.js +23 -24
  46. package/dist/src/logic/neighbor-discovery/Handshaker.js.map +1 -1
  47. package/dist/src/logic/neighbor-discovery/NeighborFinder.d.ts +1 -1
  48. package/dist/src/logic/neighbor-discovery/NeighborFinder.js +5 -5
  49. package/dist/src/logic/neighbor-discovery/NeighborFinder.js.map +1 -1
  50. package/dist/src/logic/neighbor-discovery/NeighborUpdateManager.d.ts +3 -2
  51. package/dist/src/logic/neighbor-discovery/NeighborUpdateManager.js +7 -7
  52. package/dist/src/logic/neighbor-discovery/NeighborUpdateManager.js.map +1 -1
  53. package/dist/src/logic/neighbor-discovery/{NeighborUpdateManagerServer.d.ts → NeighborUpdateRpcLocal.d.ts} +6 -6
  54. package/dist/src/logic/neighbor-discovery/{NeighborUpdateManagerServer.js → NeighborUpdateRpcLocal.js} +11 -11
  55. package/dist/src/logic/neighbor-discovery/NeighborUpdateRpcLocal.js.map +1 -0
  56. package/dist/src/logic/neighbor-discovery/{RemoteNeighborUpdateManager.d.ts → NeighborUpdateRpcRemote.d.ts} +1 -1
  57. package/dist/src/logic/neighbor-discovery/{RemoteNeighborUpdateManager.js → NeighborUpdateRpcRemote.js} +5 -5
  58. package/dist/src/logic/neighbor-discovery/NeighborUpdateRpcRemote.js.map +1 -0
  59. package/dist/src/logic/propagation/Propagation.js +2 -2
  60. package/dist/src/logic/propagation/Propagation.js.map +1 -1
  61. package/dist/src/logic/proxy/{ProxyStreamConnectionClient.d.ts → ProxyClient.d.ts} +8 -12
  62. package/dist/src/logic/proxy/{ProxyStreamConnectionClient.js → ProxyClient.js} +28 -29
  63. package/dist/src/logic/proxy/ProxyClient.js.map +1 -0
  64. package/dist/src/logic/proxy/{ProxyStreamConnectionServer.d.ts → ProxyConnectionRpcLocal.d.ts} +5 -7
  65. package/dist/src/logic/proxy/{ProxyStreamConnectionServer.js → ProxyConnectionRpcLocal.js} +6 -12
  66. package/dist/src/logic/proxy/ProxyConnectionRpcLocal.js.map +1 -0
  67. package/dist/src/logic/proxy/{RemoteProxyServer.d.ts → ProxyConnectionRpcRemote.d.ts} +1 -1
  68. package/dist/src/logic/proxy/{RemoteProxyServer.js → ProxyConnectionRpcRemote.js} +4 -4
  69. package/dist/src/logic/proxy/ProxyConnectionRpcRemote.js.map +1 -0
  70. package/dist/src/logic/temporary-connection/{TemporaryConnectionRpcServer.d.ts → TemporaryConnectionRpcLocal.d.ts} +5 -4
  71. package/dist/src/logic/temporary-connection/{TemporaryConnectionRpcServer.js → TemporaryConnectionRpcLocal.js} +6 -6
  72. package/dist/src/logic/temporary-connection/TemporaryConnectionRpcLocal.js.map +1 -0
  73. package/dist/src/logic/temporary-connection/{RemoteTemporaryConnectionRpcServer.d.ts → TemporaryConnectionRpcRemote.d.ts} +1 -1
  74. package/dist/src/logic/temporary-connection/{RemoteTemporaryConnectionRpcServer.js → TemporaryConnectionRpcRemote.js} +4 -4
  75. package/dist/src/logic/temporary-connection/TemporaryConnectionRpcRemote.js.map +1 -0
  76. package/dist/src/proto/packages/dht/protos/DhtRpc.d.ts +0 -4
  77. package/dist/src/proto/packages/dht/protos/DhtRpc.js +1 -2
  78. package/dist/src/proto/packages/dht/protos/DhtRpc.js.map +1 -1
  79. package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.client.d.ts +4 -4
  80. package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.client.js +7 -7
  81. package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.client.js.map +1 -1
  82. package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.d.ts +10 -10
  83. package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.js +7 -7
  84. package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.js.map +1 -1
  85. package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.server.d.ts +2 -2
  86. package/dist/test/benchmark/first-message.js +10 -13
  87. package/dist/test/benchmark/first-message.js.map +1 -1
  88. package/dist/test/utils/utils.d.ts +5 -5
  89. package/dist/test/utils/utils.js +14 -14
  90. package/dist/test/utils/utils.js.map +1 -1
  91. package/package.json +10 -8
  92. package/protos/NetworkRpc.proto +5 -5
  93. package/src/NetworkNode.ts +1 -1
  94. package/src/NetworkStack.ts +20 -62
  95. package/src/identifiers.ts +3 -3
  96. package/src/logic/{StreamNodeServer.ts → DeliveryRpcLocal.ts} +8 -7
  97. package/src/logic/{RemoteRandomGraphNode.ts → DeliveryRpcRemote.ts} +3 -3
  98. package/src/logic/EntryPointDiscovery.ts +181 -0
  99. package/src/logic/ILayer0.ts +3 -6
  100. package/src/logic/ILayer1.ts +2 -5
  101. package/src/logic/NodeList.ts +12 -12
  102. package/src/logic/RandomGraphNode.ts +67 -69
  103. package/src/logic/StreamrNode.ts +78 -90
  104. package/src/logic/createRandomGraphNode.ts +28 -26
  105. package/src/logic/formStreamPartDeliveryServiceId.ts +5 -0
  106. package/src/logic/inspect/Inspector.ts +8 -7
  107. package/src/logic/neighbor-discovery/{HandshakerServer.ts → HandshakeRpcLocal.ts} +20 -20
  108. package/src/logic/neighbor-discovery/{RemoteHandshaker.ts → HandshakeRpcRemote.ts} +6 -5
  109. package/src/logic/neighbor-discovery/Handshaker.ts +38 -38
  110. package/src/logic/neighbor-discovery/NeighborFinder.ts +6 -6
  111. package/src/logic/neighbor-discovery/NeighborUpdateManager.ts +15 -12
  112. package/src/logic/neighbor-discovery/{NeighborUpdateManagerServer.ts → NeighborUpdateRpcLocal.ts} +17 -17
  113. package/src/logic/neighbor-discovery/{RemoteNeighborUpdateManager.ts → NeighborUpdateRpcRemote.ts} +2 -2
  114. package/src/logic/propagation/Propagation.ts +2 -2
  115. package/src/logic/proxy/{ProxyStreamConnectionClient.ts → ProxyClient.ts} +33 -37
  116. package/src/logic/proxy/{ProxyStreamConnectionServer.ts → ProxyConnectionRpcLocal.ts} +10 -19
  117. package/src/logic/proxy/{RemoteProxyServer.ts → ProxyConnectionRpcRemote.ts} +1 -1
  118. package/src/logic/temporary-connection/{TemporaryConnectionRpcServer.ts → TemporaryConnectionRpcLocal.ts} +11 -10
  119. package/src/logic/temporary-connection/{RemoteTemporaryConnectionRpcServer.ts → TemporaryConnectionRpcRemote.ts} +1 -1
  120. package/src/proto/packages/dht/protos/DhtRpc.ts +1 -6
  121. package/src/proto/packages/trackerless-network/protos/NetworkRpc.client.ts +8 -8
  122. package/src/proto/packages/trackerless-network/protos/NetworkRpc.server.ts +2 -2
  123. package/src/proto/packages/trackerless-network/protos/NetworkRpc.ts +14 -14
  124. package/test/benchmark/first-message.ts +10 -13
  125. package/test/end-to-end/inspect.test.ts +12 -12
  126. package/test/end-to-end/proxy-and-full-node.test.ts +13 -14
  127. package/test/end-to-end/proxy-connections.test.ts +10 -12
  128. package/test/end-to-end/proxy-key-exchange.test.ts +12 -13
  129. package/test/end-to-end/random-graph-with-real-connections.test.ts +7 -7
  130. package/test/end-to-end/webrtc-full-node-network.test.ts +8 -8
  131. package/test/end-to-end/websocket-full-node-network.test.ts +8 -10
  132. package/test/integration/{RemoteRandomGraphNode.test.ts → DeliveryRpcRemote.test.ts} +17 -14
  133. package/test/integration/{RemoteHandshaker.test.ts → HandshakeRpcRemote.test.ts} +10 -9
  134. package/test/integration/Handshakes.test.ts +23 -20
  135. package/test/integration/Inspect.test.ts +3 -2
  136. package/test/integration/{RemoteNeighborUpdateManager.test.ts → NeighborUpdateRpcRemote.test.ts} +12 -10
  137. package/test/integration/NetworkNode.test.ts +9 -8
  138. package/test/integration/NetworkRpc.test.ts +5 -7
  139. package/test/integration/NetworkStack.test.ts +13 -15
  140. package/test/integration/Propagation.test.ts +2 -2
  141. package/test/integration/RandomGraphNode-Layer1Node-Latencies.test.ts +10 -8
  142. package/test/integration/RandomGraphNode-Layer1Node.test.ts +17 -17
  143. package/test/integration/StreamrNode.test.ts +5 -3
  144. package/test/integration/joining-streams-on-offline-peers.test.ts +16 -18
  145. package/test/integration/stream-without-default-entrypoints.test.ts +11 -13
  146. package/test/unit/{StreamNodeServer.test.ts → DeliveryRpcLocal.test.ts} +8 -8
  147. package/test/unit/EntrypointDiscovery.test.ts +132 -0
  148. package/test/unit/{HandshakerServer.test.ts → HandshakeRpcLocal.test.ts} +26 -24
  149. package/test/unit/Handshaker.test.ts +10 -8
  150. package/test/unit/Inspector.test.ts +4 -3
  151. package/test/unit/NeighborFinder.test.ts +5 -5
  152. package/test/unit/NodeList.test.ts +22 -13
  153. package/test/unit/{RemoteProxyServer.test.ts → ProxyConnectionRpcRemote.test.ts} +4 -4
  154. package/test/unit/RandomGraphNode.test.ts +12 -11
  155. package/test/unit/StreamMessageTranslator.test.ts +10 -9
  156. package/test/unit/StreamrNode.test.ts +8 -8
  157. package/test/utils/mock/MockLayer0.ts +7 -26
  158. package/test/utils/mock/MockLayer1.ts +6 -13
  159. package/test/utils/mock/MockNeighborFinder.ts +1 -2
  160. package/test/utils/mock/MockNeighborUpdateManager.ts +1 -2
  161. package/test/utils/mock/Transport.ts +2 -2
  162. package/test/utils/utils.ts +13 -13
  163. package/dist/src/logic/RemoteRandomGraphNode.js.map +0 -1
  164. package/dist/src/logic/StreamPartEntryPointDiscovery.d.ts +0 -39
  165. package/dist/src/logic/StreamPartEntryPointDiscovery.js +0 -194
  166. package/dist/src/logic/StreamPartEntryPointDiscovery.js.map +0 -1
  167. package/dist/src/logic/neighbor-discovery/HandshakerServer.js.map +0 -1
  168. package/dist/src/logic/neighbor-discovery/NeighborUpdateManagerServer.js.map +0 -1
  169. package/dist/src/logic/neighbor-discovery/RemoteHandshaker.js.map +0 -1
  170. package/dist/src/logic/neighbor-discovery/RemoteNeighborUpdateManager.js.map +0 -1
  171. package/dist/src/logic/proxy/ProxyStreamConnectionClient.js.map +0 -1
  172. package/dist/src/logic/proxy/ProxyStreamConnectionServer.js.map +0 -1
  173. package/dist/src/logic/proxy/RemoteProxyServer.js.map +0 -1
  174. package/dist/src/logic/temporary-connection/RemoteTemporaryConnectionRpcServer.js.map +0 -1
  175. package/dist/src/logic/temporary-connection/TemporaryConnectionRpcServer.js.map +0 -1
  176. package/src/logic/StreamPartEntryPointDiscovery.ts +0 -240
  177. package/test/unit/StreamPartEntrypointDiscovery.test.ts +0 -164
@@ -20,9 +20,9 @@ import { ProxyDirection, StreamMessage } from '../proto/packages/trackerless-net
20
20
  import { ILayer0 } from './ILayer0'
21
21
  import { ILayer1 } from './ILayer1'
22
22
  import { RandomGraphNode } from './RandomGraphNode'
23
- import { NETWORK_SPLIT_AVOIDANCE_LIMIT, StreamPartEntryPointDiscovery } from './StreamPartEntryPointDiscovery'
23
+ import { NETWORK_SPLIT_AVOIDANCE_LIMIT, EntryPointDiscovery } from './EntryPointDiscovery'
24
24
  import { createRandomGraphNode } from './createRandomGraphNode'
25
- import { ProxyStreamConnectionClient } from './proxy/ProxyStreamConnectionClient'
25
+ import { ProxyClient } from './proxy/ProxyClient'
26
26
 
27
27
  export type StreamPartDelivery = {
28
28
  broadcast: (msg: StreamMessage) => void
@@ -31,9 +31,10 @@ export type StreamPartDelivery = {
31
31
  proxied: false
32
32
  layer1: ILayer1
33
33
  node: RandomGraphNode
34
+ entryPointDiscovery: EntryPointDiscovery
34
35
  } | {
35
36
  proxied: true
36
- client: ProxyStreamConnectionClient
37
+ client: ProxyClient
37
38
  })
38
39
 
39
40
  export interface Events {
@@ -53,8 +54,6 @@ export interface StreamrNodeConfig {
53
54
  metricsContext?: MetricsContext
54
55
  streamPartitionNumOfNeighbors?: number
55
56
  streamPartitionMinPropagationTargets?: number
56
- nodeName?: string
57
- firstConnectionTimeout?: number
58
57
  acceptProxyConnections?: boolean
59
58
  }
60
59
 
@@ -63,12 +62,11 @@ export class StreamrNode extends EventEmitter<Events> {
63
62
  private P2PTransport?: ITransport
64
63
  private connectionLocker?: ConnectionLocker
65
64
  private layer0?: ILayer0
66
- private streamPartEntryPointDiscovery?: StreamPartEntryPointDiscovery
67
65
  private readonly metricsContext: MetricsContext
68
66
  private readonly metrics: Metrics
69
- public config: StreamrNodeConfig
70
- private readonly streamParts: Map<string, StreamPartDelivery>
71
- private readonly knownStreamPartEntryPoints: Map<string, PeerDescriptor[]> = new Map()
67
+ private readonly config: StreamrNodeConfig
68
+ private readonly streamParts: Map<StreamPartID, StreamPartDelivery>
69
+ private readonly knownStreamPartEntryPoints: Map<StreamPartID, PeerDescriptor[]> = new Map()
72
70
  private started = false
73
71
  private destroyed = false
74
72
 
@@ -93,14 +91,6 @@ export class StreamrNode extends EventEmitter<Events> {
93
91
  this.layer0 = startedAndJoinedLayer0
94
92
  this.P2PTransport = transport
95
93
  this.connectionLocker = connectionLocker
96
- this.streamPartEntryPointDiscovery = new StreamPartEntryPointDiscovery({
97
- ownPeerDescriptor: this.getPeerDescriptor(),
98
- streamParts: this.streamParts,
99
- getEntryPointData: (key) => this.layer0!.getDataFromDht(key),
100
- getEntryPointDataViaNode: (key, node) => this.layer0!.findDataViaPeer(key, node),
101
- storeEntryPointData: (key, data) => this.layer0!.storeDataToDht(key, data),
102
- deleteEntryPointData: (key) => this.layer0!.deleteDataFromDht(key)
103
- })
104
94
  cleanUp = () => this.destroy()
105
95
  }
106
96
 
@@ -110,15 +100,13 @@ export class StreamrNode extends EventEmitter<Events> {
110
100
  }
111
101
  logger.trace('Destroying StreamrNode...')
112
102
  this.destroyed = true
113
- this.streamParts.forEach((stream) => stream.stop())
114
- await this.streamPartEntryPointDiscovery!.destroy()
103
+ this.streamParts.forEach((streamPart) => streamPart.stop())
115
104
  this.streamParts.clear()
116
105
  this.removeAllListeners()
117
106
  await this.layer0!.stop()
118
107
  await this.P2PTransport!.stop()
119
108
  this.layer0 = undefined
120
109
  this.P2PTransport = undefined
121
- this.streamPartEntryPointDiscovery = undefined
122
110
  this.connectionLocker = undefined
123
111
  }
124
112
 
@@ -131,93 +119,100 @@ export class StreamrNode extends EventEmitter<Events> {
131
119
  }
132
120
 
133
121
  leaveStreamPart(streamPartId: StreamPartID): void {
134
- const stream = this.streamParts.get(streamPartId)
135
- if (stream) {
136
- stream.stop()
122
+ const streamPart = this.streamParts.get(streamPartId)
123
+ if (streamPart) {
124
+ streamPart.stop()
137
125
  this.streamParts.delete(streamPartId)
138
126
  }
139
- this.streamPartEntryPointDiscovery!.removeSelfAsEntryPoint(streamPartId)
140
127
  }
141
128
 
142
129
  joinStreamPart(streamPartId: StreamPartID): void {
143
130
  logger.debug(`Join stream part ${streamPartId}`)
144
- let stream = this.streamParts.get(streamPartId)
145
- if (stream !== undefined) {
131
+ let streamPart = this.streamParts.get(streamPartId)
132
+ if (streamPart !== undefined) {
146
133
  return
147
134
  }
148
135
  const layer1 = this.createLayer1Node(streamPartId, this.knownStreamPartEntryPoints.get(streamPartId) ?? [])
149
136
  const node = this.createRandomGraphNode(streamPartId, layer1)
150
- stream = {
137
+ const entryPointDiscovery = new EntryPointDiscovery({
138
+ streamPartId,
139
+ ownPeerDescriptor: this.getPeerDescriptor(),
140
+ layer1,
141
+ getEntryPointData: (key) => this.layer0!.getDataFromDht(key),
142
+ storeEntryPointData: (key, data) => this.layer0!.storeDataToDht(key, data),
143
+ deleteEntryPointData: async (key) => {
144
+ if (this.destroyed) {
145
+ return
146
+ }
147
+ return this.layer0!.deleteDataFromDht(key)
148
+ }
149
+ })
150
+ streamPart = {
151
151
  proxied: false,
152
152
  layer1,
153
153
  node,
154
+ entryPointDiscovery,
154
155
  broadcast: (msg: StreamMessage) => node.broadcast(msg),
155
156
  stop: () => {
157
+ entryPointDiscovery.destroy()
156
158
  node.stop()
157
159
  layer1.stop()
158
160
  }
159
161
  }
160
- this.streamParts.set(streamPartId, stream)
162
+ this.streamParts.set(streamPartId, streamPart)
161
163
  node.on('message', (message: StreamMessage) => {
162
164
  this.emit('newMessage', message)
163
165
  })
164
166
  setImmediate(async () => {
165
167
  try {
166
- await this.startLayersAndJoinDht(streamPartId)
168
+ await this.startLayersAndJoinDht(streamPartId, entryPointDiscovery)
167
169
  } catch (err) {
168
- logger.warn(`Failed to join to stream ${streamPartId} with error: ${err}`)
170
+ logger.warn(`Failed to join to stream part ${streamPartId} with error: ${err}`)
169
171
  }
170
172
  })
171
173
  }
172
174
 
173
- private async startLayersAndJoinDht(streamPartId: StreamPartID): Promise<void> {
175
+ private async startLayersAndJoinDht(streamPartId: StreamPartID, entryPointDiscovery: EntryPointDiscovery): Promise<void> {
174
176
  logger.debug(`Start layers and join DHT for stream part ${streamPartId}`)
175
- const stream = this.streamParts.get(streamPartId)
176
- if ((stream === undefined) || stream.proxied) {
177
- // leaveStream has been called (or leaveStream called, and then setProxies called)
177
+ const streamPart = this.streamParts.get(streamPartId)
178
+ if ((streamPart === undefined) || streamPart.proxied) {
179
+ // leaveStreamPart has been called (or leaveStreamPart called, and then setProxies called)
178
180
  return
179
181
  }
180
- await stream.layer1.start()
181
- await stream.node.start()
182
+ await streamPart.layer1.start()
183
+ await streamPart.node.start()
182
184
  let entryPoints = this.knownStreamPartEntryPoints.get(streamPartId) ?? []
183
- const forwardingNode = this.layer0!.isJoinOngoing() ? this.layer0!.getKnownEntryPoints()[0] : undefined
184
- const discoveryResult = await this.streamPartEntryPointDiscovery!.discoverEntryPointsFromDht(
185
- streamPartId,
186
- entryPoints.length,
187
- forwardingNode
188
- )
189
- entryPoints = entryPoints.concat(discoveryResult.discoveredEntryPoints)
190
- await stream.layer1.joinDht(sampleSize(entryPoints, NETWORK_SPLIT_AVOIDANCE_LIMIT))
191
- await this.streamPartEntryPointDiscovery!.storeSelfAsEntryPointIfNecessary(
192
- streamPartId,
193
- discoveryResult.entryPointsFromDht,
185
+ const discoveryResult = await entryPointDiscovery.discoverEntryPointsFromDht(
194
186
  entryPoints.length
195
187
  )
188
+ entryPoints = entryPoints.concat(discoveryResult.discoveredEntryPoints)
189
+ await streamPart.layer1.joinDht(sampleSize(entryPoints, NETWORK_SPLIT_AVOIDANCE_LIMIT))
190
+ if (discoveryResult.entryPointsFromDht) {
191
+ await entryPointDiscovery.storeSelfAsEntryPointIfNecessary(entryPoints.length)
192
+ }
196
193
  }
197
194
 
198
195
  private createLayer1Node = (streamPartId: StreamPartID, entryPoints: PeerDescriptor[]): ILayer1 => {
199
196
  return new DhtNode({
200
- transportLayer: this.layer0!,
197
+ transport: this.layer0!,
201
198
  serviceId: 'layer1::' + streamPartId,
202
199
  peerDescriptor: this.layer0!.getPeerDescriptor(),
203
200
  entryPoints,
204
201
  numberOfNodesPerKBucket: 4,
205
202
  rpcRequestTimeout: 5000,
206
- dhtJoinTimeout: 20000,
207
- nodeName: this.config.nodeName + ':layer1'
203
+ dhtJoinTimeout: 20000
208
204
  })
209
205
  }
210
206
 
211
207
  private createRandomGraphNode = (streamPartId: StreamPartID, layer1: ILayer1) => {
212
208
  return createRandomGraphNode({
213
- randomGraphId: streamPartId,
209
+ streamPartId,
214
210
  P2PTransport: this.P2PTransport!,
215
211
  layer1,
216
212
  connectionLocker: this.connectionLocker!,
217
213
  ownPeerDescriptor: this.layer0!.getPeerDescriptor(),
218
214
  minPropagationTargets: this.config.streamPartitionMinPropagationTargets,
219
215
  numOfTargetNeighbors: this.config.streamPartitionNumOfNeighbors,
220
- name: this.config.nodeName,
221
216
  acceptProxyConnections: this.config.acceptProxyConnections
222
217
  })
223
218
  }
@@ -234,51 +229,44 @@ export class StreamrNode extends EventEmitter<Events> {
234
229
  }
235
230
  const enable = (nodes.length > 0) && ((connectionCount === undefined) || (connectionCount > 0))
236
231
  if (enable) {
237
- let proxyClient: ProxyStreamConnectionClient
232
+ let client: ProxyClient
238
233
  const alreadyProxied = this.isProxiedStreamPart(streamPartId)
239
234
  if (alreadyProxied) {
240
- proxyClient = (this.streamParts.get(streamPartId)! as { client: ProxyStreamConnectionClient }).client
235
+ client = (this.streamParts.get(streamPartId)! as { client: ProxyClient }).client
241
236
  } else {
242
- proxyClient = this.createProxyStream(streamPartId, userId)
243
- await proxyClient.start()
237
+ client = this.createProxyClient(streamPartId)
238
+ this.streamParts.set(streamPartId, {
239
+ proxied: true,
240
+ client,
241
+ broadcast: (msg: StreamMessage) => client.broadcast(msg),
242
+ stop: () => client.stop()
243
+ })
244
+ client.on('message', (message: StreamMessage) => {
245
+ this.emit('newMessage', message)
246
+ })
247
+ await client.start()
244
248
  }
245
- await proxyClient.setProxies(streamPartId, nodes, direction, userId, connectionCount)
249
+ await client.setProxies(nodes, direction, userId, connectionCount)
246
250
  } else {
247
251
  this.streamParts.get(streamPartId)?.stop()
248
252
  this.streamParts.delete(streamPartId)
249
253
  }
250
254
  }
251
255
 
252
- private createProxyStream(streamPartId: StreamPartID, userId: EthereumAddress): ProxyStreamConnectionClient {
253
- const client = this.createProxyStreamConnectionClient(streamPartId, userId)
254
- this.streamParts.set(streamPartId, {
255
- proxied: true,
256
- client,
257
- broadcast: (msg: StreamMessage) => client.broadcast(msg),
258
- stop: () => client.stop()
259
- })
260
- client.on('message', (message: StreamMessage) => {
261
- this.emit('newMessage', message)
262
- })
263
- return client
264
- }
265
-
266
- private createProxyStreamConnectionClient(streamPartId: StreamPartID, userId: EthereumAddress): ProxyStreamConnectionClient {
267
- return new ProxyStreamConnectionClient({
256
+ private createProxyClient(streamPartId: StreamPartID): ProxyClient {
257
+ return new ProxyClient({
268
258
  P2PTransport: this.P2PTransport!,
269
259
  ownPeerDescriptor: this.layer0!.getPeerDescriptor(),
270
260
  streamPartId,
271
261
  connectionLocker: this.connectionLocker!,
272
- minPropagationTargets: this.config.streamPartitionMinPropagationTargets,
273
- nodeName: this.config.nodeName,
274
- userId
262
+ minPropagationTargets: this.config.streamPartitionMinPropagationTargets
275
263
  })
276
264
  }
277
265
 
278
266
  async inspect(peerDescriptor: PeerDescriptor, streamPartId: StreamPartID): Promise<boolean> {
279
- const stream = this.streamParts.get(streamPartId)
280
- if ((stream !== undefined) && !stream.proxied) {
281
- return stream.node.inspect(peerDescriptor)
267
+ const streamPart = this.streamParts.get(streamPartId)
268
+ if ((streamPart !== undefined) && !streamPart.proxied) {
269
+ return streamPart.node.inspect(peerDescriptor)
282
270
  }
283
271
  return false
284
272
  }
@@ -287,18 +275,18 @@ export class StreamrNode extends EventEmitter<Events> {
287
275
  this.knownStreamPartEntryPoints.set(streamPartId, entryPoints)
288
276
  }
289
277
 
290
- isProxiedStreamPart(streamId: string, direction?: ProxyDirection): boolean {
291
- const stream = this.streamParts.get(streamId)
292
- return (stream !== undefined)
293
- && stream.proxied
294
- && ((direction === undefined) || (stream.client.getDirection() === direction))
278
+ isProxiedStreamPart(streamPartId: StreamPartID, direction?: ProxyDirection): boolean {
279
+ const streamPart = this.streamParts.get(streamPartId)
280
+ return (streamPart !== undefined)
281
+ && streamPart.proxied
282
+ && ((direction === undefined) || (streamPart.client.getDirection() === direction))
295
283
  }
296
284
 
297
- getStream(streamPartId: StreamPartID): StreamPartDelivery | undefined {
285
+ getStreamPartDelivery(streamPartId: StreamPartID): StreamPartDelivery | undefined {
298
286
  return this.streamParts.get(streamPartId)
299
287
  }
300
288
 
301
- hasStream(streamPartId: StreamPartID): boolean {
289
+ hasStreamPart(streamPartId: StreamPartID): boolean {
302
290
  return this.streamParts.has(streamPartId)
303
291
  }
304
292
 
@@ -307,13 +295,13 @@ export class StreamrNode extends EventEmitter<Events> {
307
295
  }
308
296
 
309
297
  getNodeId(): NodeID {
310
- return this.layer0!.getNodeId().toKey() as unknown as NodeID
298
+ return getNodeIdFromPeerDescriptor(this.layer0!.getPeerDescriptor())
311
299
  }
312
300
 
313
301
  getNeighbors(streamPartId: StreamPartID): NodeID[] {
314
- const stream = this.streamParts.get(streamPartId)
315
- return (stream !== undefined) && (stream.proxied === false)
316
- ? stream.node.getTargetNeighborIds()
302
+ const streamPart = this.streamParts.get(streamPartId)
303
+ return (streamPart !== undefined) && (streamPart.proxied === false)
304
+ ? streamPart.node.getTargetNeighborIds()
317
305
  : []
318
306
  }
319
307
 
@@ -7,22 +7,29 @@ import { NodeList } from './NodeList'
7
7
  import { Propagation } from './propagation/Propagation'
8
8
  import { StreamMessage } from '../proto/packages/trackerless-network/protos/NetworkRpc'
9
9
  import { MarkOptional } from 'ts-essentials'
10
- import { ProxyStreamConnectionServer } from './proxy/ProxyStreamConnectionServer'
10
+ import { ProxyConnectionRpcLocal } from './proxy/ProxyConnectionRpcLocal'
11
11
  import { Inspector } from './inspect/Inspector'
12
- import { TemporaryConnectionRpcServer } from './temporary-connection/TemporaryConnectionRpcServer'
13
- import { StreamPartIDUtils } from '@streamr/protocol'
12
+ import { TemporaryConnectionRpcLocal } from './temporary-connection/TemporaryConnectionRpcLocal'
14
13
  import { NodeID, getNodeIdFromPeerDescriptor } from '../identifiers'
14
+ import { formStreamPartDeliveryServiceId } from './formStreamPartDeliveryServiceId'
15
15
 
16
16
  type RandomGraphNodeConfig = MarkOptional<StrictRandomGraphNodeConfig,
17
17
  'nearbyNodeView' | 'randomNodeView' | 'targetNeighbors' | 'propagation'
18
- | 'handshaker' | 'neighborFinder' | 'neighborUpdateManager' | 'name' | 'numOfTargetNeighbors'
19
- | 'maxNumberOfContacts' | 'minPropagationTargets' | 'rpcCommunicator' | 'nodeViewSize' | 'acceptProxyConnections'
20
- | 'neighborUpdateInterval' | 'inspector' | 'temporaryConnectionServer'>
18
+ | 'handshaker' | 'neighborFinder' | 'neighborUpdateManager' | 'numOfTargetNeighbors'
19
+ | 'rpcCommunicator' | 'nodeViewSize'
20
+ | 'inspector' | 'temporaryConnectionRpcLocal'> & {
21
+ maxNumberOfContacts?: number
22
+ minPropagationTargets?: number
23
+ acceptProxyConnections?: boolean
24
+ neighborUpdateInterval?: number
25
+ }
21
26
 
22
27
  const createConfigWithDefaults = (config: RandomGraphNodeConfig): StrictRandomGraphNodeConfig => {
23
28
  const ownNodeId = getNodeIdFromPeerDescriptor(config.ownPeerDescriptor)
24
- const rpcCommunicator = config.rpcCommunicator ?? new ListeningRpcCommunicator(`layer2-${config.randomGraphId}`, config.P2PTransport)
25
- const name = config.name ?? ownNodeId
29
+ const rpcCommunicator = config.rpcCommunicator ?? new ListeningRpcCommunicator(
30
+ formStreamPartDeliveryServiceId(config.streamPartId),
31
+ config.P2PTransport
32
+ )
26
33
  const numOfTargetNeighbors = config.numOfTargetNeighbors ?? 4
27
34
  const maxNumberOfContacts = config.maxNumberOfContacts ?? 20
28
35
  const minPropagationTargets = config.minPropagationTargets ?? 2
@@ -32,21 +39,21 @@ const createConfigWithDefaults = (config: RandomGraphNodeConfig): StrictRandomGr
32
39
  const randomNodeView = config.randomNodeView ?? new NodeList(ownNodeId, maxNumberOfContacts)
33
40
  const targetNeighbors = config.targetNeighbors ?? new NodeList(ownNodeId, maxNumberOfContacts)
34
41
 
35
- const temporaryConnectionServer = new TemporaryConnectionRpcServer({
36
- randomGraphId: config.randomGraphId,
42
+ const temporaryConnectionRpcLocal = new TemporaryConnectionRpcLocal({
43
+ streamPartId: config.streamPartId,
37
44
  rpcCommunicator,
38
45
  ownPeerDescriptor: config.ownPeerDescriptor
39
46
  })
40
- const proxyConnectionServer = acceptProxyConnections ? new ProxyStreamConnectionServer({
47
+ const proxyConnectionRpcLocal = acceptProxyConnections ? new ProxyConnectionRpcLocal({
41
48
  ownPeerDescriptor: config.ownPeerDescriptor,
42
- streamPartId: StreamPartIDUtils.parse(config.randomGraphId),
49
+ streamPartId: config.streamPartId,
43
50
  rpcCommunicator
44
51
  }) : undefined
45
52
  const propagation = config.propagation ?? new Propagation({
46
53
  minPropagationTargets,
47
54
  sendToNeighbor: async (neighborId: NodeID, msg: StreamMessage): Promise<void> => {
48
- const remote = targetNeighbors.getNeighborById(neighborId) ?? temporaryConnectionServer.getNodes().getNeighborById(neighborId)
49
- const proxyConnection = proxyConnectionServer?.getConnection(neighborId)
55
+ const remote = targetNeighbors.get(neighborId) ?? temporaryConnectionRpcLocal.getNodes().get(neighborId)
56
+ const proxyConnection = proxyConnectionRpcLocal?.getConnection(neighborId)
50
57
  if (remote) {
51
58
  await remote.sendStreamMessage(msg)
52
59
  } else if (proxyConnection) {
@@ -58,33 +65,33 @@ const createConfigWithDefaults = (config: RandomGraphNodeConfig): StrictRandomGr
58
65
  })
59
66
  const handshaker = config.handshaker ?? new Handshaker({
60
67
  ownPeerDescriptor: config.ownPeerDescriptor,
61
- randomGraphId: config.randomGraphId,
68
+ streamPartId: config.streamPartId,
62
69
  connectionLocker: config.connectionLocker,
63
70
  rpcCommunicator,
64
71
  nearbyNodeView,
65
72
  randomNodeView,
66
73
  targetNeighbors,
67
- N: numOfTargetNeighbors
74
+ maxNeighborCount: numOfTargetNeighbors
68
75
  })
69
76
  const neighborFinder = config.neighborFinder ?? new NeighborFinder({
70
77
  targetNeighbors,
71
78
  nearbyNodeView,
72
79
  doFindNeighbors: (excludedIds) => handshaker.attemptHandshakesOnContacts(excludedIds),
73
- N: numOfTargetNeighbors
80
+ minCount: numOfTargetNeighbors
74
81
  })
75
82
  const neighborUpdateManager = config.neighborUpdateManager ?? new NeighborUpdateManager({
76
83
  targetNeighbors,
77
84
  nearbyNodeView,
78
85
  ownPeerDescriptor: config.ownPeerDescriptor,
79
86
  neighborFinder,
80
- randomGraphId: config.randomGraphId,
87
+ streamPartId: config.streamPartId,
81
88
  rpcCommunicator,
82
89
  neighborUpdateInterval
83
90
  })
84
91
  const inspector = config.inspector ?? new Inspector({
85
92
  ownPeerDescriptor: config.ownPeerDescriptor,
86
93
  rpcCommunicator,
87
- graphId: config.randomGraphId,
94
+ streamPartId: config.streamPartId,
88
95
  connectionLocker: config.connectionLocker
89
96
  })
90
97
  return {
@@ -98,15 +105,10 @@ const createConfigWithDefaults = (config: RandomGraphNodeConfig): StrictRandomGr
98
105
  neighborUpdateManager,
99
106
  propagation,
100
107
  numOfTargetNeighbors,
101
- minPropagationTargets,
102
- maxNumberOfContacts,
103
- name,
104
108
  nodeViewSize: maxNumberOfContacts,
105
- acceptProxyConnections,
106
- proxyConnectionServer,
107
- neighborUpdateInterval,
109
+ proxyConnectionRpcLocal,
108
110
  inspector,
109
- temporaryConnectionServer
111
+ temporaryConnectionRpcLocal
110
112
  }
111
113
  }
112
114
 
@@ -0,0 +1,5 @@
1
+ import { StreamPartID } from '@streamr/protocol'
2
+
3
+ export const formStreamPartDeliveryServiceId = (streamPartId: StreamPartID): string => {
4
+ return `stream-part-delivery-${streamPartId}`
5
+ }
@@ -4,12 +4,13 @@ import { InspectSession, Events as InspectSessionEvents } from './InspectSession
4
4
  import { TemporaryConnectionRpcClient } from '../../proto/packages/trackerless-network/protos/NetworkRpc.client'
5
5
  import { ProtoRpcClient, RpcCommunicator, toProtoRpcClient } from '@streamr/proto-rpc'
6
6
  import { Logger, waitForEvent3 } from '@streamr/utils'
7
- import { RemoteTemporaryConnectionRpcServer } from '../temporary-connection/RemoteTemporaryConnectionRpcServer'
7
+ import { TemporaryConnectionRpcRemote } from '../temporary-connection/TemporaryConnectionRpcRemote'
8
8
  import { NodeID, getNodeIdFromPeerDescriptor } from '../../identifiers'
9
+ import { StreamPartID } from '@streamr/protocol'
9
10
 
10
11
  interface InspectorConfig {
11
12
  ownPeerDescriptor: PeerDescriptor
12
- graphId: string
13
+ streamPartId: StreamPartID
13
14
  rpcCommunicator: RpcCommunicator
14
15
  connectionLocker: ConnectionLocker
15
16
  inspectionTimeout?: number
@@ -29,7 +30,7 @@ const DEFAULT_TIMEOUT = 60 * 1000
29
30
  export class Inspector implements IInspector {
30
31
 
31
32
  private readonly sessions: Map<NodeID, InspectSession> = new Map()
32
- private readonly graphId: string
33
+ private readonly streamPartId: StreamPartID
33
34
  private readonly client: ProtoRpcClient<TemporaryConnectionRpcClient>
34
35
  private readonly ownPeerDescriptor: PeerDescriptor
35
36
  private readonly connectionLocker: ConnectionLocker
@@ -37,7 +38,7 @@ export class Inspector implements IInspector {
37
38
  private readonly openInspectConnection: (peerDescriptor: PeerDescriptor, lockId: string) => Promise<void>
38
39
 
39
40
  constructor(config: InspectorConfig) {
40
- this.graphId = config.graphId
41
+ this.streamPartId = config.streamPartId
41
42
  this.ownPeerDescriptor = config.ownPeerDescriptor
42
43
  this.client = toProtoRpcClient(new TemporaryConnectionRpcClient(config.rpcCommunicator.getRpcClientTransport()))
43
44
  this.connectionLocker = config.connectionLocker
@@ -46,8 +47,8 @@ export class Inspector implements IInspector {
46
47
  }
47
48
 
48
49
  async defaultOpenInspectConnection(peerDescriptor: PeerDescriptor, lockId: string): Promise<void> {
49
- const remoteRandomGraphNode = new RemoteTemporaryConnectionRpcServer(this.ownPeerDescriptor, peerDescriptor, this.graphId, this.client)
50
- await remoteRandomGraphNode.openConnection()
50
+ const rpcRemote = new TemporaryConnectionRpcRemote(this.ownPeerDescriptor, peerDescriptor, this.streamPartId, this.client)
51
+ await rpcRemote.openConnection()
51
52
  this.connectionLocker.lockConnection(peerDescriptor, lockId)
52
53
  }
53
54
 
@@ -56,7 +57,7 @@ export class Inspector implements IInspector {
56
57
  const session = new InspectSession({
57
58
  inspectedNode: nodeId
58
59
  })
59
- const lockId = `inspector-${this.graphId}`
60
+ const lockId = `inspector-${this.streamPartId}`
60
61
  this.sessions.set(nodeId, session)
61
62
  await this.openInspectConnection(peerDescriptor, lockId)
62
63
  let success = false
@@ -4,28 +4,28 @@ import { ServerCallContext } from '@protobuf-ts/runtime-rpc'
4
4
  import { NodeList } from '../NodeList'
5
5
  import { ConnectionLocker, DhtCallContext, PeerDescriptor } from '@streamr/dht'
6
6
  import { IHandshakeRpc } from '../../proto/packages/trackerless-network/protos/NetworkRpc.server'
7
- import { RemoteHandshaker } from './RemoteHandshaker'
8
- import { RemoteRandomGraphNode } from '../RemoteRandomGraphNode'
7
+ import { HandshakeRpcRemote } from './HandshakeRpcRemote'
8
+ import { DeliveryRpcRemote } from '../DeliveryRpcRemote'
9
9
  import { NodeID, getNodeIdFromPeerDescriptor } from '../../identifiers'
10
10
  import { binaryToHex } from '@streamr/utils'
11
+ import { StreamPartID } from '@streamr/protocol'
11
12
 
12
- interface HandshakerServerConfig {
13
- randomGraphId: string
14
- ownPeerDescriptor: PeerDescriptor
13
+ interface HandshakeRpcLocalConfig {
14
+ streamPartId: StreamPartID
15
15
  targetNeighbors: NodeList
16
16
  connectionLocker: ConnectionLocker
17
17
  ongoingHandshakes: Set<NodeID>
18
- N: number
19
- createRemoteHandshaker: (target: PeerDescriptor) => RemoteHandshaker
20
- createRemoteNode: (peerDescriptor: PeerDescriptor) => RemoteRandomGraphNode
18
+ maxNeighborCount: number
19
+ createRpcRemote: (target: PeerDescriptor) => HandshakeRpcRemote
20
+ createDeliveryRpcRemote: (peerDescriptor: PeerDescriptor) => DeliveryRpcRemote
21
21
  handshakeWithInterleaving: (target: PeerDescriptor, senderId: NodeID) => Promise<boolean>
22
22
  }
23
23
 
24
- export class HandshakerServer implements IHandshakeRpc {
24
+ export class HandshakeRpcLocal implements IHandshakeRpc {
25
25
 
26
- private readonly config: HandshakerServerConfig
26
+ private readonly config: HandshakeRpcLocalConfig
27
27
 
28
- constructor(config: HandshakerServerConfig) {
28
+ constructor(config: HandshakeRpcLocalConfig) {
29
29
  this.config = config
30
30
  }
31
31
 
@@ -40,7 +40,7 @@ export class HandshakerServer implements IHandshakeRpc {
40
40
  || this.config.ongoingHandshakes.has(getNodeIdFromPeerDescriptor(senderDescriptor))
41
41
  ) {
42
42
  return this.acceptHandshake(request, senderDescriptor)
43
- } else if (this.config.targetNeighbors.size() + this.config.ongoingHandshakes.size < this.config.N) {
43
+ } else if (this.config.targetNeighbors.size() + this.config.ongoingHandshakes.size < this.config.maxNeighborCount) {
44
44
  return this.acceptHandshake(request, senderDescriptor)
45
45
  } else if (this.config.targetNeighbors.size(getInterleaveSourceIds()) >= 2) {
46
46
  return this.acceptHandshakeWithInterleaving(request, senderDescriptor)
@@ -54,8 +54,8 @@ export class HandshakerServer implements IHandshakeRpc {
54
54
  requestId: request.requestId,
55
55
  accepted: true
56
56
  }
57
- this.config.targetNeighbors.add(this.config.createRemoteNode(requester))
58
- this.config.connectionLocker.lockConnection(requester, this.config.randomGraphId)
57
+ this.config.targetNeighbors.add(this.config.createDeliveryRpcRemote(requester))
58
+ this.config.connectionLocker.lockConnection(requester, this.config.streamPartId)
59
59
  return res
60
60
  }
61
61
 
@@ -77,13 +77,13 @@ export class HandshakerServer implements IHandshakeRpc {
77
77
  const furthest = this.config.targetNeighbors.getFurthest(exclude)
78
78
  const furthestPeerDescriptor = furthest ? furthest.getPeerDescriptor() : undefined
79
79
  if (furthest) {
80
- const remote = this.config.createRemoteHandshaker(furthest.getPeerDescriptor())
80
+ const remote = this.config.createRpcRemote(furthest.getPeerDescriptor())
81
81
  remote.interleaveNotice(requester)
82
82
  this.config.targetNeighbors.remove(furthest.getPeerDescriptor())
83
- this.config.connectionLocker.unlockConnection(furthestPeerDescriptor!, this.config.randomGraphId)
83
+ this.config.connectionLocker.unlockConnection(furthestPeerDescriptor!, this.config.streamPartId)
84
84
  }
85
- this.config.targetNeighbors.add(this.config.createRemoteNode(requester))
86
- this.config.connectionLocker.lockConnection(requester, this.config.randomGraphId)
85
+ this.config.targetNeighbors.add(this.config.createDeliveryRpcRemote(requester))
86
+ this.config.connectionLocker.lockConnection(requester, this.config.streamPartId)
87
87
  return {
88
88
  requestId: request.requestId,
89
89
  accepted: true,
@@ -92,11 +92,11 @@ export class HandshakerServer implements IHandshakeRpc {
92
92
  }
93
93
 
94
94
  async interleaveNotice(message: InterleaveNotice, context: ServerCallContext): Promise<Empty> {
95
- if (message.randomGraphId === this.config.randomGraphId) {
95
+ if (message.streamPartId === this.config.streamPartId) {
96
96
  const senderPeerDescriptor = (context as DhtCallContext).incomingSourceDescriptor!
97
97
  const senderId = getNodeIdFromPeerDescriptor(senderPeerDescriptor)
98
98
  if (this.config.targetNeighbors.hasNodeById(senderId)) {
99
- this.config.connectionLocker.unlockConnection(senderPeerDescriptor, this.config.randomGraphId)
99
+ this.config.connectionLocker.unlockConnection(senderPeerDescriptor, this.config.streamPartId)
100
100
  this.config.targetNeighbors.remove(senderPeerDescriptor)
101
101
  }
102
102
  this.config.handshakeWithInterleaving(message.interleaveTargetDescriptor!, senderId).catch((_e) => {})
@@ -1,5 +1,6 @@
1
- import { PeerDescriptor, Remote, UUID } from '@streamr/dht'
1
+ import { PeerDescriptor, Remote } from '@streamr/dht'
2
2
  import { Logger, hexToBinary } from '@streamr/utils'
3
+ import { v4 } from 'uuid'
3
4
  import { NodeID, getNodeIdFromPeerDescriptor } from '../../identifiers'
4
5
  import { InterleaveNotice, StreamPartHandshakeRequest } from '../../proto/packages/trackerless-network/protos/NetworkRpc'
5
6
  import { IHandshakeRpcClient } from '../../proto/packages/trackerless-network/protos/NetworkRpc.client'
@@ -11,7 +12,7 @@ interface HandshakeResponse {
11
12
  interleaveTargetDescriptor?: PeerDescriptor
12
13
  }
13
14
 
14
- export class RemoteHandshaker extends Remote<IHandshakeRpcClient> {
15
+ export class HandshakeRpcRemote extends Remote<IHandshakeRpcClient> {
15
16
 
16
17
  async handshake(
17
18
  neighborIds: NodeID[],
@@ -19,8 +20,8 @@ export class RemoteHandshaker extends Remote<IHandshakeRpcClient> {
19
20
  interleaveSourceId?: NodeID
20
21
  ): Promise<HandshakeResponse> {
21
22
  const request: StreamPartHandshakeRequest = {
22
- randomGraphId: this.getServiceId(),
23
- requestId: new UUID().toString(),
23
+ streamPartId: this.getServiceId(),
24
+ requestId: v4(),
24
25
  neighborIds: neighborIds.map((id) => hexToBinary(id)),
25
26
  concurrentHandshakeTargetId: (concurrentHandshakeTargetId !== undefined) ? hexToBinary(concurrentHandshakeTargetId) : undefined,
26
27
  interleaveSourceId: (interleaveSourceId !== undefined) ? hexToBinary(interleaveSourceId) : undefined
@@ -41,7 +42,7 @@ export class RemoteHandshaker extends Remote<IHandshakeRpcClient> {
41
42
 
42
43
  interleaveNotice(originatorDescriptor: PeerDescriptor): void {
43
44
  const notification: InterleaveNotice = {
44
- randomGraphId: this.getServiceId(),
45
+ streamPartId: this.getServiceId(),
45
46
  interleaveTargetDescriptor: originatorDescriptor
46
47
  }
47
48
  const options = this.formDhtRpcOptions({