@streamr/trackerless-network 0.0.1-tatum.6 → 0.0.1-tatum.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/package.json +10 -8
- package/dist/src/NetworkNode.js +2 -2
- package/dist/src/NetworkNode.js.map +1 -1
- package/dist/src/NetworkStack.d.ts +5 -6
- package/dist/src/NetworkStack.js +27 -56
- 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} +10 -12
- package/dist/src/logic/{StreamPartEntryPointDiscovery.js → EntryPointDiscovery.js} +18 -40
- package/dist/src/logic/EntryPointDiscovery.js.map +1 -0
- package/dist/src/logic/Layer0Node.d.ts +14 -0
- 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/NodeList.d.ts +10 -10
- package/dist/src/logic/NodeList.js.map +1 -1
- package/dist/src/logic/RandomGraphNode.d.ts +11 -15
- package/dist/src/logic/RandomGraphNode.js +46 -45
- package/dist/src/logic/RandomGraphNode.js.map +1 -1
- package/dist/src/logic/StreamrNode.d.ts +15 -18
- package/dist/src/logic/StreamrNode.js +78 -87
- 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} +7 -10
- package/dist/src/logic/proxy/{ProxyStreamConnectionClient.js → ProxyClient.js} +24 -22
- 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.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 -118
- package/dist/src/proto/packages/dht/protos/DhtRpc.js +50 -49
- 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/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 +16 -17
- package/dist/test/benchmark/first-message.js.map +1 -1
- package/dist/test/utils/utils.d.ts +7 -6
- package/dist/test/utils/utils.js +18 -17
- package/dist/test/utils/utils.js.map +1 -1
- package/package.json +10 -8
- package/protos/NetworkRpc.proto +5 -5
- package/src/NetworkNode.ts +2 -2
- package/src/NetworkStack.ts +31 -72
- 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} +24 -48
- package/src/logic/Layer0Node.ts +15 -0
- package/src/logic/{ILayer1.ts → Layer1Node.ts} +5 -5
- package/src/logic/NodeList.ts +12 -12
- package/src/logic/RandomGraphNode.ts +73 -74
- package/src/logic/StreamrNode.ts +90 -103
- 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} +29 -29
- 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.client.ts +13 -0
- package/src/proto/packages/dht/protos/DhtRpc.server.ts +6 -0
- package/src/proto/packages/dht/protos/DhtRpc.ts +88 -166
- 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 +19 -20
- package/test/end-to-end/inspect.test.ts +12 -12
- package/test/end-to-end/proxy-and-full-node.test.ts +17 -18
- 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 +27 -22
- 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 +4 -3
- 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 +14 -13
- package/test/integration/RandomGraphNode-Layer1Node-Latencies.test.ts +23 -20
- package/test/integration/RandomGraphNode-Layer1Node.test.ts +30 -29
- package/test/integration/StreamrNode.test.ts +16 -13
- package/test/integration/joining-streams-on-offline-peers.test.ts +16 -18
- package/test/integration/stream-without-default-entrypoints.test.ts +12 -14
- package/test/unit/{StreamNodeServer.test.ts → DeliveryRpcLocal.test.ts} +8 -8
- package/test/unit/{StreamPartEntrypointDiscovery.test.ts → EntrypointDiscovery.test.ts} +27 -44
- 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 +15 -13
- package/test/unit/StreamMessageTranslator.test.ts +10 -9
- package/test/unit/StreamrNode.test.ts +10 -10
- package/test/utils/mock/{MockLayer0.ts → MockLayer0Node.ts} +23 -26
- package/test/utils/mock/{MockLayer1.ts → MockLayer1Node.ts} +5 -10
- 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 +18 -16
- package/dist/src/logic/ILayer0.d.ts +0 -13
- package/dist/src/logic/ILayer0.js.map +0 -1
- package/dist/src/logic/ILayer1.js.map +0 -1
- 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
- package/src/logic/ILayer0.ts +0 -14
|
@@ -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
|
-
import {
|
|
33
|
+
import { Layer1Node } from './Layer1Node'
|
|
34
|
+
import { StreamPartID } from '@streamr/protocol'
|
|
34
35
|
|
|
35
36
|
export interface Events {
|
|
36
37
|
message: (message: StreamMessage) => void
|
|
@@ -38,9 +39,9 @@ export interface Events {
|
|
|
38
39
|
}
|
|
39
40
|
|
|
40
41
|
export interface StrictRandomGraphNodeConfig {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
42
|
+
streamPartId: StreamPartID
|
|
43
|
+
layer1Node: Layer1Node
|
|
44
|
+
transport: ITransport
|
|
44
45
|
connectionLocker: ConnectionLocker
|
|
45
46
|
ownPeerDescriptor: PeerDescriptor
|
|
46
47
|
nodeViewSize: number
|
|
@@ -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
|
-
this.config.
|
|
89
|
+
this.config.layer1Node.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)
|
|
@@ -106,31 +102,31 @@ export class RandomGraphNode extends EventEmitter<Events> {
|
|
|
106
102
|
this.started = true
|
|
107
103
|
this.registerDefaultServerMethods()
|
|
108
104
|
addManagedEventListener<any, any>(
|
|
109
|
-
this.config.
|
|
105
|
+
this.config.layer1Node 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
|
-
this.config.
|
|
111
|
+
this.config.layer1Node 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
|
-
this.config.
|
|
117
|
+
this.config.layer1Node 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
|
-
this.config.
|
|
123
|
+
this.config.layer1Node 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>(
|
|
133
|
-
this.config.
|
|
129
|
+
this.config.transport as any,
|
|
134
130
|
'disconnected',
|
|
135
131
|
(peerDescriptor: PeerDescriptor) => this.onNodeDisconnected(peerDescriptor),
|
|
136
132
|
this.abortController.signal
|
|
@@ -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,38 +186,38 @@ 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
|
-
for (const descriptor of this.config.
|
|
196
|
+
for (const descriptor of this.config.layer1Node.getKBucketPeers()) {
|
|
201
197
|
if (this.config.nearbyNodeView.size() >= this.config.nodeViewSize) {
|
|
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,26 +243,26 @@ 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
|
|
|
256
252
|
private getNeighborCandidatesFromLayer1(): PeerDescriptor[] {
|
|
257
253
|
const uniqueNodes = new Set<PeerDescriptor>()
|
|
258
|
-
this.config.
|
|
254
|
+
this.config.layer1Node.getClosestContacts(this.config.nodeViewSize).forEach((peer: PeerDescriptor) => {
|
|
259
255
|
uniqueNodes.add(peer)
|
|
260
256
|
})
|
|
261
|
-
this.config.
|
|
257
|
+
this.config.layer1Node.getKBucketPeers().forEach((peer: PeerDescriptor) => {
|
|
262
258
|
uniqueNodes.add(peer)
|
|
263
259
|
})
|
|
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
|
}
|