@dxos/network-manager 0.1.35 → 0.1.36
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/lib/browser/{chunk-4W77MFHZ.mjs → chunk-A2UJX3UX.mjs} +77 -39
- package/dist/lib/browser/chunk-A2UJX3UX.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +1 -1
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/testing/index.mjs +2 -1
- package/dist/lib/browser/testing/index.mjs.map +2 -2
- package/dist/lib/node/index.cjs +72 -34
- package/dist/lib/node/index.cjs.map +3 -3
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node/testing/index.cjs +73 -34
- package/dist/lib/node/testing/index.cjs.map +3 -3
- package/dist/types/src/network-manager.d.ts +1 -0
- package/dist/types/src/network-manager.d.ts.map +1 -1
- package/dist/types/src/swarm/peer.d.ts +12 -0
- package/dist/types/src/swarm/peer.d.ts.map +1 -1
- package/dist/types/src/swarm/swarm.d.ts.map +1 -1
- package/dist/types/src/testing/test-builder.d.ts.map +1 -1
- package/package.json +16 -16
- package/src/network-manager.ts +3 -1
- package/src/signal/integration.test.ts +6 -4
- package/src/signal/message-router.test.ts +1 -0
- package/src/swarm/peer.ts +60 -1
- package/src/swarm/swarm.ts +4 -1
- package/src/testing/test-builder.ts +1 -0
- package/dist/lib/browser/chunk-4W77MFHZ.mjs.map +0 -7
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/testing/test-builder.ts", "../../../../src/testing/test-wire-protocol.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2022 DXOS.org\n//\n\nimport { PublicKey } from '@dxos/keys';\nimport { MemorySignalManager, MemorySignalManagerContext, WebsocketSignalManager } from '@dxos/messaging';\nimport { schema } from '@dxos/protocols';\nimport { ConnectionState } from '@dxos/protocols/proto/dxos/client/services';\nimport { createLinkedPorts, createProtoRpcPeer, ProtoRpcPeer } from '@dxos/rpc';\nimport { ComplexMap } from '@dxos/util';\n\nimport { NetworkManager } from '../network-manager';\nimport { FullyConnectedTopology } from '../topology';\nimport {\n MemoryTransportFactory,\n TransportFactory,\n WebRTCTransport,\n WebRTCTransportProxyFactory,\n WebRTCTransportService\n} from '../transport';\nimport { TestWireProtocol } from './test-wire-protocol';\n\n// Signal server will be started by the setup script.\nexport const TEST_SIGNAL_URL = 'ws://localhost:4000/.well-known/dx/signal';\n\nexport type TestBuilderOptions = {\n signalHosts?: string[];\n bridge?: boolean;\n};\n\n/**\n * Builder used to construct networks and peers.\n */\nexport class TestBuilder {\n private _signalContext = new MemorySignalManagerContext();\n\n constructor(public readonly options: TestBuilderOptions = {}) {}\n\n createSignalManager() {\n if (this.options.signalHosts) {\n return new WebsocketSignalManager(this.options.signalHosts);\n }\n\n return new MemorySignalManager(this._signalContext);\n }\n\n createPeer() {\n return new TestPeer(this);\n }\n}\n\n/**\n * Testing network peer.\n */\nexport class TestPeer {\n readonly peerId = PublicKey.random();\n\n private readonly _swarms = new ComplexMap<PublicKey, TestSwarmConnection>(PublicKey.hash);\n\n /**\n * @internal\n */\n readonly _networkManager: NetworkManager;\n\n private _proxy?: ProtoRpcPeer<any>;\n private _service?: ProtoRpcPeer<any>;\n\n constructor(private readonly testBuilder: TestBuilder) {\n this._networkManager = this.createNetworkManager();\n }\n\n // TODO(burdon): Move to TestBuilder.\n createNetworkManager() {\n let transportFactory: TransportFactory = MemoryTransportFactory;\n\n if (this.testBuilder.options.signalHosts) {\n if (this.testBuilder.options.bridge) {\n // Simulates bridge to shared worker.\n const [proxyPort, servicePort] = createLinkedPorts();\n\n this._proxy = createProtoRpcPeer({\n port: proxyPort,\n requested: {\n BridgeService: schema.getService('dxos.mesh.bridge.BridgeService')\n },\n noHandshake: true,\n encodingOptions: {\n preserveAny: true\n }\n });\n\n this._service = createProtoRpcPeer({\n port: servicePort,\n exposed: {\n BridgeService: schema.getService('dxos.mesh.bridge.BridgeService')\n },\n handlers: { BridgeService: new WebRTCTransportService() },\n noHandshake: true,\n encodingOptions: {\n preserveAny: true\n }\n });\n\n transportFactory = new WebRTCTransportProxyFactory().setBridgeService(this._proxy.rpc.BridgeService);\n } else {\n transportFactory = {\n createTransport: (params) => new WebRTCTransport(params)\n };\n }\n }\n\n return new NetworkManager({\n signalManager: this.testBuilder.createSignalManager(),\n transportFactory\n });\n }\n\n async open() {\n await this._proxy?.open();\n await this._service?.open();\n }\n\n async close() {\n await Promise.all(Array.from(this._swarms.values()).map((swarm) => swarm.leave()));\n this._swarms.clear();\n\n await this._proxy?.close();\n await this._service?.close();\n await this._networkManager.close();\n }\n\n getSwarm(topic: PublicKey): TestSwarmConnection {\n const swarm = this._swarms.get(topic);\n if (!swarm) {\n throw new Error(`Swarm not found for topic: ${topic}`);\n }\n\n return swarm;\n }\n\n createSwarm(topic: PublicKey): TestSwarmConnection {\n // TODO(burdon): Multiple.\n // if (this._swarms.get(topic)) {\n // throw new Error(`Swarm already exists for topic: ${topic.truncate()}`);\n // }\n\n const swarm = new TestSwarmConnection(this, topic);\n this._swarms.set(topic, swarm);\n return swarm;\n }\n\n async goOffline() {\n await this._networkManager.setConnectionState(ConnectionState.OFFLINE);\n }\n\n async goOnline() {\n await this._networkManager.setConnectionState(ConnectionState.ONLINE);\n }\n}\n\n// TODO(burdon): Reconcile with new Swarm concept.\nexport class TestSwarmConnection {\n protocol: TestWireProtocol;\n\n constructor(readonly peer: TestPeer, readonly topic: PublicKey) {\n // TODO(burdon): Configure plugins.\n // TODO(burdon): Prevent reuse?\n this.protocol = new TestWireProtocol(this.peer.peerId);\n }\n\n // TODO(burdon): Need to create new plugin instance per swarm?\n // If so, then perhaps joinSwarm should return swarm object with access to plugins.\n async join(topology = new FullyConnectedTopology()) {\n await this.peer._networkManager.joinSwarm({\n topic: this.topic,\n peerId: this.peer.peerId,\n protocolProvider: this.protocol.factory,\n topology\n });\n\n return this;\n }\n\n async leave() {\n await this.peer._networkManager.leaveSwarm(this.topic);\n return this;\n }\n}\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { asyncTimeout, Event } from '@dxos/async';\nimport { PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport { TestExtension } from '@dxos/teleport';\nimport { ComplexMap } from '@dxos/util';\n\nimport { createTeleportProtocolFactory } from '../wire-protocol';\n\nexport class TestWireProtocol {\n public readonly connections = new ComplexMap<PublicKey, TestExtension>(PublicKey.hash);\n public readonly connected = new Event<PublicKey>();\n public readonly disconnected = new Event<PublicKey>();\n\n constructor(public readonly peerId: PublicKey) {}\n\n readonly factory = createTeleportProtocolFactory(async (teleport) => {\n log('create', { remotePeerId: teleport.remotePeerId });\n const extension = new TestExtension({\n onClose: async () => {\n this.connections.delete(teleport.remotePeerId);\n this.disconnected.emit(teleport.remotePeerId);\n }\n });\n this.connections.set(teleport.remotePeerId, extension);\n teleport.addExtension('test', extension);\n this.connected.emit(teleport.remotePeerId);\n });\n\n async waitForConnection(peerId: PublicKey) {\n if (this.connections.has(peerId)) {\n return this.connections.get(peerId)!;\n }\n log('waitForConnection', { peerId });\n await asyncTimeout(\n this.connected.waitFor((connectedId) => connectedId.equals(peerId)),\n 1_000\n );\n return this.connections.get(peerId)!;\n }\n\n async testConnection(peerId: PublicKey, message?: string) {\n const connection = await this.waitForConnection(peerId);\n await connection.test(message);\n }\n}\n"],
|
|
5
|
-
"mappings": "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
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2022 DXOS.org\n//\n\nimport { PublicKey } from '@dxos/keys';\nimport { MemorySignalManager, MemorySignalManagerContext, WebsocketSignalManager } from '@dxos/messaging';\nimport { schema } from '@dxos/protocols';\nimport { ConnectionState } from '@dxos/protocols/proto/dxos/client/services';\nimport { createLinkedPorts, createProtoRpcPeer, ProtoRpcPeer } from '@dxos/rpc';\nimport { ComplexMap } from '@dxos/util';\n\nimport { NetworkManager } from '../network-manager';\nimport { FullyConnectedTopology } from '../topology';\nimport {\n MemoryTransportFactory,\n TransportFactory,\n WebRTCTransport,\n WebRTCTransportProxyFactory,\n WebRTCTransportService\n} from '../transport';\nimport { TestWireProtocol } from './test-wire-protocol';\n\n// Signal server will be started by the setup script.\nexport const TEST_SIGNAL_URL = 'ws://localhost:4000/.well-known/dx/signal';\n\nexport type TestBuilderOptions = {\n signalHosts?: string[];\n bridge?: boolean;\n};\n\n/**\n * Builder used to construct networks and peers.\n */\nexport class TestBuilder {\n private _signalContext = new MemorySignalManagerContext();\n\n constructor(public readonly options: TestBuilderOptions = {}) {}\n\n createSignalManager() {\n if (this.options.signalHosts) {\n return new WebsocketSignalManager(this.options.signalHosts);\n }\n\n return new MemorySignalManager(this._signalContext);\n }\n\n createPeer() {\n return new TestPeer(this);\n }\n}\n\n/**\n * Testing network peer.\n */\nexport class TestPeer {\n readonly peerId = PublicKey.random();\n\n private readonly _swarms = new ComplexMap<PublicKey, TestSwarmConnection>(PublicKey.hash);\n\n /**\n * @internal\n */\n readonly _networkManager: NetworkManager;\n\n private _proxy?: ProtoRpcPeer<any>;\n private _service?: ProtoRpcPeer<any>;\n\n constructor(private readonly testBuilder: TestBuilder) {\n this._networkManager = this.createNetworkManager();\n }\n\n // TODO(burdon): Move to TestBuilder.\n createNetworkManager() {\n let transportFactory: TransportFactory = MemoryTransportFactory;\n\n if (this.testBuilder.options.signalHosts) {\n if (this.testBuilder.options.bridge) {\n // Simulates bridge to shared worker.\n const [proxyPort, servicePort] = createLinkedPorts();\n\n this._proxy = createProtoRpcPeer({\n port: proxyPort,\n requested: {\n BridgeService: schema.getService('dxos.mesh.bridge.BridgeService')\n },\n noHandshake: true,\n encodingOptions: {\n preserveAny: true\n }\n });\n\n this._service = createProtoRpcPeer({\n port: servicePort,\n exposed: {\n BridgeService: schema.getService('dxos.mesh.bridge.BridgeService')\n },\n handlers: { BridgeService: new WebRTCTransportService() },\n noHandshake: true,\n encodingOptions: {\n preserveAny: true\n }\n });\n\n transportFactory = new WebRTCTransportProxyFactory().setBridgeService(this._proxy.rpc.BridgeService);\n } else {\n transportFactory = {\n createTransport: (params) => new WebRTCTransport(params)\n };\n }\n }\n\n return new NetworkManager({\n signalManager: this.testBuilder.createSignalManager(),\n transportFactory\n });\n }\n\n async open() {\n await this._networkManager.open();\n await this._proxy?.open();\n await this._service?.open();\n }\n\n async close() {\n await Promise.all(Array.from(this._swarms.values()).map((swarm) => swarm.leave()));\n this._swarms.clear();\n\n await this._proxy?.close();\n await this._service?.close();\n await this._networkManager.close();\n }\n\n getSwarm(topic: PublicKey): TestSwarmConnection {\n const swarm = this._swarms.get(topic);\n if (!swarm) {\n throw new Error(`Swarm not found for topic: ${topic}`);\n }\n\n return swarm;\n }\n\n createSwarm(topic: PublicKey): TestSwarmConnection {\n // TODO(burdon): Multiple.\n // if (this._swarms.get(topic)) {\n // throw new Error(`Swarm already exists for topic: ${topic.truncate()}`);\n // }\n\n const swarm = new TestSwarmConnection(this, topic);\n this._swarms.set(topic, swarm);\n return swarm;\n }\n\n async goOffline() {\n await this._networkManager.setConnectionState(ConnectionState.OFFLINE);\n }\n\n async goOnline() {\n await this._networkManager.setConnectionState(ConnectionState.ONLINE);\n }\n}\n\n// TODO(burdon): Reconcile with new Swarm concept.\nexport class TestSwarmConnection {\n protocol: TestWireProtocol;\n\n constructor(readonly peer: TestPeer, readonly topic: PublicKey) {\n // TODO(burdon): Configure plugins.\n // TODO(burdon): Prevent reuse?\n this.protocol = new TestWireProtocol(this.peer.peerId);\n }\n\n // TODO(burdon): Need to create new plugin instance per swarm?\n // If so, then perhaps joinSwarm should return swarm object with access to plugins.\n async join(topology = new FullyConnectedTopology()) {\n await this.peer._networkManager.joinSwarm({\n topic: this.topic,\n peerId: this.peer.peerId,\n protocolProvider: this.protocol.factory,\n topology\n });\n\n return this;\n }\n\n async leave() {\n await this.peer._networkManager.leaveSwarm(this.topic);\n return this;\n }\n}\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { asyncTimeout, Event } from '@dxos/async';\nimport { PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport { TestExtension } from '@dxos/teleport';\nimport { ComplexMap } from '@dxos/util';\n\nimport { createTeleportProtocolFactory } from '../wire-protocol';\n\nexport class TestWireProtocol {\n public readonly connections = new ComplexMap<PublicKey, TestExtension>(PublicKey.hash);\n public readonly connected = new Event<PublicKey>();\n public readonly disconnected = new Event<PublicKey>();\n\n constructor(public readonly peerId: PublicKey) {}\n\n readonly factory = createTeleportProtocolFactory(async (teleport) => {\n log('create', { remotePeerId: teleport.remotePeerId });\n const extension = new TestExtension({\n onClose: async () => {\n this.connections.delete(teleport.remotePeerId);\n this.disconnected.emit(teleport.remotePeerId);\n }\n });\n this.connections.set(teleport.remotePeerId, extension);\n teleport.addExtension('test', extension);\n this.connected.emit(teleport.remotePeerId);\n });\n\n async waitForConnection(peerId: PublicKey) {\n if (this.connections.has(peerId)) {\n return this.connections.get(peerId)!;\n }\n log('waitForConnection', { peerId });\n await asyncTimeout(\n this.connected.waitFor((connectedId) => connectedId.equals(peerId)),\n 1_000\n );\n return this.connections.get(peerId)!;\n }\n\n async testConnection(peerId: PublicKey, message?: string) {\n const connection = await this.waitForConnection(peerId);\n await connection.test(message);\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["PublicKey", "MemorySignalManager", "MemorySignalManagerContext", "WebsocketSignalManager", "schema", "ConnectionState", "createLinkedPorts", "createProtoRpcPeer", "ComplexMap", "asyncTimeout", "Event", "PublicKey", "log", "TestExtension", "ComplexMap", "TestWireProtocol", "constructor", "peerId", "connections", "ComplexMap", "PublicKey", "hash", "connected", "Event", "disconnected", "factory", "createTeleportProtocolFactory", "teleport", "log", "remotePeerId", "extension", "TestExtension", "onClose", "delete", "emit", "set", "addExtension", "waitForConnection", "has", "get", "asyncTimeout", "waitFor", "connectedId", "equals", "testConnection", "message", "connection", "test", "TEST_SIGNAL_URL", "TestBuilder", "constructor", "options", "_signalContext", "MemorySignalManagerContext", "createSignalManager", "signalHosts", "WebsocketSignalManager", "MemorySignalManager", "createPeer", "TestPeer", "testBuilder", "peerId", "PublicKey", "random", "_swarms", "ComplexMap", "hash", "_networkManager", "createNetworkManager", "transportFactory", "MemoryTransportFactory", "bridge", "proxyPort", "servicePort", "createLinkedPorts", "_proxy", "createProtoRpcPeer", "port", "requested", "BridgeService", "schema", "getService", "noHandshake", "encodingOptions", "preserveAny", "_service", "exposed", "handlers", "WebRTCTransportService", "WebRTCTransportProxyFactory", "setBridgeService", "rpc", "createTransport", "params", "WebRTCTransport", "NetworkManager", "signalManager", "open", "close", "Promise", "all", "Array", "from", "values", "map", "swarm", "leave", "clear", "getSwarm", "topic", "get", "Error", "createSwarm", "TestSwarmConnection", "set", "goOffline", "setConnectionState", "ConnectionState", "OFFLINE", "goOnline", "ONLINE", "peer", "protocol", "TestWireProtocol", "join", "topology", "FullyConnectedTopology", "joinSwarm", "protocolProvider", "factory", "leaveSwarm"]
|
|
7
7
|
}
|
package/dist/lib/node/index.cjs
CHANGED
|
@@ -320,7 +320,7 @@ __decorate([
|
|
|
320
320
|
// packages/core/mesh/network-manager/src/swarm/swarm.ts
|
|
321
321
|
var import_node_assert4 = __toESM(require("node:assert"));
|
|
322
322
|
var import_async3 = require("@dxos/async");
|
|
323
|
-
var
|
|
323
|
+
var import_context2 = require("@dxos/context");
|
|
324
324
|
var import_debug2 = require("@dxos/debug");
|
|
325
325
|
var import_keys4 = require("@dxos/keys");
|
|
326
326
|
var import_log4 = require("@dxos/log");
|
|
@@ -495,6 +495,7 @@ var MessageRouter = class {
|
|
|
495
495
|
// packages/core/mesh/network-manager/src/swarm/peer.ts
|
|
496
496
|
var import_node_assert3 = __toESM(require("node:assert"));
|
|
497
497
|
var import_async2 = require("@dxos/async");
|
|
498
|
+
var import_context = require("@dxos/context");
|
|
498
499
|
var import_keys3 = require("@dxos/keys");
|
|
499
500
|
var import_log3 = require("@dxos/log");
|
|
500
501
|
var __decorate2 = function(decorators, target, key, desc) {
|
|
@@ -507,6 +508,7 @@ var __decorate2 = function(decorators, target, key, desc) {
|
|
|
507
508
|
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
508
509
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
509
510
|
};
|
|
511
|
+
var CONNECTION_COUNTS_STABLE_AFTER = 5e3;
|
|
510
512
|
var Peer = class {
|
|
511
513
|
constructor(id, topic, localPeerId, _signalMessaging, _protocolProvider, _transportFactory, _callbacks) {
|
|
512
514
|
this.id = id;
|
|
@@ -516,6 +518,9 @@ var Peer = class {
|
|
|
516
518
|
this._protocolProvider = _protocolProvider;
|
|
517
519
|
this._transportFactory = _transportFactory;
|
|
518
520
|
this._callbacks = _callbacks;
|
|
521
|
+
this._availableAfter = 0;
|
|
522
|
+
this.availableToConnect = true;
|
|
523
|
+
this._ctx = new import_context.Context();
|
|
519
524
|
this.advertizing = false;
|
|
520
525
|
this.initiating = false;
|
|
521
526
|
}
|
|
@@ -532,7 +537,7 @@ var Peer = class {
|
|
|
532
537
|
peerId: this.localPeerId
|
|
533
538
|
}, {
|
|
534
539
|
file: "peer.ts",
|
|
535
|
-
line:
|
|
540
|
+
line: 107,
|
|
536
541
|
scope: this,
|
|
537
542
|
callSite: (f, a) => f(...a)
|
|
538
543
|
});
|
|
@@ -559,7 +564,7 @@ var Peer = class {
|
|
|
559
564
|
err
|
|
560
565
|
}, {
|
|
561
566
|
file: "peer.ts",
|
|
562
|
-
line:
|
|
567
|
+
line: 131,
|
|
563
568
|
scope: this,
|
|
564
569
|
callSite: (f, a) => f(...a)
|
|
565
570
|
});
|
|
@@ -588,7 +593,7 @@ var Peer = class {
|
|
|
588
593
|
sessionId
|
|
589
594
|
}, {
|
|
590
595
|
file: "peer.ts",
|
|
591
|
-
line:
|
|
596
|
+
line: 149,
|
|
592
597
|
scope: this,
|
|
593
598
|
callSite: (f, a) => f(...a)
|
|
594
599
|
});
|
|
@@ -611,14 +616,14 @@ var Peer = class {
|
|
|
611
616
|
remoteId: this.id
|
|
612
617
|
}, {
|
|
613
618
|
file: "peer.ts",
|
|
614
|
-
line:
|
|
619
|
+
line: 161,
|
|
615
620
|
scope: this,
|
|
616
621
|
callSite: (f, a) => f(...a)
|
|
617
622
|
});
|
|
618
623
|
if (connection.state !== ConnectionState.INITIAL) {
|
|
619
624
|
(0, import_log3.log)("ignoring response", {}, {
|
|
620
625
|
file: "peer.ts",
|
|
621
|
-
line:
|
|
626
|
+
line: 163,
|
|
622
627
|
scope: this,
|
|
623
628
|
callSite: (f, a) => f(...a)
|
|
624
629
|
});
|
|
@@ -638,7 +643,7 @@ var Peer = class {
|
|
|
638
643
|
err
|
|
639
644
|
}, {
|
|
640
645
|
file: "peer.ts",
|
|
641
|
-
line:
|
|
646
|
+
line: 174,
|
|
642
647
|
scope: this,
|
|
643
648
|
callSite: (f, a) => f(...a)
|
|
644
649
|
});
|
|
@@ -653,6 +658,7 @@ var Peer = class {
|
|
|
653
658
|
* Either we're initiating a connection or creating one in response to an offer from the other peer.
|
|
654
659
|
*/
|
|
655
660
|
_createConnection(initiator, sessionId) {
|
|
661
|
+
var _a;
|
|
656
662
|
(0, import_log3.log)("creating connection", {
|
|
657
663
|
topic: this.topic,
|
|
658
664
|
peerId: this.localPeerId,
|
|
@@ -661,7 +667,7 @@ var Peer = class {
|
|
|
661
667
|
sessionId
|
|
662
668
|
}, {
|
|
663
669
|
file: "peer.ts",
|
|
664
|
-
line:
|
|
670
|
+
line: 188,
|
|
665
671
|
scope: this,
|
|
666
672
|
callSite: (f, a) => f(...a)
|
|
667
673
|
});
|
|
@@ -684,9 +690,13 @@ var Peer = class {
|
|
|
684
690
|
);
|
|
685
691
|
connection._traceParent = this._traceParent;
|
|
686
692
|
this._callbacks.onInitiated(connection);
|
|
693
|
+
void ((_a = this._connectionCtx) == null ? void 0 : _a.dispose());
|
|
694
|
+
this._connectionCtx = this._ctx.derive();
|
|
687
695
|
connection.stateChanged.on((state) => {
|
|
688
696
|
switch (state) {
|
|
689
697
|
case ConnectionState.CONNECTED: {
|
|
698
|
+
this.availableToConnect = true;
|
|
699
|
+
this._lastConnectionTime = Date.now();
|
|
690
700
|
this._callbacks.onConnected();
|
|
691
701
|
break;
|
|
692
702
|
}
|
|
@@ -698,13 +708,23 @@ var Peer = class {
|
|
|
698
708
|
initiator
|
|
699
709
|
}, {
|
|
700
710
|
file: "peer.ts",
|
|
701
|
-
line:
|
|
711
|
+
line: 224,
|
|
702
712
|
scope: this,
|
|
703
713
|
callSite: (f, a) => f(...a)
|
|
704
714
|
});
|
|
705
715
|
(0, import_node_assert3.default)(this.connection === connection, "Connection mismatch (race condition).");
|
|
716
|
+
if (this._lastConnectionTime && this._lastConnectionTime + CONNECTION_COUNTS_STABLE_AFTER < Date.now()) {
|
|
717
|
+
this._availableAfter = 0;
|
|
718
|
+
} else {
|
|
719
|
+
this.availableToConnect = false;
|
|
720
|
+
this._availableAfter = increaseInterval(this._availableAfter);
|
|
721
|
+
}
|
|
706
722
|
this.connection = void 0;
|
|
707
723
|
this._callbacks.onDisconnected();
|
|
724
|
+
(0, import_async2.scheduleTask)(this._connectionCtx, () => {
|
|
725
|
+
this.availableToConnect = true;
|
|
726
|
+
this._callbacks.onPeerAvailable();
|
|
727
|
+
}, this._availableAfter);
|
|
708
728
|
break;
|
|
709
729
|
}
|
|
710
730
|
}
|
|
@@ -718,7 +738,7 @@ var Peer = class {
|
|
|
718
738
|
err
|
|
719
739
|
}, {
|
|
720
740
|
file: "peer.ts",
|
|
721
|
-
line:
|
|
741
|
+
line: 252,
|
|
722
742
|
scope: this,
|
|
723
743
|
callSite: (f, a) => f(...a)
|
|
724
744
|
});
|
|
@@ -737,7 +757,7 @@ var Peer = class {
|
|
|
737
757
|
sessionId: connection.sessionId
|
|
738
758
|
}, {
|
|
739
759
|
file: "peer.ts",
|
|
740
|
-
line:
|
|
760
|
+
line: 268,
|
|
741
761
|
scope: this,
|
|
742
762
|
callSite: (f, a) => f(...a)
|
|
743
763
|
});
|
|
@@ -747,7 +767,7 @@ var Peer = class {
|
|
|
747
767
|
sessionId: connection.sessionId
|
|
748
768
|
}, {
|
|
749
769
|
file: "peer.ts",
|
|
750
|
-
line:
|
|
770
|
+
line: 274,
|
|
751
771
|
scope: this,
|
|
752
772
|
callSite: (f, a) => f(...a)
|
|
753
773
|
});
|
|
@@ -758,7 +778,7 @@ var Peer = class {
|
|
|
758
778
|
message
|
|
759
779
|
}, {
|
|
760
780
|
file: "peer.ts",
|
|
761
|
-
line:
|
|
781
|
+
line: 279,
|
|
762
782
|
scope: this,
|
|
763
783
|
callSite: (f, a) => f(...a)
|
|
764
784
|
});
|
|
@@ -768,12 +788,13 @@ var Peer = class {
|
|
|
768
788
|
}
|
|
769
789
|
async destroy() {
|
|
770
790
|
var _a;
|
|
791
|
+
await this._ctx.dispose();
|
|
771
792
|
(0, import_log3.log)("Destroying peer", {
|
|
772
793
|
peerId: this.id,
|
|
773
794
|
topic: this.topic
|
|
774
795
|
}, {
|
|
775
796
|
file: "peer.ts",
|
|
776
|
-
line:
|
|
797
|
+
line: 288,
|
|
777
798
|
scope: this,
|
|
778
799
|
callSite: (f, a) => f(...a)
|
|
779
800
|
});
|
|
@@ -783,6 +804,18 @@ var Peer = class {
|
|
|
783
804
|
__decorate2([
|
|
784
805
|
import_async2.synchronized
|
|
785
806
|
], Peer.prototype, "destroy", null);
|
|
807
|
+
var increaseInterval = (interval) => {
|
|
808
|
+
if (interval === 0) {
|
|
809
|
+
return 50;
|
|
810
|
+
} else if (interval < 500) {
|
|
811
|
+
return 500;
|
|
812
|
+
} else if (interval < 1e3) {
|
|
813
|
+
return 1e3;
|
|
814
|
+
} else if (interval < 5e3) {
|
|
815
|
+
return 5e3;
|
|
816
|
+
}
|
|
817
|
+
return 1e4;
|
|
818
|
+
};
|
|
786
819
|
|
|
787
820
|
// packages/core/mesh/network-manager/src/swarm/swarm.ts
|
|
788
821
|
var __decorate3 = function(decorators, target, key, desc) {
|
|
@@ -809,7 +842,7 @@ var Swarm = class {
|
|
|
809
842
|
this._transportFactory = _transportFactory;
|
|
810
843
|
this._label = _label;
|
|
811
844
|
this._peers = new import_util2.ComplexMap(import_keys4.PublicKey.hash);
|
|
812
|
-
this._ctx = new
|
|
845
|
+
this._ctx = new import_context2.Context();
|
|
813
846
|
this.connectionAdded = new import_async3.Event();
|
|
814
847
|
this.disconnected = new import_async3.Event();
|
|
815
848
|
this.connected = new import_async3.Event();
|
|
@@ -1049,7 +1082,7 @@ var Swarm = class {
|
|
|
1049
1082
|
}
|
|
1050
1083
|
// For debug purposes
|
|
1051
1084
|
async goOnline() {
|
|
1052
|
-
this._ctx = new
|
|
1085
|
+
this._ctx = new import_context2.Context();
|
|
1053
1086
|
}
|
|
1054
1087
|
_getOrCreatePeer(peerId) {
|
|
1055
1088
|
let peer = this._peers.get(peerId);
|
|
@@ -1078,6 +1111,9 @@ var Swarm = class {
|
|
|
1078
1111
|
},
|
|
1079
1112
|
onOffer: (remoteId) => {
|
|
1080
1113
|
return this._topology.onOffer(remoteId);
|
|
1114
|
+
},
|
|
1115
|
+
onPeerAvailable: () => {
|
|
1116
|
+
this._topology.update();
|
|
1081
1117
|
}
|
|
1082
1118
|
});
|
|
1083
1119
|
peer._traceParent = this._instanceId;
|
|
@@ -1095,7 +1131,7 @@ var Swarm = class {
|
|
|
1095
1131
|
getState: () => ({
|
|
1096
1132
|
ownPeerId: this._ownPeerId,
|
|
1097
1133
|
connected: Array.from(this._peers.values()).filter((peer) => peer.connection).map((peer) => peer.id),
|
|
1098
|
-
candidates: Array.from(this._peers.values()).filter((peer) => !peer.connection && peer.advertizing).map((peer) => peer.id)
|
|
1134
|
+
candidates: Array.from(this._peers.values()).filter((peer) => !peer.connection && peer.advertizing && peer.availableToConnect).map((peer) => peer.id)
|
|
1099
1135
|
}),
|
|
1100
1136
|
connect: (peer) => {
|
|
1101
1137
|
if (this._ctx.disposed) {
|
|
@@ -1107,7 +1143,7 @@ var Swarm = class {
|
|
|
1107
1143
|
} catch (err) {
|
|
1108
1144
|
import_log4.log.warn("initiation error", err, {
|
|
1109
1145
|
file: "swarm.ts",
|
|
1110
|
-
line:
|
|
1146
|
+
line: 320,
|
|
1111
1147
|
scope: this,
|
|
1112
1148
|
callSite: (f, a) => f(...a)
|
|
1113
1149
|
});
|
|
@@ -1135,7 +1171,7 @@ var Swarm = class {
|
|
|
1135
1171
|
remoteId
|
|
1136
1172
|
}, {
|
|
1137
1173
|
file: "swarm.ts",
|
|
1138
|
-
line:
|
|
1174
|
+
line: 347,
|
|
1139
1175
|
scope: this,
|
|
1140
1176
|
callSite: (f, a) => f(...a)
|
|
1141
1177
|
});
|
|
@@ -1152,7 +1188,7 @@ var Swarm = class {
|
|
|
1152
1188
|
remoteId
|
|
1153
1189
|
}, {
|
|
1154
1190
|
file: "swarm.ts",
|
|
1155
|
-
line:
|
|
1191
|
+
line: 361,
|
|
1156
1192
|
scope: this,
|
|
1157
1193
|
callSite: (f, a) => f(...a)
|
|
1158
1194
|
});
|
|
@@ -1162,7 +1198,7 @@ var Swarm = class {
|
|
|
1162
1198
|
remoteId
|
|
1163
1199
|
}, {
|
|
1164
1200
|
file: "swarm.ts",
|
|
1165
|
-
line:
|
|
1201
|
+
line: 364,
|
|
1166
1202
|
scope: this,
|
|
1167
1203
|
callSite: (f, a) => f(...a)
|
|
1168
1204
|
});
|
|
@@ -1348,6 +1384,7 @@ var NetworkManager = class {
|
|
|
1348
1384
|
this.connectionStateChanged = new import_async6.Event();
|
|
1349
1385
|
this.topicsUpdated = new import_async6.Event();
|
|
1350
1386
|
this._instanceId = import_keys7.PublicKey.random().toHex();
|
|
1387
|
+
signalManager._traceParent = this._instanceId;
|
|
1351
1388
|
this._transportFactory = transportFactory;
|
|
1352
1389
|
this._signalManager = signalManager;
|
|
1353
1390
|
this._signalManager.swarmEvent.on(({ topic, swarmEvent: event }) => {
|
|
@@ -1389,10 +1426,11 @@ var NetworkManager = class {
|
|
|
1389
1426
|
}
|
|
1390
1427
|
async open() {
|
|
1391
1428
|
import_log6.log.trace("dxos.mesh.network-manager", import_protocols4.trace.begin({
|
|
1392
|
-
id: this._instanceId
|
|
1429
|
+
id: this._instanceId,
|
|
1430
|
+
parentId: this._traceParent
|
|
1393
1431
|
}), {
|
|
1394
1432
|
file: "network-manager.ts",
|
|
1395
|
-
line:
|
|
1433
|
+
line: 135,
|
|
1396
1434
|
scope: this,
|
|
1397
1435
|
callSite: (f, a) => f(...a)
|
|
1398
1436
|
});
|
|
@@ -1404,7 +1442,7 @@ var NetworkManager = class {
|
|
|
1404
1442
|
await this.leaveSwarm(topic).catch((err) => {
|
|
1405
1443
|
(0, import_log6.log)(err, {}, {
|
|
1406
1444
|
file: "network-manager.ts",
|
|
1407
|
-
line:
|
|
1445
|
+
line: 143,
|
|
1408
1446
|
scope: this,
|
|
1409
1447
|
callSite: (f, a) => f(...a)
|
|
1410
1448
|
});
|
|
@@ -1416,7 +1454,7 @@ var NetworkManager = class {
|
|
|
1416
1454
|
id: this._instanceId
|
|
1417
1455
|
}), {
|
|
1418
1456
|
file: "network-manager.ts",
|
|
1419
|
-
line:
|
|
1457
|
+
line: 149,
|
|
1420
1458
|
scope: this,
|
|
1421
1459
|
callSite: (f, a) => f(...a)
|
|
1422
1460
|
});
|
|
@@ -1439,7 +1477,7 @@ var NetworkManager = class {
|
|
|
1439
1477
|
topology: topology.toString()
|
|
1440
1478
|
}, {
|
|
1441
1479
|
file: "network-manager.ts",
|
|
1442
|
-
line:
|
|
1480
|
+
line: 170,
|
|
1443
1481
|
scope: this,
|
|
1444
1482
|
callSite: (f, a) => f(...a)
|
|
1445
1483
|
});
|
|
@@ -1449,7 +1487,7 @@ var NetworkManager = class {
|
|
|
1449
1487
|
error
|
|
1450
1488
|
}, {
|
|
1451
1489
|
file: "network-manager.ts",
|
|
1452
|
-
line:
|
|
1490
|
+
line: 173,
|
|
1453
1491
|
scope: this,
|
|
1454
1492
|
callSite: (f, a) => f(...a)
|
|
1455
1493
|
});
|
|
@@ -1460,7 +1498,7 @@ var NetworkManager = class {
|
|
|
1460
1498
|
peerId
|
|
1461
1499
|
}).catch((error) => import_log6.log.catch(error, {}, {
|
|
1462
1500
|
file: "network-manager.ts",
|
|
1463
|
-
line:
|
|
1501
|
+
line: 177,
|
|
1464
1502
|
scope: this,
|
|
1465
1503
|
callSite: (f, a) => f(...a)
|
|
1466
1504
|
}));
|
|
@@ -1472,7 +1510,7 @@ var NetworkManager = class {
|
|
|
1472
1510
|
count: this._swarms.size
|
|
1473
1511
|
}, {
|
|
1474
1512
|
file: "network-manager.ts",
|
|
1475
|
-
line:
|
|
1513
|
+
line: 182,
|
|
1476
1514
|
scope: this,
|
|
1477
1515
|
callSite: (f, a) => f(...a)
|
|
1478
1516
|
});
|
|
@@ -1490,7 +1528,7 @@ var NetworkManager = class {
|
|
|
1490
1528
|
topic: import_keys7.PublicKey.from(topic).truncate()
|
|
1491
1529
|
}, {
|
|
1492
1530
|
file: "network-manager.ts",
|
|
1493
|
-
line:
|
|
1531
|
+
line: 194,
|
|
1494
1532
|
scope: this,
|
|
1495
1533
|
callSite: (f, a) => f(...a)
|
|
1496
1534
|
});
|
|
@@ -1500,7 +1538,7 @@ var NetworkManager = class {
|
|
|
1500
1538
|
topic: import_keys7.PublicKey.from(topic)
|
|
1501
1539
|
}, {
|
|
1502
1540
|
file: "network-manager.ts",
|
|
1503
|
-
line:
|
|
1541
|
+
line: 198,
|
|
1504
1542
|
scope: this,
|
|
1505
1543
|
callSite: (f, a) => f(...a)
|
|
1506
1544
|
});
|
|
@@ -1521,7 +1559,7 @@ var NetworkManager = class {
|
|
|
1521
1559
|
count: this._swarms.size
|
|
1522
1560
|
}, {
|
|
1523
1561
|
file: "network-manager.ts",
|
|
1524
|
-
line:
|
|
1562
|
+
line: 212,
|
|
1525
1563
|
scope: this,
|
|
1526
1564
|
callSite: (f, a) => f(...a)
|
|
1527
1565
|
});
|
|
@@ -2145,7 +2183,7 @@ var WebRTCTransportService = class {
|
|
|
2145
2183
|
// packages/core/mesh/network-manager/src/transport/webrtc-transport-proxy.ts
|
|
2146
2184
|
var import_node_assert12 = __toESM(require("node:assert"));
|
|
2147
2185
|
var import_async9 = require("@dxos/async");
|
|
2148
|
-
var
|
|
2186
|
+
var import_context3 = require("@dxos/context");
|
|
2149
2187
|
var import_debug6 = require("@dxos/debug");
|
|
2150
2188
|
var import_keys11 = require("@dxos/keys");
|
|
2151
2189
|
var import_log12 = require("@dxos/log");
|
|
@@ -2155,7 +2193,7 @@ var WebRTCTransportProxy = class {
|
|
|
2155
2193
|
constructor(_params) {
|
|
2156
2194
|
this._params = _params;
|
|
2157
2195
|
this._proxyId = import_keys11.PublicKey.random();
|
|
2158
|
-
this._ctx = new
|
|
2196
|
+
this._ctx = new import_context3.Context();
|
|
2159
2197
|
this.closed = new import_async9.Event();
|
|
2160
2198
|
this._closed = false;
|
|
2161
2199
|
this.connected = new import_async9.Event();
|