@dxos/messaging 0.8.4-main.3a94e84 → 0.8.4-main.3c1ae3b
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-QLQS7TUS.mjs → chunk-4EMAT5U7.mjs} +225 -151
- package/dist/lib/browser/chunk-4EMAT5U7.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 +11 -5
- package/dist/lib/browser/testing/index.mjs.map +3 -3
- package/dist/lib/node-esm/{chunk-GIM3VIFP.mjs → chunk-BZPNU44D.mjs} +225 -151
- package/dist/lib/node-esm/chunk-BZPNU44D.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +1 -1
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/testing/index.mjs +11 -5
- package/dist/lib/node-esm/testing/index.mjs.map +3 -3
- package/dist/types/src/messenger.blueprint-test.d.ts.map +1 -1
- package/dist/types/src/messenger.d.ts +1 -1
- package/dist/types/src/messenger.d.ts.map +1 -1
- package/dist/types/src/signal-client/signal-client.d.ts +2 -2
- package/dist/types/src/signal-client/signal-client.d.ts.map +1 -1
- package/dist/types/src/signal-client/signal-local-state.d.ts +1 -1
- package/dist/types/src/signal-client/signal-local-state.d.ts.map +1 -1
- package/dist/types/src/signal-client/signal-rpc-client.d.ts.map +1 -1
- package/dist/types/src/signal-manager/edge-signal-manager.d.ts +1 -1
- package/dist/types/src/signal-manager/edge-signal-manager.d.ts.map +1 -1
- package/dist/types/src/signal-manager/memory-signal-manager.d.ts +1 -1
- package/dist/types/src/signal-manager/memory-signal-manager.d.ts.map +1 -1
- package/dist/types/src/signal-manager/signal-manager.d.ts +1 -1
- package/dist/types/src/signal-manager/signal-manager.d.ts.map +1 -1
- package/dist/types/src/signal-manager/websocket-signal-manager.d.ts +1 -1
- package/dist/types/src/signal-manager/websocket-signal-manager.d.ts.map +1 -1
- package/dist/types/src/signal-methods.d.ts +2 -2
- package/dist/types/src/signal-methods.d.ts.map +1 -1
- package/dist/types/src/testing/test-builder.d.ts +1 -1
- package/dist/types/src/testing/test-builder.d.ts.map +1 -1
- package/dist/types/src/testing/test-peer.d.ts +1 -1
- package/dist/types/src/testing/test-peer.d.ts.map +1 -1
- package/dist/types/src/testing/utils.d.ts +1 -1
- package/dist/types/src/testing/utils.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +18 -16
- package/src/messenger.blueprint-test.ts +2 -2
- package/src/messenger.node.test.ts +7 -38
- package/src/messenger.ts +5 -5
- package/src/signal-client/signal-client.node.test.ts +4 -3
- package/src/signal-client/signal-client.ts +7 -6
- package/src/signal-client/signal-local-state.ts +4 -3
- package/src/signal-client/signal-rpc-client.node.test.ts +1 -1
- package/src/signal-client/signal-rpc-client.ts +3 -3
- package/src/signal-manager/edge-signal-manager.ts +23 -13
- package/src/signal-manager/memory-signal-manager.ts +2 -1
- package/src/signal-manager/signal-manager.ts +1 -1
- package/src/signal-manager/websocket-signal-manager.node.test.ts +3 -2
- package/src/signal-manager/websocket-signal-manager.ts +4 -3
- package/src/signal-methods.ts +3 -3
- package/src/testing/test-builder.ts +3 -2
- package/src/testing/test-peer.ts +3 -2
- package/src/testing/utils.ts +3 -2
- package/dist/lib/browser/chunk-QLQS7TUS.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-GIM3VIFP.mjs.map +0 -7
|
@@ -35,19 +35,22 @@ var ReliablePayload = schema.getCodecForType("dxos.mesh.messaging.ReliablePayloa
|
|
|
35
35
|
var Acknowledgement = schema.getCodecForType("dxos.mesh.messaging.Acknowledgement");
|
|
36
36
|
var RECEIVED_MESSAGES_GC_INTERVAL = 12e4;
|
|
37
37
|
var Messenger = class {
|
|
38
|
+
_monitor = new MessengerMonitor();
|
|
39
|
+
_signalManager;
|
|
40
|
+
// { peerId, payloadType } => listeners set
|
|
41
|
+
_listeners = new ComplexMap(({ peerId, payloadType }) => peerId + payloadType);
|
|
42
|
+
// peerId => listeners set
|
|
43
|
+
_defaultListeners = /* @__PURE__ */ new Map();
|
|
44
|
+
_onAckCallbacks = new ComplexMap(PublicKey.hash);
|
|
45
|
+
_receivedMessages = new ComplexSet(PublicKey.hash);
|
|
46
|
+
/**
|
|
47
|
+
* Keys scheduled to be cleared from _receivedMessages on the next iteration.
|
|
48
|
+
*/
|
|
49
|
+
_toClear = new ComplexSet(PublicKey.hash);
|
|
50
|
+
_ctx;
|
|
51
|
+
_closed = true;
|
|
52
|
+
_retryDelay;
|
|
38
53
|
constructor({ signalManager, retryDelay = 1e3 }) {
|
|
39
|
-
this._monitor = new MessengerMonitor();
|
|
40
|
-
// { peerId, payloadType } => listeners set
|
|
41
|
-
this._listeners = new ComplexMap(({ peerId, payloadType }) => peerId + payloadType);
|
|
42
|
-
// peerId => listeners set
|
|
43
|
-
this._defaultListeners = /* @__PURE__ */ new Map();
|
|
44
|
-
this._onAckCallbacks = new ComplexMap(PublicKey.hash);
|
|
45
|
-
this._receivedMessages = new ComplexSet(PublicKey.hash);
|
|
46
|
-
/**
|
|
47
|
-
* Keys scheduled to be cleared from _receivedMessages on the next iteration.
|
|
48
|
-
*/
|
|
49
|
-
this._toClear = new ComplexSet(PublicKey.hash);
|
|
50
|
-
this._closed = true;
|
|
51
54
|
this._signalManager = signalManager;
|
|
52
55
|
this._retryDelay = retryDelay;
|
|
53
56
|
this.open();
|
|
@@ -181,7 +184,10 @@ var Messenger = class {
|
|
|
181
184
|
C: (f, a) => f(...a)
|
|
182
185
|
});
|
|
183
186
|
this._onAckCallbacks.delete(reliablePayload.messageId);
|
|
184
|
-
timeoutHit(new ProtocolTimeoutError(
|
|
187
|
+
timeoutHit(new ProtocolTimeoutError({
|
|
188
|
+
message: "signaling message not delivered",
|
|
189
|
+
cause: new TimeoutError(MESSAGE_TIMEOUT, "Message not delivered")
|
|
190
|
+
}));
|
|
185
191
|
void messageContext.dispose();
|
|
186
192
|
this._monitor.recordReliableMessage({
|
|
187
193
|
sendAttempts,
|
|
@@ -411,7 +417,7 @@ var Messenger = class {
|
|
|
411
417
|
|
|
412
418
|
// src/signal-client/signal-client.ts
|
|
413
419
|
import { DeferredTask, Event as Event2, Trigger as Trigger2, scheduleTask as scheduleTask2, scheduleTaskInterval as scheduleTaskInterval3, sleep } from "@dxos/async";
|
|
414
|
-
import { cancelWithContext as cancelWithContext2
|
|
420
|
+
import { Resource, cancelWithContext as cancelWithContext2 } from "@dxos/context";
|
|
415
421
|
import { invariant as invariant3 } from "@dxos/invariant";
|
|
416
422
|
import { PublicKey as PublicKey4 } from "@dxos/keys";
|
|
417
423
|
import { log as log4 } from "@dxos/log";
|
|
@@ -421,23 +427,21 @@ import { SignalState } from "@dxos/protocols/proto/dxos/mesh/signal";
|
|
|
421
427
|
// src/signal-client/signal-client-monitor.ts
|
|
422
428
|
import { trace as trace3 } from "@dxos/tracing";
|
|
423
429
|
var SignalClientMonitor = class {
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
this._lastStateChange = /* @__PURE__ */ new Date();
|
|
440
|
-
}
|
|
430
|
+
_performance = {
|
|
431
|
+
sentMessages: 0,
|
|
432
|
+
receivedMessages: 0,
|
|
433
|
+
reconnectCounter: 0,
|
|
434
|
+
joinCounter: 0,
|
|
435
|
+
leaveCounter: 0
|
|
436
|
+
};
|
|
437
|
+
/**
|
|
438
|
+
* Timestamp of when the connection attempt was began.
|
|
439
|
+
*/
|
|
440
|
+
_connectionStarted = /* @__PURE__ */ new Date();
|
|
441
|
+
/**
|
|
442
|
+
* Timestamp of last state change.
|
|
443
|
+
*/
|
|
444
|
+
_lastStateChange = /* @__PURE__ */ new Date();
|
|
441
445
|
getRecordedTimestamps() {
|
|
442
446
|
return {
|
|
443
447
|
connectionStarted: this._connectionStarted,
|
|
@@ -518,21 +522,40 @@ var createIdentityTags = (message) => {
|
|
|
518
522
|
};
|
|
519
523
|
|
|
520
524
|
// src/signal-client/signal-local-state.ts
|
|
521
|
-
import {
|
|
525
|
+
import { Event, asyncTimeout } from "@dxos/async";
|
|
522
526
|
import { cancelWithContext } from "@dxos/context";
|
|
523
527
|
import { PublicKey as PublicKey2 } from "@dxos/keys";
|
|
524
528
|
import { log as log2 } from "@dxos/log";
|
|
525
529
|
import { ComplexMap as ComplexMap2, ComplexSet as ComplexSet2, safeAwaitAll } from "@dxos/util";
|
|
526
530
|
var __dxlog_file2 = "/__w/dxos/dxos/packages/core/mesh/messaging/src/signal-client/signal-local-state.ts";
|
|
527
531
|
var SignalLocalState = class {
|
|
532
|
+
_onMessage;
|
|
533
|
+
_onSwarmEvent;
|
|
534
|
+
/**
|
|
535
|
+
* Swarm events streams. Keys represent actually joined topic and peerId.
|
|
536
|
+
*/
|
|
537
|
+
_swarmStreams = new ComplexMap2(({ topic, peerId }) => topic.toHex() + peerId.toHex());
|
|
538
|
+
/**
|
|
539
|
+
* Represent desired joined topic and peerId.
|
|
540
|
+
*/
|
|
541
|
+
_joinedTopics = new ComplexSet2(({ topic, peerId }) => topic.toHex() + peerId.toHex());
|
|
542
|
+
/**
|
|
543
|
+
* Represent desired message subscriptions.
|
|
544
|
+
*/
|
|
545
|
+
_subscribedMessages = new ComplexSet2(({ peerId }) => peerId.toHex());
|
|
546
|
+
/**
|
|
547
|
+
* Message streams. Keys represents actually subscribed peers.
|
|
548
|
+
* @internal
|
|
549
|
+
*/
|
|
550
|
+
messageStreams = new ComplexMap2((key) => key.toHex());
|
|
551
|
+
/**
|
|
552
|
+
* Event to use in tests to wait till subscription is successfully established.
|
|
553
|
+
* @internal
|
|
554
|
+
*/
|
|
555
|
+
reconciled = new Event();
|
|
528
556
|
constructor(_onMessage, _onSwarmEvent) {
|
|
529
557
|
this._onMessage = _onMessage;
|
|
530
558
|
this._onSwarmEvent = _onSwarmEvent;
|
|
531
|
-
this._swarmStreams = new ComplexMap2(({ topic, peerId }) => topic.toHex() + peerId.toHex());
|
|
532
|
-
this._joinedTopics = new ComplexSet2(({ topic, peerId }) => topic.toHex() + peerId.toHex());
|
|
533
|
-
this._subscribedMessages = new ComplexSet2(({ peerId }) => peerId.toHex());
|
|
534
|
-
this.messageStreams = new ComplexMap2((key) => key.toHex());
|
|
535
|
-
this.reconciled = new Event();
|
|
536
559
|
}
|
|
537
560
|
async safeCloseStreams() {
|
|
538
561
|
const streams = [
|
|
@@ -577,7 +600,7 @@ var SignalLocalState = class {
|
|
|
577
600
|
peerId
|
|
578
601
|
}, {
|
|
579
602
|
F: __dxlog_file2,
|
|
580
|
-
L:
|
|
603
|
+
L: 80,
|
|
581
604
|
S: this,
|
|
582
605
|
C: (f, a) => f(...a)
|
|
583
606
|
});
|
|
@@ -629,7 +652,7 @@ var SignalLocalState = class {
|
|
|
629
652
|
swarmEvent
|
|
630
653
|
}, {
|
|
631
654
|
F: __dxlog_file2,
|
|
632
|
-
L:
|
|
655
|
+
L: 116,
|
|
633
656
|
S: this,
|
|
634
657
|
C: (f, a) => f(...a)
|
|
635
658
|
});
|
|
@@ -697,7 +720,7 @@ var SignalLocalState = class {
|
|
|
697
720
|
|
|
698
721
|
// src/signal-client/signal-rpc-client.ts
|
|
699
722
|
import WebSocket from "isomorphic-ws";
|
|
700
|
-
import {
|
|
723
|
+
import { TimeoutError as TimeoutError2, Trigger, scheduleTaskInterval as scheduleTaskInterval2 } from "@dxos/async";
|
|
701
724
|
import { Context as Context2 } from "@dxos/context";
|
|
702
725
|
import { invariant as invariant2 } from "@dxos/invariant";
|
|
703
726
|
import { PublicKey as PublicKey3 } from "@dxos/keys";
|
|
@@ -722,11 +745,16 @@ var SignalRpcClientMonitor = class {
|
|
|
722
745
|
var __dxlog_file3 = "/__w/dxos/dxos/packages/core/mesh/messaging/src/signal-client/signal-rpc-client.ts";
|
|
723
746
|
var SIGNAL_KEEPALIVE_INTERVAL = 1e4;
|
|
724
747
|
var SignalRPCClient = class {
|
|
748
|
+
_socket;
|
|
749
|
+
_rpc;
|
|
750
|
+
_connectTrigger = new Trigger();
|
|
751
|
+
_keepaliveCtx;
|
|
752
|
+
_closed = false;
|
|
753
|
+
_url;
|
|
754
|
+
_callbacks;
|
|
755
|
+
_closeComplete = new Trigger();
|
|
756
|
+
_monitor = new SignalRpcClientMonitor();
|
|
725
757
|
constructor({ url, callbacks = {} }) {
|
|
726
|
-
this._connectTrigger = new Trigger();
|
|
727
|
-
this._closed = false;
|
|
728
|
-
this._closeComplete = new Trigger();
|
|
729
|
-
this._monitor = new SignalRpcClientMonitor();
|
|
730
758
|
const traceId = PublicKey3.random().toHex();
|
|
731
759
|
log3.trace("dxos.mesh.signal-rpc-client.constructor", trace5.begin({
|
|
732
760
|
id: traceId
|
|
@@ -966,6 +994,29 @@ var MAX_RECONNECT_TIMEOUT = 5e3;
|
|
|
966
994
|
var ERROR_RECONCILE_DELAY = 1e3;
|
|
967
995
|
var RECONCILE_INTERVAL = 5e3;
|
|
968
996
|
var SignalClient = class extends Resource {
|
|
997
|
+
_host;
|
|
998
|
+
_getMetadata;
|
|
999
|
+
_monitor = new SignalClientMonitor();
|
|
1000
|
+
_state = SignalState.CLOSED;
|
|
1001
|
+
_lastError;
|
|
1002
|
+
_lastReconciliationFailed = false;
|
|
1003
|
+
_clientReady = new Trigger2();
|
|
1004
|
+
_connectionCtx;
|
|
1005
|
+
_client;
|
|
1006
|
+
_reconcileTask;
|
|
1007
|
+
_reconnectTask;
|
|
1008
|
+
/**
|
|
1009
|
+
* Number of milliseconds after which the connection will be attempted again in case of error.
|
|
1010
|
+
*/
|
|
1011
|
+
_reconnectAfter = DEFAULT_RECONNECT_TIMEOUT;
|
|
1012
|
+
_instanceId = PublicKey4.random().toHex();
|
|
1013
|
+
/**
|
|
1014
|
+
* @internal
|
|
1015
|
+
*/
|
|
1016
|
+
localState;
|
|
1017
|
+
statusChanged = new Event2();
|
|
1018
|
+
onMessage = new Event2();
|
|
1019
|
+
swarmEvent = new Event2();
|
|
969
1020
|
/**
|
|
970
1021
|
* @param _host Signal server websocket URL.
|
|
971
1022
|
* @param onMessage called when a new message is received.
|
|
@@ -973,7 +1024,7 @@ var SignalClient = class extends Resource {
|
|
|
973
1024
|
* @param _getMetadata signal-message metadata provider, called for every message.
|
|
974
1025
|
*/
|
|
975
1026
|
constructor(_host, _getMetadata) {
|
|
976
|
-
super(), this._host = _host, this._getMetadata = _getMetadata
|
|
1027
|
+
super(), this._host = _host, this._getMetadata = _getMetadata;
|
|
977
1028
|
if (!this._host.startsWith("wss://") && !this._host.startsWith("ws://")) {
|
|
978
1029
|
throw new Error(`Signal server requires a websocket URL. Provided: ${this._host}`);
|
|
979
1030
|
}
|
|
@@ -987,7 +1038,7 @@ var SignalClient = class extends Resource {
|
|
|
987
1038
|
id: this._instanceId
|
|
988
1039
|
}), {
|
|
989
1040
|
F: __dxlog_file4,
|
|
990
|
-
L:
|
|
1041
|
+
L: 97,
|
|
991
1042
|
S: this,
|
|
992
1043
|
C: (f, a) => f(...a)
|
|
993
1044
|
});
|
|
@@ -1005,7 +1056,7 @@ var SignalClient = class extends Resource {
|
|
|
1005
1056
|
}));
|
|
1006
1057
|
invariant3(this._state === SignalState.CONNECTED, "Not connected to Signal Server", {
|
|
1007
1058
|
F: __dxlog_file4,
|
|
1008
|
-
L:
|
|
1059
|
+
L: 107,
|
|
1009
1060
|
S: this,
|
|
1010
1061
|
A: [
|
|
1011
1062
|
"this._state === SignalState.CONNECTED",
|
|
@@ -1048,7 +1099,7 @@ var SignalClient = class extends Resource {
|
|
|
1048
1099
|
id: this._instanceId
|
|
1049
1100
|
}), {
|
|
1050
1101
|
F: __dxlog_file4,
|
|
1051
|
-
L:
|
|
1102
|
+
L: 140,
|
|
1052
1103
|
S: this,
|
|
1053
1104
|
C: (f, a) => f(...a)
|
|
1054
1105
|
});
|
|
@@ -1060,7 +1111,7 @@ var SignalClient = class extends Resource {
|
|
|
1060
1111
|
if (this._state === SignalState.CONNECTED && !this._lastReconciliationFailed) {
|
|
1061
1112
|
log4.warn("SignalClient error:", err, {
|
|
1062
1113
|
F: __dxlog_file4,
|
|
1063
|
-
L:
|
|
1114
|
+
L: 149,
|
|
1064
1115
|
S: this,
|
|
1065
1116
|
C: (f, a) => f(...a)
|
|
1066
1117
|
});
|
|
@@ -1070,7 +1121,7 @@ var SignalClient = class extends Resource {
|
|
|
1070
1121
|
async _close() {
|
|
1071
1122
|
log4("closing...", void 0, {
|
|
1072
1123
|
F: __dxlog_file4,
|
|
1073
|
-
L:
|
|
1124
|
+
L: 155,
|
|
1074
1125
|
S: this,
|
|
1075
1126
|
C: (f, a) => f(...a)
|
|
1076
1127
|
});
|
|
@@ -1083,7 +1134,7 @@ var SignalClient = class extends Resource {
|
|
|
1083
1134
|
await this._safeResetClient();
|
|
1084
1135
|
log4("closed", void 0, {
|
|
1085
1136
|
F: __dxlog_file4,
|
|
1086
|
-
L:
|
|
1137
|
+
L: 163,
|
|
1087
1138
|
S: this,
|
|
1088
1139
|
C: (f, a) => f(...a)
|
|
1089
1140
|
});
|
|
@@ -1103,7 +1154,7 @@ var SignalClient = class extends Resource {
|
|
|
1103
1154
|
peerId: args.peer.peerKey
|
|
1104
1155
|
}, {
|
|
1105
1156
|
F: __dxlog_file4,
|
|
1106
|
-
L:
|
|
1157
|
+
L: 177,
|
|
1107
1158
|
S: this,
|
|
1108
1159
|
C: (f, a) => f(...a)
|
|
1109
1160
|
});
|
|
@@ -1120,7 +1171,7 @@ var SignalClient = class extends Resource {
|
|
|
1120
1171
|
peerId: args.peer.peerKey
|
|
1121
1172
|
}, {
|
|
1122
1173
|
F: __dxlog_file4,
|
|
1123
|
-
L:
|
|
1174
|
+
L: 184,
|
|
1124
1175
|
S: this,
|
|
1125
1176
|
C: (f, a) => f(...a)
|
|
1126
1177
|
});
|
|
@@ -1138,7 +1189,7 @@ var SignalClient = class extends Resource {
|
|
|
1138
1189
|
await this._clientReady.wait();
|
|
1139
1190
|
invariant3(this._state === SignalState.CONNECTED, "Not connected to Signal Server", {
|
|
1140
1191
|
F: __dxlog_file4,
|
|
1141
|
-
L:
|
|
1192
|
+
L: 196,
|
|
1142
1193
|
S: this,
|
|
1143
1194
|
A: [
|
|
1144
1195
|
"this._state === SignalState.CONNECTED",
|
|
@@ -1147,7 +1198,7 @@ var SignalClient = class extends Resource {
|
|
|
1147
1198
|
});
|
|
1148
1199
|
invariant3(msg.author.peerKey, "Author key required", {
|
|
1149
1200
|
F: __dxlog_file4,
|
|
1150
|
-
L:
|
|
1201
|
+
L: 197,
|
|
1151
1202
|
S: this,
|
|
1152
1203
|
A: [
|
|
1153
1204
|
"msg.author.peerKey",
|
|
@@ -1156,7 +1207,7 @@ var SignalClient = class extends Resource {
|
|
|
1156
1207
|
});
|
|
1157
1208
|
invariant3(msg.recipient.peerKey, "Recipient key required", {
|
|
1158
1209
|
F: __dxlog_file4,
|
|
1159
|
-
L:
|
|
1210
|
+
L: 198,
|
|
1160
1211
|
S: this,
|
|
1161
1212
|
A: [
|
|
1162
1213
|
"msg.recipient.peerKey",
|
|
@@ -1173,7 +1224,7 @@ var SignalClient = class extends Resource {
|
|
|
1173
1224
|
async subscribeMessages(peer) {
|
|
1174
1225
|
invariant3(peer.peerKey, "Peer key required", {
|
|
1175
1226
|
F: __dxlog_file4,
|
|
1176
|
-
L:
|
|
1227
|
+
L: 208,
|
|
1177
1228
|
S: this,
|
|
1178
1229
|
A: [
|
|
1179
1230
|
"peer.peerKey",
|
|
@@ -1184,7 +1235,7 @@ var SignalClient = class extends Resource {
|
|
|
1184
1235
|
peer
|
|
1185
1236
|
}, {
|
|
1186
1237
|
F: __dxlog_file4,
|
|
1187
|
-
L:
|
|
1238
|
+
L: 209,
|
|
1188
1239
|
S: this,
|
|
1189
1240
|
C: (f, a) => f(...a)
|
|
1190
1241
|
});
|
|
@@ -1194,7 +1245,7 @@ var SignalClient = class extends Resource {
|
|
|
1194
1245
|
async unsubscribeMessages(peer) {
|
|
1195
1246
|
invariant3(peer.peerKey, "Peer key required", {
|
|
1196
1247
|
F: __dxlog_file4,
|
|
1197
|
-
L:
|
|
1248
|
+
L: 215,
|
|
1198
1249
|
S: this,
|
|
1199
1250
|
A: [
|
|
1200
1251
|
"peer.peerKey",
|
|
@@ -1205,7 +1256,7 @@ var SignalClient = class extends Resource {
|
|
|
1205
1256
|
peer
|
|
1206
1257
|
}, {
|
|
1207
1258
|
F: __dxlog_file4,
|
|
1208
|
-
L:
|
|
1259
|
+
L: 216,
|
|
1209
1260
|
S: this,
|
|
1210
1261
|
C: (f, a) => f(...a)
|
|
1211
1262
|
});
|
|
@@ -1220,13 +1271,13 @@ var SignalClient = class extends Resource {
|
|
|
1220
1271
|
state: this._state
|
|
1221
1272
|
}, {
|
|
1222
1273
|
F: __dxlog_file4,
|
|
1223
|
-
L:
|
|
1274
|
+
L: 225,
|
|
1224
1275
|
S: this,
|
|
1225
1276
|
C: (f, a) => f(...a)
|
|
1226
1277
|
});
|
|
1227
1278
|
invariant3(!this._client, "Client already created", {
|
|
1228
1279
|
F: __dxlog_file4,
|
|
1229
|
-
L:
|
|
1280
|
+
L: 226,
|
|
1230
1281
|
S: this,
|
|
1231
1282
|
A: [
|
|
1232
1283
|
"!this._client",
|
|
@@ -1238,7 +1289,7 @@ var SignalClient = class extends Resource {
|
|
|
1238
1289
|
this._connectionCtx.onDispose(async () => {
|
|
1239
1290
|
log4("connection context disposed", void 0, {
|
|
1240
1291
|
F: __dxlog_file4,
|
|
1241
|
-
L:
|
|
1292
|
+
L: 233,
|
|
1242
1293
|
S: this,
|
|
1243
1294
|
C: (f, a) => f(...a)
|
|
1244
1295
|
});
|
|
@@ -1253,7 +1304,7 @@ var SignalClient = class extends Resource {
|
|
|
1253
1304
|
if (client === this._client) {
|
|
1254
1305
|
log4("socket connected", void 0, {
|
|
1255
1306
|
F: __dxlog_file4,
|
|
1256
|
-
L:
|
|
1307
|
+
L: 244,
|
|
1257
1308
|
S: this,
|
|
1258
1309
|
C: (f, a) => f(...a)
|
|
1259
1310
|
});
|
|
@@ -1268,7 +1319,7 @@ var SignalClient = class extends Resource {
|
|
|
1268
1319
|
state: this._state
|
|
1269
1320
|
}, {
|
|
1270
1321
|
F: __dxlog_file4,
|
|
1271
|
-
L:
|
|
1322
|
+
L: 253,
|
|
1272
1323
|
S: this,
|
|
1273
1324
|
C: (f, a) => f(...a)
|
|
1274
1325
|
});
|
|
@@ -1285,7 +1336,7 @@ var SignalClient = class extends Resource {
|
|
|
1285
1336
|
state: this._state
|
|
1286
1337
|
}, {
|
|
1287
1338
|
F: __dxlog_file4,
|
|
1288
|
-
L:
|
|
1339
|
+
L: 265,
|
|
1289
1340
|
S: this,
|
|
1290
1341
|
C: (f, a) => f(...a)
|
|
1291
1342
|
});
|
|
@@ -1310,14 +1361,14 @@ var SignalClient = class extends Resource {
|
|
|
1310
1361
|
state: this._state
|
|
1311
1362
|
}, {
|
|
1312
1363
|
F: __dxlog_file4,
|
|
1313
|
-
L:
|
|
1364
|
+
L: 280,
|
|
1314
1365
|
S: this,
|
|
1315
1366
|
C: (f, a) => f(...a)
|
|
1316
1367
|
});
|
|
1317
1368
|
if (this._state === SignalState.RECONNECTING) {
|
|
1318
1369
|
log4.info("Signal api already reconnecting.", void 0, {
|
|
1319
1370
|
F: __dxlog_file4,
|
|
1320
|
-
L:
|
|
1371
|
+
L: 283,
|
|
1321
1372
|
S: this,
|
|
1322
1373
|
C: (f, a) => f(...a)
|
|
1323
1374
|
});
|
|
@@ -1359,7 +1410,7 @@ var SignalClient = class extends Resource {
|
|
|
1359
1410
|
status: this.getStatus()
|
|
1360
1411
|
}, {
|
|
1361
1412
|
F: __dxlog_file4,
|
|
1362
|
-
L:
|
|
1413
|
+
L: 324,
|
|
1363
1414
|
S: this,
|
|
1364
1415
|
C: (f, a) => f(...a)
|
|
1365
1416
|
});
|
|
@@ -1394,26 +1445,28 @@ import { schema as schema3 } from "@dxos/protocols/proto";
|
|
|
1394
1445
|
import { ComplexMap as ComplexMap3, ComplexSet as ComplexSet3 } from "@dxos/util";
|
|
1395
1446
|
var __dxlog_file5 = "/__w/dxos/dxos/packages/core/mesh/messaging/src/signal-manager/memory-signal-manager.ts";
|
|
1396
1447
|
var MemorySignalManagerContext = class {
|
|
1397
|
-
|
|
1398
|
-
|
|
1399
|
-
|
|
1400
|
-
|
|
1401
|
-
|
|
1402
|
-
|
|
1403
|
-
this.connections = new ComplexMap3(PeerInfoHash);
|
|
1404
|
-
}
|
|
1448
|
+
// Swarm messages.
|
|
1449
|
+
swarmEvent = new Event3();
|
|
1450
|
+
// Mapping from topic to set of peers.
|
|
1451
|
+
swarms = new ComplexMap3(PublicKey5.hash);
|
|
1452
|
+
// Map of connections for each peer for signaling.
|
|
1453
|
+
connections = new ComplexMap3(PeerInfoHash);
|
|
1405
1454
|
};
|
|
1406
1455
|
var MemorySignalManager = class {
|
|
1456
|
+
_context;
|
|
1457
|
+
statusChanged = new Event3();
|
|
1458
|
+
swarmEvent = new Event3();
|
|
1459
|
+
onMessage = new Event3();
|
|
1460
|
+
/** Will be used to emit SwarmEvents on .open() and .close() */
|
|
1461
|
+
_joinedSwarms = new ComplexSet3(({ topic, peer }) => topic.toHex() + peer.peerKey);
|
|
1462
|
+
_ctx;
|
|
1463
|
+
// TODO(dmaretskyi): Replace with callback.
|
|
1464
|
+
_freezeTrigger = new Trigger3().wake();
|
|
1407
1465
|
constructor(_context) {
|
|
1408
1466
|
this._context = _context;
|
|
1409
|
-
this.statusChanged = new Event3();
|
|
1410
|
-
this.swarmEvent = new Event3();
|
|
1411
|
-
this.onMessage = new Event3();
|
|
1412
|
-
this._joinedSwarms = new ComplexSet3(({ topic, peer }) => topic.toHex() + peer.peerKey);
|
|
1413
|
-
this._freezeTrigger = new Trigger3().wake();
|
|
1414
1467
|
this._ctx = new Context3(void 0, {
|
|
1415
1468
|
F: __dxlog_file5,
|
|
1416
|
-
L:
|
|
1469
|
+
L: 54
|
|
1417
1470
|
});
|
|
1418
1471
|
this._ctx.onDispose(this._context.swarmEvent.on((data) => this.swarmEvent.emit(data)));
|
|
1419
1472
|
}
|
|
@@ -1423,7 +1476,7 @@ var MemorySignalManager = class {
|
|
|
1423
1476
|
}
|
|
1424
1477
|
this._ctx = new Context3(void 0, {
|
|
1425
1478
|
F: __dxlog_file5,
|
|
1426
|
-
L:
|
|
1479
|
+
L: 63
|
|
1427
1480
|
});
|
|
1428
1481
|
this._ctx.onDispose(this._context.swarmEvent.on((data) => this.swarmEvent.emit(data)));
|
|
1429
1482
|
await Promise.all([
|
|
@@ -1449,7 +1502,7 @@ var MemorySignalManager = class {
|
|
|
1449
1502
|
async join({ topic, peer }) {
|
|
1450
1503
|
invariant4(!this._ctx.disposed, "Closed", {
|
|
1451
1504
|
F: __dxlog_file5,
|
|
1452
|
-
L:
|
|
1505
|
+
L: 92,
|
|
1453
1506
|
S: this,
|
|
1454
1507
|
A: [
|
|
1455
1508
|
"!this._ctx.disposed",
|
|
@@ -1486,7 +1539,7 @@ var MemorySignalManager = class {
|
|
|
1486
1539
|
async leave({ topic, peer }) {
|
|
1487
1540
|
invariant4(!this._ctx.disposed, "Closed", {
|
|
1488
1541
|
F: __dxlog_file5,
|
|
1489
|
-
L:
|
|
1542
|
+
L: 124,
|
|
1490
1543
|
S: this,
|
|
1491
1544
|
A: [
|
|
1492
1545
|
"!this._ctx.disposed",
|
|
@@ -1519,13 +1572,13 @@ var MemorySignalManager = class {
|
|
|
1519
1572
|
...dec(payload)
|
|
1520
1573
|
}, {
|
|
1521
1574
|
F: __dxlog_file5,
|
|
1522
|
-
L:
|
|
1575
|
+
L: 157,
|
|
1523
1576
|
S: this,
|
|
1524
1577
|
C: (f, a) => f(...a)
|
|
1525
1578
|
});
|
|
1526
1579
|
invariant4(recipient, void 0, {
|
|
1527
1580
|
F: __dxlog_file5,
|
|
1528
|
-
L:
|
|
1581
|
+
L: 159,
|
|
1529
1582
|
S: this,
|
|
1530
1583
|
A: [
|
|
1531
1584
|
"recipient",
|
|
@@ -1534,7 +1587,7 @@ var MemorySignalManager = class {
|
|
|
1534
1587
|
});
|
|
1535
1588
|
invariant4(!this._ctx.disposed, "Closed", {
|
|
1536
1589
|
F: __dxlog_file5,
|
|
1537
|
-
L:
|
|
1590
|
+
L: 160,
|
|
1538
1591
|
S: this,
|
|
1539
1592
|
A: [
|
|
1540
1593
|
"!this._ctx.disposed",
|
|
@@ -1549,7 +1602,7 @@ var MemorySignalManager = class {
|
|
|
1549
1602
|
recipient
|
|
1550
1603
|
}, {
|
|
1551
1604
|
F: __dxlog_file5,
|
|
1552
|
-
L:
|
|
1605
|
+
L: 166,
|
|
1553
1606
|
S: this,
|
|
1554
1607
|
C: (f, a) => f(...a)
|
|
1555
1608
|
});
|
|
@@ -1561,7 +1614,7 @@ var MemorySignalManager = class {
|
|
|
1561
1614
|
recipient
|
|
1562
1615
|
}, {
|
|
1563
1616
|
F: __dxlog_file5,
|
|
1564
|
-
L:
|
|
1617
|
+
L: 171,
|
|
1565
1618
|
S: this,
|
|
1566
1619
|
C: (f, a) => f(...a)
|
|
1567
1620
|
});
|
|
@@ -1574,7 +1627,7 @@ var MemorySignalManager = class {
|
|
|
1574
1627
|
recipient
|
|
1575
1628
|
}, {
|
|
1576
1629
|
F: __dxlog_file5,
|
|
1577
|
-
L:
|
|
1630
|
+
L: 179,
|
|
1578
1631
|
S: this,
|
|
1579
1632
|
C: (f, a) => f(...a)
|
|
1580
1633
|
});
|
|
@@ -1586,7 +1639,7 @@ var MemorySignalManager = class {
|
|
|
1586
1639
|
...dec(payload)
|
|
1587
1640
|
}, {
|
|
1588
1641
|
F: __dxlog_file5,
|
|
1589
|
-
L:
|
|
1642
|
+
L: 183,
|
|
1590
1643
|
S: this,
|
|
1591
1644
|
C: (f, a) => f(...a)
|
|
1592
1645
|
});
|
|
@@ -1600,7 +1653,7 @@ var MemorySignalManager = class {
|
|
|
1600
1653
|
err
|
|
1601
1654
|
}, {
|
|
1602
1655
|
F: __dxlog_file5,
|
|
1603
|
-
L:
|
|
1656
|
+
L: 188,
|
|
1604
1657
|
S: this,
|
|
1605
1658
|
C: (f, a) => f(...a)
|
|
1606
1659
|
});
|
|
@@ -1611,7 +1664,7 @@ var MemorySignalManager = class {
|
|
|
1611
1664
|
peerInfo
|
|
1612
1665
|
}, {
|
|
1613
1666
|
F: __dxlog_file5,
|
|
1614
|
-
L:
|
|
1667
|
+
L: 193,
|
|
1615
1668
|
S: this,
|
|
1616
1669
|
C: (f, a) => f(...a)
|
|
1617
1670
|
});
|
|
@@ -1622,7 +1675,7 @@ var MemorySignalManager = class {
|
|
|
1622
1675
|
peerInfo
|
|
1623
1676
|
}, {
|
|
1624
1677
|
F: __dxlog_file5,
|
|
1625
|
-
L:
|
|
1678
|
+
L: 198,
|
|
1626
1679
|
S: this,
|
|
1627
1680
|
C: (f, a) => f(...a)
|
|
1628
1681
|
});
|
|
@@ -1685,13 +1738,26 @@ var __dxlog_file6 = "/__w/dxos/dxos/packages/core/mesh/messaging/src/signal-mana
|
|
|
1685
1738
|
var MAX_SERVER_FAILURES = 5;
|
|
1686
1739
|
var WSS_SIGNAL_SERVER_REBOOT_DELAY = 3e3;
|
|
1687
1740
|
var WebsocketSignalManager = class extends Resource2 {
|
|
1741
|
+
_hosts;
|
|
1742
|
+
_getMetadata;
|
|
1743
|
+
_servers = /* @__PURE__ */ new Map();
|
|
1744
|
+
_monitor = new WebsocketSignalManagerMonitor();
|
|
1745
|
+
/**
|
|
1746
|
+
* Used to avoid logging failed server restarts more than once until the server actually recovers.
|
|
1747
|
+
*/
|
|
1748
|
+
_failedServersBitfield;
|
|
1749
|
+
failureCount = /* @__PURE__ */ new Map();
|
|
1750
|
+
statusChanged = new Event4();
|
|
1751
|
+
swarmEvent = new Event4();
|
|
1752
|
+
onMessage = new Event4();
|
|
1753
|
+
_instanceId = PublicKey6.random().toHex();
|
|
1688
1754
|
constructor(_hosts, _getMetadata) {
|
|
1689
|
-
super(), this._hosts = _hosts, this._getMetadata = _getMetadata
|
|
1755
|
+
super(), this._hosts = _hosts, this._getMetadata = _getMetadata;
|
|
1690
1756
|
log6("Created WebsocketSignalManager", {
|
|
1691
1757
|
hosts: this._hosts
|
|
1692
1758
|
}, {
|
|
1693
1759
|
F: __dxlog_file6,
|
|
1694
|
-
L:
|
|
1760
|
+
L: 59,
|
|
1695
1761
|
S: this,
|
|
1696
1762
|
C: (f, a) => f(...a)
|
|
1697
1763
|
});
|
|
@@ -1713,7 +1779,7 @@ var WebsocketSignalManager = class extends Resource2 {
|
|
|
1713
1779
|
hosts: this._hosts
|
|
1714
1780
|
}, {
|
|
1715
1781
|
F: __dxlog_file6,
|
|
1716
|
-
L:
|
|
1782
|
+
L: 79,
|
|
1717
1783
|
S: this,
|
|
1718
1784
|
C: (f, a) => f(...a)
|
|
1719
1785
|
});
|
|
@@ -1721,7 +1787,7 @@ var WebsocketSignalManager = class extends Resource2 {
|
|
|
1721
1787
|
id: this._instanceId
|
|
1722
1788
|
}), {
|
|
1723
1789
|
F: __dxlog_file6,
|
|
1724
|
-
L:
|
|
1790
|
+
L: 80,
|
|
1725
1791
|
S: this,
|
|
1726
1792
|
C: (f, a) => f(...a)
|
|
1727
1793
|
});
|
|
@@ -1730,7 +1796,7 @@ var WebsocketSignalManager = class extends Resource2 {
|
|
|
1730
1796
|
id: this._instanceId
|
|
1731
1797
|
}), {
|
|
1732
1798
|
F: __dxlog_file6,
|
|
1733
|
-
L:
|
|
1799
|
+
L: 84,
|
|
1734
1800
|
S: this,
|
|
1735
1801
|
C: (f, a) => f(...a)
|
|
1736
1802
|
});
|
|
@@ -1743,13 +1809,13 @@ var WebsocketSignalManager = class extends Resource2 {
|
|
|
1743
1809
|
serverName
|
|
1744
1810
|
}, {
|
|
1745
1811
|
F: __dxlog_file6,
|
|
1746
|
-
L:
|
|
1812
|
+
L: 92,
|
|
1747
1813
|
S: this,
|
|
1748
1814
|
C: (f, a) => f(...a)
|
|
1749
1815
|
});
|
|
1750
1816
|
invariant5(this._lifecycleState === LifecycleState.OPEN, void 0, {
|
|
1751
1817
|
F: __dxlog_file6,
|
|
1752
|
-
L:
|
|
1818
|
+
L: 93,
|
|
1753
1819
|
S: this,
|
|
1754
1820
|
A: [
|
|
1755
1821
|
"this._lifecycleState === LifecycleState.OPEN",
|
|
@@ -1759,7 +1825,7 @@ var WebsocketSignalManager = class extends Resource2 {
|
|
|
1759
1825
|
const server = this._servers.get(serverName);
|
|
1760
1826
|
invariant5(server, "server not found", {
|
|
1761
1827
|
F: __dxlog_file6,
|
|
1762
|
-
L:
|
|
1828
|
+
L: 96,
|
|
1763
1829
|
S: this,
|
|
1764
1830
|
A: [
|
|
1765
1831
|
"server",
|
|
@@ -1779,13 +1845,13 @@ var WebsocketSignalManager = class extends Resource2 {
|
|
|
1779
1845
|
peer
|
|
1780
1846
|
}, {
|
|
1781
1847
|
F: __dxlog_file6,
|
|
1782
|
-
L:
|
|
1848
|
+
L: 109,
|
|
1783
1849
|
S: this,
|
|
1784
1850
|
C: (f, a) => f(...a)
|
|
1785
1851
|
});
|
|
1786
1852
|
invariant5(this._lifecycleState === LifecycleState.OPEN, void 0, {
|
|
1787
1853
|
F: __dxlog_file6,
|
|
1788
|
-
L:
|
|
1854
|
+
L: 110,
|
|
1789
1855
|
S: this,
|
|
1790
1856
|
A: [
|
|
1791
1857
|
"this._lifecycleState === LifecycleState.OPEN",
|
|
@@ -1803,13 +1869,13 @@ var WebsocketSignalManager = class extends Resource2 {
|
|
|
1803
1869
|
peer
|
|
1804
1870
|
}, {
|
|
1805
1871
|
F: __dxlog_file6,
|
|
1806
|
-
L:
|
|
1872
|
+
L: 116,
|
|
1807
1873
|
S: this,
|
|
1808
1874
|
C: (f, a) => f(...a)
|
|
1809
1875
|
});
|
|
1810
1876
|
invariant5(this._lifecycleState === LifecycleState.OPEN, void 0, {
|
|
1811
1877
|
F: __dxlog_file6,
|
|
1812
|
-
L:
|
|
1878
|
+
L: 117,
|
|
1813
1879
|
S: this,
|
|
1814
1880
|
A: [
|
|
1815
1881
|
"this._lifecycleState === LifecycleState.OPEN",
|
|
@@ -1829,13 +1895,13 @@ var WebsocketSignalManager = class extends Resource2 {
|
|
|
1829
1895
|
recipient
|
|
1830
1896
|
}, {
|
|
1831
1897
|
F: __dxlog_file6,
|
|
1832
|
-
L:
|
|
1898
|
+
L: 126,
|
|
1833
1899
|
S: this,
|
|
1834
1900
|
C: (f, a) => f(...a)
|
|
1835
1901
|
});
|
|
1836
1902
|
invariant5(this._lifecycleState === LifecycleState.OPEN, void 0, {
|
|
1837
1903
|
F: __dxlog_file6,
|
|
1838
|
-
L:
|
|
1904
|
+
L: 127,
|
|
1839
1905
|
S: this,
|
|
1840
1906
|
A: [
|
|
1841
1907
|
"this._lifecycleState === LifecycleState.OPEN",
|
|
@@ -1853,7 +1919,7 @@ var WebsocketSignalManager = class extends Resource2 {
|
|
|
1853
1919
|
err
|
|
1854
1920
|
}, {
|
|
1855
1921
|
F: __dxlog_file6,
|
|
1856
|
-
L:
|
|
1922
|
+
L: 135,
|
|
1857
1923
|
S: this,
|
|
1858
1924
|
C: (f, a) => f(...a)
|
|
1859
1925
|
});
|
|
@@ -1863,7 +1929,7 @@ var WebsocketSignalManager = class extends Resource2 {
|
|
|
1863
1929
|
err
|
|
1864
1930
|
}, {
|
|
1865
1931
|
F: __dxlog_file6,
|
|
1866
|
-
L:
|
|
1932
|
+
L: 138,
|
|
1867
1933
|
S: this,
|
|
1868
1934
|
C: (f, a) => f(...a)
|
|
1869
1935
|
});
|
|
@@ -1873,7 +1939,7 @@ var WebsocketSignalManager = class extends Resource2 {
|
|
|
1873
1939
|
err
|
|
1874
1940
|
}, {
|
|
1875
1941
|
F: __dxlog_file6,
|
|
1876
|
-
L:
|
|
1942
|
+
L: 141,
|
|
1877
1943
|
S: this,
|
|
1878
1944
|
C: (f, a) => f(...a)
|
|
1879
1945
|
});
|
|
@@ -1896,7 +1962,7 @@ var WebsocketSignalManager = class extends Resource2 {
|
|
|
1896
1962
|
failureCount
|
|
1897
1963
|
}, {
|
|
1898
1964
|
F: __dxlog_file6,
|
|
1899
|
-
L:
|
|
1965
|
+
L: 155,
|
|
1900
1966
|
S: this,
|
|
1901
1967
|
C: (f, a) => f(...a)
|
|
1902
1968
|
});
|
|
@@ -1914,7 +1980,7 @@ var WebsocketSignalManager = class extends Resource2 {
|
|
|
1914
1980
|
serverName
|
|
1915
1981
|
}, {
|
|
1916
1982
|
F: __dxlog_file6,
|
|
1917
|
-
L:
|
|
1983
|
+
L: 168,
|
|
1918
1984
|
S: this,
|
|
1919
1985
|
C: (f, a) => f(...a)
|
|
1920
1986
|
});
|
|
@@ -1927,13 +1993,13 @@ var WebsocketSignalManager = class extends Resource2 {
|
|
|
1927
1993
|
peer
|
|
1928
1994
|
}, {
|
|
1929
1995
|
F: __dxlog_file6,
|
|
1930
|
-
L:
|
|
1996
|
+
L: 175,
|
|
1931
1997
|
S: this,
|
|
1932
1998
|
C: (f, a) => f(...a)
|
|
1933
1999
|
});
|
|
1934
2000
|
invariant5(this._lifecycleState === LifecycleState.OPEN, void 0, {
|
|
1935
2001
|
F: __dxlog_file6,
|
|
1936
|
-
L:
|
|
2002
|
+
L: 176,
|
|
1937
2003
|
S: this,
|
|
1938
2004
|
A: [
|
|
1939
2005
|
"this._lifecycleState === LifecycleState.OPEN",
|
|
@@ -1947,13 +2013,13 @@ var WebsocketSignalManager = class extends Resource2 {
|
|
|
1947
2013
|
peer
|
|
1948
2014
|
}, {
|
|
1949
2015
|
F: __dxlog_file6,
|
|
1950
|
-
L:
|
|
2016
|
+
L: 182,
|
|
1951
2017
|
S: this,
|
|
1952
2018
|
C: (f, a) => f(...a)
|
|
1953
2019
|
});
|
|
1954
2020
|
invariant5(this._lifecycleState === LifecycleState.OPEN, void 0, {
|
|
1955
2021
|
F: __dxlog_file6,
|
|
1956
|
-
L:
|
|
2022
|
+
L: 183,
|
|
1957
2023
|
S: this,
|
|
1958
2024
|
A: [
|
|
1959
2025
|
"this._lifecycleState === LifecycleState.OPEN",
|
|
@@ -1978,30 +2044,31 @@ _ts_decorate([
|
|
|
1978
2044
|
|
|
1979
2045
|
// src/signal-manager/edge-signal-manager.ts
|
|
1980
2046
|
import { Event as Event5, scheduleMicroTask } from "@dxos/async";
|
|
1981
|
-
import {
|
|
1982
|
-
import { protocol } from "@dxos/edge-client";
|
|
2047
|
+
import { Resource as Resource3, cancelWithContext as cancelWithContext3 } from "@dxos/context";
|
|
2048
|
+
import { EdgeIdentityChangedError, protocol } from "@dxos/edge-client";
|
|
1983
2049
|
import { invariant as invariant6 } from "@dxos/invariant";
|
|
1984
2050
|
import { PublicKey as PublicKey7 } from "@dxos/keys";
|
|
1985
2051
|
import { log as log7 } from "@dxos/log";
|
|
1986
2052
|
import { EdgeService } from "@dxos/protocols";
|
|
1987
2053
|
import { bufWkt } from "@dxos/protocols/buf";
|
|
1988
|
-
import {
|
|
2054
|
+
import { SwarmRequest_Action as SwarmRequestAction, SwarmRequestSchema, SwarmResponseSchema } from "@dxos/protocols/buf/dxos/edge/messenger_pb";
|
|
1989
2055
|
import { ComplexMap as ComplexMap4, ComplexSet as ComplexSet4 } from "@dxos/util";
|
|
1990
2056
|
var __dxlog_file7 = "/__w/dxos/dxos/packages/core/mesh/messaging/src/signal-manager/edge-signal-manager.ts";
|
|
1991
2057
|
var EdgeSignalManager = class extends Resource3 {
|
|
2058
|
+
/**
|
|
2059
|
+
* @deprecated
|
|
2060
|
+
*/
|
|
2061
|
+
swarmEvent = new Event5();
|
|
2062
|
+
swarmState = new Event5();
|
|
2063
|
+
onMessage = new Event5();
|
|
2064
|
+
/**
|
|
2065
|
+
* Swarm key -> { peer: <own state payload>, joinedPeers: <state of swarm> }.
|
|
2066
|
+
*/
|
|
2067
|
+
// TODO(mykola): This class should not contain swarm state joinedPeers. Temporary before network-manager API changes to accept list of peers.
|
|
2068
|
+
_swarmPeers = new ComplexMap4(PublicKey7.hash);
|
|
2069
|
+
_edgeConnection;
|
|
1992
2070
|
constructor({ edgeConnection }) {
|
|
1993
2071
|
super();
|
|
1994
|
-
/**
|
|
1995
|
-
* @deprecated
|
|
1996
|
-
*/
|
|
1997
|
-
this.swarmEvent = new Event5();
|
|
1998
|
-
this.swarmState = new Event5();
|
|
1999
|
-
this.onMessage = new Event5();
|
|
2000
|
-
/**
|
|
2001
|
-
* Swarm key -> { peer: <own state payload>, joinedPeers: <state of swarm> }.
|
|
2002
|
-
*/
|
|
2003
|
-
// TODO(mykola): This class should not contain swarm state joinedPeers. Temporary before network-manager API changes to accept list of peers.
|
|
2004
|
-
this._swarmPeers = new ComplexMap4(PublicKey7.hash);
|
|
2005
2072
|
this._edgeConnection = edgeConnection;
|
|
2006
2073
|
}
|
|
2007
2074
|
async _open() {
|
|
@@ -2023,7 +2090,7 @@ var EdgeSignalManager = class extends Resource3 {
|
|
|
2023
2090
|
}
|
|
2024
2091
|
}, {
|
|
2025
2092
|
F: __dxlog_file7,
|
|
2026
|
-
L:
|
|
2093
|
+
L: 66,
|
|
2027
2094
|
S: this,
|
|
2028
2095
|
C: (f, a) => f(...a)
|
|
2029
2096
|
});
|
|
@@ -2047,16 +2114,23 @@ var EdgeSignalManager = class extends Resource3 {
|
|
|
2047
2114
|
}
|
|
2048
2115
|
async leave({ topic, peer }) {
|
|
2049
2116
|
this._swarmPeers.delete(topic);
|
|
2050
|
-
|
|
2051
|
-
|
|
2052
|
-
|
|
2053
|
-
|
|
2054
|
-
|
|
2055
|
-
|
|
2056
|
-
|
|
2057
|
-
|
|
2117
|
+
try {
|
|
2118
|
+
await this._edgeConnection.send(protocol.createMessage(SwarmRequestSchema, {
|
|
2119
|
+
serviceId: EdgeService.SWARM,
|
|
2120
|
+
source: createMessageSource(topic, peer),
|
|
2121
|
+
payload: {
|
|
2122
|
+
action: SwarmRequestAction.LEAVE,
|
|
2123
|
+
swarmKeys: [
|
|
2124
|
+
topic.toHex()
|
|
2125
|
+
]
|
|
2126
|
+
}
|
|
2127
|
+
}));
|
|
2128
|
+
} catch (err) {
|
|
2129
|
+
if (err instanceof EdgeIdentityChangedError) {
|
|
2130
|
+
return;
|
|
2058
2131
|
}
|
|
2059
|
-
|
|
2132
|
+
throw err;
|
|
2133
|
+
}
|
|
2060
2134
|
}
|
|
2061
2135
|
async query({ topic }) {
|
|
2062
2136
|
const response = cancelWithContext3(this._ctx, this.swarmState.waitFor((state) => state.swarmKey === topic.toHex()));
|
|
@@ -2085,7 +2159,7 @@ var EdgeSignalManager = class extends Resource3 {
|
|
|
2085
2159
|
}
|
|
2086
2160
|
}, {
|
|
2087
2161
|
F: __dxlog_file7,
|
|
2088
|
-
L:
|
|
2162
|
+
L: 131,
|
|
2089
2163
|
S: this,
|
|
2090
2164
|
C: (f, a) => f(...a)
|
|
2091
2165
|
});
|
|
@@ -2120,7 +2194,7 @@ var EdgeSignalManager = class extends Resource3 {
|
|
|
2120
2194
|
_processSwarmResponse(message) {
|
|
2121
2195
|
invariant6(protocol.getPayloadType(message) === SwarmResponseSchema.typeName, "Wrong payload type", {
|
|
2122
2196
|
F: __dxlog_file7,
|
|
2123
|
-
L:
|
|
2197
|
+
L: 168,
|
|
2124
2198
|
S: this,
|
|
2125
2199
|
A: [
|
|
2126
2200
|
"protocol.getPayloadType(message) === SwarmResponseSchema.typeName",
|
|
@@ -2164,7 +2238,7 @@ var EdgeSignalManager = class extends Resource3 {
|
|
|
2164
2238
|
_processMessage(message) {
|
|
2165
2239
|
invariant6(protocol.getPayloadType(message) === bufWkt.AnySchema.typeName, "Wrong payload type", {
|
|
2166
2240
|
F: __dxlog_file7,
|
|
2167
|
-
L:
|
|
2241
|
+
L: 206,
|
|
2168
2242
|
S: this,
|
|
2169
2243
|
A: [
|
|
2170
2244
|
"protocol.getPayloadType(message) === bufWkt.AnySchema.typeName",
|
|
@@ -2174,7 +2248,7 @@ var EdgeSignalManager = class extends Resource3 {
|
|
|
2174
2248
|
const payload = protocol.getPayload(message, bufWkt.AnySchema);
|
|
2175
2249
|
invariant6(message.source, "source is missing", {
|
|
2176
2250
|
F: __dxlog_file7,
|
|
2177
|
-
L:
|
|
2251
|
+
L: 208,
|
|
2178
2252
|
S: this,
|
|
2179
2253
|
A: [
|
|
2180
2254
|
"message.source",
|
|
@@ -2183,7 +2257,7 @@ var EdgeSignalManager = class extends Resource3 {
|
|
|
2183
2257
|
});
|
|
2184
2258
|
invariant6(message.target, "target is missing", {
|
|
2185
2259
|
F: __dxlog_file7,
|
|
2186
|
-
L:
|
|
2260
|
+
L: 209,
|
|
2187
2261
|
S: this,
|
|
2188
2262
|
A: [
|
|
2189
2263
|
"message.target",
|
|
@@ -2192,7 +2266,7 @@ var EdgeSignalManager = class extends Resource3 {
|
|
|
2192
2266
|
});
|
|
2193
2267
|
invariant6(message.target.length === 1, "target should have exactly one item", {
|
|
2194
2268
|
F: __dxlog_file7,
|
|
2195
|
-
L:
|
|
2269
|
+
L: 210,
|
|
2196
2270
|
S: this,
|
|
2197
2271
|
A: [
|
|
2198
2272
|
"message.target.length === 1",
|
|
@@ -2216,7 +2290,7 @@ var EdgeSignalManager = class extends Resource3 {
|
|
|
2216
2290
|
swarms: Array.from(this._swarmPeers.keys())
|
|
2217
2291
|
}, {
|
|
2218
2292
|
F: __dxlog_file7,
|
|
2219
|
-
L:
|
|
2293
|
+
L: 229,
|
|
2220
2294
|
S: this,
|
|
2221
2295
|
C: (f, a) => f(...a)
|
|
2222
2296
|
});
|
|
@@ -2306,4 +2380,4 @@ export {
|
|
|
2306
2380
|
EdgeSignalManager,
|
|
2307
2381
|
setIdentityTags
|
|
2308
2382
|
};
|
|
2309
|
-
//# sourceMappingURL=chunk-
|
|
2383
|
+
//# sourceMappingURL=chunk-4EMAT5U7.mjs.map
|