@streamr/trackerless-network 0.0.1-tatum.6 → 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.
- package/dist/package.json +10 -8
- package/dist/src/NetworkNode.js +1 -1
- package/dist/src/NetworkNode.js.map +1 -1
- package/dist/src/NetworkStack.d.ts +1 -3
- package/dist/src/NetworkStack.js +18 -47
- package/dist/src/NetworkStack.js.map +1 -1
- package/dist/src/identifiers.js +2 -2
- package/dist/src/identifiers.js.map +1 -1
- package/dist/src/logic/{StreamNodeServer.d.ts → DeliveryRpcLocal.d.ts} +6 -5
- package/dist/src/logic/{StreamNodeServer.js → DeliveryRpcLocal.js} +5 -5
- package/dist/src/logic/{StreamNodeServer.js.map → DeliveryRpcLocal.js.map} +1 -1
- package/dist/src/logic/{RemoteRandomGraphNode.d.ts → DeliveryRpcRemote.d.ts} +2 -2
- package/dist/src/logic/{RemoteRandomGraphNode.js → DeliveryRpcRemote.js} +5 -5
- package/dist/src/logic/DeliveryRpcRemote.js.map +1 -0
- package/dist/src/logic/{StreamPartEntryPointDiscovery.d.ts → EntryPointDiscovery.d.ts} +8 -10
- package/dist/src/logic/{StreamPartEntryPointDiscovery.js → EntryPointDiscovery.js} +14 -36
- package/dist/src/logic/EntryPointDiscovery.js.map +1 -0
- package/dist/src/logic/ILayer0.d.ts +3 -6
- package/dist/src/logic/NodeList.d.ts +10 -10
- package/dist/src/logic/NodeList.js.map +1 -1
- package/dist/src/logic/RandomGraphNode.d.ts +8 -12
- package/dist/src/logic/RandomGraphNode.js +41 -40
- package/dist/src/logic/RandomGraphNode.js.map +1 -1
- package/dist/src/logic/StreamrNode.d.ts +9 -12
- package/dist/src/logic/StreamrNode.js +53 -63
- package/dist/src/logic/StreamrNode.js.map +1 -1
- package/dist/src/logic/createRandomGraphNode.d.ts +6 -1
- package/dist/src/logic/createRandomGraphNode.js +17 -23
- package/dist/src/logic/createRandomGraphNode.js.map +1 -1
- package/dist/src/logic/formStreamPartDeliveryServiceId.d.ts +2 -0
- package/dist/src/logic/formStreamPartDeliveryServiceId.js +8 -0
- package/dist/src/logic/formStreamPartDeliveryServiceId.js.map +1 -0
- package/dist/src/logic/inspect/Inspector.d.ts +3 -2
- package/dist/src/logic/inspect/Inspector.js +5 -5
- package/dist/src/logic/inspect/Inspector.js.map +1 -1
- package/dist/src/logic/neighbor-discovery/{HandshakerServer.d.ts → HandshakeRpcLocal.d.ts} +10 -10
- package/dist/src/logic/neighbor-discovery/{HandshakerServer.js → HandshakeRpcLocal.js} +13 -13
- package/dist/src/logic/neighbor-discovery/HandshakeRpcLocal.js.map +1 -0
- package/dist/src/logic/neighbor-discovery/{RemoteHandshaker.d.ts → HandshakeRpcRemote.d.ts} +1 -1
- package/dist/src/logic/neighbor-discovery/{RemoteHandshaker.js → HandshakeRpcRemote.js} +8 -7
- package/dist/src/logic/neighbor-discovery/HandshakeRpcRemote.js.map +1 -0
- package/dist/src/logic/neighbor-discovery/Handshaker.d.ts +8 -7
- package/dist/src/logic/neighbor-discovery/Handshaker.js +23 -24
- package/dist/src/logic/neighbor-discovery/Handshaker.js.map +1 -1
- package/dist/src/logic/neighbor-discovery/NeighborFinder.d.ts +1 -1
- package/dist/src/logic/neighbor-discovery/NeighborFinder.js +1 -1
- package/dist/src/logic/neighbor-discovery/NeighborFinder.js.map +1 -1
- package/dist/src/logic/neighbor-discovery/NeighborUpdateManager.d.ts +3 -2
- package/dist/src/logic/neighbor-discovery/NeighborUpdateManager.js +5 -5
- package/dist/src/logic/neighbor-discovery/NeighborUpdateManager.js.map +1 -1
- package/dist/src/logic/neighbor-discovery/{NeighborUpdateManagerServer.d.ts → NeighborUpdateRpcLocal.d.ts} +6 -6
- package/dist/src/logic/neighbor-discovery/{NeighborUpdateManagerServer.js → NeighborUpdateRpcLocal.js} +9 -9
- package/dist/src/logic/neighbor-discovery/NeighborUpdateRpcLocal.js.map +1 -0
- package/dist/src/logic/neighbor-discovery/{RemoteNeighborUpdateManager.d.ts → NeighborUpdateRpcRemote.d.ts} +1 -1
- package/dist/src/logic/neighbor-discovery/{RemoteNeighborUpdateManager.js → NeighborUpdateRpcRemote.js} +5 -5
- package/dist/src/logic/neighbor-discovery/NeighborUpdateRpcRemote.js.map +1 -0
- package/dist/src/logic/propagation/Propagation.js +2 -2
- package/dist/src/logic/propagation/Propagation.js.map +1 -1
- package/dist/src/logic/proxy/{ProxyStreamConnectionClient.d.ts → ProxyClient.d.ts} +6 -9
- package/dist/src/logic/proxy/{ProxyStreamConnectionClient.js → ProxyClient.js} +23 -21
- package/dist/src/logic/proxy/ProxyClient.js.map +1 -0
- package/dist/src/logic/proxy/{ProxyStreamConnectionServer.d.ts → ProxyConnectionRpcLocal.d.ts} +5 -5
- package/dist/src/logic/proxy/{ProxyStreamConnectionServer.js → ProxyConnectionRpcLocal.js} +6 -6
- package/dist/src/logic/proxy/ProxyConnectionRpcLocal.js.map +1 -0
- package/dist/src/logic/proxy/{RemoteProxyServer.d.ts → ProxyConnectionRpcRemote.d.ts} +1 -1
- package/dist/src/logic/proxy/{RemoteProxyServer.js → ProxyConnectionRpcRemote.js} +4 -4
- package/dist/src/logic/proxy/ProxyConnectionRpcRemote.js.map +1 -0
- package/dist/src/logic/temporary-connection/{TemporaryConnectionRpcServer.d.ts → TemporaryConnectionRpcLocal.d.ts} +5 -4
- package/dist/src/logic/temporary-connection/{TemporaryConnectionRpcServer.js → TemporaryConnectionRpcLocal.js} +6 -6
- package/dist/src/logic/temporary-connection/TemporaryConnectionRpcLocal.js.map +1 -0
- package/dist/src/logic/temporary-connection/{RemoteTemporaryConnectionRpcServer.d.ts → TemporaryConnectionRpcRemote.d.ts} +1 -1
- package/dist/src/logic/temporary-connection/{RemoteTemporaryConnectionRpcServer.js → TemporaryConnectionRpcRemote.js} +4 -4
- package/dist/src/logic/temporary-connection/TemporaryConnectionRpcRemote.js.map +1 -0
- package/dist/src/proto/packages/dht/protos/DhtRpc.d.ts +0 -4
- package/dist/src/proto/packages/dht/protos/DhtRpc.js +1 -2
- package/dist/src/proto/packages/dht/protos/DhtRpc.js.map +1 -1
- package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.client.d.ts +4 -4
- package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.client.js +7 -7
- package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.client.js.map +1 -1
- package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.d.ts +10 -10
- package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.js +7 -7
- package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.js.map +1 -1
- package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.server.d.ts +2 -2
- package/dist/test/benchmark/first-message.js +10 -13
- package/dist/test/benchmark/first-message.js.map +1 -1
- package/dist/test/utils/utils.d.ts +5 -5
- package/dist/test/utils/utils.js +14 -13
- package/dist/test/utils/utils.js.map +1 -1
- package/package.json +10 -8
- package/protos/NetworkRpc.proto +5 -5
- package/src/NetworkNode.ts +1 -1
- package/src/NetworkStack.ts +20 -62
- package/src/identifiers.ts +3 -3
- package/src/logic/{StreamNodeServer.ts → DeliveryRpcLocal.ts} +8 -7
- package/src/logic/{RemoteRandomGraphNode.ts → DeliveryRpcRemote.ts} +3 -3
- package/src/logic/{StreamPartEntryPointDiscovery.ts → EntryPointDiscovery.ts} +18 -42
- package/src/logic/ILayer0.ts +3 -6
- package/src/logic/NodeList.ts +12 -12
- package/src/logic/RandomGraphNode.ts +61 -62
- package/src/logic/StreamrNode.ts +59 -73
- package/src/logic/createRandomGraphNode.ts +28 -26
- package/src/logic/formStreamPartDeliveryServiceId.ts +5 -0
- package/src/logic/inspect/Inspector.ts +8 -7
- package/src/logic/neighbor-discovery/{HandshakerServer.ts → HandshakeRpcLocal.ts} +20 -20
- package/src/logic/neighbor-discovery/{RemoteHandshaker.ts → HandshakeRpcRemote.ts} +6 -5
- package/src/logic/neighbor-discovery/Handshaker.ts +38 -38
- package/src/logic/neighbor-discovery/NeighborFinder.ts +2 -2
- package/src/logic/neighbor-discovery/NeighborUpdateManager.ts +13 -10
- package/src/logic/neighbor-discovery/{NeighborUpdateManagerServer.ts → NeighborUpdateRpcLocal.ts} +15 -15
- package/src/logic/neighbor-discovery/{RemoteNeighborUpdateManager.ts → NeighborUpdateRpcRemote.ts} +2 -2
- package/src/logic/propagation/Propagation.ts +2 -2
- package/src/logic/proxy/{ProxyStreamConnectionClient.ts → ProxyClient.ts} +27 -27
- package/src/logic/proxy/{ProxyStreamConnectionServer.ts → ProxyConnectionRpcLocal.ts} +10 -11
- package/src/logic/proxy/{RemoteProxyServer.ts → ProxyConnectionRpcRemote.ts} +1 -1
- package/src/logic/temporary-connection/{TemporaryConnectionRpcServer.ts → TemporaryConnectionRpcLocal.ts} +11 -10
- package/src/logic/temporary-connection/{RemoteTemporaryConnectionRpcServer.ts → TemporaryConnectionRpcRemote.ts} +1 -1
- package/src/proto/packages/dht/protos/DhtRpc.ts +1 -6
- package/src/proto/packages/trackerless-network/protos/NetworkRpc.client.ts +8 -8
- package/src/proto/packages/trackerless-network/protos/NetworkRpc.server.ts +2 -2
- package/src/proto/packages/trackerless-network/protos/NetworkRpc.ts +14 -14
- package/test/benchmark/first-message.ts +10 -13
- package/test/end-to-end/inspect.test.ts +12 -12
- package/test/end-to-end/proxy-and-full-node.test.ts +13 -14
- package/test/end-to-end/proxy-connections.test.ts +9 -11
- package/test/end-to-end/proxy-key-exchange.test.ts +12 -13
- package/test/end-to-end/random-graph-with-real-connections.test.ts +7 -7
- package/test/end-to-end/webrtc-full-node-network.test.ts +8 -8
- package/test/end-to-end/websocket-full-node-network.test.ts +8 -10
- package/test/integration/{RemoteRandomGraphNode.test.ts → DeliveryRpcRemote.test.ts} +17 -14
- package/test/integration/{RemoteHandshaker.test.ts → HandshakeRpcRemote.test.ts} +10 -9
- package/test/integration/Handshakes.test.ts +23 -20
- package/test/integration/Inspect.test.ts +3 -2
- package/test/integration/{RemoteNeighborUpdateManager.test.ts → NeighborUpdateRpcRemote.test.ts} +12 -10
- package/test/integration/NetworkNode.test.ts +9 -8
- package/test/integration/NetworkRpc.test.ts +5 -7
- package/test/integration/NetworkStack.test.ts +13 -15
- package/test/integration/Propagation.test.ts +2 -2
- package/test/integration/RandomGraphNode-Layer1Node-Latencies.test.ts +10 -8
- package/test/integration/RandomGraphNode-Layer1Node.test.ts +17 -17
- package/test/integration/StreamrNode.test.ts +5 -3
- package/test/integration/joining-streams-on-offline-peers.test.ts +16 -18
- package/test/integration/stream-without-default-entrypoints.test.ts +11 -13
- package/test/unit/{StreamNodeServer.test.ts → DeliveryRpcLocal.test.ts} +8 -8
- package/test/unit/{StreamPartEntrypointDiscovery.test.ts → EntrypointDiscovery.test.ts} +23 -40
- package/test/unit/{HandshakerServer.test.ts → HandshakeRpcLocal.test.ts} +26 -24
- package/test/unit/Handshaker.test.ts +10 -8
- package/test/unit/Inspector.test.ts +4 -3
- package/test/unit/NeighborFinder.test.ts +5 -5
- package/test/unit/NodeList.test.ts +22 -13
- package/test/unit/{RemoteProxyServer.test.ts → ProxyConnectionRpcRemote.test.ts} +4 -4
- package/test/unit/RandomGraphNode.test.ts +6 -5
- package/test/unit/StreamMessageTranslator.test.ts +10 -9
- package/test/unit/StreamrNode.test.ts +8 -8
- package/test/utils/mock/MockLayer0.ts +7 -26
- package/test/utils/mock/MockLayer1.ts +3 -8
- package/test/utils/mock/MockNeighborFinder.ts +1 -2
- package/test/utils/mock/MockNeighborUpdateManager.ts +1 -2
- package/test/utils/mock/Transport.ts +2 -2
- package/test/utils/utils.ts +13 -12
- package/dist/src/logic/RemoteRandomGraphNode.js.map +0 -1
- package/dist/src/logic/StreamPartEntryPointDiscovery.js.map +0 -1
- package/dist/src/logic/neighbor-discovery/HandshakerServer.js.map +0 -1
- package/dist/src/logic/neighbor-discovery/NeighborUpdateManagerServer.js.map +0 -1
- package/dist/src/logic/neighbor-discovery/RemoteHandshaker.js.map +0 -1
- package/dist/src/logic/neighbor-discovery/RemoteNeighborUpdateManager.js.map +0 -1
- package/dist/src/logic/proxy/ProxyStreamConnectionClient.js.map +0 -1
- package/dist/src/logic/proxy/ProxyStreamConnectionServer.js.map +0 -1
- package/dist/src/logic/proxy/RemoteProxyServer.js.map +0 -1
- package/dist/src/logic/temporary-connection/RemoteTemporaryConnectionRpcServer.js.map +0 -1
- package/dist/src/logic/temporary-connection/TemporaryConnectionRpcServer.js.map +0 -1
|
@@ -14,9 +14,9 @@ import {
|
|
|
14
14
|
MessageID,
|
|
15
15
|
} from '../proto/packages/trackerless-network/protos/NetworkRpc'
|
|
16
16
|
import { NodeList } from './NodeList'
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
19
|
-
import {
|
|
17
|
+
import { DeliveryRpcClient } from '../proto/packages/trackerless-network/protos/NetworkRpc.client'
|
|
18
|
+
import { DeliveryRpcRemote } from './DeliveryRpcRemote'
|
|
19
|
+
import { IDeliveryRpc } from '../proto/packages/trackerless-network/protos/NetworkRpc.server'
|
|
20
20
|
import { DuplicateMessageDetector } from './DuplicateMessageDetector'
|
|
21
21
|
import { Logger, addManagedEventListener } from '@streamr/utils'
|
|
22
22
|
import { toProtoRpcClient } from '@streamr/proto-rpc'
|
|
@@ -24,13 +24,14 @@ import { IHandshaker } from './neighbor-discovery/Handshaker'
|
|
|
24
24
|
import { Propagation } from './propagation/Propagation'
|
|
25
25
|
import { INeighborFinder } from './neighbor-discovery/NeighborFinder'
|
|
26
26
|
import { INeighborUpdateManager } from './neighbor-discovery/NeighborUpdateManager'
|
|
27
|
-
import {
|
|
28
|
-
import {
|
|
27
|
+
import { DeliveryRpcLocal } from './DeliveryRpcLocal'
|
|
28
|
+
import { ProxyConnectionRpcLocal } from './proxy/ProxyConnectionRpcLocal'
|
|
29
29
|
import { IInspector } from './inspect/Inspector'
|
|
30
|
-
import {
|
|
30
|
+
import { TemporaryConnectionRpcLocal } from './temporary-connection/TemporaryConnectionRpcLocal'
|
|
31
31
|
import { markAndCheckDuplicate } from './utils'
|
|
32
32
|
import { NodeID, getNodeIdFromPeerDescriptor } from '../identifiers'
|
|
33
33
|
import { ILayer1 } from './ILayer1'
|
|
34
|
+
import { StreamPartID } from '@streamr/protocol'
|
|
34
35
|
|
|
35
36
|
export interface Events {
|
|
36
37
|
message: (message: StreamMessage) => void
|
|
@@ -38,7 +39,7 @@ export interface Events {
|
|
|
38
39
|
}
|
|
39
40
|
|
|
40
41
|
export interface StrictRandomGraphNodeConfig {
|
|
41
|
-
|
|
42
|
+
streamPartId: StreamPartID
|
|
42
43
|
layer1: ILayer1
|
|
43
44
|
P2PTransport: ITransport
|
|
44
45
|
connectionLocker: ConnectionLocker
|
|
@@ -53,33 +54,28 @@ export interface StrictRandomGraphNodeConfig {
|
|
|
53
54
|
propagation: Propagation
|
|
54
55
|
rpcCommunicator: ListeningRpcCommunicator
|
|
55
56
|
numOfTargetNeighbors: number
|
|
56
|
-
maxNumberOfContacts: number
|
|
57
|
-
minPropagationTargets: number
|
|
58
|
-
name: string
|
|
59
|
-
acceptProxyConnections: boolean
|
|
60
|
-
neighborUpdateInterval: number
|
|
61
57
|
inspector: IInspector
|
|
62
|
-
|
|
63
|
-
|
|
58
|
+
temporaryConnectionRpcLocal: TemporaryConnectionRpcLocal
|
|
59
|
+
proxyConnectionRpcLocal?: ProxyConnectionRpcLocal
|
|
64
60
|
}
|
|
65
61
|
|
|
66
62
|
const logger = new Logger(module)
|
|
67
63
|
|
|
68
64
|
export class RandomGraphNode extends EventEmitter<Events> {
|
|
69
|
-
|
|
65
|
+
|
|
70
66
|
private started = false
|
|
71
67
|
private readonly duplicateDetectors: Map<string, DuplicateMessageDetector>
|
|
72
68
|
private config: StrictRandomGraphNodeConfig
|
|
73
|
-
private readonly
|
|
69
|
+
private readonly deliveryRpcLocal: IDeliveryRpc
|
|
74
70
|
private abortController: AbortController = new AbortController()
|
|
75
71
|
|
|
76
72
|
constructor(config: StrictRandomGraphNodeConfig) {
|
|
77
73
|
super()
|
|
78
74
|
this.config = config
|
|
79
75
|
this.duplicateDetectors = new Map()
|
|
80
|
-
this.
|
|
76
|
+
this.deliveryRpcLocal = new DeliveryRpcLocal({
|
|
81
77
|
ownPeerDescriptor: this.config.ownPeerDescriptor,
|
|
82
|
-
|
|
78
|
+
streamPartId: this.config.streamPartId,
|
|
83
79
|
rpcCommunicator: this.config.rpcCommunicator,
|
|
84
80
|
markAndCheckDuplicate: (msg: MessageID, prev?: MessageRef) => markAndCheckDuplicate(this.duplicateDetectors, msg, prev),
|
|
85
81
|
broadcast: (message: StreamMessage, previousNode?: NodeID) => this.broadcast(message, previousNode),
|
|
@@ -87,15 +83,15 @@ export class RandomGraphNode extends EventEmitter<Events> {
|
|
|
87
83
|
const contact = this.config.nearbyNodeView.get(senderId)
|
|
88
84
|
|| this.config.randomNodeView.get(senderId)
|
|
89
85
|
|| this.config.targetNeighbors.get(senderId)
|
|
90
|
-
|| this.config.
|
|
86
|
+
|| this.config.proxyConnectionRpcLocal?.getConnection(senderId )?.remote
|
|
91
87
|
// TODO: check integrity of notifier?
|
|
92
88
|
if (contact) {
|
|
93
89
|
this.config.layer1.removeContact(contact.getPeerDescriptor(), true)
|
|
94
90
|
this.config.targetNeighbors.remove(contact.getPeerDescriptor())
|
|
95
91
|
this.config.nearbyNodeView.remove(contact.getPeerDescriptor())
|
|
96
|
-
this.config.connectionLocker.unlockConnection(contact.getPeerDescriptor(), this.config.
|
|
92
|
+
this.config.connectionLocker.unlockConnection(contact.getPeerDescriptor(), this.config.streamPartId)
|
|
97
93
|
this.config.neighborFinder.start([senderId])
|
|
98
|
-
this.config.
|
|
94
|
+
this.config.proxyConnectionRpcLocal?.removeConnection(senderId)
|
|
99
95
|
}
|
|
100
96
|
},
|
|
101
97
|
markForInspection: (senderId: NodeID, messageId: MessageID) => this.config.inspector.markMessage(senderId, messageId)
|
|
@@ -108,25 +104,25 @@ export class RandomGraphNode extends EventEmitter<Events> {
|
|
|
108
104
|
addManagedEventListener<any, any>(
|
|
109
105
|
this.config.layer1 as any,
|
|
110
106
|
'newContact',
|
|
111
|
-
(
|
|
107
|
+
(_peerDescriptor: PeerDescriptor, closestPeers: PeerDescriptor[]) => this.newContact(closestPeers),
|
|
112
108
|
this.abortController.signal
|
|
113
109
|
)
|
|
114
110
|
addManagedEventListener<any, any>(
|
|
115
111
|
this.config.layer1 as any,
|
|
116
112
|
'contactRemoved',
|
|
117
|
-
(
|
|
113
|
+
(_peerDescriptor: PeerDescriptor, closestPeers: PeerDescriptor[]) => this.removedContact(closestPeers),
|
|
118
114
|
this.abortController.signal
|
|
119
115
|
)
|
|
120
116
|
addManagedEventListener<any, any>(
|
|
121
117
|
this.config.layer1 as any,
|
|
122
118
|
'newRandomContact',
|
|
123
|
-
(
|
|
119
|
+
(_peerDescriptor: PeerDescriptor, randomPeers: PeerDescriptor[]) => this.newRandomContact(randomPeers),
|
|
124
120
|
this.abortController.signal
|
|
125
121
|
)
|
|
126
122
|
addManagedEventListener<any, any>(
|
|
127
123
|
this.config.layer1 as any,
|
|
128
124
|
'randomContactRemoved',
|
|
129
|
-
(
|
|
125
|
+
(_peerDescriptor: PeerDescriptor, randomPeers: PeerDescriptor[]) => this.removedRandomContact(randomPeers),
|
|
130
126
|
this.abortController.signal
|
|
131
127
|
)
|
|
132
128
|
addManagedEventListener<any, any>(
|
|
@@ -144,9 +140,9 @@ export class RandomGraphNode extends EventEmitter<Events> {
|
|
|
144
140
|
},
|
|
145
141
|
this.abortController.signal
|
|
146
142
|
)
|
|
147
|
-
if (this.config.
|
|
143
|
+
if (this.config.proxyConnectionRpcLocal !== undefined) {
|
|
148
144
|
addManagedEventListener(
|
|
149
|
-
this.config.
|
|
145
|
+
this.config.proxyConnectionRpcLocal,
|
|
150
146
|
'newConnection',
|
|
151
147
|
(id: NodeID) => this.config.propagation.onNeighborJoined(id),
|
|
152
148
|
this.abortController.signal
|
|
@@ -154,7 +150,7 @@ export class RandomGraphNode extends EventEmitter<Events> {
|
|
|
154
150
|
}
|
|
155
151
|
const candidates = this.getNeighborCandidatesFromLayer1()
|
|
156
152
|
if (candidates.length > 0) {
|
|
157
|
-
this.newContact(candidates
|
|
153
|
+
this.newContact(candidates)
|
|
158
154
|
}
|
|
159
155
|
this.config.neighborFinder.start()
|
|
160
156
|
await this.config.neighborUpdateManager.start()
|
|
@@ -162,16 +158,16 @@ export class RandomGraphNode extends EventEmitter<Events> {
|
|
|
162
158
|
|
|
163
159
|
private registerDefaultServerMethods(): void {
|
|
164
160
|
this.config.rpcCommunicator.registerRpcNotification(StreamMessage, 'sendStreamMessage',
|
|
165
|
-
(msg: StreamMessage, context) => this.
|
|
161
|
+
(msg: StreamMessage, context) => this.deliveryRpcLocal.sendStreamMessage(msg, context))
|
|
166
162
|
this.config.rpcCommunicator.registerRpcNotification(LeaveStreamPartNotice, 'leaveStreamPartNotice',
|
|
167
|
-
(req: LeaveStreamPartNotice, context) => this.
|
|
163
|
+
(req: LeaveStreamPartNotice, context) => this.deliveryRpcLocal.leaveStreamPartNotice(req, context))
|
|
168
164
|
this.config.rpcCommunicator.registerRpcMethod(TemporaryConnectionRequest, TemporaryConnectionResponse, 'openConnection',
|
|
169
|
-
(req: TemporaryConnectionRequest, context) => this.config.
|
|
165
|
+
(req: TemporaryConnectionRequest, context) => this.config.temporaryConnectionRpcLocal.openConnection(req, context))
|
|
170
166
|
}
|
|
171
167
|
|
|
172
|
-
private newContact(
|
|
168
|
+
private newContact(closestNodes: PeerDescriptor[]): void {
|
|
173
169
|
logger.trace(`New nearby contact found`)
|
|
174
|
-
if (this.
|
|
170
|
+
if (this.isStopped()) {
|
|
175
171
|
return
|
|
176
172
|
}
|
|
177
173
|
this.updateNearbyNodeView(closestNodes)
|
|
@@ -180,9 +176,9 @@ export class RandomGraphNode extends EventEmitter<Events> {
|
|
|
180
176
|
}
|
|
181
177
|
}
|
|
182
178
|
|
|
183
|
-
private removedContact(
|
|
179
|
+
private removedContact(closestNodes: PeerDescriptor[]): void {
|
|
184
180
|
logger.trace(`Nearby contact removed`)
|
|
185
|
-
if (this.
|
|
181
|
+
if (this.isStopped()) {
|
|
186
182
|
return
|
|
187
183
|
}
|
|
188
184
|
this.updateNearbyNodeView(closestNodes)
|
|
@@ -190,11 +186,11 @@ export class RandomGraphNode extends EventEmitter<Events> {
|
|
|
190
186
|
|
|
191
187
|
private updateNearbyNodeView(nodes: PeerDescriptor[]) {
|
|
192
188
|
this.config.nearbyNodeView.replaceAll(Array.from(nodes).map((descriptor) =>
|
|
193
|
-
new
|
|
189
|
+
new DeliveryRpcRemote(
|
|
194
190
|
this.config.ownPeerDescriptor,
|
|
195
191
|
descriptor,
|
|
196
|
-
this.config.
|
|
197
|
-
toProtoRpcClient(new
|
|
192
|
+
this.config.streamPartId,
|
|
193
|
+
toProtoRpcClient(new DeliveryRpcClient(this.config.rpcCommunicator.getRpcClientTransport()))
|
|
198
194
|
)
|
|
199
195
|
))
|
|
200
196
|
for (const descriptor of this.config.layer1.getKBucketPeers()) {
|
|
@@ -202,26 +198,26 @@ export class RandomGraphNode extends EventEmitter<Events> {
|
|
|
202
198
|
break
|
|
203
199
|
}
|
|
204
200
|
this.config.nearbyNodeView.add(
|
|
205
|
-
new
|
|
201
|
+
new DeliveryRpcRemote(
|
|
206
202
|
this.config.ownPeerDescriptor,
|
|
207
203
|
descriptor,
|
|
208
|
-
this.config.
|
|
209
|
-
toProtoRpcClient(new
|
|
204
|
+
this.config.streamPartId,
|
|
205
|
+
toProtoRpcClient(new DeliveryRpcClient(this.config.rpcCommunicator.getRpcClientTransport()))
|
|
210
206
|
)
|
|
211
207
|
)
|
|
212
208
|
}
|
|
213
209
|
}
|
|
214
210
|
|
|
215
|
-
private newRandomContact(
|
|
216
|
-
if (this.
|
|
211
|
+
private newRandomContact(randomNodes: PeerDescriptor[]): void {
|
|
212
|
+
if (this.isStopped()) {
|
|
217
213
|
return
|
|
218
214
|
}
|
|
219
215
|
this.config.randomNodeView.replaceAll(randomNodes.map((descriptor) =>
|
|
220
|
-
new
|
|
216
|
+
new DeliveryRpcRemote(
|
|
221
217
|
this.config.ownPeerDescriptor,
|
|
222
218
|
descriptor,
|
|
223
|
-
this.config.
|
|
224
|
-
toProtoRpcClient(new
|
|
219
|
+
this.config.streamPartId,
|
|
220
|
+
toProtoRpcClient(new DeliveryRpcClient(this.config.rpcCommunicator.getRpcClientTransport()))
|
|
225
221
|
)
|
|
226
222
|
))
|
|
227
223
|
if (this.config.targetNeighbors.size() < this.config.numOfTargetNeighbors) {
|
|
@@ -229,17 +225,17 @@ export class RandomGraphNode extends EventEmitter<Events> {
|
|
|
229
225
|
}
|
|
230
226
|
}
|
|
231
227
|
|
|
232
|
-
private removedRandomContact(
|
|
228
|
+
private removedRandomContact(randomNodes: PeerDescriptor[]): void {
|
|
233
229
|
logger.trace(`New nearby contact found`)
|
|
234
|
-
if (this.
|
|
230
|
+
if (this.isStopped()) {
|
|
235
231
|
return
|
|
236
232
|
}
|
|
237
233
|
this.config.randomNodeView.replaceAll(randomNodes.map((descriptor) =>
|
|
238
|
-
new
|
|
234
|
+
new DeliveryRpcRemote(
|
|
239
235
|
this.config.ownPeerDescriptor,
|
|
240
236
|
descriptor,
|
|
241
|
-
this.config.
|
|
242
|
-
toProtoRpcClient(new
|
|
237
|
+
this.config.streamPartId,
|
|
238
|
+
toProtoRpcClient(new DeliveryRpcClient(this.config.rpcCommunicator.getRpcClientTransport()))
|
|
243
239
|
)
|
|
244
240
|
))
|
|
245
241
|
}
|
|
@@ -247,9 +243,9 @@ export class RandomGraphNode extends EventEmitter<Events> {
|
|
|
247
243
|
private onNodeDisconnected(peerDescriptor: PeerDescriptor): void {
|
|
248
244
|
if (this.config.targetNeighbors.hasNode(peerDescriptor)) {
|
|
249
245
|
this.config.targetNeighbors.remove(peerDescriptor)
|
|
250
|
-
this.config.connectionLocker.unlockConnection(peerDescriptor, this.config.
|
|
246
|
+
this.config.connectionLocker.unlockConnection(peerDescriptor, this.config.streamPartId)
|
|
251
247
|
this.config.neighborFinder.start([getNodeIdFromPeerDescriptor(peerDescriptor)])
|
|
252
|
-
this.config.
|
|
248
|
+
this.config.temporaryConnectionRpcLocal.removeNode(peerDescriptor)
|
|
253
249
|
}
|
|
254
250
|
}
|
|
255
251
|
|
|
@@ -264,9 +260,9 @@ export class RandomGraphNode extends EventEmitter<Events> {
|
|
|
264
260
|
return Array.from(uniqueNodes)
|
|
265
261
|
}
|
|
266
262
|
|
|
267
|
-
|
|
268
|
-
if (this.config.
|
|
269
|
-
return this.config.
|
|
263
|
+
hasProxyConnection(nodeId: NodeID): boolean {
|
|
264
|
+
if (this.config.proxyConnectionRpcLocal) {
|
|
265
|
+
return this.config.proxyConnectionRpcLocal.hasConnection(nodeId)
|
|
270
266
|
}
|
|
271
267
|
return false
|
|
272
268
|
}
|
|
@@ -275,9 +271,8 @@ export class RandomGraphNode extends EventEmitter<Events> {
|
|
|
275
271
|
if (!this.started) {
|
|
276
272
|
return
|
|
277
273
|
}
|
|
278
|
-
this.stopped = true
|
|
279
274
|
this.abortController.abort()
|
|
280
|
-
this.config.
|
|
275
|
+
this.config.proxyConnectionRpcLocal?.stop()
|
|
281
276
|
this.config.targetNeighbors.getAll().map((remote) => remote.leaveStreamPartNotice())
|
|
282
277
|
this.config.rpcCommunicator.stop()
|
|
283
278
|
this.removeAllListeners()
|
|
@@ -303,11 +298,11 @@ export class RandomGraphNode extends EventEmitter<Events> {
|
|
|
303
298
|
|
|
304
299
|
private getPropagationTargets(msg: StreamMessage): NodeID[] {
|
|
305
300
|
let propagationTargets = this.config.targetNeighbors.getIds()
|
|
306
|
-
if (this.config.
|
|
307
|
-
propagationTargets = propagationTargets.concat(this.config.
|
|
301
|
+
if (this.config.proxyConnectionRpcLocal) {
|
|
302
|
+
propagationTargets = propagationTargets.concat(this.config.proxyConnectionRpcLocal!.getPropagationTargets(msg))
|
|
308
303
|
}
|
|
309
304
|
propagationTargets = propagationTargets.filter((target) => !this.config.inspector.isInspected(target ))
|
|
310
|
-
propagationTargets = propagationTargets.concat(this.config.
|
|
305
|
+
propagationTargets = propagationTargets.concat(this.config.temporaryConnectionRpcLocal.getNodes().getIds())
|
|
311
306
|
return propagationTargets
|
|
312
307
|
}
|
|
313
308
|
|
|
@@ -320,7 +315,7 @@ export class RandomGraphNode extends EventEmitter<Events> {
|
|
|
320
315
|
}
|
|
321
316
|
|
|
322
317
|
getTargetNeighborIds(): NodeID[] {
|
|
323
|
-
if (!this.started && this.
|
|
318
|
+
if (!this.started && this.isStopped()) {
|
|
324
319
|
return []
|
|
325
320
|
}
|
|
326
321
|
return this.config.targetNeighbors.getIds()
|
|
@@ -329,4 +324,8 @@ export class RandomGraphNode extends EventEmitter<Events> {
|
|
|
329
324
|
getNearbyNodeView(): NodeList {
|
|
330
325
|
return this.config.nearbyNodeView
|
|
331
326
|
}
|
|
327
|
+
|
|
328
|
+
private isStopped() {
|
|
329
|
+
return this.abortController.signal.aborted
|
|
330
|
+
}
|
|
332
331
|
}
|
package/src/logic/StreamrNode.ts
CHANGED
|
@@ -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,
|
|
23
|
+
import { NETWORK_SPLIT_AVOIDANCE_LIMIT, EntryPointDiscovery } from './EntryPointDiscovery'
|
|
24
24
|
import { createRandomGraphNode } from './createRandomGraphNode'
|
|
25
|
-
import {
|
|
25
|
+
import { ProxyClient } from './proxy/ProxyClient'
|
|
26
26
|
|
|
27
27
|
export type StreamPartDelivery = {
|
|
28
28
|
broadcast: (msg: StreamMessage) => void
|
|
@@ -31,10 +31,10 @@ export type StreamPartDelivery = {
|
|
|
31
31
|
proxied: false
|
|
32
32
|
layer1: ILayer1
|
|
33
33
|
node: RandomGraphNode
|
|
34
|
-
entryPointDiscovery:
|
|
34
|
+
entryPointDiscovery: EntryPointDiscovery
|
|
35
35
|
} | {
|
|
36
36
|
proxied: true
|
|
37
|
-
client:
|
|
37
|
+
client: ProxyClient
|
|
38
38
|
})
|
|
39
39
|
|
|
40
40
|
export interface Events {
|
|
@@ -54,8 +54,6 @@ 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
|
|
|
@@ -66,9 +64,9 @@ export class StreamrNode extends EventEmitter<Events> {
|
|
|
66
64
|
private layer0?: ILayer0
|
|
67
65
|
private readonly metricsContext: MetricsContext
|
|
68
66
|
private readonly metrics: Metrics
|
|
69
|
-
|
|
70
|
-
private readonly streamParts: Map<
|
|
71
|
-
private readonly knownStreamPartEntryPoints: 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
|
|
|
@@ -102,7 +100,7 @@ export class StreamrNode extends EventEmitter<Events> {
|
|
|
102
100
|
}
|
|
103
101
|
logger.trace('Destroying StreamrNode...')
|
|
104
102
|
this.destroyed = true
|
|
105
|
-
this.streamParts.forEach((
|
|
103
|
+
this.streamParts.forEach((streamPart) => streamPart.stop())
|
|
106
104
|
this.streamParts.clear()
|
|
107
105
|
this.removeAllListeners()
|
|
108
106
|
await this.layer0!.stop()
|
|
@@ -121,27 +119,26 @@ export class StreamrNode extends EventEmitter<Events> {
|
|
|
121
119
|
}
|
|
122
120
|
|
|
123
121
|
leaveStreamPart(streamPartId: StreamPartID): void {
|
|
124
|
-
const
|
|
125
|
-
if (
|
|
126
|
-
|
|
122
|
+
const streamPart = this.streamParts.get(streamPartId)
|
|
123
|
+
if (streamPart) {
|
|
124
|
+
streamPart.stop()
|
|
127
125
|
this.streamParts.delete(streamPartId)
|
|
128
126
|
}
|
|
129
127
|
}
|
|
130
128
|
|
|
131
129
|
joinStreamPart(streamPartId: StreamPartID): void {
|
|
132
130
|
logger.debug(`Join stream part ${streamPartId}`)
|
|
133
|
-
let
|
|
134
|
-
if (
|
|
131
|
+
let streamPart = this.streamParts.get(streamPartId)
|
|
132
|
+
if (streamPart !== undefined) {
|
|
135
133
|
return
|
|
136
134
|
}
|
|
137
135
|
const layer1 = this.createLayer1Node(streamPartId, this.knownStreamPartEntryPoints.get(streamPartId) ?? [])
|
|
138
136
|
const node = this.createRandomGraphNode(streamPartId, layer1)
|
|
139
|
-
const entryPointDiscovery = new
|
|
137
|
+
const entryPointDiscovery = new EntryPointDiscovery({
|
|
140
138
|
streamPartId,
|
|
141
139
|
ownPeerDescriptor: this.getPeerDescriptor(),
|
|
142
140
|
layer1,
|
|
143
141
|
getEntryPointData: (key) => this.layer0!.getDataFromDht(key),
|
|
144
|
-
getEntryPointDataViaNode: (key, node) => this.layer0!.findDataViaPeer(key, node),
|
|
145
142
|
storeEntryPointData: (key, data) => this.layer0!.storeDataToDht(key, data),
|
|
146
143
|
deleteEntryPointData: async (key) => {
|
|
147
144
|
if (this.destroyed) {
|
|
@@ -150,7 +147,7 @@ export class StreamrNode extends EventEmitter<Events> {
|
|
|
150
147
|
return this.layer0!.deleteDataFromDht(key)
|
|
151
148
|
}
|
|
152
149
|
})
|
|
153
|
-
|
|
150
|
+
streamPart = {
|
|
154
151
|
proxied: false,
|
|
155
152
|
layer1,
|
|
156
153
|
node,
|
|
@@ -162,7 +159,7 @@ export class StreamrNode extends EventEmitter<Events> {
|
|
|
162
159
|
layer1.stop()
|
|
163
160
|
}
|
|
164
161
|
}
|
|
165
|
-
this.streamParts.set(streamPartId,
|
|
162
|
+
this.streamParts.set(streamPartId, streamPart)
|
|
166
163
|
node.on('message', (message: StreamMessage) => {
|
|
167
164
|
this.emit('newMessage', message)
|
|
168
165
|
})
|
|
@@ -170,28 +167,26 @@ export class StreamrNode extends EventEmitter<Events> {
|
|
|
170
167
|
try {
|
|
171
168
|
await this.startLayersAndJoinDht(streamPartId, entryPointDiscovery)
|
|
172
169
|
} catch (err) {
|
|
173
|
-
logger.warn(`Failed to join to stream ${streamPartId} with error: ${err}`)
|
|
170
|
+
logger.warn(`Failed to join to stream part ${streamPartId} with error: ${err}`)
|
|
174
171
|
}
|
|
175
172
|
})
|
|
176
173
|
}
|
|
177
174
|
|
|
178
|
-
private async startLayersAndJoinDht(streamPartId: StreamPartID, entryPointDiscovery:
|
|
175
|
+
private async startLayersAndJoinDht(streamPartId: StreamPartID, entryPointDiscovery: EntryPointDiscovery): Promise<void> {
|
|
179
176
|
logger.debug(`Start layers and join DHT for stream part ${streamPartId}`)
|
|
180
|
-
const
|
|
181
|
-
if ((
|
|
182
|
-
//
|
|
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)
|
|
183
180
|
return
|
|
184
181
|
}
|
|
185
|
-
await
|
|
186
|
-
await
|
|
182
|
+
await streamPart.layer1.start()
|
|
183
|
+
await streamPart.node.start()
|
|
187
184
|
let entryPoints = this.knownStreamPartEntryPoints.get(streamPartId) ?? []
|
|
188
|
-
const forwardingNode = this.layer0!.isJoinOngoing() ? this.layer0!.getKnownEntryPoints()[0] : undefined
|
|
189
185
|
const discoveryResult = await entryPointDiscovery.discoverEntryPointsFromDht(
|
|
190
|
-
entryPoints.length
|
|
191
|
-
forwardingNode
|
|
186
|
+
entryPoints.length
|
|
192
187
|
)
|
|
193
188
|
entryPoints = entryPoints.concat(discoveryResult.discoveredEntryPoints)
|
|
194
|
-
await
|
|
189
|
+
await streamPart.layer1.joinDht(sampleSize(entryPoints, NETWORK_SPLIT_AVOIDANCE_LIMIT))
|
|
195
190
|
if (discoveryResult.entryPointsFromDht) {
|
|
196
191
|
await entryPointDiscovery.storeSelfAsEntryPointIfNecessary(entryPoints.length)
|
|
197
192
|
}
|
|
@@ -199,27 +194,25 @@ export class StreamrNode extends EventEmitter<Events> {
|
|
|
199
194
|
|
|
200
195
|
private createLayer1Node = (streamPartId: StreamPartID, entryPoints: PeerDescriptor[]): ILayer1 => {
|
|
201
196
|
return new DhtNode({
|
|
202
|
-
|
|
197
|
+
transport: this.layer0!,
|
|
203
198
|
serviceId: 'layer1::' + streamPartId,
|
|
204
199
|
peerDescriptor: this.layer0!.getPeerDescriptor(),
|
|
205
200
|
entryPoints,
|
|
206
201
|
numberOfNodesPerKBucket: 4,
|
|
207
202
|
rpcRequestTimeout: 5000,
|
|
208
|
-
dhtJoinTimeout: 20000
|
|
209
|
-
nodeName: this.config.nodeName + ':layer1'
|
|
203
|
+
dhtJoinTimeout: 20000
|
|
210
204
|
})
|
|
211
205
|
}
|
|
212
206
|
|
|
213
207
|
private createRandomGraphNode = (streamPartId: StreamPartID, layer1: ILayer1) => {
|
|
214
208
|
return createRandomGraphNode({
|
|
215
|
-
|
|
209
|
+
streamPartId,
|
|
216
210
|
P2PTransport: this.P2PTransport!,
|
|
217
211
|
layer1,
|
|
218
212
|
connectionLocker: this.connectionLocker!,
|
|
219
213
|
ownPeerDescriptor: this.layer0!.getPeerDescriptor(),
|
|
220
214
|
minPropagationTargets: this.config.streamPartitionMinPropagationTargets,
|
|
221
215
|
numOfTargetNeighbors: this.config.streamPartitionNumOfNeighbors,
|
|
222
|
-
name: this.config.nodeName,
|
|
223
216
|
acceptProxyConnections: this.config.acceptProxyConnections
|
|
224
217
|
})
|
|
225
218
|
}
|
|
@@ -236,51 +229,44 @@ export class StreamrNode extends EventEmitter<Events> {
|
|
|
236
229
|
}
|
|
237
230
|
const enable = (nodes.length > 0) && ((connectionCount === undefined) || (connectionCount > 0))
|
|
238
231
|
if (enable) {
|
|
239
|
-
let
|
|
232
|
+
let client: ProxyClient
|
|
240
233
|
const alreadyProxied = this.isProxiedStreamPart(streamPartId)
|
|
241
234
|
if (alreadyProxied) {
|
|
242
|
-
|
|
235
|
+
client = (this.streamParts.get(streamPartId)! as { client: ProxyClient }).client
|
|
243
236
|
} else {
|
|
244
|
-
|
|
245
|
-
|
|
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()
|
|
246
248
|
}
|
|
247
|
-
await
|
|
249
|
+
await client.setProxies(nodes, direction, userId, connectionCount)
|
|
248
250
|
} else {
|
|
249
251
|
this.streamParts.get(streamPartId)?.stop()
|
|
250
252
|
this.streamParts.delete(streamPartId)
|
|
251
253
|
}
|
|
252
254
|
}
|
|
253
255
|
|
|
254
|
-
private
|
|
255
|
-
|
|
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({
|
|
256
|
+
private createProxyClient(streamPartId: StreamPartID): ProxyClient {
|
|
257
|
+
return new ProxyClient({
|
|
270
258
|
P2PTransport: this.P2PTransport!,
|
|
271
259
|
ownPeerDescriptor: this.layer0!.getPeerDescriptor(),
|
|
272
260
|
streamPartId,
|
|
273
261
|
connectionLocker: this.connectionLocker!,
|
|
274
|
-
minPropagationTargets: this.config.streamPartitionMinPropagationTargets
|
|
275
|
-
nodeName: this.config.nodeName,
|
|
276
|
-
userId
|
|
262
|
+
minPropagationTargets: this.config.streamPartitionMinPropagationTargets
|
|
277
263
|
})
|
|
278
264
|
}
|
|
279
265
|
|
|
280
266
|
async inspect(peerDescriptor: PeerDescriptor, streamPartId: StreamPartID): Promise<boolean> {
|
|
281
|
-
const
|
|
282
|
-
if ((
|
|
283
|
-
return
|
|
267
|
+
const streamPart = this.streamParts.get(streamPartId)
|
|
268
|
+
if ((streamPart !== undefined) && !streamPart.proxied) {
|
|
269
|
+
return streamPart.node.inspect(peerDescriptor)
|
|
284
270
|
}
|
|
285
271
|
return false
|
|
286
272
|
}
|
|
@@ -289,18 +275,18 @@ export class StreamrNode extends EventEmitter<Events> {
|
|
|
289
275
|
this.knownStreamPartEntryPoints.set(streamPartId, entryPoints)
|
|
290
276
|
}
|
|
291
277
|
|
|
292
|
-
isProxiedStreamPart(
|
|
293
|
-
const
|
|
294
|
-
return (
|
|
295
|
-
&&
|
|
296
|
-
&& ((direction === undefined) || (
|
|
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))
|
|
297
283
|
}
|
|
298
284
|
|
|
299
|
-
|
|
285
|
+
getStreamPartDelivery(streamPartId: StreamPartID): StreamPartDelivery | undefined {
|
|
300
286
|
return this.streamParts.get(streamPartId)
|
|
301
287
|
}
|
|
302
288
|
|
|
303
|
-
|
|
289
|
+
hasStreamPart(streamPartId: StreamPartID): boolean {
|
|
304
290
|
return this.streamParts.has(streamPartId)
|
|
305
291
|
}
|
|
306
292
|
|
|
@@ -309,13 +295,13 @@ export class StreamrNode extends EventEmitter<Events> {
|
|
|
309
295
|
}
|
|
310
296
|
|
|
311
297
|
getNodeId(): NodeID {
|
|
312
|
-
return this.layer0!.
|
|
298
|
+
return getNodeIdFromPeerDescriptor(this.layer0!.getPeerDescriptor())
|
|
313
299
|
}
|
|
314
300
|
|
|
315
301
|
getNeighbors(streamPartId: StreamPartID): NodeID[] {
|
|
316
|
-
const
|
|
317
|
-
return (
|
|
318
|
-
?
|
|
302
|
+
const streamPart = this.streamParts.get(streamPartId)
|
|
303
|
+
return (streamPart !== undefined) && (streamPart.proxied === false)
|
|
304
|
+
? streamPart.node.getTargetNeighborIds()
|
|
319
305
|
: []
|
|
320
306
|
}
|
|
321
307
|
|