@streamr/trackerless-network 0.0.1-tatum.6 → 0.0.1-tatum.8

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 (186) hide show
  1. package/dist/package.json +10 -8
  2. package/dist/src/NetworkNode.js +2 -2
  3. package/dist/src/NetworkNode.js.map +1 -1
  4. package/dist/src/NetworkStack.d.ts +5 -6
  5. package/dist/src/NetworkStack.js +27 -56
  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/{StreamPartEntryPointDiscovery.d.ts → EntryPointDiscovery.d.ts} +10 -12
  16. package/dist/src/logic/{StreamPartEntryPointDiscovery.js → EntryPointDiscovery.js} +18 -40
  17. package/dist/src/logic/EntryPointDiscovery.js.map +1 -0
  18. package/dist/src/logic/Layer0Node.d.ts +14 -0
  19. package/dist/src/logic/{ILayer1.js → Layer0Node.js} +1 -1
  20. package/dist/src/logic/Layer0Node.js.map +1 -0
  21. package/dist/src/logic/{ILayer1.d.ts → Layer1Node.d.ts} +5 -5
  22. package/dist/src/logic/{ILayer0.js → Layer1Node.js} +1 -1
  23. package/dist/src/logic/Layer1Node.js.map +1 -0
  24. package/dist/src/logic/NodeList.d.ts +10 -10
  25. package/dist/src/logic/NodeList.js.map +1 -1
  26. package/dist/src/logic/RandomGraphNode.d.ts +11 -15
  27. package/dist/src/logic/RandomGraphNode.js +46 -45
  28. package/dist/src/logic/RandomGraphNode.js.map +1 -1
  29. package/dist/src/logic/StreamrNode.d.ts +15 -18
  30. package/dist/src/logic/StreamrNode.js +78 -87
  31. package/dist/src/logic/StreamrNode.js.map +1 -1
  32. package/dist/src/logic/createRandomGraphNode.d.ts +6 -1
  33. package/dist/src/logic/createRandomGraphNode.js +17 -23
  34. package/dist/src/logic/createRandomGraphNode.js.map +1 -1
  35. package/dist/src/logic/formStreamPartDeliveryServiceId.d.ts +2 -0
  36. package/dist/src/logic/formStreamPartDeliveryServiceId.js +8 -0
  37. package/dist/src/logic/formStreamPartDeliveryServiceId.js.map +1 -0
  38. package/dist/src/logic/inspect/Inspector.d.ts +3 -2
  39. package/dist/src/logic/inspect/Inspector.js +5 -5
  40. package/dist/src/logic/inspect/Inspector.js.map +1 -1
  41. package/dist/src/logic/neighbor-discovery/{HandshakerServer.d.ts → HandshakeRpcLocal.d.ts} +10 -10
  42. package/dist/src/logic/neighbor-discovery/{HandshakerServer.js → HandshakeRpcLocal.js} +13 -13
  43. package/dist/src/logic/neighbor-discovery/HandshakeRpcLocal.js.map +1 -0
  44. package/dist/src/logic/neighbor-discovery/{RemoteHandshaker.d.ts → HandshakeRpcRemote.d.ts} +1 -1
  45. package/dist/src/logic/neighbor-discovery/{RemoteHandshaker.js → HandshakeRpcRemote.js} +8 -7
  46. package/dist/src/logic/neighbor-discovery/HandshakeRpcRemote.js.map +1 -0
  47. package/dist/src/logic/neighbor-discovery/Handshaker.d.ts +8 -7
  48. package/dist/src/logic/neighbor-discovery/Handshaker.js +23 -24
  49. package/dist/src/logic/neighbor-discovery/Handshaker.js.map +1 -1
  50. package/dist/src/logic/neighbor-discovery/NeighborFinder.d.ts +1 -1
  51. package/dist/src/logic/neighbor-discovery/NeighborFinder.js +1 -1
  52. package/dist/src/logic/neighbor-discovery/NeighborFinder.js.map +1 -1
  53. package/dist/src/logic/neighbor-discovery/NeighborUpdateManager.d.ts +3 -2
  54. package/dist/src/logic/neighbor-discovery/NeighborUpdateManager.js +5 -5
  55. package/dist/src/logic/neighbor-discovery/NeighborUpdateManager.js.map +1 -1
  56. package/dist/src/logic/neighbor-discovery/{NeighborUpdateManagerServer.d.ts → NeighborUpdateRpcLocal.d.ts} +6 -6
  57. package/dist/src/logic/neighbor-discovery/{NeighborUpdateManagerServer.js → NeighborUpdateRpcLocal.js} +9 -9
  58. package/dist/src/logic/neighbor-discovery/NeighborUpdateRpcLocal.js.map +1 -0
  59. package/dist/src/logic/neighbor-discovery/{RemoteNeighborUpdateManager.d.ts → NeighborUpdateRpcRemote.d.ts} +1 -1
  60. package/dist/src/logic/neighbor-discovery/{RemoteNeighborUpdateManager.js → NeighborUpdateRpcRemote.js} +5 -5
  61. package/dist/src/logic/neighbor-discovery/NeighborUpdateRpcRemote.js.map +1 -0
  62. package/dist/src/logic/propagation/Propagation.js +2 -2
  63. package/dist/src/logic/propagation/Propagation.js.map +1 -1
  64. package/dist/src/logic/proxy/{ProxyStreamConnectionClient.d.ts → ProxyClient.d.ts} +7 -10
  65. package/dist/src/logic/proxy/{ProxyStreamConnectionClient.js → ProxyClient.js} +24 -22
  66. package/dist/src/logic/proxy/ProxyClient.js.map +1 -0
  67. package/dist/src/logic/proxy/{ProxyStreamConnectionServer.d.ts → ProxyConnectionRpcLocal.d.ts} +5 -5
  68. package/dist/src/logic/proxy/{ProxyStreamConnectionServer.js → ProxyConnectionRpcLocal.js} +6 -6
  69. package/dist/src/logic/proxy/ProxyConnectionRpcLocal.js.map +1 -0
  70. package/dist/src/logic/proxy/{RemoteProxyServer.d.ts → ProxyConnectionRpcRemote.d.ts} +1 -1
  71. package/dist/src/logic/proxy/{RemoteProxyServer.js → ProxyConnectionRpcRemote.js} +4 -4
  72. package/dist/src/logic/proxy/ProxyConnectionRpcRemote.js.map +1 -0
  73. package/dist/src/logic/temporary-connection/{TemporaryConnectionRpcServer.d.ts → TemporaryConnectionRpcLocal.d.ts} +5 -4
  74. package/dist/src/logic/temporary-connection/{TemporaryConnectionRpcServer.js → TemporaryConnectionRpcLocal.js} +6 -6
  75. package/dist/src/logic/temporary-connection/TemporaryConnectionRpcLocal.js.map +1 -0
  76. package/dist/src/logic/temporary-connection/{RemoteTemporaryConnectionRpcServer.d.ts → TemporaryConnectionRpcRemote.d.ts} +1 -1
  77. package/dist/src/logic/temporary-connection/{RemoteTemporaryConnectionRpcServer.js → TemporaryConnectionRpcRemote.js} +4 -4
  78. package/dist/src/logic/temporary-connection/TemporaryConnectionRpcRemote.js.map +1 -0
  79. package/dist/src/proto/packages/dht/protos/DhtRpc.client.d.ts +10 -0
  80. package/dist/src/proto/packages/dht/protos/DhtRpc.client.js +7 -0
  81. package/dist/src/proto/packages/dht/protos/DhtRpc.client.js.map +1 -1
  82. package/dist/src/proto/packages/dht/protos/DhtRpc.d.ts +54 -118
  83. package/dist/src/proto/packages/dht/protos/DhtRpc.js +50 -49
  84. package/dist/src/proto/packages/dht/protos/DhtRpc.js.map +1 -1
  85. package/dist/src/proto/packages/dht/protos/DhtRpc.server.d.ts +6 -0
  86. package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.client.d.ts +4 -4
  87. package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.client.js +7 -7
  88. package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.client.js.map +1 -1
  89. package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.d.ts +10 -10
  90. package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.js +7 -7
  91. package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.js.map +1 -1
  92. package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.server.d.ts +2 -2
  93. package/dist/test/benchmark/first-message.js +16 -17
  94. package/dist/test/benchmark/first-message.js.map +1 -1
  95. package/dist/test/utils/utils.d.ts +7 -6
  96. package/dist/test/utils/utils.js +18 -17
  97. package/dist/test/utils/utils.js.map +1 -1
  98. package/package.json +10 -8
  99. package/protos/NetworkRpc.proto +5 -5
  100. package/src/NetworkNode.ts +2 -2
  101. package/src/NetworkStack.ts +31 -72
  102. package/src/identifiers.ts +3 -3
  103. package/src/logic/{StreamNodeServer.ts → DeliveryRpcLocal.ts} +8 -7
  104. package/src/logic/{RemoteRandomGraphNode.ts → DeliveryRpcRemote.ts} +3 -3
  105. package/src/logic/{StreamPartEntryPointDiscovery.ts → EntryPointDiscovery.ts} +24 -48
  106. package/src/logic/Layer0Node.ts +15 -0
  107. package/src/logic/{ILayer1.ts → Layer1Node.ts} +5 -5
  108. package/src/logic/NodeList.ts +12 -12
  109. package/src/logic/RandomGraphNode.ts +73 -74
  110. package/src/logic/StreamrNode.ts +90 -103
  111. package/src/logic/createRandomGraphNode.ts +28 -26
  112. package/src/logic/formStreamPartDeliveryServiceId.ts +5 -0
  113. package/src/logic/inspect/Inspector.ts +8 -7
  114. package/src/logic/neighbor-discovery/{HandshakerServer.ts → HandshakeRpcLocal.ts} +20 -20
  115. package/src/logic/neighbor-discovery/{RemoteHandshaker.ts → HandshakeRpcRemote.ts} +6 -5
  116. package/src/logic/neighbor-discovery/Handshaker.ts +38 -38
  117. package/src/logic/neighbor-discovery/NeighborFinder.ts +2 -2
  118. package/src/logic/neighbor-discovery/NeighborUpdateManager.ts +13 -10
  119. package/src/logic/neighbor-discovery/{NeighborUpdateManagerServer.ts → NeighborUpdateRpcLocal.ts} +15 -15
  120. package/src/logic/neighbor-discovery/{RemoteNeighborUpdateManager.ts → NeighborUpdateRpcRemote.ts} +2 -2
  121. package/src/logic/propagation/Propagation.ts +2 -2
  122. package/src/logic/proxy/{ProxyStreamConnectionClient.ts → ProxyClient.ts} +29 -29
  123. package/src/logic/proxy/{ProxyStreamConnectionServer.ts → ProxyConnectionRpcLocal.ts} +10 -11
  124. package/src/logic/proxy/{RemoteProxyServer.ts → ProxyConnectionRpcRemote.ts} +1 -1
  125. package/src/logic/temporary-connection/{TemporaryConnectionRpcServer.ts → TemporaryConnectionRpcLocal.ts} +11 -10
  126. package/src/logic/temporary-connection/{RemoteTemporaryConnectionRpcServer.ts → TemporaryConnectionRpcRemote.ts} +1 -1
  127. package/src/proto/packages/dht/protos/DhtRpc.client.ts +13 -0
  128. package/src/proto/packages/dht/protos/DhtRpc.server.ts +6 -0
  129. package/src/proto/packages/dht/protos/DhtRpc.ts +88 -166
  130. package/src/proto/packages/trackerless-network/protos/NetworkRpc.client.ts +8 -8
  131. package/src/proto/packages/trackerless-network/protos/NetworkRpc.server.ts +2 -2
  132. package/src/proto/packages/trackerless-network/protos/NetworkRpc.ts +14 -14
  133. package/test/benchmark/first-message.ts +19 -20
  134. package/test/end-to-end/inspect.test.ts +12 -12
  135. package/test/end-to-end/proxy-and-full-node.test.ts +17 -18
  136. package/test/end-to-end/proxy-connections.test.ts +9 -11
  137. package/test/end-to-end/proxy-key-exchange.test.ts +12 -13
  138. package/test/end-to-end/random-graph-with-real-connections.test.ts +27 -22
  139. package/test/end-to-end/webrtc-full-node-network.test.ts +8 -8
  140. package/test/end-to-end/websocket-full-node-network.test.ts +8 -10
  141. package/test/integration/{RemoteRandomGraphNode.test.ts → DeliveryRpcRemote.test.ts} +17 -14
  142. package/test/integration/{RemoteHandshaker.test.ts → HandshakeRpcRemote.test.ts} +10 -9
  143. package/test/integration/Handshakes.test.ts +23 -20
  144. package/test/integration/Inspect.test.ts +4 -3
  145. package/test/integration/{RemoteNeighborUpdateManager.test.ts → NeighborUpdateRpcRemote.test.ts} +12 -10
  146. package/test/integration/NetworkNode.test.ts +9 -8
  147. package/test/integration/NetworkRpc.test.ts +5 -7
  148. package/test/integration/NetworkStack.test.ts +13 -15
  149. package/test/integration/Propagation.test.ts +14 -13
  150. package/test/integration/RandomGraphNode-Layer1Node-Latencies.test.ts +23 -20
  151. package/test/integration/RandomGraphNode-Layer1Node.test.ts +30 -29
  152. package/test/integration/StreamrNode.test.ts +16 -13
  153. package/test/integration/joining-streams-on-offline-peers.test.ts +16 -18
  154. package/test/integration/stream-without-default-entrypoints.test.ts +12 -14
  155. package/test/unit/{StreamNodeServer.test.ts → DeliveryRpcLocal.test.ts} +8 -8
  156. package/test/unit/{StreamPartEntrypointDiscovery.test.ts → EntrypointDiscovery.test.ts} +27 -44
  157. package/test/unit/{HandshakerServer.test.ts → HandshakeRpcLocal.test.ts} +26 -24
  158. package/test/unit/Handshaker.test.ts +10 -8
  159. package/test/unit/Inspector.test.ts +4 -3
  160. package/test/unit/NeighborFinder.test.ts +5 -5
  161. package/test/unit/NodeList.test.ts +22 -13
  162. package/test/unit/{RemoteProxyServer.test.ts → ProxyConnectionRpcRemote.test.ts} +4 -4
  163. package/test/unit/RandomGraphNode.test.ts +15 -13
  164. package/test/unit/StreamMessageTranslator.test.ts +10 -9
  165. package/test/unit/StreamrNode.test.ts +10 -10
  166. package/test/utils/mock/{MockLayer0.ts → MockLayer0Node.ts} +23 -26
  167. package/test/utils/mock/{MockLayer1.ts → MockLayer1Node.ts} +5 -10
  168. package/test/utils/mock/MockNeighborFinder.ts +1 -2
  169. package/test/utils/mock/MockNeighborUpdateManager.ts +1 -2
  170. package/test/utils/mock/Transport.ts +2 -2
  171. package/test/utils/utils.ts +18 -16
  172. package/dist/src/logic/ILayer0.d.ts +0 -13
  173. package/dist/src/logic/ILayer0.js.map +0 -1
  174. package/dist/src/logic/ILayer1.js.map +0 -1
  175. package/dist/src/logic/RemoteRandomGraphNode.js.map +0 -1
  176. package/dist/src/logic/StreamPartEntryPointDiscovery.js.map +0 -1
  177. package/dist/src/logic/neighbor-discovery/HandshakerServer.js.map +0 -1
  178. package/dist/src/logic/neighbor-discovery/NeighborUpdateManagerServer.js.map +0 -1
  179. package/dist/src/logic/neighbor-discovery/RemoteHandshaker.js.map +0 -1
  180. package/dist/src/logic/neighbor-discovery/RemoteNeighborUpdateManager.js.map +0 -1
  181. package/dist/src/logic/proxy/ProxyStreamConnectionClient.js.map +0 -1
  182. package/dist/src/logic/proxy/ProxyStreamConnectionServer.js.map +0 -1
  183. package/dist/src/logic/proxy/RemoteProxyServer.js.map +0 -1
  184. package/dist/src/logic/temporary-connection/RemoteTemporaryConnectionRpcServer.js.map +0 -1
  185. package/dist/src/logic/temporary-connection/TemporaryConnectionRpcServer.js.map +0 -1
  186. package/src/logic/ILayer0.ts +0 -14
