@streamr/trackerless-network 0.0.1-tatum.7 → 100.0.0-pretestnet.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.
- package/dist/package.json +6 -6
- package/dist/src/NetworkNode.js +1 -1
- package/dist/src/NetworkNode.js.map +1 -1
- package/dist/src/NetworkStack.d.ts +4 -3
- package/dist/src/NetworkStack.js +12 -12
- package/dist/src/NetworkStack.js.map +1 -1
- package/dist/src/logic/EntryPointDiscovery.d.ts +2 -2
- package/dist/src/logic/EntryPointDiscovery.js +4 -4
- package/dist/src/logic/EntryPointDiscovery.js.map +1 -1
- package/dist/src/logic/{ILayer0.d.ts → Layer0Node.d.ts} +5 -1
- package/dist/src/logic/{ILayer1.js → Layer0Node.js} +1 -1
- package/dist/src/logic/Layer0Node.js.map +1 -0
- package/dist/src/logic/{ILayer1.d.ts → Layer1Node.d.ts} +5 -5
- package/dist/src/logic/{ILayer0.js → Layer1Node.js} +1 -1
- package/dist/src/logic/Layer1Node.js.map +1 -0
- package/dist/src/logic/RandomGraphNode.d.ts +3 -3
- package/dist/src/logic/RandomGraphNode.js +9 -9
- package/dist/src/logic/RandomGraphNode.js.map +1 -1
- package/dist/src/logic/StreamrNode.d.ts +6 -6
- package/dist/src/logic/StreamrNode.js +29 -28
- package/dist/src/logic/StreamrNode.js.map +1 -1
- package/dist/src/logic/createRandomGraphNode.js +1 -1
- package/dist/src/logic/createRandomGraphNode.js.map +1 -1
- package/dist/src/logic/proxy/ProxyClient.d.ts +1 -1
- package/dist/src/logic/proxy/ProxyClient.js +2 -2
- package/dist/src/logic/proxy/ProxyClient.js.map +1 -1
- package/dist/src/proto/packages/dht/protos/DhtRpc.client.d.ts +10 -0
- package/dist/src/proto/packages/dht/protos/DhtRpc.client.js +7 -0
- package/dist/src/proto/packages/dht/protos/DhtRpc.client.js.map +1 -1
- package/dist/src/proto/packages/dht/protos/DhtRpc.d.ts +54 -114
- package/dist/src/proto/packages/dht/protos/DhtRpc.js +49 -47
- package/dist/src/proto/packages/dht/protos/DhtRpc.js.map +1 -1
- package/dist/src/proto/packages/dht/protos/DhtRpc.server.d.ts +6 -0
- package/dist/test/benchmark/first-message.js +9 -7
- package/dist/test/benchmark/first-message.js.map +1 -1
- package/dist/test/utils/utils.d.ts +3 -2
- package/dist/test/utils/utils.js +4 -4
- package/dist/test/utils/utils.js.map +1 -1
- package/package.json +6 -6
- package/src/NetworkNode.ts +1 -1
- package/src/NetworkStack.ts +14 -13
- package/src/logic/EntryPointDiscovery.ts +6 -6
- package/src/logic/{ILayer0.ts → Layer0Node.ts} +5 -1
- package/src/logic/{ILayer1.ts → Layer1Node.ts} +5 -5
- package/src/logic/RandomGraphNode.ts +12 -12
- package/src/logic/StreamrNode.ts +35 -34
- package/src/logic/createRandomGraphNode.ts +1 -1
- package/src/logic/proxy/ProxyClient.ts +3 -3
- package/src/proto/packages/dht/protos/DhtRpc.client.ts +13 -0
- package/src/proto/packages/dht/protos/DhtRpc.server.ts +6 -0
- package/src/proto/packages/dht/protos/DhtRpc.ts +87 -160
- package/test/benchmark/first-message.ts +11 -9
- package/test/end-to-end/proxy-and-full-node.test.ts +4 -4
- package/test/end-to-end/random-graph-with-real-connections.test.ts +20 -15
- package/test/integration/Inspect.test.ts +1 -1
- package/test/integration/Propagation.test.ts +13 -12
- package/test/integration/RandomGraphNode-Layer1Node-Latencies.test.ts +13 -12
- package/test/integration/RandomGraphNode-Layer1Node.test.ts +13 -12
- package/test/integration/StreamrNode.test.ts +11 -10
- package/test/integration/joining-streams-on-offline-peers.test.ts +2 -2
- package/test/integration/stream-without-default-entrypoints.test.ts +1 -1
- package/test/unit/EntrypointDiscovery.test.ts +7 -7
- package/test/unit/RandomGraphNode.test.ts +10 -9
- package/test/unit/StreamrNode.test.ts +2 -2
- package/test/utils/mock/{MockLayer0.ts → MockLayer0Node.ts} +21 -5
- package/test/utils/mock/{MockLayer1.ts → MockLayer1Node.ts} +2 -2
- package/test/utils/utils.ts +6 -5
- package/dist/src/logic/ILayer0.js.map +0 -1
- package/dist/src/logic/ILayer1.js.map +0 -1
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
import { DataEntry, ITransport, PeerDescriptor } from '@streamr/dht'
|
|
2
2
|
import { Any } from '../proto/google/protobuf/any'
|
|
3
3
|
|
|
4
|
-
export interface
|
|
4
|
+
export interface Layer0Node extends ITransport {
|
|
5
|
+
joinDht(entryPointDescriptors: PeerDescriptor[]): Promise<void>
|
|
6
|
+
hasJoined(): boolean
|
|
5
7
|
getPeerDescriptor(): PeerDescriptor
|
|
6
8
|
getDataFromDht(key: Uint8Array): Promise<DataEntry[]>
|
|
7
9
|
storeDataToDht(key: Uint8Array, data: Any): Promise<PeerDescriptor[]>
|
|
8
10
|
deleteDataFromDht(key: Uint8Array): Promise<void>
|
|
9
11
|
waitForNetworkConnectivity(): Promise<void>
|
|
12
|
+
getTransport(): ITransport
|
|
13
|
+
start(): Promise<void>
|
|
10
14
|
stop(): Promise<void>
|
|
11
15
|
}
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import { PeerDescriptor } from '@streamr/dht'
|
|
2
2
|
|
|
3
|
-
export interface
|
|
3
|
+
export interface Layer1NodeEvents {
|
|
4
4
|
newContact: (peerDescriptor: PeerDescriptor, closestPeers: PeerDescriptor[]) => void
|
|
5
5
|
contactRemoved: (peerDescriptor: PeerDescriptor, closestPeers: PeerDescriptor[]) => void
|
|
6
6
|
newRandomContact: (peerDescriptor: PeerDescriptor, randomPeers: PeerDescriptor[]) => void
|
|
7
7
|
randomContactRemoved: (peerDescriptor: PeerDescriptor, randomPeers: PeerDescriptor[]) => void
|
|
8
8
|
}
|
|
9
9
|
|
|
10
|
-
export interface
|
|
11
|
-
on<T extends keyof
|
|
12
|
-
once<T extends keyof
|
|
13
|
-
off<T extends keyof
|
|
10
|
+
export interface Layer1Node {
|
|
11
|
+
on<T extends keyof Layer1NodeEvents>(eventName: T, listener: (peerDescriptor: PeerDescriptor, peers: PeerDescriptor[]) => void): void
|
|
12
|
+
once<T extends keyof Layer1NodeEvents>(eventName: T, listener: (peerDescriptor: PeerDescriptor, peers: PeerDescriptor[]) => void): void
|
|
13
|
+
off<T extends keyof Layer1NodeEvents>(eventName: T, listener: (peerDescriptor: PeerDescriptor, peers: PeerDescriptor[]) => void): void
|
|
14
14
|
removeContact: (peerDescriptor: PeerDescriptor, removeFromOpenInternetPeers?: boolean) => void
|
|
15
15
|
getClosestContacts: (maxCount?: number) => PeerDescriptor[]
|
|
16
16
|
getKBucketPeers: () => PeerDescriptor[]
|
|
@@ -30,7 +30,7 @@ import { IInspector } from './inspect/Inspector'
|
|
|
30
30
|
import { TemporaryConnectionRpcLocal } from './temporary-connection/TemporaryConnectionRpcLocal'
|
|
31
31
|
import { markAndCheckDuplicate } from './utils'
|
|
32
32
|
import { NodeID, getNodeIdFromPeerDescriptor } from '../identifiers'
|
|
33
|
-
import {
|
|
33
|
+
import { Layer1Node } from './Layer1Node'
|
|
34
34
|
import { StreamPartID } from '@streamr/protocol'
|
|
35
35
|
|
|
36
36
|
export interface Events {
|
|
@@ -40,8 +40,8 @@ export interface Events {
|
|
|
40
40
|
|
|
41
41
|
export interface StrictRandomGraphNodeConfig {
|
|
42
42
|
streamPartId: StreamPartID
|
|
43
|
-
|
|
44
|
-
|
|
43
|
+
layer1Node: Layer1Node
|
|
44
|
+
transport: ITransport
|
|
45
45
|
connectionLocker: ConnectionLocker
|
|
46
46
|
ownPeerDescriptor: PeerDescriptor
|
|
47
47
|
nodeViewSize: number
|
|
@@ -86,7 +86,7 @@ export class RandomGraphNode extends EventEmitter<Events> {
|
|
|
86
86
|
|| this.config.proxyConnectionRpcLocal?.getConnection(senderId )?.remote
|
|
87
87
|
// TODO: check integrity of notifier?
|
|
88
88
|
if (contact) {
|
|
89
|
-
this.config.
|
|
89
|
+
this.config.layer1Node.removeContact(contact.getPeerDescriptor(), true)
|
|
90
90
|
this.config.targetNeighbors.remove(contact.getPeerDescriptor())
|
|
91
91
|
this.config.nearbyNodeView.remove(contact.getPeerDescriptor())
|
|
92
92
|
this.config.connectionLocker.unlockConnection(contact.getPeerDescriptor(), this.config.streamPartId)
|
|
@@ -102,31 +102,31 @@ export class RandomGraphNode extends EventEmitter<Events> {
|
|
|
102
102
|
this.started = true
|
|
103
103
|
this.registerDefaultServerMethods()
|
|
104
104
|
addManagedEventListener<any, any>(
|
|
105
|
-
this.config.
|
|
105
|
+
this.config.layer1Node as any,
|
|
106
106
|
'newContact',
|
|
107
107
|
(_peerDescriptor: PeerDescriptor, closestPeers: PeerDescriptor[]) => this.newContact(closestPeers),
|
|
108
108
|
this.abortController.signal
|
|
109
109
|
)
|
|
110
110
|
addManagedEventListener<any, any>(
|
|
111
|
-
this.config.
|
|
111
|
+
this.config.layer1Node as any,
|
|
112
112
|
'contactRemoved',
|
|
113
113
|
(_peerDescriptor: PeerDescriptor, closestPeers: PeerDescriptor[]) => this.removedContact(closestPeers),
|
|
114
114
|
this.abortController.signal
|
|
115
115
|
)
|
|
116
116
|
addManagedEventListener<any, any>(
|
|
117
|
-
this.config.
|
|
117
|
+
this.config.layer1Node as any,
|
|
118
118
|
'newRandomContact',
|
|
119
119
|
(_peerDescriptor: PeerDescriptor, randomPeers: PeerDescriptor[]) => this.newRandomContact(randomPeers),
|
|
120
120
|
this.abortController.signal
|
|
121
121
|
)
|
|
122
122
|
addManagedEventListener<any, any>(
|
|
123
|
-
this.config.
|
|
123
|
+
this.config.layer1Node as any,
|
|
124
124
|
'randomContactRemoved',
|
|
125
125
|
(_peerDescriptor: PeerDescriptor, randomPeers: PeerDescriptor[]) => this.removedRandomContact(randomPeers),
|
|
126
126
|
this.abortController.signal
|
|
127
127
|
)
|
|
128
128
|
addManagedEventListener<any, any>(
|
|
129
|
-
this.config.
|
|
129
|
+
this.config.transport as any,
|
|
130
130
|
'disconnected',
|
|
131
131
|
(peerDescriptor: PeerDescriptor) => this.onNodeDisconnected(peerDescriptor),
|
|
132
132
|
this.abortController.signal
|
|
@@ -193,7 +193,7 @@ export class RandomGraphNode extends EventEmitter<Events> {
|
|
|
193
193
|
toProtoRpcClient(new DeliveryRpcClient(this.config.rpcCommunicator.getRpcClientTransport()))
|
|
194
194
|
)
|
|
195
195
|
))
|
|
196
|
-
for (const descriptor of this.config.
|
|
196
|
+
for (const descriptor of this.config.layer1Node.getKBucketPeers()) {
|
|
197
197
|
if (this.config.nearbyNodeView.size() >= this.config.nodeViewSize) {
|
|
198
198
|
break
|
|
199
199
|
}
|
|
@@ -251,10 +251,10 @@ export class RandomGraphNode extends EventEmitter<Events> {
|
|
|
251
251
|
|
|
252
252
|
private getNeighborCandidatesFromLayer1(): PeerDescriptor[] {
|
|
253
253
|
const uniqueNodes = new Set<PeerDescriptor>()
|
|
254
|
-
this.config.
|
|
254
|
+
this.config.layer1Node.getClosestContacts(this.config.nodeViewSize).forEach((peer: PeerDescriptor) => {
|
|
255
255
|
uniqueNodes.add(peer)
|
|
256
256
|
})
|
|
257
|
-
this.config.
|
|
257
|
+
this.config.layer1Node.getKBucketPeers().forEach((peer: PeerDescriptor) => {
|
|
258
258
|
uniqueNodes.add(peer)
|
|
259
259
|
})
|
|
260
260
|
return Array.from(uniqueNodes)
|
package/src/logic/StreamrNode.ts
CHANGED
|
@@ -17,8 +17,8 @@ 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 {
|
|
21
|
-
import {
|
|
20
|
+
import { Layer0Node } from './Layer0Node'
|
|
21
|
+
import { Layer1Node } from './Layer1Node'
|
|
22
22
|
import { RandomGraphNode } from './RandomGraphNode'
|
|
23
23
|
import { NETWORK_SPLIT_AVOIDANCE_LIMIT, EntryPointDiscovery } from './EntryPointDiscovery'
|
|
24
24
|
import { createRandomGraphNode } from './createRandomGraphNode'
|
|
@@ -29,7 +29,7 @@ export type StreamPartDelivery = {
|
|
|
29
29
|
stop: () => void
|
|
30
30
|
} & ({
|
|
31
31
|
proxied: false
|
|
32
|
-
|
|
32
|
+
layer1Node: Layer1Node
|
|
33
33
|
node: RandomGraphNode
|
|
34
34
|
entryPointDiscovery: EntryPointDiscovery
|
|
35
35
|
} | {
|
|
@@ -59,9 +59,9 @@ export interface StreamrNodeConfig {
|
|
|
59
59
|
|
|
60
60
|
// TODO rename class?
|
|
61
61
|
export class StreamrNode extends EventEmitter<Events> {
|
|
62
|
-
private
|
|
62
|
+
private transport?: ITransport
|
|
63
63
|
private connectionLocker?: ConnectionLocker
|
|
64
|
-
private
|
|
64
|
+
private layer0Node?: Layer0Node
|
|
65
65
|
private readonly metricsContext: MetricsContext
|
|
66
66
|
private readonly metrics: Metrics
|
|
67
67
|
private readonly config: StreamrNodeConfig
|
|
@@ -82,14 +82,14 @@ export class StreamrNode extends EventEmitter<Events> {
|
|
|
82
82
|
this.metricsContext.addMetrics('node', this.metrics)
|
|
83
83
|
}
|
|
84
84
|
|
|
85
|
-
async start(
|
|
85
|
+
async start(startedAndJoinedLayer0Node: Layer0Node, transport: ITransport, connectionLocker: ConnectionLocker): Promise<void> {
|
|
86
86
|
if (this.started || this.destroyed) {
|
|
87
87
|
return
|
|
88
88
|
}
|
|
89
|
-
logger.info(`Starting new StreamrNode with id ${getNodeIdFromPeerDescriptor(
|
|
89
|
+
logger.info(`Starting new StreamrNode with id ${getNodeIdFromPeerDescriptor(startedAndJoinedLayer0Node.getPeerDescriptor())}`)
|
|
90
90
|
this.started = true
|
|
91
|
-
this.
|
|
92
|
-
this.
|
|
91
|
+
this.layer0Node = startedAndJoinedLayer0Node
|
|
92
|
+
this.transport = transport
|
|
93
93
|
this.connectionLocker = connectionLocker
|
|
94
94
|
cleanUp = () => this.destroy()
|
|
95
95
|
}
|
|
@@ -103,10 +103,11 @@ export class StreamrNode extends EventEmitter<Events> {
|
|
|
103
103
|
this.streamParts.forEach((streamPart) => streamPart.stop())
|
|
104
104
|
this.streamParts.clear()
|
|
105
105
|
this.removeAllListeners()
|
|
106
|
-
|
|
107
|
-
await this.
|
|
108
|
-
this.
|
|
109
|
-
this.
|
|
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
|
|
110
111
|
this.connectionLocker = undefined
|
|
111
112
|
}
|
|
112
113
|
|
|
@@ -132,31 +133,31 @@ export class StreamrNode extends EventEmitter<Events> {
|
|
|
132
133
|
if (streamPart !== undefined) {
|
|
133
134
|
return
|
|
134
135
|
}
|
|
135
|
-
const
|
|
136
|
-
const node = this.createRandomGraphNode(streamPartId,
|
|
136
|
+
const layer1Node = this.createLayer1Node(streamPartId, this.knownStreamPartEntryPoints.get(streamPartId) ?? [])
|
|
137
|
+
const node = this.createRandomGraphNode(streamPartId, layer1Node)
|
|
137
138
|
const entryPointDiscovery = new EntryPointDiscovery({
|
|
138
139
|
streamPartId,
|
|
139
140
|
ownPeerDescriptor: this.getPeerDescriptor(),
|
|
140
|
-
|
|
141
|
-
getEntryPointData: (key) => this.
|
|
142
|
-
storeEntryPointData: (key, data) => this.
|
|
141
|
+
layer1Node,
|
|
142
|
+
getEntryPointData: (key) => this.layer0Node!.getDataFromDht(key),
|
|
143
|
+
storeEntryPointData: (key, data) => this.layer0Node!.storeDataToDht(key, data),
|
|
143
144
|
deleteEntryPointData: async (key) => {
|
|
144
145
|
if (this.destroyed) {
|
|
145
146
|
return
|
|
146
147
|
}
|
|
147
|
-
return this.
|
|
148
|
+
return this.layer0Node!.deleteDataFromDht(key)
|
|
148
149
|
}
|
|
149
150
|
})
|
|
150
151
|
streamPart = {
|
|
151
152
|
proxied: false,
|
|
152
|
-
|
|
153
|
+
layer1Node,
|
|
153
154
|
node,
|
|
154
155
|
entryPointDiscovery,
|
|
155
156
|
broadcast: (msg: StreamMessage) => node.broadcast(msg),
|
|
156
157
|
stop: () => {
|
|
157
158
|
entryPointDiscovery.destroy()
|
|
158
159
|
node.stop()
|
|
159
|
-
|
|
160
|
+
layer1Node.stop()
|
|
160
161
|
}
|
|
161
162
|
}
|
|
162
163
|
this.streamParts.set(streamPartId, streamPart)
|
|
@@ -179,24 +180,24 @@ export class StreamrNode extends EventEmitter<Events> {
|
|
|
179
180
|
// leaveStreamPart has been called (or leaveStreamPart called, and then setProxies called)
|
|
180
181
|
return
|
|
181
182
|
}
|
|
182
|
-
await streamPart.
|
|
183
|
+
await streamPart.layer1Node.start()
|
|
183
184
|
await streamPart.node.start()
|
|
184
185
|
let entryPoints = this.knownStreamPartEntryPoints.get(streamPartId) ?? []
|
|
185
186
|
const discoveryResult = await entryPointDiscovery.discoverEntryPointsFromDht(
|
|
186
187
|
entryPoints.length
|
|
187
188
|
)
|
|
188
189
|
entryPoints = entryPoints.concat(discoveryResult.discoveredEntryPoints)
|
|
189
|
-
await streamPart.
|
|
190
|
+
await streamPart.layer1Node.joinDht(sampleSize(entryPoints, NETWORK_SPLIT_AVOIDANCE_LIMIT))
|
|
190
191
|
if (discoveryResult.entryPointsFromDht) {
|
|
191
192
|
await entryPointDiscovery.storeSelfAsEntryPointIfNecessary(entryPoints.length)
|
|
192
193
|
}
|
|
193
194
|
}
|
|
194
195
|
|
|
195
|
-
private createLayer1Node = (streamPartId: StreamPartID, entryPoints: PeerDescriptor[]):
|
|
196
|
+
private createLayer1Node = (streamPartId: StreamPartID, entryPoints: PeerDescriptor[]): Layer1Node => {
|
|
196
197
|
return new DhtNode({
|
|
197
|
-
transport: this.
|
|
198
|
+
transport: this.layer0Node!,
|
|
198
199
|
serviceId: 'layer1::' + streamPartId,
|
|
199
|
-
peerDescriptor: this.
|
|
200
|
+
peerDescriptor: this.layer0Node!.getPeerDescriptor(),
|
|
200
201
|
entryPoints,
|
|
201
202
|
numberOfNodesPerKBucket: 4,
|
|
202
203
|
rpcRequestTimeout: 5000,
|
|
@@ -204,13 +205,13 @@ export class StreamrNode extends EventEmitter<Events> {
|
|
|
204
205
|
})
|
|
205
206
|
}
|
|
206
207
|
|
|
207
|
-
private createRandomGraphNode = (streamPartId: StreamPartID,
|
|
208
|
+
private createRandomGraphNode = (streamPartId: StreamPartID, layer1Node: Layer1Node) => {
|
|
208
209
|
return createRandomGraphNode({
|
|
209
210
|
streamPartId,
|
|
210
|
-
|
|
211
|
-
|
|
211
|
+
transport: this.transport!,
|
|
212
|
+
layer1Node,
|
|
212
213
|
connectionLocker: this.connectionLocker!,
|
|
213
|
-
ownPeerDescriptor: this.
|
|
214
|
+
ownPeerDescriptor: this.layer0Node!.getPeerDescriptor(),
|
|
214
215
|
minPropagationTargets: this.config.streamPartitionMinPropagationTargets,
|
|
215
216
|
numOfTargetNeighbors: this.config.streamPartitionNumOfNeighbors,
|
|
216
217
|
acceptProxyConnections: this.config.acceptProxyConnections
|
|
@@ -255,8 +256,8 @@ export class StreamrNode extends EventEmitter<Events> {
|
|
|
255
256
|
|
|
256
257
|
private createProxyClient(streamPartId: StreamPartID): ProxyClient {
|
|
257
258
|
return new ProxyClient({
|
|
258
|
-
|
|
259
|
-
ownPeerDescriptor: this.
|
|
259
|
+
transport: this.transport!,
|
|
260
|
+
ownPeerDescriptor: this.layer0Node!.getPeerDescriptor(),
|
|
260
261
|
streamPartId,
|
|
261
262
|
connectionLocker: this.connectionLocker!,
|
|
262
263
|
minPropagationTargets: this.config.streamPartitionMinPropagationTargets
|
|
@@ -291,11 +292,11 @@ export class StreamrNode extends EventEmitter<Events> {
|
|
|
291
292
|
}
|
|
292
293
|
|
|
293
294
|
getPeerDescriptor(): PeerDescriptor {
|
|
294
|
-
return this.
|
|
295
|
+
return this.layer0Node!.getPeerDescriptor()
|
|
295
296
|
}
|
|
296
297
|
|
|
297
298
|
getNodeId(): NodeID {
|
|
298
|
-
return getNodeIdFromPeerDescriptor(this.
|
|
299
|
+
return getNodeIdFromPeerDescriptor(this.layer0Node!.getPeerDescriptor())
|
|
299
300
|
}
|
|
300
301
|
|
|
301
302
|
getNeighbors(streamPartId: StreamPartID): NodeID[] {
|
|
@@ -28,7 +28,7 @@ const createConfigWithDefaults = (config: RandomGraphNodeConfig): StrictRandomGr
|
|
|
28
28
|
const ownNodeId = getNodeIdFromPeerDescriptor(config.ownPeerDescriptor)
|
|
29
29
|
const rpcCommunicator = config.rpcCommunicator ?? new ListeningRpcCommunicator(
|
|
30
30
|
formStreamPartDeliveryServiceId(config.streamPartId),
|
|
31
|
-
config.
|
|
31
|
+
config.transport
|
|
32
32
|
)
|
|
33
33
|
const numOfTargetNeighbors = config.numOfTargetNeighbors ?? 4
|
|
34
34
|
const maxNumberOfContacts = config.maxNumberOfContacts ?? 20
|
|
@@ -43,7 +43,7 @@ export const retry = async <T>(task: () => Promise<T>, description: string, abor
|
|
|
43
43
|
}
|
|
44
44
|
|
|
45
45
|
interface ProxyClientConfig {
|
|
46
|
-
|
|
46
|
+
transport: ITransport
|
|
47
47
|
ownPeerDescriptor: PeerDescriptor
|
|
48
48
|
streamPartId: StreamPartID
|
|
49
49
|
connectionLocker: ConnectionLocker
|
|
@@ -76,7 +76,7 @@ export class ProxyClient extends EventEmitter {
|
|
|
76
76
|
constructor(config: ProxyClientConfig) {
|
|
77
77
|
super()
|
|
78
78
|
this.config = config
|
|
79
|
-
this.rpcCommunicator = new ListeningRpcCommunicator(formStreamPartDeliveryServiceId(config.streamPartId), config.
|
|
79
|
+
this.rpcCommunicator = new ListeningRpcCommunicator(formStreamPartDeliveryServiceId(config.streamPartId), config.transport)
|
|
80
80
|
this.targetNeighbors = new NodeList(getNodeIdFromPeerDescriptor(this.config.ownPeerDescriptor), 1000)
|
|
81
81
|
this.deliveryRpcLocal = new DeliveryRpcLocal({
|
|
82
82
|
ownPeerDescriptor: this.config.ownPeerDescriptor,
|
|
@@ -241,7 +241,7 @@ export class ProxyClient extends EventEmitter {
|
|
|
241
241
|
async start(): Promise<void> {
|
|
242
242
|
this.registerDefaultServerMethods()
|
|
243
243
|
addManagedEventListener<any, any>(
|
|
244
|
-
this.config.
|
|
244
|
+
this.config.transport as any,
|
|
245
245
|
'disconnected',
|
|
246
246
|
(peerDescriptor: PeerDescriptor) => this.onNodeDisconnected(peerDescriptor),
|
|
247
247
|
this.abortController.signal
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
// @generated from protobuf file "packages/dht/protos/DhtRpc.proto" (package "dht", syntax proto3)
|
|
3
3
|
// tslint:disable
|
|
4
4
|
import { ExternalApiService } from "./DhtRpc";
|
|
5
|
+
import type { ExternalStoreDataResponse } from "./DhtRpc";
|
|
6
|
+
import type { ExternalStoreDataRequest } from "./DhtRpc";
|
|
5
7
|
import type { FindDataResponse } from "./DhtRpc";
|
|
6
8
|
import type { FindDataRequest } from "./DhtRpc";
|
|
7
9
|
import { ConnectionLocker } from "./DhtRpc";
|
|
@@ -353,6 +355,10 @@ export interface IExternalApiServiceClient {
|
|
|
353
355
|
* @generated from protobuf rpc: findData(dht.FindDataRequest) returns (dht.FindDataResponse);
|
|
354
356
|
*/
|
|
355
357
|
findData(input: FindDataRequest, options?: RpcOptions): UnaryCall<FindDataRequest, FindDataResponse>;
|
|
358
|
+
/**
|
|
359
|
+
* @generated from protobuf rpc: externalStoreData(dht.ExternalStoreDataRequest) returns (dht.ExternalStoreDataResponse);
|
|
360
|
+
*/
|
|
361
|
+
externalStoreData(input: ExternalStoreDataRequest, options?: RpcOptions): UnaryCall<ExternalStoreDataRequest, ExternalStoreDataResponse>;
|
|
356
362
|
}
|
|
357
363
|
/**
|
|
358
364
|
* @generated from protobuf service dht.ExternalApiService
|
|
@@ -370,4 +376,11 @@ export class ExternalApiServiceClient implements IExternalApiServiceClient, Serv
|
|
|
370
376
|
const method = this.methods[0], opt = this._transport.mergeOptions(options);
|
|
371
377
|
return stackIntercept<FindDataRequest, FindDataResponse>("unary", this._transport, method, opt, input);
|
|
372
378
|
}
|
|
379
|
+
/**
|
|
380
|
+
* @generated from protobuf rpc: externalStoreData(dht.ExternalStoreDataRequest) returns (dht.ExternalStoreDataResponse);
|
|
381
|
+
*/
|
|
382
|
+
externalStoreData(input: ExternalStoreDataRequest, options?: RpcOptions): UnaryCall<ExternalStoreDataRequest, ExternalStoreDataResponse> {
|
|
383
|
+
const method = this.methods[1], opt = this._transport.mergeOptions(options);
|
|
384
|
+
return stackIntercept<ExternalStoreDataRequest, ExternalStoreDataResponse>("unary", this._transport, method, opt, input);
|
|
385
|
+
}
|
|
373
386
|
}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
// @generated by protobuf-ts 2.9.1 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
|
+
import { ExternalStoreDataResponse } from "./DhtRpc";
|
|
5
|
+
import { ExternalStoreDataRequest } from "./DhtRpc";
|
|
4
6
|
import { FindDataResponse } from "./DhtRpc";
|
|
5
7
|
import { FindDataRequest } from "./DhtRpc";
|
|
6
8
|
import { DisconnectNoticeResponse } from "./DhtRpc";
|
|
@@ -145,4 +147,8 @@ export interface IExternalApiService<T = ServerCallContext> {
|
|
|
145
147
|
* @generated from protobuf rpc: findData(dht.FindDataRequest) returns (dht.FindDataResponse);
|
|
146
148
|
*/
|
|
147
149
|
findData(request: FindDataRequest, context: T): Promise<FindDataResponse>;
|
|
150
|
+
/**
|
|
151
|
+
* @generated from protobuf rpc: externalStoreData(dht.ExternalStoreDataRequest) returns (dht.ExternalStoreDataResponse);
|
|
152
|
+
*/
|
|
153
|
+
externalStoreData(request: ExternalStoreDataRequest, context: T): Promise<ExternalStoreDataResponse>;
|
|
148
154
|
}
|