@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
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { ListeningRpcCommunicator, PeerDescriptor } from '@streamr/dht';
|
|
2
2
|
import { INeighborFinder } from './NeighborFinder';
|
|
3
3
|
import { NodeList } from '../NodeList';
|
|
4
|
+
import { StreamPartID } from '@streamr/protocol';
|
|
4
5
|
interface NeighborUpdateManagerConfig {
|
|
5
6
|
ownPeerDescriptor: PeerDescriptor;
|
|
6
7
|
targetNeighbors: NodeList;
|
|
7
8
|
nearbyNodeView: NodeList;
|
|
8
9
|
neighborFinder: INeighborFinder;
|
|
9
|
-
|
|
10
|
+
streamPartId: StreamPartID;
|
|
10
11
|
rpcCommunicator: ListeningRpcCommunicator;
|
|
11
12
|
neighborUpdateInterval: number;
|
|
12
13
|
}
|
|
@@ -18,7 +19,7 @@ export declare class NeighborUpdateManager implements INeighborUpdateManager {
|
|
|
18
19
|
private readonly abortController;
|
|
19
20
|
private readonly config;
|
|
20
21
|
private readonly client;
|
|
21
|
-
private readonly
|
|
22
|
+
private readonly rpcLocal;
|
|
22
23
|
constructor(config: NeighborUpdateManagerConfig);
|
|
23
24
|
start(): Promise<void>;
|
|
24
25
|
stop(): void;
|
|
@@ -5,17 +5,17 @@ const NetworkRpc_1 = require("../../proto/packages/trackerless-network/protos/Ne
|
|
|
5
5
|
const proto_rpc_1 = require("@streamr/proto-rpc");
|
|
6
6
|
const NetworkRpc_client_1 = require("../../proto/packages/trackerless-network/protos/NetworkRpc.client");
|
|
7
7
|
const utils_1 = require("@streamr/utils");
|
|
8
|
-
const
|
|
9
|
-
const
|
|
8
|
+
const NeighborUpdateRpcRemote_1 = require("./NeighborUpdateRpcRemote");
|
|
9
|
+
const NeighborUpdateRpcLocal_1 = require("./NeighborUpdateRpcLocal");
|
|
10
10
|
const identifiers_1 = require("../../identifiers");
|
|
11
11
|
const logger = new utils_1.Logger(module);
|
|
12
12
|
class NeighborUpdateManager {
|
|
13
13
|
constructor(config) {
|
|
14
14
|
this.abortController = new AbortController();
|
|
15
15
|
this.client = (0, proto_rpc_1.toProtoRpcClient)(new NetworkRpc_client_1.NeighborUpdateRpcClient(config.rpcCommunicator.getRpcClientTransport()));
|
|
16
|
-
this.
|
|
16
|
+
this.rpcLocal = new NeighborUpdateRpcLocal_1.NeighborUpdateRpcLocal(config);
|
|
17
17
|
this.config = config;
|
|
18
|
-
this.config.rpcCommunicator.registerRpcMethod(NetworkRpc_1.NeighborUpdate, NetworkRpc_1.NeighborUpdate, 'neighborUpdate', (req, context) => this.
|
|
18
|
+
this.config.rpcCommunicator.registerRpcMethod(NetworkRpc_1.NeighborUpdate, NetworkRpc_1.NeighborUpdate, 'neighborUpdate', (req, context) => this.rpcLocal.neighborUpdate(req, context));
|
|
19
19
|
}
|
|
20
20
|
async start() {
|
|
21
21
|
await (0, utils_1.scheduleAtInterval)(() => this.updateNeighborInfo(), this.config.neighborUpdateInterval, false, this.abortController.signal);
|
|
@@ -35,7 +35,7 @@ class NeighborUpdateManager {
|
|
|
35
35
|
}));
|
|
36
36
|
}
|
|
37
37
|
createRemote(targetPeerDescriptor) {
|
|
38
|
-
return new
|
|
38
|
+
return new NeighborUpdateRpcRemote_1.NeighborUpdateRpcRemote(this.config.ownPeerDescriptor, targetPeerDescriptor, this.config.streamPartId, this.client);
|
|
39
39
|
}
|
|
40
40
|
}
|
|
41
41
|
exports.NeighborUpdateManager = NeighborUpdateManager;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NeighborUpdateManager.js","sourceRoot":"","sources":["../../../../src/logic/neighbor-discovery/NeighborUpdateManager.ts"],"names":[],"mappings":";;;AAAA,2FAA2F;AAE3F,kDAAqE;AACrE,yGAA2G;AAC3G,0CAA2D;AAG3D
|
|
1
|
+
{"version":3,"file":"NeighborUpdateManager.js","sourceRoot":"","sources":["../../../../src/logic/neighbor-discovery/NeighborUpdateManager.ts"],"names":[],"mappings":";;;AAAA,2FAA2F;AAE3F,kDAAqE;AACrE,yGAA2G;AAC3G,0CAA2D;AAG3D,uEAAmE;AACnE,qEAAiE;AACjE,mDAA+D;AAa/D,MAAM,MAAM,GAAG,IAAI,cAAM,CAAC,MAAM,CAAC,CAAA;AAOjC,MAAa,qBAAqB;IAO9B,YAAY,MAAmC;QAC3C,IAAI,CAAC,eAAe,GAAG,IAAI,eAAe,EAAE,CAAA;QAC5C,IAAI,CAAC,MAAM,GAAG,IAAA,4BAAgB,EAAC,IAAI,2CAAuB,CAAC,MAAM,CAAC,eAAe,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAA;QAC3G,IAAI,CAAC,QAAQ,GAAG,IAAI,+CAAsB,CAAC,MAAM,CAAC,CAAA;QAClD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,iBAAiB,CAAC,2BAAc,EAAE,2BAAc,EAAE,gBAAgB,EAC1F,CAAC,GAAmB,EAAE,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAA;IACrF,CAAC;IAED,KAAK,CAAC,KAAK;QACP,MAAM,IAAA,0BAAkB,EAAC,GAAG,EAAE,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,sBAAsB,EAAE,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAA;IACrI,CAAC;IAED,IAAI;QACA,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAA;IAChC,CAAC;IAEO,KAAK,CAAC,kBAAkB;QAC5B,MAAM,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAA;QAC/C,MAAM,mBAAmB,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,iBAAiB,EAAE,CAAC,CAAA;QAChH,MAAM,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE;YACjF,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,iBAAiB,EAAE,CAAC,CAAC,eAAe,CAAC,mBAAmB,CAAC,CAAA;YACtG,IAAI,GAAG,CAAC,QAAQ,EAAE;gBACd,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,iBAAiB,EAAE,CAAC,CAAA;gBAChE,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,IAAA,yCAA2B,EAAC,QAAQ,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,CAAA;aAChG;QACL,CAAC,CAAC,CAAC,CAAA;IACP,CAAC;IAEO,YAAY,CAAC,oBAAoC;QACrD,OAAO,IAAI,iDAAuB,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;IAClI,CAAC;CACJ;AAvCD,sDAuCC"}
|
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
import { ServerCallContext } from '@protobuf-ts/runtime-rpc';
|
|
2
|
-
import { ListeningRpcCommunicator } from '@streamr/dht';
|
|
3
|
-
import { PeerDescriptor } from '@streamr/dht/src/exports';
|
|
2
|
+
import { ListeningRpcCommunicator, PeerDescriptor } from '@streamr/dht';
|
|
4
3
|
import { NeighborUpdate } from '../../proto/packages/trackerless-network/protos/NetworkRpc';
|
|
5
4
|
import { INeighborUpdateRpc } from '../../proto/packages/trackerless-network/protos/NetworkRpc.server';
|
|
6
5
|
import { NodeList } from '../NodeList';
|
|
7
6
|
import { INeighborFinder } from './NeighborFinder';
|
|
8
|
-
|
|
7
|
+
import { StreamPartID } from '@streamr/protocol';
|
|
8
|
+
interface NeighborUpdateRpcLocalConfig {
|
|
9
9
|
ownPeerDescriptor: PeerDescriptor;
|
|
10
|
-
|
|
10
|
+
streamPartId: StreamPartID;
|
|
11
11
|
targetNeighbors: NodeList;
|
|
12
12
|
nearbyNodeView: NodeList;
|
|
13
13
|
neighborFinder: INeighborFinder;
|
|
14
14
|
rpcCommunicator: ListeningRpcCommunicator;
|
|
15
15
|
}
|
|
16
|
-
export declare class
|
|
16
|
+
export declare class NeighborUpdateRpcLocal implements INeighborUpdateRpc {
|
|
17
17
|
private readonly config;
|
|
18
|
-
constructor(config:
|
|
18
|
+
constructor(config: NeighborUpdateRpcLocalConfig);
|
|
19
19
|
neighborUpdate(message: NeighborUpdate, context: ServerCallContext): Promise<NeighborUpdate>;
|
|
20
20
|
}
|
|
21
21
|
export {};
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.NeighborUpdateRpcLocal = void 0;
|
|
4
4
|
const proto_rpc_1 = require("@streamr/proto-rpc");
|
|
5
5
|
const identifiers_1 = require("../../identifiers");
|
|
6
6
|
const NetworkRpc_client_1 = require("../../proto/packages/trackerless-network/protos/NetworkRpc.client");
|
|
7
|
-
const
|
|
8
|
-
class
|
|
7
|
+
const DeliveryRpcRemote_1 = require("../DeliveryRpcRemote");
|
|
8
|
+
class NeighborUpdateRpcLocal {
|
|
9
9
|
constructor(config) {
|
|
10
10
|
this.config = config;
|
|
11
11
|
}
|
|
12
|
-
//
|
|
12
|
+
// INeighborUpdateRpc server method
|
|
13
13
|
async neighborUpdate(message, context) {
|
|
14
14
|
const senderPeerDescriptor = context.incomingSourceDescriptor;
|
|
15
15
|
const senderId = (0, identifiers_1.getNodeIdFromPeerDescriptor)(senderPeerDescriptor);
|
|
@@ -20,10 +20,10 @@ class NeighborUpdateManagerServer {
|
|
|
20
20
|
const ownNodeId = (0, identifiers_1.getNodeIdFromPeerDescriptor)(this.config.ownPeerDescriptor);
|
|
21
21
|
return nodeId !== ownNodeId && !this.config.targetNeighbors.getIds().includes(nodeId);
|
|
22
22
|
});
|
|
23
|
-
newPeerDescriptors.forEach((peerDescriptor) => this.config.nearbyNodeView.add(new
|
|
23
|
+
newPeerDescriptors.forEach((peerDescriptor) => this.config.nearbyNodeView.add(new DeliveryRpcRemote_1.DeliveryRpcRemote(this.config.ownPeerDescriptor, peerDescriptor, this.config.streamPartId, (0, proto_rpc_1.toProtoRpcClient)(new NetworkRpc_client_1.DeliveryRpcClient(this.config.rpcCommunicator.getRpcClientTransport())))));
|
|
24
24
|
this.config.neighborFinder.start();
|
|
25
25
|
const response = {
|
|
26
|
-
|
|
26
|
+
streamPartId: this.config.streamPartId,
|
|
27
27
|
neighborDescriptors: this.config.targetNeighbors.getAll().map((neighbor) => neighbor.getPeerDescriptor()),
|
|
28
28
|
removeMe: false
|
|
29
29
|
};
|
|
@@ -31,7 +31,7 @@ class NeighborUpdateManagerServer {
|
|
|
31
31
|
}
|
|
32
32
|
else {
|
|
33
33
|
const response = {
|
|
34
|
-
|
|
34
|
+
streamPartId: this.config.streamPartId,
|
|
35
35
|
neighborDescriptors: this.config.targetNeighbors.getAll().map((neighbor) => neighbor.getPeerDescriptor()),
|
|
36
36
|
removeMe: true
|
|
37
37
|
};
|
|
@@ -39,5 +39,5 @@ class NeighborUpdateManagerServer {
|
|
|
39
39
|
}
|
|
40
40
|
}
|
|
41
41
|
}
|
|
42
|
-
exports.
|
|
43
|
-
//# sourceMappingURL=
|
|
42
|
+
exports.NeighborUpdateRpcLocal = NeighborUpdateRpcLocal;
|
|
43
|
+
//# sourceMappingURL=NeighborUpdateRpcLocal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NeighborUpdateRpcLocal.js","sourceRoot":"","sources":["../../../../src/logic/neighbor-discovery/NeighborUpdateRpcLocal.ts"],"names":[],"mappings":";;;AAEA,kDAAqD;AACrD,mDAA+D;AAE/D,yGAAqG;AAGrG,4DAAwD;AAaxD,MAAa,sBAAsB;IAI/B,YAAY,MAAoC;QAC5C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACxB,CAAC;IAED,mCAAmC;IACnC,KAAK,CAAC,cAAc,CAAC,OAAuB,EAAE,OAA0B;QACpE,MAAM,oBAAoB,GAAI,OAA0B,CAAC,wBAAyB,CAAA;QAClF,MAAM,QAAQ,GAAG,IAAA,yCAA2B,EAAC,oBAAoB,CAAC,CAAA;QAClE,IAAI,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE;YACnD,MAAM,kBAAkB,GAAG,OAAO,CAAC,mBAAmB;iBACjD,MAAM,CAAC,CAAC,cAAc,EAAE,EAAE;gBACvB,MAAM,MAAM,GAAG,IAAA,yCAA2B,EAAC,cAAc,CAAC,CAAA;gBAC1D,MAAM,SAAS,GAAG,IAAA,yCAA2B,EAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAA;gBAC5E,OAAO,MAAM,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;YACzF,CAAC,CAAC,CAAA;YACN,kBAAkB,CAAC,OAAO,CAAC,CAAC,cAAc,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,CACzE,IAAI,qCAAiB,CACjB,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAC7B,cAAc,EACd,IAAI,CAAC,MAAM,CAAC,YAAY,EACxB,IAAA,4BAAgB,EAAC,IAAI,qCAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAC/F,CAAC,CACL,CAAA;YACD,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,CAAA;YAClC,MAAM,QAAQ,GAAmB;gBAC7B,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY;gBACtC,mBAAmB,EAAE,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,iBAAiB,EAAE,CAAC;gBACzG,QAAQ,EAAE,KAAK;aAClB,CAAA;YACD,OAAO,QAAQ,CAAA;SAClB;aAAM;YACH,MAAM,QAAQ,GAAmB;gBAC7B,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY;gBACtC,mBAAmB,EAAE,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,iBAAiB,EAAE,CAAC;gBACzG,QAAQ,EAAE,IAAI;aACjB,CAAA;YACD,OAAO,QAAQ,CAAA;SAClB;IACL,CAAC;CACJ;AA3CD,wDA2CC"}
|
|
@@ -4,7 +4,7 @@ interface UpdateNeighborsResponse {
|
|
|
4
4
|
peerDescriptors: PeerDescriptor[];
|
|
5
5
|
removeMe: boolean;
|
|
6
6
|
}
|
|
7
|
-
export declare class
|
|
7
|
+
export declare class NeighborUpdateRpcRemote extends Remote<INeighborUpdateRpcClient> {
|
|
8
8
|
updateNeighbors(neighbors: PeerDescriptor[]): Promise<UpdateNeighborsResponse>;
|
|
9
9
|
}
|
|
10
10
|
export {};
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.NeighborUpdateRpcRemote = void 0;
|
|
4
4
|
const dht_1 = require("@streamr/dht");
|
|
5
5
|
const utils_1 = require("@streamr/utils");
|
|
6
6
|
const identifiers_1 = require("../../identifiers");
|
|
7
7
|
const logger = new utils_1.Logger(module);
|
|
8
|
-
class
|
|
8
|
+
class NeighborUpdateRpcRemote extends dht_1.Remote {
|
|
9
9
|
async updateNeighbors(neighbors) {
|
|
10
10
|
const request = {
|
|
11
|
-
|
|
11
|
+
streamPartId: this.getServiceId(),
|
|
12
12
|
neighborDescriptors: neighbors,
|
|
13
13
|
removeMe: false
|
|
14
14
|
};
|
|
@@ -28,5 +28,5 @@ class RemoteNeighborUpdateManager extends dht_1.Remote {
|
|
|
28
28
|
}
|
|
29
29
|
}
|
|
30
30
|
}
|
|
31
|
-
exports.
|
|
32
|
-
//# sourceMappingURL=
|
|
31
|
+
exports.NeighborUpdateRpcRemote = NeighborUpdateRpcRemote;
|
|
32
|
+
//# sourceMappingURL=NeighborUpdateRpcRemote.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NeighborUpdateRpcRemote.js","sourceRoot":"","sources":["../../../../src/logic/neighbor-discovery/NeighborUpdateRpcRemote.ts"],"names":[],"mappings":";;;AAAA,sCAAqD;AACrD,0CAAuC;AACvC,mDAA+D;AAI/D,MAAM,MAAM,GAAG,IAAI,cAAM,CAAC,MAAM,CAAC,CAAA;AAOjC,MAAa,uBAAwB,SAAQ,YAAgC;IAEzE,KAAK,CAAC,eAAe,CAAC,SAA2B;QAC7C,MAAM,OAAO,GAAmB;YAC5B,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE;YACjC,mBAAmB,EAAE,SAAS;YAC9B,QAAQ,EAAE,KAAK;SAClB,CAAA;QACD,IAAI;YACA,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAA;YACzF,OAAO;gBACH,eAAe,EAAE,QAAQ,CAAC,mBAAmB;gBAC7C,QAAQ,EAAE,QAAQ,CAAC,QAAQ;aAC9B,CAAA;SACJ;QAAC,OAAO,GAAQ,EAAE;YACf,MAAM,CAAC,KAAK,CAAC,sBAAsB,IAAA,yCAA2B,EAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,YAAY,GAAG,EAAE,CAAC,CAAA;YAC1G,OAAO;gBACH,eAAe,EAAE,EAAE;gBACnB,QAAQ,EAAE,IAAI;aACjB,CAAA;SACJ;IACL,CAAC;CACJ;AAtBD,0DAsBC"}
|
|
@@ -35,8 +35,8 @@ class Propagation {
|
|
|
35
35
|
* Node should invoke this when it learns about a new node stream assignment
|
|
36
36
|
*/
|
|
37
37
|
onNeighborJoined(neighborId) {
|
|
38
|
-
const
|
|
39
|
-
for (const task of
|
|
38
|
+
const tasks = this.activeTaskStore.get();
|
|
39
|
+
for (const task of tasks) {
|
|
40
40
|
this.sendAndAwaitThenMark(task, neighborId);
|
|
41
41
|
}
|
|
42
42
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Propagation.js","sourceRoot":"","sources":["../../../../src/logic/propagation/Propagation.ts"],"names":[],"mappings":";;;AAEA,iEAA8E;AAW9E,MAAM,oBAAoB,GAAG,GAAG,CAAA;AAChC,MAAM,WAAW,GAAG,EAAE,GAAG,IAAI,CAAA;AAE7B;;;;;;GAMG;AAEH,MAAa,WAAW;IAKpB,YAAY,EACR,cAAc,EACd,qBAAqB,EACrB,GAAG,GAAG,WAAW,EACjB,WAAW,GAAG,oBAAoB,EACjB;QACjB,IAAI,CAAC,cAAc,GAAG,cAAc,CAAA;QACpC,IAAI,CAAC,qBAAqB,GAAG,qBAAqB,CAAA;QAClD,IAAI,CAAC,eAAe,GAAG,IAAI,2CAAoB,CAAC,GAAG,EAAE,WAAW,CAAC,CAAA;IACrE,CAAC;IAED;;OAEG;IACH,iBAAiB,CAAC,OAAsB,EAAE,OAAiB,EAAE,MAAqB;QAC9E,MAAM,IAAI,GAAG;YACT,OAAO;YACP,MAAM;YACN,gBAAgB,EAAE,IAAI,GAAG,EAAU;SACtC,CAAA;QACD,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAC9B,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;YAC1B,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;SAC1C;IACL,CAAC;IAED;;OAEG;IACH,gBAAgB,CAAC,UAAkB;QAC/B,MAAM,
|
|
1
|
+
{"version":3,"file":"Propagation.js","sourceRoot":"","sources":["../../../../src/logic/propagation/Propagation.ts"],"names":[],"mappings":";;;AAEA,iEAA8E;AAW9E,MAAM,oBAAoB,GAAG,GAAG,CAAA;AAChC,MAAM,WAAW,GAAG,EAAE,GAAG,IAAI,CAAA;AAE7B;;;;;;GAMG;AAEH,MAAa,WAAW;IAKpB,YAAY,EACR,cAAc,EACd,qBAAqB,EACrB,GAAG,GAAG,WAAW,EACjB,WAAW,GAAG,oBAAoB,EACjB;QACjB,IAAI,CAAC,cAAc,GAAG,cAAc,CAAA;QACpC,IAAI,CAAC,qBAAqB,GAAG,qBAAqB,CAAA;QAClD,IAAI,CAAC,eAAe,GAAG,IAAI,2CAAoB,CAAC,GAAG,EAAE,WAAW,CAAC,CAAA;IACrE,CAAC;IAED;;OAEG;IACH,iBAAiB,CAAC,OAAsB,EAAE,OAAiB,EAAE,MAAqB;QAC9E,MAAM,IAAI,GAAG;YACT,OAAO;YACP,MAAM;YACN,gBAAgB,EAAE,IAAI,GAAG,EAAU;SACtC,CAAA;QACD,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAC9B,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;YAC1B,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;SAC1C;IACL,CAAC;IAED;;OAEG;IACH,gBAAgB,CAAC,UAAkB;QAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,CAAA;QACxC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;YACtB,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAA;SAC9C;IACL,CAAC;IAEO,oBAAoB,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAmB,EAAE,UAAkB;QACnG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,UAAU,KAAK,MAAM,EAAE;YAC5D,CAAC,KAAK,IAAI,EAAE;gBACR,IAAI;oBACA,MAAM,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;iBACjD;gBAAC,MAAM;oBACJ,OAAM;iBACT;gBACD,qGAAqG;gBACrG,4FAA4F;gBAC5F,0DAA0D;gBAC1D,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;gBAChC,IAAI,gBAAgB,CAAC,IAAI,IAAI,IAAI,CAAC,qBAAqB,EAAE;oBACrD,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,SAAU,CAAC,CAAA;iBAClD;YACL,CAAC,CAAC,EAAE,CAAA;SACP;IACL,CAAC;CACJ;AA3DD,kCA2DC"}
|
|
@@ -1,24 +1,21 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
|
-
import { ITransport, PeerDescriptor } from '@streamr/dht';
|
|
3
|
-
import { ConnectionLocker } from '@streamr/dht/src/exports';
|
|
2
|
+
import { ConnectionLocker, ITransport, PeerDescriptor } from '@streamr/dht';
|
|
4
3
|
import { StreamPartID } from '@streamr/protocol';
|
|
5
4
|
import { EthereumAddress } from '@streamr/utils';
|
|
6
5
|
import { EventEmitter } from 'eventemitter3';
|
|
7
6
|
import { NodeID } from '../../identifiers';
|
|
8
7
|
import { ProxyDirection, StreamMessage } from '../../proto/packages/trackerless-network/protos/NetworkRpc';
|
|
9
8
|
export declare const retry: <T>(task: () => Promise<T>, description: string, abortSignal: AbortSignal, delay?: number) => Promise<T>;
|
|
10
|
-
interface
|
|
9
|
+
interface ProxyClientConfig {
|
|
11
10
|
P2PTransport: ITransport;
|
|
12
11
|
ownPeerDescriptor: PeerDescriptor;
|
|
13
12
|
streamPartId: StreamPartID;
|
|
14
13
|
connectionLocker: ConnectionLocker;
|
|
15
|
-
userId: EthereumAddress;
|
|
16
|
-
nodeName?: string;
|
|
17
14
|
minPropagationTargets?: number;
|
|
18
15
|
}
|
|
19
|
-
export declare class
|
|
16
|
+
export declare class ProxyClient extends EventEmitter {
|
|
20
17
|
private readonly rpcCommunicator;
|
|
21
|
-
private readonly
|
|
18
|
+
private readonly deliveryRpcLocal;
|
|
22
19
|
private readonly config;
|
|
23
20
|
private readonly duplicateDetectors;
|
|
24
21
|
private definition?;
|
|
@@ -26,9 +23,9 @@ export declare class ProxyStreamConnectionClient extends EventEmitter {
|
|
|
26
23
|
private readonly propagation;
|
|
27
24
|
private readonly targetNeighbors;
|
|
28
25
|
private readonly abortController;
|
|
29
|
-
constructor(config:
|
|
26
|
+
constructor(config: ProxyClientConfig);
|
|
30
27
|
private registerDefaultServerMethods;
|
|
31
|
-
setProxies(
|
|
28
|
+
setProxies(nodes: PeerDescriptor[], direction: ProxyDirection, userId: EthereumAddress, connectionCount?: number): Promise<void>;
|
|
32
29
|
private updateConnections;
|
|
33
30
|
private getInvalidConnections;
|
|
34
31
|
private openRandomConnections;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.ProxyClient = exports.retry = void 0;
|
|
4
4
|
const dht_1 = require("@streamr/dht");
|
|
5
5
|
const proto_rpc_1 = require("@streamr/proto-rpc");
|
|
6
6
|
const utils_1 = require("@streamr/utils");
|
|
@@ -10,11 +10,12 @@ const identifiers_1 = require("../../identifiers");
|
|
|
10
10
|
const NetworkRpc_1 = require("../../proto/packages/trackerless-network/protos/NetworkRpc");
|
|
11
11
|
const NetworkRpc_client_1 = require("../../proto/packages/trackerless-network/protos/NetworkRpc.client");
|
|
12
12
|
const NodeList_1 = require("../NodeList");
|
|
13
|
-
const
|
|
14
|
-
const
|
|
13
|
+
const DeliveryRpcRemote_1 = require("../DeliveryRpcRemote");
|
|
14
|
+
const DeliveryRpcLocal_1 = require("../DeliveryRpcLocal");
|
|
15
15
|
const Propagation_1 = require("../propagation/Propagation");
|
|
16
16
|
const utils_2 = require("../utils");
|
|
17
|
-
const
|
|
17
|
+
const ProxyConnectionRpcRemote_1 = require("./ProxyConnectionRpcRemote");
|
|
18
|
+
const formStreamPartDeliveryServiceId_1 = require("../formStreamPartDeliveryServiceId");
|
|
18
19
|
const retry = async (task, description, abortSignal, delay = 10000) => {
|
|
19
20
|
// eslint-disable-next-line no-constant-condition
|
|
20
21
|
while (true) {
|
|
@@ -32,17 +33,18 @@ const retry = async (task, description, abortSignal, delay = 10000) => {
|
|
|
32
33
|
};
|
|
33
34
|
exports.retry = retry;
|
|
34
35
|
const logger = new utils_1.Logger(module);
|
|
35
|
-
|
|
36
|
+
const SERVICE_ID = 'system/proxy-client';
|
|
37
|
+
class ProxyClient extends eventemitter3_1.EventEmitter {
|
|
36
38
|
constructor(config) {
|
|
37
39
|
super();
|
|
38
40
|
this.duplicateDetectors = new Map();
|
|
39
41
|
this.connections = new Map();
|
|
40
42
|
this.config = config;
|
|
41
|
-
this.rpcCommunicator = new dht_1.ListeningRpcCommunicator(
|
|
43
|
+
this.rpcCommunicator = new dht_1.ListeningRpcCommunicator((0, formStreamPartDeliveryServiceId_1.formStreamPartDeliveryServiceId)(config.streamPartId), config.P2PTransport);
|
|
42
44
|
this.targetNeighbors = new NodeList_1.NodeList((0, identifiers_1.getNodeIdFromPeerDescriptor)(this.config.ownPeerDescriptor), 1000);
|
|
43
|
-
this.
|
|
45
|
+
this.deliveryRpcLocal = new DeliveryRpcLocal_1.DeliveryRpcLocal({
|
|
44
46
|
ownPeerDescriptor: this.config.ownPeerDescriptor,
|
|
45
|
-
|
|
47
|
+
streamPartId: this.config.streamPartId,
|
|
46
48
|
markAndCheckDuplicate: (msg, prev) => (0, utils_2.markAndCheckDuplicate)(this.duplicateDetectors, msg, prev),
|
|
47
49
|
broadcast: (message, previousNode) => this.broadcast(message, previousNode),
|
|
48
50
|
onLeaveNotice: (senderId) => {
|
|
@@ -52,7 +54,7 @@ class ProxyStreamConnectionClient extends eventemitter3_1.EventEmitter {
|
|
|
52
54
|
}
|
|
53
55
|
},
|
|
54
56
|
rpcCommunicator: this.rpcCommunicator,
|
|
55
|
-
markForInspection: (
|
|
57
|
+
markForInspection: () => { }
|
|
56
58
|
});
|
|
57
59
|
this.propagation = new Propagation_1.Propagation({
|
|
58
60
|
minPropagationTargets: config.minPropagationTargets ?? 2,
|
|
@@ -69,11 +71,11 @@ class ProxyStreamConnectionClient extends eventemitter3_1.EventEmitter {
|
|
|
69
71
|
this.abortController = new AbortController();
|
|
70
72
|
}
|
|
71
73
|
registerDefaultServerMethods() {
|
|
72
|
-
this.rpcCommunicator.registerRpcNotification(NetworkRpc_1.StreamMessage, 'sendStreamMessage', (msg, context) => this.
|
|
73
|
-
this.rpcCommunicator.registerRpcNotification(NetworkRpc_1.LeaveStreamPartNotice, 'leaveStreamPartNotice', (req, context) => this.
|
|
74
|
+
this.rpcCommunicator.registerRpcNotification(NetworkRpc_1.StreamMessage, 'sendStreamMessage', (msg, context) => this.deliveryRpcLocal.sendStreamMessage(msg, context));
|
|
75
|
+
this.rpcCommunicator.registerRpcNotification(NetworkRpc_1.LeaveStreamPartNotice, 'leaveStreamPartNotice', (req, context) => this.deliveryRpcLocal.leaveStreamPartNotice(req, context));
|
|
74
76
|
}
|
|
75
|
-
async setProxies(
|
|
76
|
-
logger.trace('Setting proxies', { streamPartId, peerDescriptors: nodes, direction, userId, connectionCount });
|
|
77
|
+
async setProxies(nodes, direction, userId, connectionCount) {
|
|
78
|
+
logger.trace('Setting proxies', { streamPartId: this.config.streamPartId, peerDescriptors: nodes, direction, userId, connectionCount });
|
|
77
79
|
if (connectionCount !== undefined && connectionCount > nodes.length) {
|
|
78
80
|
throw Error('Cannot set connectionCount above the size of the configured array of nodes');
|
|
79
81
|
}
|
|
@@ -114,12 +116,12 @@ class ProxyStreamConnectionClient extends eventemitter3_1.EventEmitter {
|
|
|
114
116
|
async attemptConnection(nodeId, direction, userId) {
|
|
115
117
|
const peerDescriptor = this.definition.nodes.get(nodeId);
|
|
116
118
|
const client = (0, proto_rpc_1.toProtoRpcClient)(new NetworkRpc_client_1.ProxyConnectionRpcClient(this.rpcCommunicator.getRpcClientTransport()));
|
|
117
|
-
const
|
|
118
|
-
const accepted = await
|
|
119
|
+
const rpcRemote = new ProxyConnectionRpcRemote_1.ProxyConnectionRpcRemote(this.config.ownPeerDescriptor, peerDescriptor, this.config.streamPartId, client);
|
|
120
|
+
const accepted = await rpcRemote.requestConnection(direction, userId);
|
|
119
121
|
if (accepted) {
|
|
120
|
-
this.config.connectionLocker.lockConnection(peerDescriptor,
|
|
122
|
+
this.config.connectionLocker.lockConnection(peerDescriptor, SERVICE_ID);
|
|
121
123
|
this.connections.set(nodeId, direction);
|
|
122
|
-
const remote = new
|
|
124
|
+
const remote = new DeliveryRpcRemote_1.DeliveryRpcRemote(this.config.ownPeerDescriptor, peerDescriptor, this.config.streamPartId, (0, proto_rpc_1.toProtoRpcClient)(new NetworkRpc_client_1.DeliveryRpcClient(this.rpcCommunicator.getRpcClientTransport())));
|
|
123
125
|
this.targetNeighbors.add(remote);
|
|
124
126
|
this.propagation.onNeighborJoined(nodeId);
|
|
125
127
|
logger.info('Open proxy connection', {
|
|
@@ -168,7 +170,7 @@ class ProxyStreamConnectionClient extends eventemitter3_1.EventEmitter {
|
|
|
168
170
|
async onNodeDisconnected(peerDescriptor) {
|
|
169
171
|
const nodeId = (0, identifiers_1.getNodeIdFromPeerDescriptor)(peerDescriptor);
|
|
170
172
|
if (this.connections.has(nodeId)) {
|
|
171
|
-
this.config.connectionLocker.unlockConnection(peerDescriptor,
|
|
173
|
+
this.config.connectionLocker.unlockConnection(peerDescriptor, SERVICE_ID);
|
|
172
174
|
this.removeConnection(nodeId);
|
|
173
175
|
await (0, exports.retry)(() => this.updateConnections(), 'updating proxy connections', this.abortController.signal);
|
|
174
176
|
}
|
|
@@ -179,7 +181,7 @@ class ProxyStreamConnectionClient extends eventemitter3_1.EventEmitter {
|
|
|
179
181
|
}
|
|
180
182
|
stop() {
|
|
181
183
|
this.targetNeighbors.getAll().map((remote) => {
|
|
182
|
-
this.config.connectionLocker.unlockConnection(remote.getPeerDescriptor(),
|
|
184
|
+
this.config.connectionLocker.unlockConnection(remote.getPeerDescriptor(), SERVICE_ID);
|
|
183
185
|
remote.leaveStreamPartNotice();
|
|
184
186
|
});
|
|
185
187
|
this.targetNeighbors.stop();
|
|
@@ -188,5 +190,5 @@ class ProxyStreamConnectionClient extends eventemitter3_1.EventEmitter {
|
|
|
188
190
|
this.abortController.abort();
|
|
189
191
|
}
|
|
190
192
|
}
|
|
191
|
-
exports.
|
|
192
|
-
//# sourceMappingURL=
|
|
193
|
+
exports.ProxyClient = ProxyClient;
|
|
194
|
+
//# sourceMappingURL=ProxyClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProxyClient.js","sourceRoot":"","sources":["../../../../src/logic/proxy/ProxyClient.ts"],"names":[],"mappings":";;;AAAA,sCAKqB;AACrB,kDAAqD;AAErD,0CAAuF;AACvF,iDAA4C;AAC5C,mCAAmC;AACnC,mDAAuE;AACvE,2FAMmE;AACnE,yGAA+H;AAE/H,0CAAsC;AACtC,4DAAwD;AACxD,0DAAsD;AACtD,4DAAwD;AACxD,oCAAgD;AAChD,yEAAqE;AACrE,wFAAoF;AAE7E,MAAM,KAAK,GAAG,KAAK,EAAK,IAAsB,EAAE,WAAmB,EAAE,WAAwB,EAAE,KAAK,GAAG,KAAK,EAAc,EAAE;IAC/H,iDAAiD;IACjD,OAAO,IAAI,EAAE;QACT,IAAI;YACA,MAAM,MAAM,GAAG,MAAM,IAAI,EAAE,CAAA;YAC3B,OAAO,MAAM,CAAA;SAChB;QAAC,OAAO,CAAM,EAAE;YACb,MAAM,CAAC,IAAI,CAAC,UAAU,WAAW,yBAAyB,EAAE;gBACxD,SAAS,EAAE,KAAK;aACnB,CAAC,CAAA;SACL;QACD,MAAM,IAAA,YAAI,EAAC,KAAK,EAAE,WAAW,CAAC,CAAA;KACjC;AACL,CAAC,CAAA;AAbY,QAAA,KAAK,SAajB;AAiBD,MAAM,MAAM,GAAG,IAAI,cAAM,CAAC,MAAM,CAAC,CAAA;AAEjC,MAAM,UAAU,GAAG,qBAAqB,CAAA;AAExC,MAAa,WAAY,SAAQ,4BAAY;IAYzC,YAAY,MAAyB;QACjC,KAAK,EAAE,CAAA;QARM,uBAAkB,GAA0C,IAAI,GAAG,EAAE,CAAA;QAErE,gBAAW,GAAgC,IAAI,GAAG,EAAE,CAAA;QAOjE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,eAAe,GAAG,IAAI,8BAAwB,CAAC,IAAA,iEAA+B,EAAC,MAAM,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC,YAAY,CAAC,CAAA;QAC9H,IAAI,CAAC,eAAe,GAAG,IAAI,mBAAQ,CAAC,IAAA,yCAA2B,EAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,EAAE,IAAI,CAAC,CAAA;QACrG,IAAI,CAAC,gBAAgB,GAAG,IAAI,mCAAgB,CAAC;YACzC,iBAAiB,EAAE,IAAI,CAAC,MAAM,CAAC,iBAAiB;YAChD,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY;YACtC,qBAAqB,EAAE,CAAC,GAAc,EAAE,IAAiB,EAAE,EAAE,CAAC,IAAA,6BAAqB,EAAC,IAAI,CAAC,kBAAkB,EAAE,GAAG,EAAE,IAAI,CAAC;YACvH,SAAS,EAAE,CAAC,OAAsB,EAAE,YAAqB,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,YAAY,CAAC;YACnG,aAAa,EAAE,CAAC,QAAgB,EAAE,EAAE;gBAChC,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;gBAClD,IAAI,OAAO,EAAE;oBACT,YAAY,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAA;iBAC3E;YACL,CAAC;YACD,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,iBAAiB,EAAE,GAAG,EAAE,GAAE,CAAC;SAC9B,CAAC,CAAA;QACF,IAAI,CAAC,WAAW,GAAG,IAAI,yBAAW,CAAC;YAC/B,qBAAqB,EAAE,MAAM,CAAC,qBAAqB,IAAI,CAAC;YACxD,cAAc,EAAE,KAAK,EAAE,UAAkB,EAAE,GAAkB,EAAiB,EAAE;gBAC5E,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;gBACnD,IAAI,MAAM,EAAE;oBACR,MAAM,MAAM,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAA;iBACtC;qBAAM;oBACH,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAA;iBAClD;YACL,CAAC;SACJ,CAAC,CAAA;QACF,IAAI,CAAC,eAAe,GAAG,IAAI,eAAe,EAAE,CAAA;IAChD,CAAC;IAEO,4BAA4B;QAChC,IAAI,CAAC,eAAe,CAAC,uBAAuB,CAAC,0BAAa,EAAE,mBAAmB,EAC3E,CAAC,GAAkB,EAAE,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAA;QAC3F,IAAI,CAAC,eAAe,CAAC,uBAAuB,CAAC,kCAAqB,EAAE,uBAAuB,EACvF,CAAC,GAA0B,EAAE,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAA;IAC3G,CAAC;IAED,KAAK,CAAC,UAAU,CACZ,KAAuB,EACvB,SAAyB,EACzB,MAAuB,EACvB,eAAwB;QAExB,MAAM,CAAC,KAAK,CAAC,iBAAiB,EAAE,EAAE,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,eAAe,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC,CAAA;QACvI,IAAI,eAAe,KAAK,SAAS,IAAI,eAAe,GAAG,KAAK,CAAC,MAAM,EAAE;YACjE,MAAM,KAAK,CAAC,4EAA4E,CAAC,CAAA;SAC5F;QACD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAE,CAAA;QAC1B,KAAK,CAAC,OAAO,CAAC,CAAC,cAAc,EAAE,EAAE;YAC7B,QAAQ,CAAC,GAAG,CAAC,IAAA,yCAA2B,EAAC,cAAc,CAAC,EAAE,cAAc,CAAC,CAAA;QAC7E,CAAC,CAAC,CAAA;QACF,IAAI,CAAC,UAAU,GAAG;YACd,KAAK,EAAE,QAAQ;YACf,MAAM;YACN,SAAS;YACT,eAAe,EAAE,eAAe,IAAI,KAAK,CAAC,MAAM;SACnD,CAAA;QACD,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAA;IAClC,CAAC;IAEO,KAAK,CAAC,iBAAiB;QAC3B,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE;YAC5D,MAAM,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAA;QAClC,CAAC,CAAC,CAAC,CAAA;QACH,MAAM,mBAAmB,GAAG,IAAI,CAAC,UAAW,CAAC,eAAe,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAA;QACpF,IAAI,mBAAmB,GAAG,CAAC,EAAE;YACzB,MAAM,IAAI,CAAC,qBAAqB,CAAC,mBAAmB,CAAC,CAAA;SACxD;aAAM,IAAI,mBAAmB,GAAG,CAAC,EAAE;YAChC,MAAM,IAAI,CAAC,sBAAsB,CAAC,CAAC,mBAAmB,CAAC,CAAA;SAC1D;IACL,CAAC;IAEO,qBAAqB;QACzB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE;YACrD,OAAO,CAAC,IAAI,CAAC,UAAW,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAE;mBAChC,IAAI,CAAC,UAAW,CAAC,SAAS,KAAK,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QAClE,CAAC,CAAC,CAAA;IACN,CAAC;IAEO,KAAK,CAAC,qBAAqB,CAAC,eAAuB;QACvD,MAAM,gBAAgB,GAAG,IAAA,mBAAU,EAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAW,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CACxF,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAuB,CAAC,CACjD,EAAE,eAAe,CAAC,CAAA;QACnB,MAAM,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAC1C,IAAI,CAAC,iBAAiB,CAAC,EAAuB,EAAE,IAAI,CAAC,UAAW,CAAC,SAAS,EAAE,IAAI,CAAC,UAAW,CAAC,MAAM,CAAC,CACvG,CAAC,CAAA;IACN,CAAC;IAEO,KAAK,CAAC,iBAAiB,CAAC,MAAc,EAAE,SAAyB,EAAE,MAAuB;QAC9F,MAAM,cAAc,GAAG,IAAI,CAAC,UAAW,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAE,CAAA;QAC1D,MAAM,MAAM,GAAG,IAAA,4BAAgB,EAAC,IAAI,4CAAwB,CAAC,IAAI,CAAC,eAAe,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAA;QAC3G,MAAM,SAAS,GAAG,IAAI,mDAAwB,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAA;QAC/H,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,iBAAiB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;QACrE,IAAI,QAAQ,EAAE;YACV,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,cAAc,CAAC,cAAc,EAAE,UAAU,CAAC,CAAA;YACvE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;YACvC,MAAM,MAAM,GAAG,IAAI,qCAAiB,CAChC,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAC7B,cAAc,EACd,IAAI,CAAC,MAAM,CAAC,YAAY,EACxB,IAAA,4BAAgB,EAAC,IAAI,qCAAiB,CAAC,IAAI,CAAC,eAAe,CAAC,qBAAqB,EAAE,CAAC,CAAC,CACxF,CAAA;YACD,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;YAChC,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAA;YACzC,MAAM,CAAC,IAAI,CAAC,uBAAuB,EAAE;gBACjC,MAAM;gBACN,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY;aACzC,CAAC,CAAA;SACL;aAAM;YACH,MAAM,CAAC,IAAI,CAAC,iCAAiC,EAAE;gBAC3C,MAAM;gBACN,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY;aACzC,CAAC,CAAA;SACL;IACL,CAAC;IAEO,KAAK,CAAC,sBAAsB,CAAC,eAAuB;QACxD,MAAM,mBAAmB,GAAG,IAAA,mBAAU,EAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,EAAE,eAAe,CAAC,CAAA;QAC5F,MAAM,OAAO,CAAC,UAAU,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAC3F,CAAC;IAEO,KAAK,CAAC,eAAe,CAAC,MAAc;QACxC,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;YAC9B,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE;gBAClC,MAAM;aACT,CAAC,CAAA;YACF,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;YAC/C,MAAM,EAAE,qBAAqB,EAAE,CAAA;YAC/B,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAA;SAChC;IACL,CAAC;IAEO,gBAAgB,CAAC,MAAc;QACnC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QAC/B,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;IAC3C,CAAC;IAED,SAAS,CAAC,GAAkB,EAAE,YAAqB;QAC/C,IAAI,CAAC,YAAY,EAAE;YACf,IAAA,6BAAqB,EAAC,IAAI,CAAC,kBAAkB,EAAE,GAAG,CAAC,SAAU,EAAE,GAAG,CAAC,kBAAkB,CAAC,CAAA;SACzF;QACD,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,CAAA;QACzB,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,EAAE,YAAY,IAAI,IAAI,CAAC,CAAA;IAChG,CAAC;IAED,aAAa,CAAC,MAAc,EAAE,SAAyB;QACnD,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,SAAS,CAAA;IACrF,CAAC;IAED,YAAY;QACR,OAAO,IAAI,CAAC,UAAW,CAAC,SAAS,CAAA;IACrC,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAAC,cAA8B;QAC3D,MAAM,MAAM,GAAG,IAAA,yCAA2B,EAAC,cAAc,CAAC,CAAA;QAC1D,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;YAC9B,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,cAAc,EAAE,UAAU,CAAC,CAAA;YACzE,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAA;YAC7B,MAAM,IAAA,aAAK,EAAC,GAAG,EAAE,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,4BAA4B,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAA;SACzG;IACL,CAAC;IAED,KAAK,CAAC,KAAK;QACP,IAAI,CAAC,4BAA4B,EAAE,CAAA;QACnC,IAAA,+BAAuB,EACnB,IAAI,CAAC,MAAM,CAAC,YAAmB,EAC/B,cAAc,EACd,CAAC,cAA8B,EAAE,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,EAC3E,IAAI,CAAC,eAAe,CAAC,MAAM,CAC9B,CAAA;IACL,CAAC;IAED,IAAI;QACA,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;YACzC,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,MAAM,CAAC,iBAAiB,EAAE,EAAE,UAAU,CAAC,CAAA;YACrF,MAAM,CAAC,qBAAqB,EAAE,CAAA;QAClC,CAAC,CAAC,CAAA;QACF,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,CAAA;QAC3B,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,CAAA;QAC3B,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAA;QACxB,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAA;IAChC,CAAC;CAEJ;AAtMD,kCAsMC"}
|
package/dist/src/logic/proxy/{ProxyStreamConnectionServer.d.ts → ProxyConnectionRpcLocal.d.ts}
RENAMED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ServerCallContext } from '@protobuf-ts/runtime-rpc';
|
|
2
2
|
import { ProxyConnectionRequest, ProxyConnectionResponse, ProxyDirection, StreamMessage } from '../../proto/packages/trackerless-network/protos/NetworkRpc';
|
|
3
3
|
import { IProxyConnectionRpc } from '../../proto/packages/trackerless-network/protos/NetworkRpc.server';
|
|
4
|
-
import {
|
|
4
|
+
import { DeliveryRpcRemote } from '../DeliveryRpcRemote';
|
|
5
5
|
import { ListeningRpcCommunicator, PeerDescriptor } from '@streamr/dht';
|
|
6
6
|
import { EventEmitter } from 'eventemitter3';
|
|
7
7
|
import { EthereumAddress } from '@streamr/utils';
|
|
@@ -10,9 +10,9 @@ import { NodeID } from '../../identifiers';
|
|
|
10
10
|
interface ProxyConnection {
|
|
11
11
|
direction: ProxyDirection;
|
|
12
12
|
userId: EthereumAddress;
|
|
13
|
-
remote:
|
|
13
|
+
remote: DeliveryRpcRemote;
|
|
14
14
|
}
|
|
15
|
-
interface
|
|
15
|
+
interface ProxyConnectionRpcLocalConfig {
|
|
16
16
|
ownPeerDescriptor: PeerDescriptor;
|
|
17
17
|
streamPartId: StreamPartID;
|
|
18
18
|
rpcCommunicator: ListeningRpcCommunicator;
|
|
@@ -20,10 +20,10 @@ interface ProxyStreamConnectionServerConfig {
|
|
|
20
20
|
export interface Events {
|
|
21
21
|
newConnection: (nodeId: NodeID) => void;
|
|
22
22
|
}
|
|
23
|
-
export declare class
|
|
23
|
+
export declare class ProxyConnectionRpcLocal extends EventEmitter<Events> implements IProxyConnectionRpc {
|
|
24
24
|
private readonly config;
|
|
25
25
|
private readonly connections;
|
|
26
|
-
constructor(config:
|
|
26
|
+
constructor(config: ProxyConnectionRpcLocalConfig);
|
|
27
27
|
getConnection(nodeId: NodeID): ProxyConnection | undefined;
|
|
28
28
|
hasConnection(nodeId: NodeID): boolean;
|
|
29
29
|
removeConnection(nodeId: NodeID): void;
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.ProxyConnectionRpcLocal = void 0;
|
|
4
4
|
const NetworkRpc_1 = require("../../proto/packages/trackerless-network/protos/NetworkRpc");
|
|
5
|
-
const
|
|
5
|
+
const DeliveryRpcRemote_1 = require("../DeliveryRpcRemote");
|
|
6
6
|
const proto_rpc_1 = require("@streamr/proto-rpc");
|
|
7
7
|
const NetworkRpc_client_1 = require("../../proto/packages/trackerless-network/protos/NetworkRpc.client");
|
|
8
8
|
const eventemitter3_1 = require("eventemitter3");
|
|
9
9
|
const utils_1 = require("@streamr/utils");
|
|
10
10
|
const identifiers_1 = require("../../identifiers");
|
|
11
11
|
const logger = new utils_1.Logger(module);
|
|
12
|
-
class
|
|
12
|
+
class ProxyConnectionRpcLocal extends eventemitter3_1.EventEmitter {
|
|
13
13
|
constructor(config) {
|
|
14
14
|
super();
|
|
15
15
|
this.connections = new Map();
|
|
@@ -58,7 +58,7 @@ class ProxyStreamConnectionServer extends eventemitter3_1.EventEmitter {
|
|
|
58
58
|
this.connections.set(senderId, {
|
|
59
59
|
direction: request.direction,
|
|
60
60
|
userId: (0, utils_1.toEthereumAddress)((0, utils_1.binaryToHex)(request.userId, true)),
|
|
61
|
-
remote: new
|
|
61
|
+
remote: new DeliveryRpcRemote_1.DeliveryRpcRemote(this.config.ownPeerDescriptor, senderPeerDescriptor, this.config.streamPartId, (0, proto_rpc_1.toProtoRpcClient)(new NetworkRpc_client_1.DeliveryRpcClient(this.config.rpcCommunicator.getRpcClientTransport())))
|
|
62
62
|
});
|
|
63
63
|
const response = {
|
|
64
64
|
accepted: true
|
|
@@ -68,5 +68,5 @@ class ProxyStreamConnectionServer extends eventemitter3_1.EventEmitter {
|
|
|
68
68
|
return response;
|
|
69
69
|
}
|
|
70
70
|
}
|
|
71
|
-
exports.
|
|
72
|
-
//# sourceMappingURL=
|
|
71
|
+
exports.ProxyConnectionRpcLocal = ProxyConnectionRpcLocal;
|
|
72
|
+
//# sourceMappingURL=ProxyConnectionRpcLocal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProxyConnectionRpcLocal.js","sourceRoot":"","sources":["../../../../src/logic/proxy/ProxyConnectionRpcLocal.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,6 @@ import { Remote } from '@streamr/dht';
|
|
|
2
2
|
import { EthereumAddress } from '@streamr/utils';
|
|
3
3
|
import { ProxyDirection } from '../../proto/packages/trackerless-network/protos/NetworkRpc';
|
|
4
4
|
import { IProxyConnectionRpcClient } from '../../proto/packages/trackerless-network/protos/NetworkRpc.client';
|
|
5
|
-
export declare class
|
|
5
|
+
export declare class ProxyConnectionRpcRemote extends Remote<IProxyConnectionRpcClient> {
|
|
6
6
|
requestConnection(direction: ProxyDirection, userId: EthereumAddress): Promise<boolean>;
|
|
7
7
|
}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.ProxyConnectionRpcRemote = void 0;
|
|
4
4
|
const dht_1 = require("@streamr/dht");
|
|
5
5
|
const utils_1 = require("@streamr/utils");
|
|
6
6
|
const logger = new utils_1.Logger(module);
|
|
7
|
-
class
|
|
7
|
+
class ProxyConnectionRpcRemote extends dht_1.Remote {
|
|
8
8
|
async requestConnection(direction, userId) {
|
|
9
9
|
const request = {
|
|
10
10
|
direction,
|
|
@@ -23,5 +23,5 @@ class RemoteProxyServer extends dht_1.Remote {
|
|
|
23
23
|
}
|
|
24
24
|
}
|
|
25
25
|
}
|
|
26
|
-
exports.
|
|
27
|
-
//# sourceMappingURL=
|
|
26
|
+
exports.ProxyConnectionRpcRemote = ProxyConnectionRpcRemote;
|
|
27
|
+
//# sourceMappingURL=ProxyConnectionRpcRemote.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProxyConnectionRpcRemote.js","sourceRoot":"","sources":["../../../../src/logic/proxy/ProxyConnectionRpcRemote.ts"],"names":[],"mappings":";;;AAAA,sCAAqC;AACrC,0CAAqE;AAIrE,MAAM,MAAM,GAAG,IAAI,cAAM,CAAC,MAAM,CAAC,CAAA;AAEjC,MAAa,wBAAyB,SAAQ,YAAiC;IAE3E,KAAK,CAAC,iBAAiB,CAAC,SAAyB,EAAE,MAAuB;QACtE,MAAM,OAAO,GAA2B;YACpC,SAAS;YACT,MAAM,EAAE,IAAA,mBAAW,EAAC,MAAM,CAAC;SAC9B,CAAA;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC;YACnC,OAAO,EAAE,IAAI;SAChB,CAAC,CAAA;QACF,IAAI;YACA,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;YACtE,OAAO,GAAG,CAAC,QAAQ,CAAA;SACtB;QAAC,OAAO,GAAG,EAAE;YACV,MAAM,CAAC,KAAK,CAAC,6CAA6C,GAAG,EAAE,CAAC,CAAA;YAChE,OAAO,KAAK,CAAA;SACf;IACL,CAAC;CACJ;AAlBD,4DAkBC"}
|
|
@@ -4,15 +4,16 @@ import { ITemporaryConnectionRpc } from '../../proto/packages/trackerless-networ
|
|
|
4
4
|
import { ListeningRpcCommunicator } from '@streamr/dht';
|
|
5
5
|
import { NodeList } from '../NodeList';
|
|
6
6
|
import { PeerDescriptor } from '../../proto/packages/dht/protos/DhtRpc';
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
import { StreamPartID } from '@streamr/protocol';
|
|
8
|
+
interface TemporaryConnectionRpcLocalConfig {
|
|
9
|
+
streamPartId: StreamPartID;
|
|
9
10
|
rpcCommunicator: ListeningRpcCommunicator;
|
|
10
11
|
ownPeerDescriptor: PeerDescriptor;
|
|
11
12
|
}
|
|
12
|
-
export declare class
|
|
13
|
+
export declare class TemporaryConnectionRpcLocal implements ITemporaryConnectionRpc {
|
|
13
14
|
private readonly config;
|
|
14
15
|
private readonly temporaryNodes;
|
|
15
|
-
constructor(config:
|
|
16
|
+
constructor(config: TemporaryConnectionRpcLocalConfig);
|
|
16
17
|
getNodes(): NodeList;
|
|
17
18
|
removeNode(peerDescriptor: PeerDescriptor): void;
|
|
18
19
|
openConnection(_request: TemporaryConnectionRequest, context: ServerCallContext): Promise<TemporaryConnectionResponse>;
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.TemporaryConnectionRpcLocal = void 0;
|
|
4
4
|
const NetworkRpc_client_1 = require("../../proto/packages/trackerless-network/protos/NetworkRpc.client");
|
|
5
5
|
const NodeList_1 = require("../NodeList");
|
|
6
6
|
const proto_rpc_1 = require("@streamr/proto-rpc");
|
|
7
|
-
const
|
|
7
|
+
const DeliveryRpcRemote_1 = require("../DeliveryRpcRemote");
|
|
8
8
|
const identifiers_1 = require("../../identifiers");
|
|
9
|
-
class
|
|
9
|
+
class TemporaryConnectionRpcLocal {
|
|
10
10
|
constructor(config) {
|
|
11
11
|
this.config = config;
|
|
12
12
|
this.temporaryNodes = new NodeList_1.NodeList((0, identifiers_1.getNodeIdFromPeerDescriptor)(config.ownPeerDescriptor), 10);
|
|
@@ -19,12 +19,12 @@ class TemporaryConnectionRpcServer {
|
|
|
19
19
|
}
|
|
20
20
|
async openConnection(_request, context) {
|
|
21
21
|
const sender = context.incomingSourceDescriptor;
|
|
22
|
-
const remote = new
|
|
22
|
+
const remote = new DeliveryRpcRemote_1.DeliveryRpcRemote(this.config.ownPeerDescriptor, sender, this.config.streamPartId, (0, proto_rpc_1.toProtoRpcClient)(new NetworkRpc_client_1.DeliveryRpcClient(this.config.rpcCommunicator.getRpcClientTransport())));
|
|
23
23
|
this.temporaryNodes.add(remote);
|
|
24
24
|
return {
|
|
25
25
|
accepted: true
|
|
26
26
|
};
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
|
-
exports.
|
|
30
|
-
//# sourceMappingURL=
|
|
29
|
+
exports.TemporaryConnectionRpcLocal = TemporaryConnectionRpcLocal;
|
|
30
|
+
//# sourceMappingURL=TemporaryConnectionRpcLocal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TemporaryConnectionRpcLocal.js","sourceRoot":"","sources":["../../../../src/logic/temporary-connection/TemporaryConnectionRpcLocal.ts"],"names":[],"mappings":";;;AAIA,yGAAqG;AACrG,0CAAsC;AACtC,kDAAqD;AACrD,4DAAwD;AAExD,mDAA+D;AAS/D,MAAa,2BAA2B;IAKpC,YAAY,MAAyC;QACjD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,cAAc,GAAG,IAAI,mBAAQ,CAAC,IAAA,yCAA2B,EAAC,MAAM,CAAC,iBAAiB,CAAC,EAAE,EAAE,CAAC,CAAA;IACjG,CAAC;IAED,QAAQ;QACJ,OAAO,IAAI,CAAC,cAAc,CAAA;IAC9B,CAAC;IAED,UAAU,CAAC,cAA8B;QACrC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,cAAc,CAAC,CAAA;IAC9C,CAAC;IAED,KAAK,CAAC,cAAc,CAChB,QAAoC,EACpC,OAA0B;QAE1B,MAAM,MAAM,GAAI,OAA0B,CAAC,wBAAyB,CAAA;QACpE,MAAM,MAAM,GAAG,IAAI,qCAAiB,CAChC,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAC7B,MAAM,EACN,IAAI,CAAC,MAAM,CAAC,YAAY,EACxB,IAAA,4BAAgB,EAAC,IAAI,qCAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAC/F,CAAA;QACD,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QAC/B,OAAO;YACH,QAAQ,EAAE,IAAI;SACjB,CAAA;IACL,CAAC;CACJ;AAlCD,kEAkCC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Remote } from '@streamr/dht';
|
|
2
2
|
import { ITemporaryConnectionRpcClient } from '../../proto/packages/trackerless-network/protos/NetworkRpc.client';
|
|
3
|
-
export declare class
|
|
3
|
+
export declare class TemporaryConnectionRpcRemote extends Remote<ITemporaryConnectionRpcClient> {
|
|
4
4
|
openConnection(): Promise<boolean>;
|
|
5
5
|
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.TemporaryConnectionRpcRemote = void 0;
|
|
4
4
|
const dht_1 = require("@streamr/dht");
|
|
5
5
|
const utils_1 = require("@streamr/utils");
|
|
6
6
|
const identifiers_1 = require("../../identifiers");
|
|
7
7
|
const logger = new utils_1.Logger(module);
|
|
8
|
-
class
|
|
8
|
+
class TemporaryConnectionRpcRemote extends dht_1.Remote {
|
|
9
9
|
async openConnection() {
|
|
10
10
|
try {
|
|
11
11
|
const response = await this.getClient().openConnection({}, this.formDhtRpcOptions());
|
|
@@ -17,5 +17,5 @@ class RemoteTemporaryConnectionRpcServer extends dht_1.Remote {
|
|
|
17
17
|
}
|
|
18
18
|
}
|
|
19
19
|
}
|
|
20
|
-
exports.
|
|
21
|
-
//# sourceMappingURL=
|
|
20
|
+
exports.TemporaryConnectionRpcRemote = TemporaryConnectionRpcRemote;
|
|
21
|
+
//# sourceMappingURL=TemporaryConnectionRpcRemote.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TemporaryConnectionRpcRemote.js","sourceRoot":"","sources":["../../../../src/logic/temporary-connection/TemporaryConnectionRpcRemote.ts"],"names":[],"mappings":";;;AAAA,sCAAqC;AACrC,0CAAuC;AACvC,mDAA+D;AAG/D,MAAM,MAAM,GAAG,IAAI,cAAM,CAAC,MAAM,CAAC,CAAA;AAEjC,MAAa,4BAA6B,SAAQ,YAAqC;IAEnF,KAAK,CAAC,cAAc;QAChB,IAAI;YACA,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC,cAAc,CAAC,EAAE,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAA;YACpF,OAAO,QAAQ,CAAC,QAAQ,CAAA;SAC3B;QAAC,OAAO,GAAQ,EAAE;YACf,MAAM,CAAC,KAAK,CAAC,0BAA0B,IAAA,yCAA2B,EAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,YAAY,GAAG,EAAE,CAAC,CAAA;YAC9G,OAAO,KAAK,CAAA;SACf;IACL,CAAC;CACJ;AAXD,oEAWC"}
|