@dxos/messaging 0.1.58-main.ffbb8a1 → 0.1.58-next.3349da8

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.
@@ -1 +1 @@
1
- {"inputs":{"packages/core/mesh/messaging/src/timeouts.ts":{"bytes":656,"imports":[],"format":"esm"},"packages/core/mesh/messaging/src/messenger.ts":{"bytes":30612,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/core/mesh/messaging/src/timeouts.ts","kind":"import-statement","original":"./timeouts"}],"format":"esm"},"packages/core/mesh/messaging/src/signal-client/signal-rpc-client.ts":{"bytes":20028,"imports":[{"path":"isomorphic-ws","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/messaging/src/signal-client/signal-client.ts":{"bytes":52172,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/mesh/signal","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/core/mesh/messaging/src/signal-client/signal-rpc-client.ts","kind":"import-statement","original":"./signal-rpc-client"}],"format":"esm"},"packages/core/mesh/messaging/src/signal-client/index.ts":{"bytes":499,"imports":[{"path":"packages/core/mesh/messaging/src/signal-client/signal-client.ts","kind":"import-statement","original":"./signal-client"}],"format":"esm"},"packages/core/mesh/messaging/src/signal-manager/memory-signal-manager.ts":{"bytes":24541,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/messaging/src/signal-manager/signal-manager.ts":{"bytes":1268,"imports":[],"format":"esm"},"packages/core/mesh/messaging/src/signal-manager/websocket-signal-manager.ts":{"bytes":18581,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"packages/core/mesh/messaging/src/signal-client/index.ts","kind":"import-statement","original":"../signal-client"}],"format":"esm"},"packages/core/mesh/messaging/src/signal-manager/index.ts":{"bytes":750,"imports":[{"path":"packages/core/mesh/messaging/src/signal-manager/memory-signal-manager.ts","kind":"import-statement","original":"./memory-signal-manager"},{"path":"packages/core/mesh/messaging/src/signal-manager/signal-manager.ts","kind":"import-statement","original":"./signal-manager"},{"path":"packages/core/mesh/messaging/src/signal-manager/websocket-signal-manager.ts","kind":"import-statement","original":"./websocket-signal-manager"}],"format":"esm"},"packages/core/mesh/messaging/src/signal-methods.ts":{"bytes":1621,"imports":[],"format":"esm"},"packages/core/mesh/messaging/src/index.ts":{"bytes":782,"imports":[{"path":"packages/core/mesh/messaging/src/messenger.ts","kind":"import-statement","original":"./messenger"},{"path":"packages/core/mesh/messaging/src/signal-client/index.ts","kind":"import-statement","original":"./signal-client"},{"path":"packages/core/mesh/messaging/src/signal-manager/index.ts","kind":"import-statement","original":"./signal-manager"},{"path":"packages/core/mesh/messaging/src/signal-methods.ts","kind":"import-statement","original":"./signal-methods"}],"format":"esm"}},"outputs":{"packages/core/mesh/messaging/dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":67198},"packages/core/mesh/messaging/dist/lib/browser/index.mjs":{"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/mesh/signal","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"isomorphic-ws","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true}],"exports":["MemorySignalManager","MemorySignalManagerContext","Messenger","SignalClient","WebsocketSignalManager"],"entryPoint":"packages/core/mesh/messaging/src/index.ts","inputs":{"packages/core/mesh/messaging/src/messenger.ts":{"bytesInOutput":8702},"packages/core/mesh/messaging/src/timeouts.ts":{"bytesInOutput":27},"packages/core/mesh/messaging/src/index.ts":{"bytesInOutput":0},"packages/core/mesh/messaging/src/signal-client/signal-client.ts":{"bytesInOutput":13561},"packages/core/mesh/messaging/src/signal-client/signal-rpc-client.ts":{"bytesInOutput":6017},"packages/core/mesh/messaging/src/signal-client/index.ts":{"bytesInOutput":0},"packages/core/mesh/messaging/src/signal-manager/memory-signal-manager.ts":{"bytesInOutput":6682},"packages/core/mesh/messaging/src/signal-manager/index.ts":{"bytesInOutput":0},"packages/core/mesh/messaging/src/signal-manager/websocket-signal-manager.ts":{"bytesInOutput":6027}},"bytes":41717}}}
1
+ {"inputs":{"packages/core/mesh/messaging/src/timeouts.ts":{"bytes":656,"imports":[],"format":"esm"},"packages/core/mesh/messaging/src/messenger.ts":{"bytes":37849,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/errors","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/core/mesh/messaging/src/timeouts.ts","kind":"import-statement","original":"./timeouts"}],"format":"esm"},"packages/core/mesh/messaging/src/signal-client/signal-rpc-client.ts":{"bytes":20028,"imports":[{"path":"isomorphic-ws","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/messaging/src/signal-client/signal-client.ts":{"bytes":52172,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/mesh/signal","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/core/mesh/messaging/src/signal-client/signal-rpc-client.ts","kind":"import-statement","original":"./signal-rpc-client"}],"format":"esm"},"packages/core/mesh/messaging/src/signal-client/index.ts":{"bytes":499,"imports":[{"path":"packages/core/mesh/messaging/src/signal-client/signal-client.ts","kind":"import-statement","original":"./signal-client"}],"format":"esm"},"packages/core/mesh/messaging/src/signal-manager/memory-signal-manager.ts":{"bytes":24541,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/messaging/src/signal-manager/signal-manager.ts":{"bytes":1268,"imports":[],"format":"esm"},"packages/core/mesh/messaging/src/signal-manager/websocket-signal-manager.ts":{"bytes":18581,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"packages/core/mesh/messaging/src/signal-client/index.ts","kind":"import-statement","original":"../signal-client"}],"format":"esm"},"packages/core/mesh/messaging/src/signal-manager/index.ts":{"bytes":750,"imports":[{"path":"packages/core/mesh/messaging/src/signal-manager/memory-signal-manager.ts","kind":"import-statement","original":"./memory-signal-manager"},{"path":"packages/core/mesh/messaging/src/signal-manager/signal-manager.ts","kind":"import-statement","original":"./signal-manager"},{"path":"packages/core/mesh/messaging/src/signal-manager/websocket-signal-manager.ts","kind":"import-statement","original":"./websocket-signal-manager"}],"format":"esm"},"packages/core/mesh/messaging/src/signal-methods.ts":{"bytes":1621,"imports":[],"format":"esm"},"packages/core/mesh/messaging/src/index.ts":{"bytes":782,"imports":[{"path":"packages/core/mesh/messaging/src/messenger.ts","kind":"import-statement","original":"./messenger"},{"path":"packages/core/mesh/messaging/src/signal-client/index.ts","kind":"import-statement","original":"./signal-client"},{"path":"packages/core/mesh/messaging/src/signal-manager/index.ts","kind":"import-statement","original":"./signal-manager"},{"path":"packages/core/mesh/messaging/src/signal-methods.ts","kind":"import-statement","original":"./signal-methods"}],"format":"esm"}},"outputs":{"packages/core/mesh/messaging/dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":70566},"packages/core/mesh/messaging/dist/lib/browser/index.mjs":{"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/errors","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/mesh/signal","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"isomorphic-ws","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true}],"exports":["MemorySignalManager","MemorySignalManagerContext","Messenger","SignalClient","WebsocketSignalManager"],"entryPoint":"packages/core/mesh/messaging/src/index.ts","inputs":{"packages/core/mesh/messaging/src/messenger.ts":{"bytesInOutput":10944},"packages/core/mesh/messaging/src/timeouts.ts":{"bytesInOutput":27},"packages/core/mesh/messaging/src/index.ts":{"bytesInOutput":0},"packages/core/mesh/messaging/src/signal-client/signal-client.ts":{"bytesInOutput":13587},"packages/core/mesh/messaging/src/signal-client/signal-rpc-client.ts":{"bytesInOutput":6017},"packages/core/mesh/messaging/src/signal-client/index.ts":{"bytesInOutput":0},"packages/core/mesh/messaging/src/signal-manager/memory-signal-manager.ts":{"bytesInOutput":6682},"packages/core/mesh/messaging/src/signal-manager/index.ts":{"bytesInOutput":0},"packages/core/mesh/messaging/src/signal-manager/websocket-signal-manager.ts":{"bytesInOutput":6027}},"bytes":43985}}}
@@ -41,6 +41,7 @@ module.exports = __toCommonJS(src_exports);
41
41
  // packages/core/mesh/messaging/src/messenger.ts
42
42
  var import_async = require("@dxos/async");
43
43
  var import_context = require("@dxos/context");
44
+ var import_errors = require("@dxos/errors");
44
45
  var import_invariant = require("@dxos/invariant");
45
46
  var import_keys = require("@dxos/keys");
46
47
  var import_log = require("@dxos/log");
@@ -54,6 +55,9 @@ var MESSAGE_TIMEOUT = 1e4;
54
55
  var __dxlog_file = "/home/runner/work/dxos/dxos/packages/core/mesh/messaging/src/messenger.ts";
55
56
  var ReliablePayload = import_protocols.schema.getCodecForType("dxos.mesh.messaging.ReliablePayload");
56
57
  var Acknowledgement = import_protocols.schema.getCodecForType("dxos.mesh.messaging.Acknowledgement");
58
+ var ERROR_LIMIT = 5;
59
+ var NETWORK_REBOOT_DELAY = 3e3;
60
+ var RECEIVED_MESSAGES_GC_INTERVAL = 12e4;
57
61
  var Messenger = class {
58
62
  constructor({ signalManager, retryDelay = 300 }) {
59
63
  // { peerId, payloadType } => listeners set
@@ -61,8 +65,14 @@ var Messenger = class {
61
65
  // peerId => listeners set
62
66
  this._defaultListeners = new import_util.ComplexMap(import_keys.PublicKey.hash);
63
67
  this._onAckCallbacks = new import_util.ComplexMap(import_keys.PublicKey.hash);
64
- this._receivedMessages = new import_util.ComplexSet((key) => key.toHex());
68
+ this._receivedMessages = new import_util.ComplexSet(import_keys.PublicKey.hash);
69
+ /**
70
+ * Keys scheduled to be cleared from _receivedMessages on the next iteration.
71
+ */
72
+ this._toClear = new import_util.ComplexSet(import_keys.PublicKey.hash);
65
73
  this._closed = true;
74
+ this._errorCount = 0;
75
+ this._rebooting = false;
66
76
  this._signalManager = signalManager;
67
77
  this._retryDelay = retryDelay;
68
78
  this.open();
@@ -76,14 +86,14 @@ var Messenger = class {
76
86
  id: traceId
77
87
  }), {
78
88
  F: __dxlog_file,
79
- L: 62,
89
+ L: 75,
80
90
  S: this,
81
91
  C: (f, a) => f(...a)
82
92
  });
83
93
  this._ctx = new import_context.Context({
84
94
  onError: (err) => import_log.log.catch(err, void 0, {
85
95
  F: __dxlog_file,
86
- L: 64,
96
+ L: 77,
87
97
  S: this,
88
98
  C: (f, a) => f(...a)
89
99
  })
@@ -93,18 +103,21 @@ var Messenger = class {
93
103
  from: message.author
94
104
  }, {
95
105
  F: __dxlog_file,
96
- L: 68,
106
+ L: 81,
97
107
  S: this,
98
108
  C: (f, a) => f(...a)
99
109
  });
100
110
  await this._handleMessage(message);
101
111
  }));
112
+ (0, import_async.scheduleTaskInterval)(this._ctx, async () => {
113
+ this._performGc();
114
+ }, RECEIVED_MESSAGES_GC_INTERVAL);
102
115
  this._closed = false;
103
116
  import_log.log.trace("dxos.mesh.messenger.open", import_protocols.trace.end({
104
117
  id: traceId
105
118
  }), {
106
119
  F: __dxlog_file,
107
- L: 73,
120
+ L: 96,
108
121
  S: this,
109
122
  C: (f, a) => f(...a)
110
123
  });
@@ -119,7 +132,7 @@ var Messenger = class {
119
132
  async sendMessage({ author, recipient, payload }) {
120
133
  (0, import_invariant.invariant)(!this._closed, "Closed", {
121
134
  F: __dxlog_file,
122
- L: 85,
135
+ L: 108,
123
136
  S: this,
124
137
  A: [
125
138
  "!this._closed",
@@ -133,7 +146,7 @@ var Messenger = class {
133
146
  };
134
147
  (0, import_invariant.invariant)(!this._onAckCallbacks.has(reliablePayload.messageId), void 0, {
135
148
  F: __dxlog_file,
136
- L: 92,
149
+ L: 115,
137
150
  S: this,
138
151
  A: [
139
152
  "!this._onAckCallbacks.has(reliablePayload.messageId!)",
@@ -146,7 +159,7 @@ var Messenger = class {
146
159
  recipient
147
160
  }, {
148
161
  F: __dxlog_file,
149
- L: 93,
162
+ L: 116,
150
163
  S: this,
151
164
  C: (f, a) => f(...a)
152
165
  });
@@ -161,7 +174,7 @@ var Messenger = class {
161
174
  messageId: reliablePayload.messageId
162
175
  }, {
163
176
  F: __dxlog_file,
164
- L: 107,
177
+ L: 130,
165
178
  S: this,
166
179
  C: (f, a) => f(...a)
167
180
  });
@@ -173,22 +186,23 @@ var Messenger = class {
173
186
  err
174
187
  }, {
175
188
  F: __dxlog_file,
176
- L: 109,
189
+ L: 132,
177
190
  S: this,
178
191
  C: (f, a) => f(...a)
179
192
  }));
180
193
  }, this._retryDelay);
181
- (0, import_async.scheduleTask)(messageContext, () => {
194
+ (0, import_async.scheduleTask)(messageContext, async () => {
182
195
  (0, import_log.log)("message not delivered", {
183
196
  messageId: reliablePayload.messageId
184
197
  }, {
185
198
  F: __dxlog_file,
186
- L: 118,
199
+ L: 141,
187
200
  S: this,
188
201
  C: (f, a) => f(...a)
189
202
  });
190
203
  this._onAckCallbacks.delete(reliablePayload.messageId);
191
- timeoutHit(new import_async.TimeoutError(MESSAGE_TIMEOUT, "Message not delivered"));
204
+ await this.errorLimitCheck();
205
+ timeoutHit(new import_errors.TimeoutError("signaling message not delivered", new import_async.TimeoutError(MESSAGE_TIMEOUT, "Message not delivered")));
192
206
  void messageContext.dispose();
193
207
  }, MESSAGE_TIMEOUT);
194
208
  this._onAckCallbacks.set(reliablePayload.messageId, () => {
@@ -203,6 +217,54 @@ var Messenger = class {
203
217
  });
204
218
  return promise;
205
219
  }
220
+ async errorLimitCheck() {
221
+ (0, import_log.log)(`checking error limit ${this._errorCount}`, void 0, {
222
+ F: __dxlog_file,
223
+ L: 166,
224
+ S: this,
225
+ C: (f, a) => f(...a)
226
+ });
227
+ if (this._errorCount++ > ERROR_LIMIT) {
228
+ await this.rebootNetwork();
229
+ }
230
+ }
231
+ async rebootNetwork() {
232
+ if (this._rebooting) {
233
+ return;
234
+ }
235
+ this._rebooting = true;
236
+ (0, import_log.log)("rebooting Messenger/SignalManager", void 0, {
237
+ F: __dxlog_file,
238
+ L: 178,
239
+ S: this,
240
+ C: (f, a) => f(...a)
241
+ });
242
+ await this.close();
243
+ await this._signalManager.close();
244
+ (0, import_log.log)("pausing", void 0, {
245
+ F: __dxlog_file,
246
+ L: 181,
247
+ S: this,
248
+ C: (f, a) => f(...a)
249
+ });
250
+ await new Promise((resolve) => setTimeout(resolve, NETWORK_REBOOT_DELAY));
251
+ (0, import_log.log)("done pausing", void 0, {
252
+ F: __dxlog_file,
253
+ L: 183,
254
+ S: this,
255
+ C: (f, a) => f(...a)
256
+ });
257
+ await this.open();
258
+ await this._signalManager.open();
259
+ (0, import_log.log)("done rebooting", void 0, {
260
+ F: __dxlog_file,
261
+ L: 186,
262
+ S: this,
263
+ C: (f, a) => f(...a)
264
+ });
265
+ this._errorCount = 0;
266
+ this._rebooting = false;
267
+ }
206
268
  /**
207
269
  * Subscribes onMessage function to messages that contains payload with payloadType.
208
270
  * @param payloadType if not specified, onMessage will be subscribed to all types of messages.
@@ -210,7 +272,7 @@ var Messenger = class {
210
272
  async listen({ peerId, payloadType, onMessage }) {
211
273
  (0, import_invariant.invariant)(!this._closed, "Closed", {
212
274
  F: __dxlog_file,
213
- L: 149,
275
+ L: 205,
214
276
  S: this,
215
277
  A: [
216
278
  "!this._closed",
@@ -274,7 +336,7 @@ var Messenger = class {
274
336
  async _handleReliablePayload({ author, recipient, payload }) {
275
337
  (0, import_invariant.invariant)(payload.type_url === "dxos.mesh.messaging.ReliablePayload", void 0, {
276
338
  F: __dxlog_file,
277
- L: 210,
339
+ L: 266,
278
340
  S: this,
279
341
  A: [
280
342
  "payload.type_url === 'dxos.mesh.messaging.ReliablePayload'",
@@ -288,7 +350,7 @@ var Messenger = class {
288
350
  messageId: reliablePayload.messageId
289
351
  }, {
290
352
  F: __dxlog_file,
291
- L: 213,
353
+ L: 269,
292
354
  S: this,
293
355
  C: (f, a) => f(...a)
294
356
  });
@@ -310,7 +372,7 @@ var Messenger = class {
310
372
  async _handleAcknowledgement({ payload }) {
311
373
  (0, import_invariant.invariant)(payload.type_url === "dxos.mesh.messaging.Acknowledgement", void 0, {
312
374
  F: __dxlog_file,
313
- L: 235,
375
+ L: 291,
314
376
  S: this,
315
377
  A: [
316
378
  "payload.type_url === 'dxos.mesh.messaging.Acknowledgement'",
@@ -326,7 +388,7 @@ var Messenger = class {
326
388
  to: author
327
389
  }, {
328
390
  F: __dxlog_file,
329
- L: 248,
391
+ L: 304,
330
392
  S: this,
331
393
  C: (f, a) => f(...a)
332
394
  });
@@ -362,6 +424,27 @@ var Messenger = class {
362
424
  }
363
425
  }
364
426
  }
427
+ _performGc() {
428
+ const start = performance.now();
429
+ for (const key of this._toClear.keys()) {
430
+ this._receivedMessages.delete(key);
431
+ }
432
+ this._toClear.clear();
433
+ for (const key of this._receivedMessages.keys()) {
434
+ this._toClear.add(key);
435
+ }
436
+ const elapsed = performance.now() - start;
437
+ if (elapsed > 100) {
438
+ import_log.log.warn("GC took too long", {
439
+ elapsed
440
+ }, {
441
+ F: __dxlog_file,
442
+ L: 352,
443
+ S: this,
444
+ C: (f, a) => f(...a)
445
+ });
446
+ }
447
+ }
365
448
  };
366
449
 
367
450
  // packages/core/mesh/messaging/src/signal-client/signal-client.ts