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