@dxos/network-manager 0.3.9-main.3a0f16f → 0.3.9-main.4e30508
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-4HITD6WI.mjs → chunk-J7KS7JMZ.mjs} +325 -87
- package/dist/lib/browser/chunk-J7KS7JMZ.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 +1 -1
- package/dist/lib/node/{chunk-6AD7QA4X.cjs → chunk-55WTPQV5.cjs} +334 -86
- package/dist/lib/node/chunk-55WTPQV5.cjs.map +7 -0
- package/dist/lib/node/{chunk-XE5JOIGD.cjs → chunk-JDKM4UPJ.cjs} +21 -13
- package/dist/lib/node/chunk-JDKM4UPJ.cjs.map +7 -0
- package/dist/lib/node/{datachannel-53JZPGFA.cjs → datachannel-3VTTIMR5.cjs} +9 -9
- package/dist/lib/node/{datachannel-53JZPGFA.cjs.map → datachannel-3VTTIMR5.cjs.map} +2 -2
- package/dist/lib/node/index.cjs +32 -32
- package/dist/lib/node/index.cjs.map +1 -1
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node/testing/index.cjs +19 -19
- package/dist/types/src/connection-log.d.ts.map +1 -1
- package/dist/types/src/swarm/connection.d.ts +4 -1
- package/dist/types/src/swarm/connection.d.ts.map +1 -1
- package/dist/types/src/topology/mmst-topology.d.ts +1 -0
- package/dist/types/src/topology/mmst-topology.d.ts.map +1 -1
- package/dist/types/src/transport/datachannel/rtc-peer-connection.d.ts +7 -0
- package/dist/types/src/transport/datachannel/rtc-peer-connection.d.ts.map +1 -1
- package/dist/types/src/transport/libdatachannel-transport.d.ts +3 -1
- package/dist/types/src/transport/libdatachannel-transport.d.ts.map +1 -1
- package/dist/types/src/transport/memory-transport.d.ts +3 -1
- package/dist/types/src/transport/memory-transport.d.ts.map +1 -1
- package/dist/types/src/transport/simplepeer-transport-proxy.d.ts +3 -1
- package/dist/types/src/transport/simplepeer-transport-proxy.d.ts.map +1 -1
- package/dist/types/src/transport/simplepeer-transport-service.d.ts +3 -1
- package/dist/types/src/transport/simplepeer-transport-service.d.ts.map +1 -1
- package/dist/types/src/transport/simplepeer-transport.d.ts +7 -1
- package/dist/types/src/transport/simplepeer-transport.d.ts.map +1 -1
- package/dist/types/src/transport/tcp-transport.browser.d.ts +3 -1
- package/dist/types/src/transport/tcp-transport.browser.d.ts.map +1 -1
- package/dist/types/src/transport/tcp-transport.d.ts +3 -1
- package/dist/types/src/transport/tcp-transport.d.ts.map +1 -1
- package/dist/types/src/transport/transport.d.ts +17 -0
- package/dist/types/src/transport/transport.d.ts.map +1 -1
- package/dist/types/src/wire-protocol.d.ts +1 -1
- package/dist/types/src/wire-protocol.d.ts.map +1 -1
- package/package.json +17 -17
- package/src/connection-log.ts +14 -1
- package/src/swarm/connection.ts +23 -4
- package/src/topology/mmst-topology.ts +35 -7
- package/src/transport/datachannel/rtc-peer-connection.ts +20 -12
- package/src/transport/libdatachannel-transport.test.ts +0 -4
- package/src/transport/libdatachannel-transport.ts +37 -1
- package/src/transport/memory-transport.ts +14 -1
- package/src/transport/simplepeer-transport-proxy.ts +9 -1
- package/src/transport/simplepeer-transport-service.ts +14 -0
- package/src/transport/simplepeer-transport.ts +66 -2
- package/src/transport/tcp-transport.browser.ts +9 -1
- package/src/transport/tcp-transport.ts +19 -1
- package/src/transport/transport.ts +19 -0
- package/src/wire-protocol.ts +3 -3
- package/dist/lib/browser/chunk-4HITD6WI.mjs.map +0 -7
- package/dist/lib/node/chunk-6AD7QA4X.cjs.map +0 -7
- package/dist/lib/node/chunk-XE5JOIGD.cjs.map +0 -7
|
@@ -26,8 +26,8 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
26
26
|
mod
|
|
27
27
|
));
|
|
28
28
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
-
var
|
|
30
|
-
__export(
|
|
29
|
+
var chunk_55WTPQV5_exports = {};
|
|
30
|
+
__export(chunk_55WTPQV5_exports, {
|
|
31
31
|
Connection: () => Connection,
|
|
32
32
|
ConnectionLimiter: () => ConnectionLimiter,
|
|
33
33
|
ConnectionLog: () => ConnectionLog,
|
|
@@ -55,8 +55,8 @@ __export(chunk_6AD7QA4X_exports, {
|
|
|
55
55
|
createSimplePeerTransportFactory: () => createSimplePeerTransportFactory,
|
|
56
56
|
createTeleportProtocolFactory: () => createTeleportProtocolFactory
|
|
57
57
|
});
|
|
58
|
-
module.exports = __toCommonJS(
|
|
59
|
-
var
|
|
58
|
+
module.exports = __toCommonJS(chunk_55WTPQV5_exports);
|
|
59
|
+
var import_chunk_JDKM4UPJ = require("./chunk-JDKM4UPJ.cjs");
|
|
60
60
|
var import_async = require("@dxos/async");
|
|
61
61
|
var import_context = require("@dxos/context");
|
|
62
62
|
var import_debug = require("@dxos/debug");
|
|
@@ -166,6 +166,7 @@ function _ts_decorate(decorators, target, key, desc) {
|
|
|
166
166
|
var __dxlog_file = "/home/runner/work/dxos/dxos/packages/core/mesh/network-manager/src/swarm/connection.ts";
|
|
167
167
|
var STARTING_SIGNALLING_DELAY = 10;
|
|
168
168
|
var TRANSPORT_CONNECTION_TIMEOUT = 1e4;
|
|
169
|
+
var TRANSPORT_STATS_INTERVAL = 5e3;
|
|
169
170
|
var MAX_SIGNALLING_DELAY = 300;
|
|
170
171
|
var ConnectionState;
|
|
171
172
|
(function(ConnectionState5) {
|
|
@@ -228,6 +229,7 @@ var Connection = class {
|
|
|
228
229
|
this.stateChanged = new import_async.Event();
|
|
229
230
|
this.errors = new import_debug.ErrorStream();
|
|
230
231
|
this._instanceId = import_keys.PublicKey.random().toHex();
|
|
232
|
+
this.transportStats = new import_async.Event();
|
|
231
233
|
this._signalSendTask = new import_async.DeferredTask(this._ctx, async () => {
|
|
232
234
|
await this._flushSignalBuffer();
|
|
233
235
|
});
|
|
@@ -240,11 +242,14 @@ var Connection = class {
|
|
|
240
242
|
initiator: this.initiator
|
|
241
243
|
}, {
|
|
242
244
|
F: __dxlog_file,
|
|
243
|
-
L:
|
|
245
|
+
L: 134,
|
|
244
246
|
S: this,
|
|
245
247
|
C: (f, a) => f(...a)
|
|
246
248
|
});
|
|
247
249
|
}
|
|
250
|
+
get sessionIdString() {
|
|
251
|
+
return this.sessionId.truncate();
|
|
252
|
+
}
|
|
248
253
|
get state() {
|
|
249
254
|
return this._state;
|
|
250
255
|
}
|
|
@@ -260,7 +265,7 @@ var Connection = class {
|
|
|
260
265
|
async openConnection() {
|
|
261
266
|
(0, import_invariant.invariant)(this._state === ConnectionState.INITIAL, "Invalid state.", {
|
|
262
267
|
F: __dxlog_file,
|
|
263
|
-
L:
|
|
268
|
+
L: 164,
|
|
264
269
|
S: this,
|
|
265
270
|
A: [
|
|
266
271
|
"this._state === ConnectionState.INITIAL",
|
|
@@ -271,7 +276,7 @@ var Connection = class {
|
|
|
271
276
|
id: this._instanceId
|
|
272
277
|
}), {
|
|
273
278
|
F: __dxlog_file,
|
|
274
|
-
L:
|
|
279
|
+
L: 165,
|
|
275
280
|
S: this,
|
|
276
281
|
C: (f, a) => f(...a)
|
|
277
282
|
});
|
|
@@ -283,18 +288,18 @@ var Connection = class {
|
|
|
283
288
|
initiator: this.initiator
|
|
284
289
|
}, {
|
|
285
290
|
F: __dxlog_file,
|
|
286
|
-
L:
|
|
291
|
+
L: 166,
|
|
287
292
|
S: this,
|
|
288
293
|
C: (f, a) => f(...a)
|
|
289
294
|
});
|
|
290
295
|
this._changeState(ConnectionState.CONNECTING);
|
|
291
|
-
this._protocol.open().catch((err) => {
|
|
296
|
+
this._protocol.open(this.sessionId).catch((err) => {
|
|
292
297
|
this.errors.raise(err);
|
|
293
298
|
});
|
|
294
299
|
this._protocol.stream.on("close", () => {
|
|
295
300
|
(0, import_log.log)("protocol stream closed", void 0, {
|
|
296
301
|
F: __dxlog_file,
|
|
297
|
-
L:
|
|
302
|
+
L: 183,
|
|
298
303
|
S: this,
|
|
299
304
|
C: (f, a) => f(...a)
|
|
300
305
|
});
|
|
@@ -303,7 +308,7 @@ var Connection = class {
|
|
|
303
308
|
(0, import_async.scheduleTask)(this.connectedTimeoutContext, async () => {
|
|
304
309
|
import_log.log.info(`timeout waiting ${TRANSPORT_CONNECTION_TIMEOUT / 1e3}s for transport to connect, aborting`, void 0, {
|
|
305
310
|
F: __dxlog_file,
|
|
306
|
-
L:
|
|
311
|
+
L: 190,
|
|
307
312
|
S: this,
|
|
308
313
|
C: (f, a) => f(...a)
|
|
309
314
|
});
|
|
@@ -311,7 +316,7 @@ var Connection = class {
|
|
|
311
316
|
}, TRANSPORT_CONNECTION_TIMEOUT);
|
|
312
317
|
(0, import_invariant.invariant)(!this._transport, void 0, {
|
|
313
318
|
F: __dxlog_file,
|
|
314
|
-
L:
|
|
319
|
+
L: 198,
|
|
315
320
|
S: this,
|
|
316
321
|
A: [
|
|
317
322
|
"!this._transport",
|
|
@@ -321,18 +326,20 @@ var Connection = class {
|
|
|
321
326
|
this._transport = this._transportFactory.createTransport({
|
|
322
327
|
initiator: this.initiator,
|
|
323
328
|
stream: this._protocol.stream,
|
|
324
|
-
sendSignal: async (signal) => this._sendSignal(signal)
|
|
329
|
+
sendSignal: async (signal) => this._sendSignal(signal),
|
|
330
|
+
sessionId: this.sessionId
|
|
325
331
|
});
|
|
326
332
|
this._transport.connected.once(async () => {
|
|
327
333
|
this._changeState(ConnectionState.CONNECTED);
|
|
328
334
|
await this.connectedTimeoutContext.dispose();
|
|
329
335
|
this._callbacks?.onConnected?.();
|
|
336
|
+
(0, import_async.scheduleTaskInterval)(this._ctx, async () => this._emitTransportStats(), TRANSPORT_STATS_INTERVAL);
|
|
330
337
|
});
|
|
331
338
|
this._transport.closed.once(() => {
|
|
332
339
|
this._transport = void 0;
|
|
333
340
|
(0, import_log.log)("abort triggered by transport close", void 0, {
|
|
334
341
|
F: __dxlog_file,
|
|
335
|
-
L:
|
|
342
|
+
L: 216,
|
|
336
343
|
S: this,
|
|
337
344
|
C: (f, a) => f(...a)
|
|
338
345
|
});
|
|
@@ -343,7 +350,7 @@ var Connection = class {
|
|
|
343
350
|
err
|
|
344
351
|
}, {
|
|
345
352
|
F: __dxlog_file,
|
|
346
|
-
L:
|
|
353
|
+
L: 221,
|
|
347
354
|
S: this,
|
|
348
355
|
C: (f, a) => f(...a)
|
|
349
356
|
});
|
|
@@ -353,7 +360,7 @@ var Connection = class {
|
|
|
353
360
|
if (err instanceof import_protocols.ConnectionResetError) {
|
|
354
361
|
import_log.log.info("aborting due to transport ConnectionResetError", void 0, {
|
|
355
362
|
F: __dxlog_file,
|
|
356
|
-
L:
|
|
363
|
+
L: 228,
|
|
357
364
|
S: this,
|
|
358
365
|
C: (f, a) => f(...a)
|
|
359
366
|
});
|
|
@@ -361,7 +368,7 @@ var Connection = class {
|
|
|
361
368
|
} else if (err instanceof import_protocols.ConnectivityError) {
|
|
362
369
|
import_log.log.info("aborting due to transport ConnectivityError", void 0, {
|
|
363
370
|
F: __dxlog_file,
|
|
364
|
-
L:
|
|
371
|
+
L: 231,
|
|
365
372
|
S: this,
|
|
366
373
|
C: (f, a) => f(...a)
|
|
367
374
|
});
|
|
@@ -371,7 +378,7 @@ var Connection = class {
|
|
|
371
378
|
err
|
|
372
379
|
}, {
|
|
373
380
|
F: __dxlog_file,
|
|
374
|
-
L:
|
|
381
|
+
L: 234,
|
|
375
382
|
S: this,
|
|
376
383
|
C: (f, a) => f(...a)
|
|
377
384
|
});
|
|
@@ -389,7 +396,7 @@ var Connection = class {
|
|
|
389
396
|
id: this._instanceId
|
|
390
397
|
}), {
|
|
391
398
|
F: __dxlog_file,
|
|
392
|
-
L:
|
|
399
|
+
L: 250,
|
|
393
400
|
S: this,
|
|
394
401
|
C: (f, a) => f(...a)
|
|
395
402
|
});
|
|
@@ -399,14 +406,14 @@ var Connection = class {
|
|
|
399
406
|
err
|
|
400
407
|
}, {
|
|
401
408
|
F: __dxlog_file,
|
|
402
|
-
L:
|
|
409
|
+
L: 257,
|
|
403
410
|
S: this,
|
|
404
411
|
C: (f, a) => f(...a)
|
|
405
412
|
});
|
|
406
413
|
if (this._state === ConnectionState.CLOSED || this._state === ConnectionState.ABORTED) {
|
|
407
414
|
(0, import_log.log)(`abort ignored: already ${this._state}`, this.closeReason, {
|
|
408
415
|
F: __dxlog_file,
|
|
409
|
-
L:
|
|
416
|
+
L: 259,
|
|
410
417
|
S: this,
|
|
411
418
|
C: (f, a) => f(...a)
|
|
412
419
|
});
|
|
@@ -421,7 +428,7 @@ var Connection = class {
|
|
|
421
428
|
try {
|
|
422
429
|
(0, import_log.log)("aborting protocol... ", void 0, {
|
|
423
430
|
F: __dxlog_file,
|
|
424
|
-
L:
|
|
431
|
+
L: 273,
|
|
425
432
|
S: this,
|
|
426
433
|
C: (f, a) => f(...a)
|
|
427
434
|
});
|
|
@@ -429,7 +436,7 @@ var Connection = class {
|
|
|
429
436
|
} catch (err2) {
|
|
430
437
|
import_log.log.catch(err2, void 0, {
|
|
431
438
|
F: __dxlog_file,
|
|
432
|
-
L:
|
|
439
|
+
L: 276,
|
|
433
440
|
S: this,
|
|
434
441
|
C: (f, a) => f(...a)
|
|
435
442
|
});
|
|
@@ -439,7 +446,7 @@ var Connection = class {
|
|
|
439
446
|
} catch (err2) {
|
|
440
447
|
import_log.log.catch(err2, void 0, {
|
|
441
448
|
F: __dxlog_file,
|
|
442
|
-
L:
|
|
449
|
+
L: 283,
|
|
443
450
|
S: this,
|
|
444
451
|
C: (f, a) => f(...a)
|
|
445
452
|
});
|
|
@@ -449,7 +456,7 @@ var Connection = class {
|
|
|
449
456
|
} catch (err2) {
|
|
450
457
|
import_log.log.catch(err2, void 0, {
|
|
451
458
|
F: __dxlog_file,
|
|
452
|
-
L:
|
|
459
|
+
L: 289,
|
|
453
460
|
S: this,
|
|
454
461
|
C: (f, a) => f(...a)
|
|
455
462
|
});
|
|
@@ -473,7 +480,7 @@ var Connection = class {
|
|
|
473
480
|
peerId: this.ownId
|
|
474
481
|
}, {
|
|
475
482
|
F: __dxlog_file,
|
|
476
|
-
L:
|
|
483
|
+
L: 314,
|
|
477
484
|
S: this,
|
|
478
485
|
C: (f, a) => f(...a)
|
|
479
486
|
});
|
|
@@ -483,7 +490,7 @@ var Connection = class {
|
|
|
483
490
|
} catch (err2) {
|
|
484
491
|
import_log.log.catch(err2, void 0, {
|
|
485
492
|
F: __dxlog_file,
|
|
486
|
-
L:
|
|
493
|
+
L: 321,
|
|
487
494
|
S: this,
|
|
488
495
|
C: (f, a) => f(...a)
|
|
489
496
|
});
|
|
@@ -493,7 +500,7 @@ var Connection = class {
|
|
|
493
500
|
} catch (err2) {
|
|
494
501
|
import_log.log.catch(err2, void 0, {
|
|
495
502
|
F: __dxlog_file,
|
|
496
|
-
L:
|
|
503
|
+
L: 328,
|
|
497
504
|
S: this,
|
|
498
505
|
C: (f, a) => f(...a)
|
|
499
506
|
});
|
|
@@ -501,7 +508,7 @@ var Connection = class {
|
|
|
501
508
|
} else {
|
|
502
509
|
import_log.log.info(`graceful close requested when we were in ${lastState} state? aborting`, void 0, {
|
|
503
510
|
F: __dxlog_file,
|
|
504
|
-
L:
|
|
511
|
+
L: 331,
|
|
505
512
|
S: this,
|
|
506
513
|
C: (f, a) => f(...a)
|
|
507
514
|
});
|
|
@@ -510,7 +517,7 @@ var Connection = class {
|
|
|
510
517
|
} catch (err2) {
|
|
511
518
|
import_log.log.catch(err2, void 0, {
|
|
512
519
|
F: __dxlog_file,
|
|
513
|
-
L:
|
|
520
|
+
L: 335,
|
|
514
521
|
S: this,
|
|
515
522
|
C: (f, a) => f(...a)
|
|
516
523
|
});
|
|
@@ -520,7 +527,7 @@ var Connection = class {
|
|
|
520
527
|
} catch (err2) {
|
|
521
528
|
import_log.log.catch(err2, void 0, {
|
|
522
529
|
F: __dxlog_file,
|
|
523
|
-
L:
|
|
530
|
+
L: 340,
|
|
524
531
|
S: this,
|
|
525
532
|
C: (f, a) => f(...a)
|
|
526
533
|
});
|
|
@@ -530,7 +537,7 @@ var Connection = class {
|
|
|
530
537
|
peerId: this.ownId
|
|
531
538
|
}, {
|
|
532
539
|
F: __dxlog_file,
|
|
533
|
-
L:
|
|
540
|
+
L: 344,
|
|
534
541
|
S: this,
|
|
535
542
|
C: (f, a) => f(...a)
|
|
536
543
|
});
|
|
@@ -573,7 +580,7 @@ var Connection = class {
|
|
|
573
580
|
err
|
|
574
581
|
}, {
|
|
575
582
|
F: __dxlog_file,
|
|
576
|
-
L:
|
|
583
|
+
L: 382,
|
|
577
584
|
S: this,
|
|
578
585
|
C: (f, a) => f(...a)
|
|
579
586
|
});
|
|
@@ -586,7 +593,7 @@ var Connection = class {
|
|
|
586
593
|
async signal(msg) {
|
|
587
594
|
(0, import_invariant.invariant)(msg.sessionId, void 0, {
|
|
588
595
|
F: __dxlog_file,
|
|
589
|
-
L:
|
|
596
|
+
L: 391,
|
|
590
597
|
S: this,
|
|
591
598
|
A: [
|
|
592
599
|
"msg.sessionId",
|
|
@@ -596,7 +603,7 @@ var Connection = class {
|
|
|
596
603
|
if (!msg.sessionId.equals(this.sessionId)) {
|
|
597
604
|
(0, import_log.log)("dropping signal for incorrect session id", void 0, {
|
|
598
605
|
F: __dxlog_file,
|
|
599
|
-
L:
|
|
606
|
+
L: 393,
|
|
600
607
|
S: this,
|
|
601
608
|
C: (f, a) => f(...a)
|
|
602
609
|
});
|
|
@@ -604,7 +611,7 @@ var Connection = class {
|
|
|
604
611
|
}
|
|
605
612
|
(0, import_invariant.invariant)(msg.data.signal || msg.data.signalBatch, void 0, {
|
|
606
613
|
F: __dxlog_file,
|
|
607
|
-
L:
|
|
614
|
+
L: 396,
|
|
608
615
|
S: this,
|
|
609
616
|
A: [
|
|
610
617
|
"msg.data.signal || msg.data.signalBatch",
|
|
@@ -613,7 +620,7 @@ var Connection = class {
|
|
|
613
620
|
});
|
|
614
621
|
(0, import_invariant.invariant)(msg.author?.equals(this.remoteId), void 0, {
|
|
615
622
|
F: __dxlog_file,
|
|
616
|
-
L:
|
|
623
|
+
L: 397,
|
|
617
624
|
S: this,
|
|
618
625
|
A: [
|
|
619
626
|
"msg.author?.equals(this.remoteId)",
|
|
@@ -622,7 +629,7 @@ var Connection = class {
|
|
|
622
629
|
});
|
|
623
630
|
(0, import_invariant.invariant)(msg.recipient?.equals(this.ownId), void 0, {
|
|
624
631
|
F: __dxlog_file,
|
|
625
|
-
L:
|
|
632
|
+
L: 398,
|
|
626
633
|
S: this,
|
|
627
634
|
A: [
|
|
628
635
|
"msg.recipient?.equals(this.ownId)",
|
|
@@ -646,7 +653,7 @@ var Connection = class {
|
|
|
646
653
|
msg: msg.data
|
|
647
654
|
}, {
|
|
648
655
|
F: __dxlog_file,
|
|
649
|
-
L:
|
|
656
|
+
L: 407,
|
|
650
657
|
S: this,
|
|
651
658
|
C: (f, a) => f(...a)
|
|
652
659
|
});
|
|
@@ -654,7 +661,7 @@ var Connection = class {
|
|
|
654
661
|
} else {
|
|
655
662
|
(0, import_invariant.invariant)(this._transport, "Connection not ready to accept signals.", {
|
|
656
663
|
F: __dxlog_file,
|
|
657
|
-
L:
|
|
664
|
+
L: 410,
|
|
658
665
|
S: this,
|
|
659
666
|
A: [
|
|
660
667
|
"this._transport",
|
|
@@ -667,7 +674,7 @@ var Connection = class {
|
|
|
667
674
|
msg: msg.data
|
|
668
675
|
}, {
|
|
669
676
|
F: __dxlog_file,
|
|
670
|
-
L:
|
|
677
|
+
L: 411,
|
|
671
678
|
S: this,
|
|
672
679
|
C: (f, a) => f(...a)
|
|
673
680
|
});
|
|
@@ -685,13 +692,13 @@ var Connection = class {
|
|
|
685
692
|
peerId: this.ownId
|
|
686
693
|
}, {
|
|
687
694
|
F: __dxlog_file,
|
|
688
|
-
L:
|
|
695
|
+
L: 422,
|
|
689
696
|
S: this,
|
|
690
697
|
C: (f, a) => f(...a)
|
|
691
698
|
});
|
|
692
699
|
(0, import_invariant.invariant)(state !== this._state, "Already in this state.", {
|
|
693
700
|
F: __dxlog_file,
|
|
694
|
-
L:
|
|
701
|
+
L: 423,
|
|
695
702
|
S: this,
|
|
696
703
|
A: [
|
|
697
704
|
"state !== this._state",
|
|
@@ -701,7 +708,16 @@ var Connection = class {
|
|
|
701
708
|
this._state = state;
|
|
702
709
|
this.stateChanged.emit(state);
|
|
703
710
|
}
|
|
711
|
+
async _emitTransportStats() {
|
|
712
|
+
const stats = await this.transport?.getStats();
|
|
713
|
+
if (stats) {
|
|
714
|
+
this.transportStats.emit(stats);
|
|
715
|
+
}
|
|
716
|
+
}
|
|
704
717
|
};
|
|
718
|
+
_ts_decorate([
|
|
719
|
+
import_log.logInfo
|
|
720
|
+
], Connection.prototype, "sessionIdString", null);
|
|
705
721
|
_ts_decorate([
|
|
706
722
|
import_async.synchronized
|
|
707
723
|
], Connection.prototype, "abort", null);
|
|
@@ -2090,7 +2106,7 @@ var ConnectionLog = class {
|
|
|
2090
2106
|
};
|
|
2091
2107
|
info.connections.push(connectionInfo);
|
|
2092
2108
|
this.update.emit();
|
|
2093
|
-
connection.stateChanged.on((state) => {
|
|
2109
|
+
connection.stateChanged.on(async (state) => {
|
|
2094
2110
|
connectionInfo.state = state;
|
|
2095
2111
|
connectionInfo.closeReason = connection.closeReason;
|
|
2096
2112
|
connectionInfo.lastUpdate = /* @__PURE__ */ new Date();
|
|
@@ -2098,6 +2114,10 @@ var ConnectionLog = class {
|
|
|
2098
2114
|
type: EventType.CONNECTION_STATE_CHANGED,
|
|
2099
2115
|
newState: state
|
|
2100
2116
|
});
|
|
2117
|
+
if (state === ConnectionState.CONNECTED) {
|
|
2118
|
+
const details = await connection.transport?.getDetails();
|
|
2119
|
+
connectionInfo.transportDetails = details;
|
|
2120
|
+
}
|
|
2101
2121
|
this.update.emit();
|
|
2102
2122
|
});
|
|
2103
2123
|
connection.protocol?.stats?.on((stats) => {
|
|
@@ -2107,6 +2127,12 @@ var ConnectionLog = class {
|
|
|
2107
2127
|
connectionInfo.lastUpdate = /* @__PURE__ */ new Date();
|
|
2108
2128
|
this.update.emit();
|
|
2109
2129
|
});
|
|
2130
|
+
connection.transportStats?.on((stats) => {
|
|
2131
|
+
connectionInfo.transportBytesSent = stats.bytesSent;
|
|
2132
|
+
connectionInfo.transportBytesReceived = stats.bytesReceived;
|
|
2133
|
+
connectionInfo.transportPacketsSent = stats.packetsSent;
|
|
2134
|
+
connectionInfo.transportPacketsReceived = stats.packetsReceived;
|
|
2135
|
+
});
|
|
2110
2136
|
gcSwarm(info);
|
|
2111
2137
|
});
|
|
2112
2138
|
}
|
|
@@ -2389,9 +2415,12 @@ var FullyConnectedTopology = class {
|
|
|
2389
2415
|
}
|
|
2390
2416
|
};
|
|
2391
2417
|
var __dxlog_file9 = "/home/runner/work/dxos/dxos/packages/core/mesh/network-manager/src/topology/mmst-topology.ts";
|
|
2418
|
+
var MIN_UPDATE_INTERVAL = 1e3 * 10;
|
|
2419
|
+
var MAX_CHANGES_PER_UPDATE = 1;
|
|
2392
2420
|
var MMSTTopology = class {
|
|
2393
2421
|
constructor({ originateConnections = 2, maxPeers = 4, sampleSize = 10 } = {}) {
|
|
2394
2422
|
this._sampleCollected = false;
|
|
2423
|
+
this._lastAction = /* @__PURE__ */ new Date(0);
|
|
2395
2424
|
this._originateConnections = originateConnections;
|
|
2396
2425
|
this._maxPeers = maxPeers;
|
|
2397
2426
|
this._sampleSize = sampleSize;
|
|
@@ -2399,7 +2428,7 @@ var MMSTTopology = class {
|
|
|
2399
2428
|
init(controller) {
|
|
2400
2429
|
(0, import_invariant8.invariant)(!this._controller, "Already initialized", {
|
|
2401
2430
|
F: __dxlog_file9,
|
|
2402
|
-
L:
|
|
2431
|
+
L: 51,
|
|
2403
2432
|
S: this,
|
|
2404
2433
|
A: [
|
|
2405
2434
|
"!this._controller",
|
|
@@ -2411,7 +2440,7 @@ var MMSTTopology = class {
|
|
|
2411
2440
|
update() {
|
|
2412
2441
|
(0, import_invariant8.invariant)(this._controller, "Not initialized", {
|
|
2413
2442
|
F: __dxlog_file9,
|
|
2414
|
-
L:
|
|
2443
|
+
L: 56,
|
|
2415
2444
|
S: this,
|
|
2416
2445
|
A: [
|
|
2417
2446
|
"this._controller",
|
|
@@ -2420,9 +2449,9 @@ var MMSTTopology = class {
|
|
|
2420
2449
|
});
|
|
2421
2450
|
const { connected, candidates } = this._controller.getState();
|
|
2422
2451
|
if (this._sampleCollected || connected.length > this._maxPeers || candidates.length > 0) {
|
|
2423
|
-
|
|
2452
|
+
import_log8.log.info("Running the algorithm.", void 0, {
|
|
2424
2453
|
F: __dxlog_file9,
|
|
2425
|
-
L:
|
|
2454
|
+
L: 60,
|
|
2426
2455
|
S: this,
|
|
2427
2456
|
C: (f, a) => f(...a)
|
|
2428
2457
|
});
|
|
@@ -2433,7 +2462,7 @@ var MMSTTopology = class {
|
|
|
2433
2462
|
async onOffer(peer) {
|
|
2434
2463
|
(0, import_invariant8.invariant)(this._controller, "Not initialized", {
|
|
2435
2464
|
F: __dxlog_file9,
|
|
2436
|
-
L:
|
|
2465
|
+
L: 67,
|
|
2437
2466
|
S: this,
|
|
2438
2467
|
A: [
|
|
2439
2468
|
"this._controller",
|
|
@@ -2444,7 +2473,7 @@ var MMSTTopology = class {
|
|
|
2444
2473
|
const accept = connected.length < this._maxPeers;
|
|
2445
2474
|
(0, import_log8.log)(`Offer ${peer} accept=${accept}`, void 0, {
|
|
2446
2475
|
F: __dxlog_file9,
|
|
2447
|
-
L:
|
|
2476
|
+
L: 70,
|
|
2448
2477
|
S: this,
|
|
2449
2478
|
C: (f, a) => f(...a)
|
|
2450
2479
|
});
|
|
@@ -2455,7 +2484,7 @@ var MMSTTopology = class {
|
|
|
2455
2484
|
_runAlgorithm() {
|
|
2456
2485
|
(0, import_invariant8.invariant)(this._controller, "Not initialized", {
|
|
2457
2486
|
F: __dxlog_file9,
|
|
2458
|
-
L:
|
|
2487
|
+
L: 79,
|
|
2459
2488
|
S: this,
|
|
2460
2489
|
A: [
|
|
2461
2490
|
"this._controller",
|
|
@@ -2464,27 +2493,84 @@ var MMSTTopology = class {
|
|
|
2464
2493
|
});
|
|
2465
2494
|
const { connected, candidates, ownPeerId } = this._controller.getState();
|
|
2466
2495
|
if (connected.length > this._maxPeers) {
|
|
2496
|
+
import_log8.log.info(`disconnect ${connected.length - this._maxPeers} peers.`, void 0, {
|
|
2497
|
+
F: __dxlog_file9,
|
|
2498
|
+
L: 85,
|
|
2499
|
+
S: this,
|
|
2500
|
+
C: (f, a) => f(...a)
|
|
2501
|
+
});
|
|
2467
2502
|
const sorted = sortByXorDistance(connected, ownPeerId).reverse().slice(0, this._maxPeers - connected.length);
|
|
2468
|
-
|
|
2469
|
-
|
|
2503
|
+
(0, import_invariant8.invariant)(sorted.length === 0, void 0, {
|
|
2504
|
+
F: __dxlog_file9,
|
|
2505
|
+
L: 89,
|
|
2506
|
+
S: this,
|
|
2507
|
+
A: [
|
|
2508
|
+
"sorted.length === 0",
|
|
2509
|
+
""
|
|
2510
|
+
]
|
|
2511
|
+
});
|
|
2512
|
+
if (sorted.length > MAX_CHANGES_PER_UPDATE) {
|
|
2513
|
+
(0, import_log8.log)(`want to disconnect ${sorted.length} peers but limited to ${MAX_CHANGES_PER_UPDATE}`, void 0, {
|
|
2470
2514
|
F: __dxlog_file9,
|
|
2471
|
-
L:
|
|
2515
|
+
L: 92,
|
|
2516
|
+
S: this,
|
|
2517
|
+
C: (f, a) => f(...a)
|
|
2518
|
+
});
|
|
2519
|
+
}
|
|
2520
|
+
if (Date.now() - this._lastAction.getTime() > MIN_UPDATE_INTERVAL) {
|
|
2521
|
+
for (const peer of sorted.slice(0, MAX_CHANGES_PER_UPDATE)) {
|
|
2522
|
+
import_log8.log.info(`Disconnect ${peer}.`, void 0, {
|
|
2523
|
+
F: __dxlog_file9,
|
|
2524
|
+
L: 97,
|
|
2525
|
+
S: this,
|
|
2526
|
+
C: (f, a) => f(...a)
|
|
2527
|
+
});
|
|
2528
|
+
this._controller.disconnect(peer);
|
|
2529
|
+
}
|
|
2530
|
+
this._lastAction = /* @__PURE__ */ new Date();
|
|
2531
|
+
} else {
|
|
2532
|
+
import_log8.log.info("rate limited discconnect", void 0, {
|
|
2533
|
+
F: __dxlog_file9,
|
|
2534
|
+
L: 102,
|
|
2472
2535
|
S: this,
|
|
2473
2536
|
C: (f, a) => f(...a)
|
|
2474
2537
|
});
|
|
2475
|
-
this._controller.disconnect(peer);
|
|
2476
2538
|
}
|
|
2477
2539
|
} else if (connected.length < this._originateConnections) {
|
|
2540
|
+
import_log8.log.info(`connect ${this._originateConnections - connected.length} peers.`, void 0, {
|
|
2541
|
+
F: __dxlog_file9,
|
|
2542
|
+
L: 106,
|
|
2543
|
+
S: this,
|
|
2544
|
+
C: (f, a) => f(...a)
|
|
2545
|
+
});
|
|
2478
2546
|
const sample = candidates.sort(() => Math.random() - 0.5).slice(0, this._sampleSize);
|
|
2479
2547
|
const sorted = sortByXorDistance(sample, ownPeerId).slice(0, this._originateConnections - connected.length);
|
|
2480
|
-
|
|
2481
|
-
(0, import_log8.log)(`
|
|
2548
|
+
if (sorted.length > MAX_CHANGES_PER_UPDATE) {
|
|
2549
|
+
(0, import_log8.log)(`want to connect ${sorted.length} peers but limited to ${MAX_CHANGES_PER_UPDATE}`, void 0, {
|
|
2482
2550
|
F: __dxlog_file9,
|
|
2483
|
-
L:
|
|
2551
|
+
L: 111,
|
|
2552
|
+
S: this,
|
|
2553
|
+
C: (f, a) => f(...a)
|
|
2554
|
+
});
|
|
2555
|
+
}
|
|
2556
|
+
if (Date.now() - this._lastAction.getTime() > MIN_UPDATE_INTERVAL) {
|
|
2557
|
+
for (const peer of sorted.slice(0, MAX_CHANGES_PER_UPDATE)) {
|
|
2558
|
+
import_log8.log.info(`Connect ${peer}.`, void 0, {
|
|
2559
|
+
F: __dxlog_file9,
|
|
2560
|
+
L: 115,
|
|
2561
|
+
S: this,
|
|
2562
|
+
C: (f, a) => f(...a)
|
|
2563
|
+
});
|
|
2564
|
+
this._controller.connect(peer);
|
|
2565
|
+
}
|
|
2566
|
+
this._lastAction = /* @__PURE__ */ new Date();
|
|
2567
|
+
} else {
|
|
2568
|
+
import_log8.log.info("rate limited connect", void 0, {
|
|
2569
|
+
F: __dxlog_file9,
|
|
2570
|
+
L: 120,
|
|
2484
2571
|
S: this,
|
|
2485
2572
|
C: (f, a) => f(...a)
|
|
2486
2573
|
});
|
|
2487
|
-
this._controller.connect(peer);
|
|
2488
2574
|
}
|
|
2489
2575
|
}
|
|
2490
2576
|
}
|
|
@@ -2757,6 +2843,17 @@ var MemoryTransport = class _MemoryTransport {
|
|
|
2757
2843
|
this._remote.wake(remoteId);
|
|
2758
2844
|
}
|
|
2759
2845
|
}
|
|
2846
|
+
async getDetails() {
|
|
2847
|
+
return this._instanceId.toHex();
|
|
2848
|
+
}
|
|
2849
|
+
async getStats() {
|
|
2850
|
+
return {
|
|
2851
|
+
bytesSent: 0,
|
|
2852
|
+
bytesReceived: 0,
|
|
2853
|
+
packetsSent: 0,
|
|
2854
|
+
packetsReceived: 0
|
|
2855
|
+
};
|
|
2856
|
+
}
|
|
2760
2857
|
};
|
|
2761
2858
|
_ts_decorate4([
|
|
2762
2859
|
import_log10.logInfo
|
|
@@ -2774,11 +2871,14 @@ var TransportKind;
|
|
|
2774
2871
|
})(TransportKind || (TransportKind = {}));
|
|
2775
2872
|
var wrtc = null;
|
|
2776
2873
|
try {
|
|
2777
|
-
wrtc = (0,
|
|
2874
|
+
wrtc = (0, import_chunk_JDKM4UPJ.__require)("@koush/wrtc");
|
|
2778
2875
|
} catch {
|
|
2779
2876
|
}
|
|
2780
2877
|
var __dxlog_file12 = "/home/runner/work/dxos/dxos/packages/core/mesh/network-manager/src/transport/simplepeer-transport.ts";
|
|
2781
2878
|
var SimplePeerTransport = class {
|
|
2879
|
+
/**
|
|
2880
|
+
* @params opts.config formatted as per https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/RTCPeerConnection
|
|
2881
|
+
*/
|
|
2782
2882
|
constructor(params) {
|
|
2783
2883
|
this.params = params;
|
|
2784
2884
|
this._closed = false;
|
|
@@ -2791,13 +2891,13 @@ var SimplePeerTransport = class {
|
|
|
2791
2891
|
id: this._instanceId
|
|
2792
2892
|
}), {
|
|
2793
2893
|
F: __dxlog_file12,
|
|
2794
|
-
L:
|
|
2894
|
+
L: 44,
|
|
2795
2895
|
S: this,
|
|
2796
2896
|
C: (f, a) => f(...a)
|
|
2797
2897
|
});
|
|
2798
2898
|
(0, import_log11.log)("created connection", params, {
|
|
2799
2899
|
F: __dxlog_file12,
|
|
2800
|
-
L:
|
|
2900
|
+
L: 45,
|
|
2801
2901
|
S: this,
|
|
2802
2902
|
C: (f, a) => f(...a)
|
|
2803
2903
|
});
|
|
@@ -2810,7 +2910,7 @@ var SimplePeerTransport = class {
|
|
|
2810
2910
|
this._peer.on("signal", async (data) => {
|
|
2811
2911
|
(0, import_log11.log)("signal", data, {
|
|
2812
2912
|
F: __dxlog_file12,
|
|
2813
|
-
L:
|
|
2913
|
+
L: 54,
|
|
2814
2914
|
S: this,
|
|
2815
2915
|
C: (f, a) => f(...a)
|
|
2816
2916
|
});
|
|
@@ -2823,7 +2923,7 @@ var SimplePeerTransport = class {
|
|
|
2823
2923
|
this._peer.on("connect", () => {
|
|
2824
2924
|
(0, import_log11.log)("connected", void 0, {
|
|
2825
2925
|
F: __dxlog_file12,
|
|
2826
|
-
L:
|
|
2926
|
+
L: 59,
|
|
2827
2927
|
S: this,
|
|
2828
2928
|
C: (f, a) => f(...a)
|
|
2829
2929
|
});
|
|
@@ -2834,7 +2934,7 @@ var SimplePeerTransport = class {
|
|
|
2834
2934
|
this._peer.on("close", async () => {
|
|
2835
2935
|
(0, import_log11.log)("closed", void 0, {
|
|
2836
2936
|
F: __dxlog_file12,
|
|
2837
|
-
L:
|
|
2937
|
+
L: 66,
|
|
2838
2938
|
S: this,
|
|
2839
2939
|
C: (f, a) => f(...a)
|
|
2840
2940
|
});
|
|
@@ -2849,7 +2949,7 @@ var SimplePeerTransport = class {
|
|
|
2849
2949
|
err
|
|
2850
2950
|
}, {
|
|
2851
2951
|
F: __dxlog_file12,
|
|
2852
|
-
L:
|
|
2952
|
+
L: 77,
|
|
2853
2953
|
S: this,
|
|
2854
2954
|
C: (f, a) => f(...a)
|
|
2855
2955
|
});
|
|
@@ -2858,7 +2958,7 @@ var SimplePeerTransport = class {
|
|
|
2858
2958
|
} else if ("code" in err) {
|
|
2859
2959
|
import_log11.log.info("simple-peer error", err, {
|
|
2860
2960
|
F: __dxlog_file12,
|
|
2861
|
-
L:
|
|
2961
|
+
L: 82,
|
|
2862
2962
|
S: this,
|
|
2863
2963
|
C: (f, a) => f(...a)
|
|
2864
2964
|
});
|
|
@@ -2888,7 +2988,7 @@ var SimplePeerTransport = class {
|
|
|
2888
2988
|
} else {
|
|
2889
2989
|
import_log11.log.info("unknown peer connection error", err, {
|
|
2890
2990
|
F: __dxlog_file12,
|
|
2891
|
-
L:
|
|
2991
|
+
L: 108,
|
|
2892
2992
|
S: this,
|
|
2893
2993
|
C: (f, a) => f(...a)
|
|
2894
2994
|
});
|
|
@@ -2899,10 +2999,10 @@ var SimplePeerTransport = class {
|
|
|
2899
2999
|
this._peer._pc.getStats().then((stats) => {
|
|
2900
3000
|
import_log11.log.info("report after webrtc error", {
|
|
2901
3001
|
config: this.params.webrtcConfig,
|
|
2902
|
-
stats
|
|
3002
|
+
stats: Object.fromEntries(stats.entries())
|
|
2903
3003
|
}, {
|
|
2904
3004
|
F: __dxlog_file12,
|
|
2905
|
-
L:
|
|
3005
|
+
L: 116,
|
|
2906
3006
|
S: this,
|
|
2907
3007
|
C: (f, a) => f(...a)
|
|
2908
3008
|
});
|
|
@@ -2911,7 +3011,7 @@ var SimplePeerTransport = class {
|
|
|
2911
3011
|
} catch (err2) {
|
|
2912
3012
|
import_log11.log.catch(err2, void 0, {
|
|
2913
3013
|
F: __dxlog_file12,
|
|
2914
|
-
L:
|
|
3014
|
+
L: 123,
|
|
2915
3015
|
S: this,
|
|
2916
3016
|
C: (f, a) => f(...a)
|
|
2917
3017
|
});
|
|
@@ -2922,15 +3022,68 @@ var SimplePeerTransport = class {
|
|
|
2922
3022
|
id: this._instanceId
|
|
2923
3023
|
}), {
|
|
2924
3024
|
F: __dxlog_file12,
|
|
2925
|
-
L:
|
|
3025
|
+
L: 129,
|
|
2926
3026
|
S: this,
|
|
2927
3027
|
C: (f, a) => f(...a)
|
|
2928
3028
|
});
|
|
2929
3029
|
}
|
|
3030
|
+
async getStats() {
|
|
3031
|
+
const stats = await this._getStats();
|
|
3032
|
+
if (!stats) {
|
|
3033
|
+
return {
|
|
3034
|
+
bytesSent: 0,
|
|
3035
|
+
bytesReceived: 0,
|
|
3036
|
+
packetsSent: 0,
|
|
3037
|
+
packetsReceived: 0,
|
|
3038
|
+
rawStats: {}
|
|
3039
|
+
};
|
|
3040
|
+
}
|
|
3041
|
+
return {
|
|
3042
|
+
bytesSent: stats.transport.bytesSent,
|
|
3043
|
+
bytesReceived: stats.transport.bytesReceived,
|
|
3044
|
+
packetsSent: stats.transport.messagesSent,
|
|
3045
|
+
packetsReceived: stats.transport.messagesReceived,
|
|
3046
|
+
rawStats: stats.raw
|
|
3047
|
+
};
|
|
3048
|
+
}
|
|
3049
|
+
async _getStats() {
|
|
3050
|
+
if (typeof this._peer?._pc?.getStats !== "function") {
|
|
3051
|
+
return null;
|
|
3052
|
+
}
|
|
3053
|
+
return await this._peer._pc.getStats().then((stats) => {
|
|
3054
|
+
const statsEntries = Array.from(stats.entries());
|
|
3055
|
+
const transport = statsEntries.filter((s) => s[1].type === "transport")[0][1];
|
|
3056
|
+
const candidatePair = statsEntries.filter((s) => s[0] === transport.selectedCandidatePairId);
|
|
3057
|
+
let selectedCandidatePair;
|
|
3058
|
+
let remoteCandidate;
|
|
3059
|
+
if (candidatePair.length > 0) {
|
|
3060
|
+
selectedCandidatePair = candidatePair[0][1];
|
|
3061
|
+
remoteCandidate = statsEntries.filter((s) => s[0] === selectedCandidatePair.remoteCandidateId)[0][1];
|
|
3062
|
+
}
|
|
3063
|
+
return {
|
|
3064
|
+
datachannel: statsEntries.filter((s) => s[1].type === "data-channel")[0][1],
|
|
3065
|
+
transport,
|
|
3066
|
+
selectedCandidatePair,
|
|
3067
|
+
remoteCandidate,
|
|
3068
|
+
raw: Object.fromEntries(stats.entries())
|
|
3069
|
+
};
|
|
3070
|
+
});
|
|
3071
|
+
}
|
|
3072
|
+
async getDetails() {
|
|
3073
|
+
const stats = await this._getStats();
|
|
3074
|
+
const rc = stats?.remoteCandidate;
|
|
3075
|
+
if (!rc) {
|
|
3076
|
+
return "unavailable";
|
|
3077
|
+
}
|
|
3078
|
+
if (rc.relay) {
|
|
3079
|
+
return `${rc.ip}:${rc.port}/${rc.protocol} relay for XXX ${rc.candidateType}`;
|
|
3080
|
+
}
|
|
3081
|
+
return `${rc.ip}:${rc.port}/${rc.protocol} ${rc.candidateType}`;
|
|
3082
|
+
}
|
|
2930
3083
|
async destroy() {
|
|
2931
3084
|
(0, import_log11.log)("closing...", void 0, {
|
|
2932
3085
|
F: __dxlog_file12,
|
|
2933
|
-
L:
|
|
3086
|
+
L: 192,
|
|
2934
3087
|
S: this,
|
|
2935
3088
|
C: (f, a) => f(...a)
|
|
2936
3089
|
});
|
|
@@ -2940,10 +3093,11 @@ var SimplePeerTransport = class {
|
|
|
2940
3093
|
this._closed = true;
|
|
2941
3094
|
this._disconnectStreams();
|
|
2942
3095
|
this._peer.destroy();
|
|
3096
|
+
this._closed = true;
|
|
2943
3097
|
this.closed.emit();
|
|
2944
3098
|
(0, import_log11.log)("closed", void 0, {
|
|
2945
3099
|
F: __dxlog_file12,
|
|
2946
|
-
L:
|
|
3100
|
+
L: 201,
|
|
2947
3101
|
S: this,
|
|
2948
3102
|
C: (f, a) => f(...a)
|
|
2949
3103
|
});
|
|
@@ -3049,7 +3203,7 @@ var SimplePeerTransportService = class {
|
|
|
3049
3203
|
async sendSignal({ proxyId, signal }) {
|
|
3050
3204
|
(0, import_invariant11.invariant)(this.transports.has(proxyId), void 0, {
|
|
3051
3205
|
F: __dxlog_file13,
|
|
3052
|
-
L:
|
|
3206
|
+
L: 116,
|
|
3053
3207
|
S: this,
|
|
3054
3208
|
A: [
|
|
3055
3209
|
"this.transports.has(proxyId)",
|
|
@@ -3058,18 +3212,46 @@ var SimplePeerTransportService = class {
|
|
|
3058
3212
|
});
|
|
3059
3213
|
await this.transports.get(proxyId).transport.signal(signal);
|
|
3060
3214
|
}
|
|
3215
|
+
async getDetails({ proxyId }) {
|
|
3216
|
+
(0, import_invariant11.invariant)(this.transports.has(proxyId), void 0, {
|
|
3217
|
+
F: __dxlog_file13,
|
|
3218
|
+
L: 121,
|
|
3219
|
+
S: this,
|
|
3220
|
+
A: [
|
|
3221
|
+
"this.transports.has(proxyId)",
|
|
3222
|
+
""
|
|
3223
|
+
]
|
|
3224
|
+
});
|
|
3225
|
+
return {
|
|
3226
|
+
details: await this.transports.get(proxyId).transport.getDetails()
|
|
3227
|
+
};
|
|
3228
|
+
}
|
|
3229
|
+
async getStats({ proxyId }) {
|
|
3230
|
+
(0, import_invariant11.invariant)(this.transports.has(proxyId), void 0, {
|
|
3231
|
+
F: __dxlog_file13,
|
|
3232
|
+
L: 126,
|
|
3233
|
+
S: this,
|
|
3234
|
+
A: [
|
|
3235
|
+
"this.transports.has(proxyId)",
|
|
3236
|
+
""
|
|
3237
|
+
]
|
|
3238
|
+
});
|
|
3239
|
+
return {
|
|
3240
|
+
stats: await this.transports.get(proxyId).transport.getStats()
|
|
3241
|
+
};
|
|
3242
|
+
}
|
|
3061
3243
|
async sendData({ proxyId, payload }) {
|
|
3062
3244
|
if (this.transports.get(proxyId)?.state !== "OPEN") {
|
|
3063
3245
|
import_log12.log.debug("transport is closed", void 0, {
|
|
3064
3246
|
F: __dxlog_file13,
|
|
3065
|
-
L:
|
|
3247
|
+
L: 132,
|
|
3066
3248
|
S: this,
|
|
3067
3249
|
C: (f, a) => f(...a)
|
|
3068
3250
|
});
|
|
3069
3251
|
}
|
|
3070
3252
|
(0, import_invariant11.invariant)(this.transports.has(proxyId), void 0, {
|
|
3071
3253
|
F: __dxlog_file13,
|
|
3072
|
-
L:
|
|
3254
|
+
L: 134,
|
|
3073
3255
|
S: this,
|
|
3074
3256
|
A: [
|
|
3075
3257
|
"this.transports.has(proxyId)",
|
|
@@ -3092,7 +3274,7 @@ var SimplePeerTransportService = class {
|
|
|
3092
3274
|
}
|
|
3093
3275
|
(0, import_log12.log)("Closed.", void 0, {
|
|
3094
3276
|
F: __dxlog_file13,
|
|
3095
|
-
L:
|
|
3277
|
+
L: 150,
|
|
3096
3278
|
S: this,
|
|
3097
3279
|
C: (f, a) => f(...a)
|
|
3098
3280
|
});
|
|
@@ -3219,6 +3401,16 @@ var SimplePeerTransportProxy = class {
|
|
|
3219
3401
|
signal
|
|
3220
3402
|
}).catch((err) => this.errors.raise(decodeError(err)));
|
|
3221
3403
|
}
|
|
3404
|
+
async getDetails() {
|
|
3405
|
+
return (await this._params.bridgeService.getDetails({
|
|
3406
|
+
proxyId: this._proxyId
|
|
3407
|
+
})).details;
|
|
3408
|
+
}
|
|
3409
|
+
async getStats() {
|
|
3410
|
+
return (await this._params.bridgeService.getStats({
|
|
3411
|
+
proxyId: this._proxyId
|
|
3412
|
+
})).stats;
|
|
3413
|
+
}
|
|
3222
3414
|
// TODO(burdon): Move open from constructor.
|
|
3223
3415
|
async destroy() {
|
|
3224
3416
|
await this._ctx.dispose();
|
|
@@ -3233,7 +3425,7 @@ var SimplePeerTransportProxy = class {
|
|
|
3233
3425
|
} catch (err) {
|
|
3234
3426
|
import_log13.log.catch(err, void 0, {
|
|
3235
3427
|
F: __dxlog_file14,
|
|
3236
|
-
L:
|
|
3428
|
+
L: 168,
|
|
3237
3429
|
S: this,
|
|
3238
3430
|
C: (f, a) => f(...a)
|
|
3239
3431
|
});
|
|
@@ -3269,7 +3461,7 @@ var SimplePeerTransportProxyFactory = class {
|
|
|
3269
3461
|
createTransport(options) {
|
|
3270
3462
|
(0, import_invariant12.invariant)(this._bridgeService, "SimplePeerTransportProxyFactory is not ready to open connections", {
|
|
3271
3463
|
F: __dxlog_file14,
|
|
3272
|
-
L:
|
|
3464
|
+
L: 205,
|
|
3273
3465
|
S: this,
|
|
3274
3466
|
A: [
|
|
3275
3467
|
"this._bridgeService",
|
|
@@ -3326,7 +3518,7 @@ var LibDataChannelTransport = class {
|
|
|
3326
3518
|
this._readyForCandidates = new import_async11.Trigger();
|
|
3327
3519
|
this._writeCallback = null;
|
|
3328
3520
|
this._peer = (async () => {
|
|
3329
|
-
const { RTCPeerConnection: PeerConnection } = await import("./datachannel-
|
|
3521
|
+
const { RTCPeerConnection: PeerConnection } = await import("./datachannel-3VTTIMR5.cjs");
|
|
3330
3522
|
if (this._closed) {
|
|
3331
3523
|
this.errors.raise(new Error("connection already closed"));
|
|
3332
3524
|
}
|
|
@@ -3622,6 +3814,46 @@ var LibDataChannelTransport = class {
|
|
|
3622
3814
|
});
|
|
3623
3815
|
});
|
|
3624
3816
|
}
|
|
3817
|
+
async getDetails() {
|
|
3818
|
+
return this._peer.then(async (peer) => {
|
|
3819
|
+
const cp = await peer.getSelectedCandidatePair();
|
|
3820
|
+
if (!cp) {
|
|
3821
|
+
return "unavailable";
|
|
3822
|
+
}
|
|
3823
|
+
return `${cp.remote.address}:${cp.remote.port}/${cp.remote.transportType} ${cp.remote.type}`;
|
|
3824
|
+
}).catch((err) => {
|
|
3825
|
+
import_log14.log.catch(err, void 0, {
|
|
3826
|
+
F: __dxlog_file15,
|
|
3827
|
+
L: 250,
|
|
3828
|
+
S: this,
|
|
3829
|
+
C: (f, a) => f(...a)
|
|
3830
|
+
});
|
|
3831
|
+
return "unavailable";
|
|
3832
|
+
});
|
|
3833
|
+
}
|
|
3834
|
+
async getStats() {
|
|
3835
|
+
return this._peer.then((peer) => {
|
|
3836
|
+
return {
|
|
3837
|
+
bytesSent: peer.bytesSent(),
|
|
3838
|
+
bytesReceived: peer.bytesReceived(),
|
|
3839
|
+
packetsSent: 0,
|
|
3840
|
+
packetsReceived: 0
|
|
3841
|
+
};
|
|
3842
|
+
}).catch((err) => {
|
|
3843
|
+
import_log14.log.catch(err, void 0, {
|
|
3844
|
+
F: __dxlog_file15,
|
|
3845
|
+
L: 266,
|
|
3846
|
+
S: this,
|
|
3847
|
+
C: (f, a) => f(...a)
|
|
3848
|
+
});
|
|
3849
|
+
return {
|
|
3850
|
+
bytesSent: 0,
|
|
3851
|
+
bytesReceived: 0,
|
|
3852
|
+
packetsSent: 0,
|
|
3853
|
+
packetsReceived: 0
|
|
3854
|
+
};
|
|
3855
|
+
});
|
|
3856
|
+
}
|
|
3625
3857
|
// TODO(nf): add classmethod to call node-datachannel.cleanup() when all instances have been destroyed?
|
|
3626
3858
|
async destroy() {
|
|
3627
3859
|
await this._close();
|
|
@@ -3731,13 +3963,29 @@ var TcpTransport = class {
|
|
|
3731
3963
|
host: "localhost"
|
|
3732
3964
|
});
|
|
3733
3965
|
}
|
|
3966
|
+
async getDetails() {
|
|
3967
|
+
if (this.options.initiator) {
|
|
3968
|
+
const { port: port2, address: address2 } = this._server?.address();
|
|
3969
|
+
return `LISTEN ${address2}:${port2}`;
|
|
3970
|
+
}
|
|
3971
|
+
const { port, address } = this._socket?.address();
|
|
3972
|
+
return `ACCEPT ${address}:${port}`;
|
|
3973
|
+
}
|
|
3974
|
+
async getStats() {
|
|
3975
|
+
return {
|
|
3976
|
+
bytesSent: 0,
|
|
3977
|
+
bytesReceived: 0,
|
|
3978
|
+
packetsSent: 0,
|
|
3979
|
+
packetsReceived: 0
|
|
3980
|
+
};
|
|
3981
|
+
}
|
|
3734
3982
|
_handleSocket(socket) {
|
|
3735
3983
|
(0, import_log15.log)("handling socket", {
|
|
3736
3984
|
remotePort: socket.remotePort,
|
|
3737
3985
|
localPort: socket.localPort
|
|
3738
3986
|
}, {
|
|
3739
3987
|
F: __dxlog_file16,
|
|
3740
|
-
L:
|
|
3988
|
+
L: 109,
|
|
3741
3989
|
S: this,
|
|
3742
3990
|
C: (f, a) => f(...a)
|
|
3743
3991
|
});
|
|
@@ -3749,7 +3997,7 @@ var TcpTransport = class {
|
|
|
3749
3997
|
port: this._socket?.remotePort
|
|
3750
3998
|
}, {
|
|
3751
3999
|
F: __dxlog_file16,
|
|
3752
|
-
L:
|
|
4000
|
+
L: 115,
|
|
3753
4001
|
S: this,
|
|
3754
4002
|
C: (f, a) => f(...a)
|
|
3755
4003
|
});
|
|
@@ -3768,8 +4016,8 @@ var createTeleportProtocolFactory = (onConnection) => {
|
|
|
3768
4016
|
const teleport = new import_teleport.Teleport(params);
|
|
3769
4017
|
return {
|
|
3770
4018
|
stream: teleport.stream,
|
|
3771
|
-
open: async () => {
|
|
3772
|
-
await teleport.open();
|
|
4019
|
+
open: async (sessionId) => {
|
|
4020
|
+
await teleport.open(sessionId);
|
|
3773
4021
|
await onConnection(teleport);
|
|
3774
4022
|
},
|
|
3775
4023
|
close: async () => {
|
|
@@ -3810,4 +4058,4 @@ var createTeleportProtocolFactory = (onConnection) => {
|
|
|
3810
4058
|
createSimplePeerTransportFactory,
|
|
3811
4059
|
createTeleportProtocolFactory
|
|
3812
4060
|
});
|
|
3813
|
-
//# sourceMappingURL=chunk-
|
|
4061
|
+
//# sourceMappingURL=chunk-55WTPQV5.cjs.map
|