@streamr/trackerless-network 0.0.1-tatum.5 → 0.0.1-tatum.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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/EntryPointDiscovery.d.ts +35 -0
- package/dist/src/logic/EntryPointDiscovery.js +145 -0
- package/dist/src/logic/EntryPointDiscovery.js.map +1 -0
- package/dist/src/logic/ILayer0.d.ts +3 -6
- package/dist/src/logic/ILayer1.d.ts +2 -2
- package/dist/src/logic/NodeList.d.ts +10 -10
- package/dist/src/logic/NodeList.js +2 -2
- package/dist/src/logic/NodeList.js.map +1 -1
- package/dist/src/logic/RandomGraphNode.d.ts +8 -12
- package/dist/src/logic/RandomGraphNode.js +47 -46
- package/dist/src/logic/RandomGraphNode.js.map +1 -1
- package/dist/src/logic/StreamrNode.d.ts +9 -11
- package/dist/src/logic/StreamrNode.js +72 -75
- 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 +5 -5
- 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 +7 -7
- 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} +11 -11
- 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} +8 -12
- package/dist/src/logic/proxy/{ProxyStreamConnectionClient.js → ProxyClient.js} +28 -29
- package/dist/src/logic/proxy/ProxyClient.js.map +1 -0
- package/dist/src/logic/proxy/{ProxyStreamConnectionServer.d.ts → ProxyConnectionRpcLocal.d.ts} +5 -7
- package/dist/src/logic/proxy/{ProxyStreamConnectionServer.js → ProxyConnectionRpcLocal.js} +6 -12
- 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 -14
- 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/EntryPointDiscovery.ts +181 -0
- package/src/logic/ILayer0.ts +3 -6
- package/src/logic/ILayer1.ts +2 -5
- package/src/logic/NodeList.ts +12 -12
- package/src/logic/RandomGraphNode.ts +67 -69
- package/src/logic/StreamrNode.ts +78 -90
- 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 +6 -6
- package/src/logic/neighbor-discovery/NeighborUpdateManager.ts +15 -12
- package/src/logic/neighbor-discovery/{NeighborUpdateManagerServer.ts → NeighborUpdateRpcLocal.ts} +17 -17
- 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} +33 -37
- package/src/logic/proxy/{ProxyStreamConnectionServer.ts → ProxyConnectionRpcLocal.ts} +10 -19
- 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 +10 -12
- 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/EntrypointDiscovery.test.ts +132 -0
- 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 +12 -11
- 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 +6 -13
- 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 -13
- package/dist/src/logic/RemoteRandomGraphNode.js.map +0 -1
- package/dist/src/logic/StreamPartEntryPointDiscovery.d.ts +0 -39
- package/dist/src/logic/StreamPartEntryPointDiscovery.js +0 -194
- 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
- package/src/logic/StreamPartEntryPointDiscovery.ts +0 -240
- package/test/unit/StreamPartEntrypointDiscovery.test.ts +0 -164
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { EventEmitter } from 'eventemitter3'
|
|
2
2
|
import {
|
|
3
3
|
PeerDescriptor,
|
|
4
|
-
DhtPeer,
|
|
5
4
|
ListeningRpcCommunicator,
|
|
6
5
|
ITransport,
|
|
7
6
|
ConnectionLocker
|
|
@@ -15,9 +14,9 @@ import {
|
|
|
15
14
|
MessageID,
|
|
16
15
|
} from '../proto/packages/trackerless-network/protos/NetworkRpc'
|
|
17
16
|
import { NodeList } from './NodeList'
|
|
18
|
-
import {
|
|
19
|
-
import {
|
|
20
|
-
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'
|
|
21
20
|
import { DuplicateMessageDetector } from './DuplicateMessageDetector'
|
|
22
21
|
import { Logger, addManagedEventListener } from '@streamr/utils'
|
|
23
22
|
import { toProtoRpcClient } from '@streamr/proto-rpc'
|
|
@@ -25,13 +24,14 @@ import { IHandshaker } from './neighbor-discovery/Handshaker'
|
|
|
25
24
|
import { Propagation } from './propagation/Propagation'
|
|
26
25
|
import { INeighborFinder } from './neighbor-discovery/NeighborFinder'
|
|
27
26
|
import { INeighborUpdateManager } from './neighbor-discovery/NeighborUpdateManager'
|
|
28
|
-
import {
|
|
29
|
-
import {
|
|
27
|
+
import { DeliveryRpcLocal } from './DeliveryRpcLocal'
|
|
28
|
+
import { ProxyConnectionRpcLocal } from './proxy/ProxyConnectionRpcLocal'
|
|
30
29
|
import { IInspector } from './inspect/Inspector'
|
|
31
|
-
import {
|
|
30
|
+
import { TemporaryConnectionRpcLocal } from './temporary-connection/TemporaryConnectionRpcLocal'
|
|
32
31
|
import { markAndCheckDuplicate } from './utils'
|
|
33
32
|
import { NodeID, getNodeIdFromPeerDescriptor } from '../identifiers'
|
|
34
33
|
import { ILayer1 } from './ILayer1'
|
|
34
|
+
import { StreamPartID } from '@streamr/protocol'
|
|
35
35
|
|
|
36
36
|
export interface Events {
|
|
37
37
|
message: (message: StreamMessage) => void
|
|
@@ -39,7 +39,7 @@ export interface Events {
|
|
|
39
39
|
}
|
|
40
40
|
|
|
41
41
|
export interface StrictRandomGraphNodeConfig {
|
|
42
|
-
|
|
42
|
+
streamPartId: StreamPartID
|
|
43
43
|
layer1: ILayer1
|
|
44
44
|
P2PTransport: ITransport
|
|
45
45
|
connectionLocker: ConnectionLocker
|
|
@@ -54,49 +54,44 @@ export interface StrictRandomGraphNodeConfig {
|
|
|
54
54
|
propagation: Propagation
|
|
55
55
|
rpcCommunicator: ListeningRpcCommunicator
|
|
56
56
|
numOfTargetNeighbors: number
|
|
57
|
-
maxNumberOfContacts: number
|
|
58
|
-
minPropagationTargets: number
|
|
59
|
-
name: string
|
|
60
|
-
acceptProxyConnections: boolean
|
|
61
|
-
neighborUpdateInterval: number
|
|
62
57
|
inspector: IInspector
|
|
63
|
-
|
|
64
|
-
|
|
58
|
+
temporaryConnectionRpcLocal: TemporaryConnectionRpcLocal
|
|
59
|
+
proxyConnectionRpcLocal?: ProxyConnectionRpcLocal
|
|
65
60
|
}
|
|
66
61
|
|
|
67
62
|
const logger = new Logger(module)
|
|
68
63
|
|
|
69
64
|
export class RandomGraphNode extends EventEmitter<Events> {
|
|
70
|
-
|
|
65
|
+
|
|
71
66
|
private started = false
|
|
72
67
|
private readonly duplicateDetectors: Map<string, DuplicateMessageDetector>
|
|
73
68
|
private config: StrictRandomGraphNodeConfig
|
|
74
|
-
private readonly
|
|
69
|
+
private readonly deliveryRpcLocal: IDeliveryRpc
|
|
75
70
|
private abortController: AbortController = new AbortController()
|
|
76
71
|
|
|
77
72
|
constructor(config: StrictRandomGraphNodeConfig) {
|
|
78
73
|
super()
|
|
79
74
|
this.config = config
|
|
80
75
|
this.duplicateDetectors = new Map()
|
|
81
|
-
this.
|
|
76
|
+
this.deliveryRpcLocal = new DeliveryRpcLocal({
|
|
82
77
|
ownPeerDescriptor: this.config.ownPeerDescriptor,
|
|
83
|
-
|
|
78
|
+
streamPartId: this.config.streamPartId,
|
|
84
79
|
rpcCommunicator: this.config.rpcCommunicator,
|
|
85
80
|
markAndCheckDuplicate: (msg: MessageID, prev?: MessageRef) => markAndCheckDuplicate(this.duplicateDetectors, msg, prev),
|
|
86
81
|
broadcast: (message: StreamMessage, previousNode?: NodeID) => this.broadcast(message, previousNode),
|
|
87
82
|
onLeaveNotice: (senderId: NodeID) => {
|
|
88
|
-
const contact = this.config.nearbyNodeView.
|
|
89
|
-
|| this.config.randomNodeView.
|
|
90
|
-
|| this.config.targetNeighbors.
|
|
91
|
-
|| this.config.
|
|
83
|
+
const contact = this.config.nearbyNodeView.get(senderId)
|
|
84
|
+
|| this.config.randomNodeView.get(senderId)
|
|
85
|
+
|| this.config.targetNeighbors.get(senderId)
|
|
86
|
+
|| this.config.proxyConnectionRpcLocal?.getConnection(senderId )?.remote
|
|
92
87
|
// TODO: check integrity of notifier?
|
|
93
88
|
if (contact) {
|
|
94
89
|
this.config.layer1.removeContact(contact.getPeerDescriptor(), true)
|
|
95
90
|
this.config.targetNeighbors.remove(contact.getPeerDescriptor())
|
|
96
91
|
this.config.nearbyNodeView.remove(contact.getPeerDescriptor())
|
|
97
|
-
this.config.connectionLocker.unlockConnection(contact.getPeerDescriptor(), this.config.
|
|
92
|
+
this.config.connectionLocker.unlockConnection(contact.getPeerDescriptor(), this.config.streamPartId)
|
|
98
93
|
this.config.neighborFinder.start([senderId])
|
|
99
|
-
this.config.
|
|
94
|
+
this.config.proxyConnectionRpcLocal?.removeConnection(senderId)
|
|
100
95
|
}
|
|
101
96
|
},
|
|
102
97
|
markForInspection: (senderId: NodeID, messageId: MessageID) => this.config.inspector.markMessage(senderId, messageId)
|
|
@@ -109,25 +104,25 @@ export class RandomGraphNode extends EventEmitter<Events> {
|
|
|
109
104
|
addManagedEventListener<any, any>(
|
|
110
105
|
this.config.layer1 as any,
|
|
111
106
|
'newContact',
|
|
112
|
-
(
|
|
107
|
+
(_peerDescriptor: PeerDescriptor, closestPeers: PeerDescriptor[]) => this.newContact(closestPeers),
|
|
113
108
|
this.abortController.signal
|
|
114
109
|
)
|
|
115
110
|
addManagedEventListener<any, any>(
|
|
116
111
|
this.config.layer1 as any,
|
|
117
112
|
'contactRemoved',
|
|
118
|
-
(
|
|
113
|
+
(_peerDescriptor: PeerDescriptor, closestPeers: PeerDescriptor[]) => this.removedContact(closestPeers),
|
|
119
114
|
this.abortController.signal
|
|
120
115
|
)
|
|
121
116
|
addManagedEventListener<any, any>(
|
|
122
117
|
this.config.layer1 as any,
|
|
123
118
|
'newRandomContact',
|
|
124
|
-
(
|
|
119
|
+
(_peerDescriptor: PeerDescriptor, randomPeers: PeerDescriptor[]) => this.newRandomContact(randomPeers),
|
|
125
120
|
this.abortController.signal
|
|
126
121
|
)
|
|
127
122
|
addManagedEventListener<any, any>(
|
|
128
123
|
this.config.layer1 as any,
|
|
129
124
|
'randomContactRemoved',
|
|
130
|
-
(
|
|
125
|
+
(_peerDescriptor: PeerDescriptor, randomPeers: PeerDescriptor[]) => this.removedRandomContact(randomPeers),
|
|
131
126
|
this.abortController.signal
|
|
132
127
|
)
|
|
133
128
|
addManagedEventListener<any, any>(
|
|
@@ -145,9 +140,9 @@ export class RandomGraphNode extends EventEmitter<Events> {
|
|
|
145
140
|
},
|
|
146
141
|
this.abortController.signal
|
|
147
142
|
)
|
|
148
|
-
if (this.config.
|
|
143
|
+
if (this.config.proxyConnectionRpcLocal !== undefined) {
|
|
149
144
|
addManagedEventListener(
|
|
150
|
-
this.config.
|
|
145
|
+
this.config.proxyConnectionRpcLocal,
|
|
151
146
|
'newConnection',
|
|
152
147
|
(id: NodeID) => this.config.propagation.onNeighborJoined(id),
|
|
153
148
|
this.abortController.signal
|
|
@@ -155,7 +150,7 @@ export class RandomGraphNode extends EventEmitter<Events> {
|
|
|
155
150
|
}
|
|
156
151
|
const candidates = this.getNeighborCandidatesFromLayer1()
|
|
157
152
|
if (candidates.length > 0) {
|
|
158
|
-
this.newContact(candidates
|
|
153
|
+
this.newContact(candidates)
|
|
159
154
|
}
|
|
160
155
|
this.config.neighborFinder.start()
|
|
161
156
|
await this.config.neighborUpdateManager.start()
|
|
@@ -163,16 +158,16 @@ export class RandomGraphNode extends EventEmitter<Events> {
|
|
|
163
158
|
|
|
164
159
|
private registerDefaultServerMethods(): void {
|
|
165
160
|
this.config.rpcCommunicator.registerRpcNotification(StreamMessage, 'sendStreamMessage',
|
|
166
|
-
(msg: StreamMessage, context) => this.
|
|
161
|
+
(msg: StreamMessage, context) => this.deliveryRpcLocal.sendStreamMessage(msg, context))
|
|
167
162
|
this.config.rpcCommunicator.registerRpcNotification(LeaveStreamPartNotice, 'leaveStreamPartNotice',
|
|
168
|
-
(req: LeaveStreamPartNotice, context) => this.
|
|
163
|
+
(req: LeaveStreamPartNotice, context) => this.deliveryRpcLocal.leaveStreamPartNotice(req, context))
|
|
169
164
|
this.config.rpcCommunicator.registerRpcMethod(TemporaryConnectionRequest, TemporaryConnectionResponse, 'openConnection',
|
|
170
|
-
(req: TemporaryConnectionRequest, context) => this.config.
|
|
165
|
+
(req: TemporaryConnectionRequest, context) => this.config.temporaryConnectionRpcLocal.openConnection(req, context))
|
|
171
166
|
}
|
|
172
167
|
|
|
173
|
-
private newContact(
|
|
168
|
+
private newContact(closestNodes: PeerDescriptor[]): void {
|
|
174
169
|
logger.trace(`New nearby contact found`)
|
|
175
|
-
if (this.
|
|
170
|
+
if (this.isStopped()) {
|
|
176
171
|
return
|
|
177
172
|
}
|
|
178
173
|
this.updateNearbyNodeView(closestNodes)
|
|
@@ -181,9 +176,9 @@ export class RandomGraphNode extends EventEmitter<Events> {
|
|
|
181
176
|
}
|
|
182
177
|
}
|
|
183
178
|
|
|
184
|
-
private removedContact(
|
|
179
|
+
private removedContact(closestNodes: PeerDescriptor[]): void {
|
|
185
180
|
logger.trace(`Nearby contact removed`)
|
|
186
|
-
if (this.
|
|
181
|
+
if (this.isStopped()) {
|
|
187
182
|
return
|
|
188
183
|
}
|
|
189
184
|
this.updateNearbyNodeView(closestNodes)
|
|
@@ -191,11 +186,11 @@ export class RandomGraphNode extends EventEmitter<Events> {
|
|
|
191
186
|
|
|
192
187
|
private updateNearbyNodeView(nodes: PeerDescriptor[]) {
|
|
193
188
|
this.config.nearbyNodeView.replaceAll(Array.from(nodes).map((descriptor) =>
|
|
194
|
-
new
|
|
189
|
+
new DeliveryRpcRemote(
|
|
195
190
|
this.config.ownPeerDescriptor,
|
|
196
191
|
descriptor,
|
|
197
|
-
this.config.
|
|
198
|
-
toProtoRpcClient(new
|
|
192
|
+
this.config.streamPartId,
|
|
193
|
+
toProtoRpcClient(new DeliveryRpcClient(this.config.rpcCommunicator.getRpcClientTransport()))
|
|
199
194
|
)
|
|
200
195
|
))
|
|
201
196
|
for (const descriptor of this.config.layer1.getKBucketPeers()) {
|
|
@@ -203,26 +198,26 @@ export class RandomGraphNode extends EventEmitter<Events> {
|
|
|
203
198
|
break
|
|
204
199
|
}
|
|
205
200
|
this.config.nearbyNodeView.add(
|
|
206
|
-
new
|
|
201
|
+
new DeliveryRpcRemote(
|
|
207
202
|
this.config.ownPeerDescriptor,
|
|
208
203
|
descriptor,
|
|
209
|
-
this.config.
|
|
210
|
-
toProtoRpcClient(new
|
|
204
|
+
this.config.streamPartId,
|
|
205
|
+
toProtoRpcClient(new DeliveryRpcClient(this.config.rpcCommunicator.getRpcClientTransport()))
|
|
211
206
|
)
|
|
212
207
|
)
|
|
213
208
|
}
|
|
214
209
|
}
|
|
215
210
|
|
|
216
|
-
private newRandomContact(
|
|
217
|
-
if (this.
|
|
211
|
+
private newRandomContact(randomNodes: PeerDescriptor[]): void {
|
|
212
|
+
if (this.isStopped()) {
|
|
218
213
|
return
|
|
219
214
|
}
|
|
220
215
|
this.config.randomNodeView.replaceAll(randomNodes.map((descriptor) =>
|
|
221
|
-
new
|
|
216
|
+
new DeliveryRpcRemote(
|
|
222
217
|
this.config.ownPeerDescriptor,
|
|
223
218
|
descriptor,
|
|
224
|
-
this.config.
|
|
225
|
-
toProtoRpcClient(new
|
|
219
|
+
this.config.streamPartId,
|
|
220
|
+
toProtoRpcClient(new DeliveryRpcClient(this.config.rpcCommunicator.getRpcClientTransport()))
|
|
226
221
|
)
|
|
227
222
|
))
|
|
228
223
|
if (this.config.targetNeighbors.size() < this.config.numOfTargetNeighbors) {
|
|
@@ -230,17 +225,17 @@ export class RandomGraphNode extends EventEmitter<Events> {
|
|
|
230
225
|
}
|
|
231
226
|
}
|
|
232
227
|
|
|
233
|
-
private removedRandomContact(
|
|
228
|
+
private removedRandomContact(randomNodes: PeerDescriptor[]): void {
|
|
234
229
|
logger.trace(`New nearby contact found`)
|
|
235
|
-
if (this.
|
|
230
|
+
if (this.isStopped()) {
|
|
236
231
|
return
|
|
237
232
|
}
|
|
238
233
|
this.config.randomNodeView.replaceAll(randomNodes.map((descriptor) =>
|
|
239
|
-
new
|
|
234
|
+
new DeliveryRpcRemote(
|
|
240
235
|
this.config.ownPeerDescriptor,
|
|
241
236
|
descriptor,
|
|
242
|
-
this.config.
|
|
243
|
-
toProtoRpcClient(new
|
|
237
|
+
this.config.streamPartId,
|
|
238
|
+
toProtoRpcClient(new DeliveryRpcClient(this.config.rpcCommunicator.getRpcClientTransport()))
|
|
244
239
|
)
|
|
245
240
|
))
|
|
246
241
|
}
|
|
@@ -248,16 +243,16 @@ export class RandomGraphNode extends EventEmitter<Events> {
|
|
|
248
243
|
private onNodeDisconnected(peerDescriptor: PeerDescriptor): void {
|
|
249
244
|
if (this.config.targetNeighbors.hasNode(peerDescriptor)) {
|
|
250
245
|
this.config.targetNeighbors.remove(peerDescriptor)
|
|
251
|
-
this.config.connectionLocker.unlockConnection(peerDescriptor, this.config.
|
|
246
|
+
this.config.connectionLocker.unlockConnection(peerDescriptor, this.config.streamPartId)
|
|
252
247
|
this.config.neighborFinder.start([getNodeIdFromPeerDescriptor(peerDescriptor)])
|
|
253
|
-
this.config.
|
|
248
|
+
this.config.temporaryConnectionRpcLocal.removeNode(peerDescriptor)
|
|
254
249
|
}
|
|
255
250
|
}
|
|
256
251
|
|
|
257
252
|
private getNeighborCandidatesFromLayer1(): PeerDescriptor[] {
|
|
258
253
|
const uniqueNodes = new Set<PeerDescriptor>()
|
|
259
|
-
this.config.layer1.
|
|
260
|
-
uniqueNodes.add(
|
|
254
|
+
this.config.layer1.getClosestContacts(this.config.nodeViewSize).forEach((peer: PeerDescriptor) => {
|
|
255
|
+
uniqueNodes.add(peer)
|
|
261
256
|
})
|
|
262
257
|
this.config.layer1.getKBucketPeers().forEach((peer: PeerDescriptor) => {
|
|
263
258
|
uniqueNodes.add(peer)
|
|
@@ -265,9 +260,9 @@ export class RandomGraphNode extends EventEmitter<Events> {
|
|
|
265
260
|
return Array.from(uniqueNodes)
|
|
266
261
|
}
|
|
267
262
|
|
|
268
|
-
|
|
269
|
-
if (this.config.
|
|
270
|
-
return this.config.
|
|
263
|
+
hasProxyConnection(nodeId: NodeID): boolean {
|
|
264
|
+
if (this.config.proxyConnectionRpcLocal) {
|
|
265
|
+
return this.config.proxyConnectionRpcLocal.hasConnection(nodeId)
|
|
271
266
|
}
|
|
272
267
|
return false
|
|
273
268
|
}
|
|
@@ -276,10 +271,9 @@ export class RandomGraphNode extends EventEmitter<Events> {
|
|
|
276
271
|
if (!this.started) {
|
|
277
272
|
return
|
|
278
273
|
}
|
|
279
|
-
this.stopped = true
|
|
280
274
|
this.abortController.abort()
|
|
281
|
-
this.config.
|
|
282
|
-
this.config.targetNeighbors.
|
|
275
|
+
this.config.proxyConnectionRpcLocal?.stop()
|
|
276
|
+
this.config.targetNeighbors.getAll().map((remote) => remote.leaveStreamPartNotice())
|
|
283
277
|
this.config.rpcCommunicator.stop()
|
|
284
278
|
this.removeAllListeners()
|
|
285
279
|
this.config.nearbyNodeView.stop()
|
|
@@ -304,11 +298,11 @@ export class RandomGraphNode extends EventEmitter<Events> {
|
|
|
304
298
|
|
|
305
299
|
private getPropagationTargets(msg: StreamMessage): NodeID[] {
|
|
306
300
|
let propagationTargets = this.config.targetNeighbors.getIds()
|
|
307
|
-
if (this.config.
|
|
308
|
-
propagationTargets = propagationTargets.concat(this.config.
|
|
301
|
+
if (this.config.proxyConnectionRpcLocal) {
|
|
302
|
+
propagationTargets = propagationTargets.concat(this.config.proxyConnectionRpcLocal!.getPropagationTargets(msg))
|
|
309
303
|
}
|
|
310
304
|
propagationTargets = propagationTargets.filter((target) => !this.config.inspector.isInspected(target ))
|
|
311
|
-
propagationTargets = propagationTargets.concat(this.config.
|
|
305
|
+
propagationTargets = propagationTargets.concat(this.config.temporaryConnectionRpcLocal.getNodes().getIds())
|
|
312
306
|
return propagationTargets
|
|
313
307
|
}
|
|
314
308
|
|
|
@@ -321,7 +315,7 @@ export class RandomGraphNode extends EventEmitter<Events> {
|
|
|
321
315
|
}
|
|
322
316
|
|
|
323
317
|
getTargetNeighborIds(): NodeID[] {
|
|
324
|
-
if (!this.started && this.
|
|
318
|
+
if (!this.started && this.isStopped()) {
|
|
325
319
|
return []
|
|
326
320
|
}
|
|
327
321
|
return this.config.targetNeighbors.getIds()
|
|
@@ -330,4 +324,8 @@ export class RandomGraphNode extends EventEmitter<Events> {
|
|
|
330
324
|
getNearbyNodeView(): NodeList {
|
|
331
325
|
return this.config.nearbyNodeView
|
|
332
326
|
}
|
|
327
|
+
|
|
328
|
+
private isStopped() {
|
|
329
|
+
return this.abortController.signal.aborted
|
|
330
|
+
}
|
|
333
331
|
}
|