@@ -17,24 +17,24 @@ import { EventEmitter } from 'eventemitter3'
17
17
  import { sampleSize } from 'lodash'
18
18
  import { NodeID, getNodeIdFromPeerDescriptor } from '../identifiers'
19
19
  import { ProxyDirection, StreamMessage } from '../proto/packages/trackerless-network/protos/NetworkRpc'
20
- import { ILayer0 } from './ILayer0'
21
- import { ILayer1 } from './ILayer1'
20
+ import { Layer0Node } from './Layer0Node'
21
+ import { Layer1Node } from './Layer1Node'
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
29
29
  stop: () => void
30
30
  } & ({
31
31
  proxied: false
32
- layer1: ILayer1
32
+ layer1Node: Layer1Node
33
33
  node: RandomGraphNode
34
- entryPointDiscovery: StreamPartEntryPointDiscovery
34
+ entryPointDiscovery: EntryPointDiscovery
35
35
  } | {
36
36
  proxied: true
37
- client: ProxyStreamConnectionClient
37
+ client: ProxyClient
38
38
  })
39
39
 
40
40
  export interface Events {
@@ -54,21 +54,19 @@ export interface StreamrNodeConfig {
54
54
  metricsContext?: MetricsContext
55
55
  streamPartitionNumOfNeighbors?: number
56
56
  streamPartitionMinPropagationTargets?: number
57
- nodeName?: string
58
- firstConnectionTimeout?: number
59
57
  acceptProxyConnections?: boolean
60
58
  }
61
59
 
62
60
  // TODO rename class?
63
61
  export class StreamrNode extends EventEmitter<Events> {
64
- private P2PTransport?: ITransport
62
+ private transport?: ITransport
65
63
  private connectionLocker?: ConnectionLocker
66
- private layer0?: ILayer0
64
+ private layer0Node?: Layer0Node
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
 
@@ -84,14 +82,14 @@ export class StreamrNode extends EventEmitter<Events> {
84
82
  this.metricsContext.addMetrics('node', this.metrics)
85
83
  }
86
84
 
87
- async start(startedAndJoinedLayer0: ILayer0, transport: ITransport, connectionLocker: ConnectionLocker): Promise<void> {
85
+ async start(startedAndJoinedLayer0Node: Layer0Node, transport: ITransport, connectionLocker: ConnectionLocker): Promise<void> {
88
86
  if (this.started || this.destroyed) {
89
87
  return
90
88
  }
91
- logger.info(`Starting new StreamrNode with id ${getNodeIdFromPeerDescriptor(startedAndJoinedLayer0.getPeerDescriptor())}`)
89
+ logger.info(`Starting new StreamrNode with id ${getNodeIdFromPeerDescriptor(startedAndJoinedLayer0Node.getPeerDescriptor())}`)
92
90
  this.started = true
93
- this.layer0 = startedAndJoinedLayer0
94
- this.P2PTransport = transport
91
+ this.layer0Node = startedAndJoinedLayer0Node
92
+ this.transport = transport
95
93
  this.connectionLocker = connectionLocker
96
94
  cleanUp = () => this.destroy()
97
95
  }
@@ -102,13 +100,14 @@ export class StreamrNode extends EventEmitter<Events> {
102
100
  }
103
101
  logger.trace('Destroying StreamrNode...')
104
102
  this.destroyed = true
105
- this.streamParts.forEach((stream) => stream.stop())
103
+ this.streamParts.forEach((streamPart) => streamPart.stop())
106
104
  this.streamParts.clear()
107
105
  this.removeAllListeners()
108
- await this.layer0!.stop()
109
- await this.P2PTransport!.stop()
110
- this.layer0 = undefined
111
- this.P2PTransport = undefined
106
+ // TODO stopping should be in NetworkStack#stop?
107
+ await this.layer0Node!.stop()
108
+ await this.transport!.stop()
109
+ this.layer0Node = undefined
110
+ this.transport = undefined
112
111
  this.connectionLocker = undefined
113
112
  }
114
113
 
@@ -121,48 +120,47 @@ export class StreamrNode extends EventEmitter<Events> {
121
120
  }
122
121
 
123
122
  leaveStreamPart(streamPartId: StreamPartID): void {
124
- const stream = this.streamParts.get(streamPartId)
125
- if (stream) {
126
- stream.stop()
123
+ const streamPart = this.streamParts.get(streamPartId)
124
+ if (streamPart) {
125
+ streamPart.stop()
127
126
  this.streamParts.delete(streamPartId)
128
127
  }
129
128
  }
130
129
 
131
130
  joinStreamPart(streamPartId: StreamPartID): void {
132
131
  logger.debug(`Join stream part ${streamPartId}`)
133
- let stream = this.streamParts.get(streamPartId)
134
- if (stream !== undefined) {
132
+ let streamPart = this.streamParts.get(streamPartId)
133
+ if (streamPart !== undefined) {
135
134
  return
136
135
  }
137
- const layer1 = this.createLayer1Node(streamPartId, this.knownStreamPartEntryPoints.get(streamPartId) ?? [])
138
- const node = this.createRandomGraphNode(streamPartId, layer1)
139
- const entryPointDiscovery = new StreamPartEntryPointDiscovery({
136
+ const layer1Node = this.createLayer1Node(streamPartId, this.knownStreamPartEntryPoints.get(streamPartId) ?? [])
137
+ const node = this.createRandomGraphNode(streamPartId, layer1Node)
138
+ const entryPointDiscovery = new EntryPointDiscovery({
140
139
  streamPartId,
141
140
  ownPeerDescriptor: this.getPeerDescriptor(),
142
- layer1,
143
- getEntryPointData: (key) => this.layer0!.getDataFromDht(key),
144
- getEntryPointDataViaNode: (key, node) => this.layer0!.findDataViaPeer(key, node),
145
- storeEntryPointData: (key, data) => this.layer0!.storeDataToDht(key, data),
141
+ layer1Node,
142
+ getEntryPointData: (key) => this.layer0Node!.getDataFromDht(key),
143
+ storeEntryPointData: (key, data) => this.layer0Node!.storeDataToDht(key, data),
146
144
  deleteEntryPointData: async (key) => {
147
145
  if (this.destroyed) {
148
146
  return
149
147
  }
150
- return this.layer0!.deleteDataFromDht(key)
148
+ return this.layer0Node!.deleteDataFromDht(key)
151
149
  }
152
150
  })
153
- stream = {
151
+ streamPart = {
154
152
  proxied: false,
155
- layer1,
153
+ layer1Node,
156
154
  node,
157
155
  entryPointDiscovery,
158
156
  broadcast: (msg: StreamMessage) => node.broadcast(msg),
159
157
  stop: () => {
160
158
  entryPointDiscovery.destroy()
161
159
  node.stop()
162
- layer1.stop()
160
+ layer1Node.stop()
163
161
  }
164
162
  }
165
- this.streamParts.set(streamPartId, stream)
163
+ this.streamParts.set(streamPartId, streamPart)
166
164
  node.on('message', (message: StreamMessage) => {
167
165
  this.emit('newMessage', message)
168
166
  })
@@ -170,56 +168,52 @@ export class StreamrNode extends EventEmitter<Events> {
170
168
  try {
171
169
  await this.startLayersAndJoinDht(streamPartId, entryPointDiscovery)
172
170
  } catch (err) {
173
- logger.warn(`Failed to join to stream ${streamPartId} with error: ${err}`)
171
+ logger.warn(`Failed to join to stream part ${streamPartId} with error: ${err}`)
174
172
  }
175
173
  })
176
174
  }
177
175
 
178
- private async startLayersAndJoinDht(streamPartId: StreamPartID, entryPointDiscovery: StreamPartEntryPointDiscovery): Promise<void> {
176
+ private async startLayersAndJoinDht(streamPartId: StreamPartID, entryPointDiscovery: EntryPointDiscovery): Promise<void> {
179
177
  logger.debug(`Start layers and join DHT for stream part ${streamPartId}`)
180
- const stream = this.streamParts.get(streamPartId)
181
- if ((stream === undefined) || stream.proxied) {
182
- // leaveStream has been called (or leaveStream called, and then setProxies called)
178
+ const streamPart = this.streamParts.get(streamPartId)
179
+ if ((streamPart === undefined) || streamPart.proxied) {
180
+ // leaveStreamPart has been called (or leaveStreamPart called, and then setProxies called)
183
181
  return
184
182
  }
185
- await stream.layer1.start()
186
- await stream.node.start()
183
+ await streamPart.layer1Node.start()
184
+ await streamPart.node.start()
187
185
  let entryPoints = this.knownStreamPartEntryPoints.get(streamPartId) ?? []
188
- const forwardingNode = this.layer0!.isJoinOngoing() ? this.layer0!.getKnownEntryPoints()[0] : undefined
189
186
  const discoveryResult = await entryPointDiscovery.discoverEntryPointsFromDht(
190
- entryPoints.length,
191
- forwardingNode
187
+ entryPoints.length
192
188
  )
193
189
  entryPoints = entryPoints.concat(discoveryResult.discoveredEntryPoints)
194
- await stream.layer1.joinDht(sampleSize(entryPoints, NETWORK_SPLIT_AVOIDANCE_LIMIT))
190
+ await streamPart.layer1Node.joinDht(sampleSize(entryPoints, NETWORK_SPLIT_AVOIDANCE_LIMIT))
195
191
  if (discoveryResult.entryPointsFromDht) {
196
192
  await entryPointDiscovery.storeSelfAsEntryPointIfNecessary(entryPoints.length)
197
193
  }
198
194
  }
199
195
 
200
- private createLayer1Node = (streamPartId: StreamPartID, entryPoints: PeerDescriptor[]): ILayer1 => {
196
+ private createLayer1Node = (streamPartId: StreamPartID, entryPoints: PeerDescriptor[]): Layer1Node => {
201
197
  return new DhtNode({
202
- transportLayer: this.layer0!,
198
+ transport: this.layer0Node!,
203
199
  serviceId: 'layer1::' + streamPartId,
204
- peerDescriptor: this.layer0!.getPeerDescriptor(),
200
+ peerDescriptor: this.layer0Node!.getPeerDescriptor(),
205
201
  entryPoints,
206
202
  numberOfNodesPerKBucket: 4,
207
203
  rpcRequestTimeout: 5000,
208
- dhtJoinTimeout: 20000,
209
- nodeName: this.config.nodeName + ':layer1'
204
+ dhtJoinTimeout: 20000
210
205
  })
211
206
  }
212
207
 
213
- private createRandomGraphNode = (streamPartId: StreamPartID, layer1: ILayer1) => {
208
+ private createRandomGraphNode = (streamPartId: StreamPartID, layer1Node: Layer1Node) => {
214
209
  return createRandomGraphNode({
215
- randomGraphId: streamPartId,
216
- P2PTransport: this.P2PTransport!,
217
- layer1,
210
+ streamPartId,
211
+ transport: this.transport!,
212
+ layer1Node,
218
213
  connectionLocker: this.connectionLocker!,
219
- ownPeerDescriptor: this.layer0!.getPeerDescriptor(),
214
+ ownPeerDescriptor: this.layer0Node!.getPeerDescriptor(),
220
215
  minPropagationTargets: this.config.streamPartitionMinPropagationTargets,
221
216
  numOfTargetNeighbors: this.config.streamPartitionNumOfNeighbors,
222
- name: this.config.nodeName,
223
217
  acceptProxyConnections: this.config.acceptProxyConnections
224
218
  })
225
219
  }
@@ -236,51 +230,44 @@ export class StreamrNode extends EventEmitter<Events> {
236
230
  }
237
231
  const enable = (nodes.length > 0) && ((connectionCount === undefined) || (connectionCount > 0))
238
232
  if (enable) {
239
- let proxyClient: ProxyStreamConnectionClient
233
+ let client: ProxyClient
240
234
  const alreadyProxied = this.isProxiedStreamPart(streamPartId)
241
235
  if (alreadyProxied) {
242
- proxyClient = (this.streamParts.get(streamPartId)! as { client: ProxyStreamConnectionClient }).client
236
+ client = (this.streamParts.get(streamPartId)! as { client: ProxyClient }).client
243
237
  } else {
244
- proxyClient = this.createProxyStream(streamPartId, userId)
245
- await proxyClient.start()
238
+ client = this.createProxyClient(streamPartId)
239
+ this.streamParts.set(streamPartId, {
240
+ proxied: true,
241
+ client,
242
+ broadcast: (msg: StreamMessage) => client.broadcast(msg),
243
+ stop: () => client.stop()
244
+ })
245
+ client.on('message', (message: StreamMessage) => {
246
+ this.emit('newMessage', message)
247
+ })
248
+ await client.start()
246
249
  }
247
- await proxyClient.setProxies(streamPartId, nodes, direction, userId, connectionCount)
250
+ await client.setProxies(nodes, direction, userId, connectionCount)
248
251
  } else {
249
252
  this.streamParts.get(streamPartId)?.stop()
250
253
  this.streamParts.delete(streamPartId)
251
254
  }
252
255
  }
253
256
 
254
- private createProxyStream(streamPartId: StreamPartID, userId: EthereumAddress): ProxyStreamConnectionClient {
255
- const client = this.createProxyStreamConnectionClient(streamPartId, userId)
256
- this.streamParts.set(streamPartId, {
257
- proxied: true,
258
- client,
259
- broadcast: (msg: StreamMessage) => client.broadcast(msg),
260
- stop: () => client.stop()
261
- })
262
- client.on('message', (message: StreamMessage) => {
263
- this.emit('newMessage', message)
264
- })
265
- return client
266
- }
267
-
268
- private createProxyStreamConnectionClient(streamPartId: StreamPartID, userId: EthereumAddress): ProxyStreamConnectionClient {
269
- return new ProxyStreamConnectionClient({
270
- P2PTransport: this.P2PTransport!,
271
- ownPeerDescriptor: this.layer0!.getPeerDescriptor(),
257
+ private createProxyClient(streamPartId: StreamPartID): ProxyClient {
258
+ return new ProxyClient({
259
+ transport: this.transport!,
260
+ ownPeerDescriptor: this.layer0Node!.getPeerDescriptor(),
272
261
  streamPartId,
273
262
  connectionLocker: this.connectionLocker!,
274
- minPropagationTargets: this.config.streamPartitionMinPropagationTargets,
275
- nodeName: this.config.nodeName,
276
- userId
263
+ minPropagationTargets: this.config.streamPartitionMinPropagationTargets
277
264
  })
278
265
  }
279
266
 
280
267
  async inspect(peerDescriptor: PeerDescriptor, streamPartId: StreamPartID): Promise<boolean> {
281
- const stream = this.streamParts.get(streamPartId)
282
- if ((stream !== undefined) && !stream.proxied) {
283
- return stream.node.inspect(peerDescriptor)
268
+ const streamPart = this.streamParts.get(streamPartId)
269
+ if ((streamPart !== undefined) && !streamPart.proxied) {
270
+ return streamPart.node.inspect(peerDescriptor)
284
271
  }
285
272
  return false
286
273
  }
@@ -289,33 +276,33 @@ export class StreamrNode extends EventEmitter<Events> {
289
276
  this.knownStreamPartEntryPoints.set(streamPartId, entryPoints)
290
277
  }
291
278
 
292
- isProxiedStreamPart(streamId: string, direction?: ProxyDirection): boolean {
293
- const stream = this.streamParts.get(streamId)
294
- return (stream !== undefined)
295
- && stream.proxied
296
- && ((direction === undefined) || (stream.client.getDirection() === direction))
279
+ isProxiedStreamPart(streamPartId: StreamPartID, direction?: ProxyDirection): boolean {
280
+ const streamPart = this.streamParts.get(streamPartId)
281
+ return (streamPart !== undefined)
282
+ && streamPart.proxied
283
+ && ((direction === undefined) || (streamPart.client.getDirection() === direction))
297
284
  }
298
285
 
299
- getStream(streamPartId: StreamPartID): StreamPartDelivery | undefined {
286
+ getStreamPartDelivery(streamPartId: StreamPartID): StreamPartDelivery | undefined {
300
287
  return this.streamParts.get(streamPartId)
301
288
  }
302
289
 
303
- hasStream(streamPartId: StreamPartID): boolean {
290
+ hasStreamPart(streamPartId: StreamPartID): boolean {
304
291
  return this.streamParts.has(streamPartId)
305
292
  }
306
293
 
307
294
  getPeerDescriptor(): PeerDescriptor {
308
- return this.layer0!.getPeerDescriptor()
295
+ return this.layer0Node!.getPeerDescriptor()
309
296
  }
310
297
 
311
298
  getNodeId(): NodeID {
312
- return this.layer0!.getNodeId().toKey() as unknown as NodeID
299
+ return getNodeIdFromPeerDescriptor(this.layer0Node!.getPeerDescriptor())
313
300
  }
314
301
 
315
302
  getNeighbors(streamPartId: StreamPartID): NodeID[] {
316
- const stream = this.streamParts.get(streamPartId)
317
- return (stream !== undefined) && (stream.proxied === false)
318
- ? stream.node.getTargetNeighborIds()
303
+ const streamPart = this.streamParts.get(streamPartId)
304
+ return (streamPart !== undefined) && (streamPart.proxied === false)
305
+ ? streamPart.node.getTargetNeighborIds()
319
306
  : []
320
307
  }
321
308
 
@@ -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.transport
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.get(neighborId) ?? temporaryConnectionServer.getNodes().get(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) => {})