@libp2p/webrtc 3.2.10 → 3.2.11-0b4a2ee79
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/README.md +1 -1
- package/dist/index.min.js +12 -12
- package/dist/src/index.d.ts +5 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/maconn.d.ts +6 -1
- package/dist/src/maconn.d.ts.map +1 -1
- package/dist/src/maconn.js +6 -6
- package/dist/src/maconn.js.map +1 -1
- package/dist/src/muxer.d.ts +13 -2
- package/dist/src/muxer.d.ts.map +1 -1
- package/dist/src/muxer.js +36 -7
- package/dist/src/muxer.js.map +1 -1
- package/dist/src/private-to-private/initiate-connection.d.ts +3 -2
- package/dist/src/private-to-private/initiate-connection.d.ts.map +1 -1
- package/dist/src/private-to-private/initiate-connection.js +3 -4
- package/dist/src/private-to-private/initiate-connection.js.map +1 -1
- package/dist/src/private-to-private/signaling-stream-handler.d.ts +3 -1
- package/dist/src/private-to-private/signaling-stream-handler.d.ts.map +1 -1
- package/dist/src/private-to-private/signaling-stream-handler.js +3 -4
- package/dist/src/private-to-private/signaling-stream-handler.js.map +1 -1
- package/dist/src/private-to-private/transport.d.ts +3 -0
- package/dist/src/private-to-private/transport.d.ts.map +1 -1
- package/dist/src/private-to-private/transport.js +13 -11
- package/dist/src/private-to-private/transport.js.map +1 -1
- package/dist/src/private-to-private/util.d.ts +2 -1
- package/dist/src/private-to-private/util.d.ts.map +1 -1
- package/dist/src/private-to-private/util.js +25 -40
- package/dist/src/private-to-private/util.js.map +1 -1
- package/dist/src/private-to-public/sdp.d.ts +2 -1
- package/dist/src/private-to-public/sdp.d.ts.map +1 -1
- package/dist/src/private-to-public/sdp.js +3 -6
- package/dist/src/private-to-public/sdp.js.map +1 -1
- package/dist/src/private-to-public/transport.d.ts +3 -0
- package/dist/src/private-to-public/transport.d.ts.map +1 -1
- package/dist/src/private-to-public/transport.js +21 -10
- package/dist/src/private-to-public/transport.js.map +1 -1
- package/dist/src/stream.d.ts +10 -3
- package/dist/src/stream.d.ts.map +1 -1
- package/dist/src/stream.js +18 -32
- package/dist/src/stream.js.map +1 -1
- package/dist/src/util.d.ts +2 -1
- package/dist/src/util.d.ts.map +1 -1
- package/dist/src/util.js +4 -6
- package/dist/src/util.js.map +1 -1
- package/package.json +21 -20
- package/src/index.ts +6 -0
- package/src/maconn.ts +12 -7
- package/src/muxer.ts +57 -8
- package/src/private-to-private/initiate-connection.ts +5 -6
- package/src/private-to-private/signaling-stream-handler.ts +5 -5
- package/src/private-to-private/transport.ts +15 -12
- package/src/private-to-private/util.ts +29 -44
- package/src/private-to-public/sdp.ts +4 -8
- package/src/private-to-public/transport.ts +23 -11
- package/src/stream.ts +26 -37
- package/src/util.ts +5 -7
- package/dist/typedoc-urls.json +0 -8
package/dist/src/index.d.ts
CHANGED
|
@@ -59,6 +59,11 @@ export interface DataChannelOptions {
|
|
|
59
59
|
* controls how long we wait for the acknowledgement in ms (default: 5s)
|
|
60
60
|
*/
|
|
61
61
|
closeTimeout?: number;
|
|
62
|
+
/**
|
|
63
|
+
* When sending the first data message, if the channel is not in the "open"
|
|
64
|
+
* state, wait this long for the "open" event to fire.
|
|
65
|
+
*/
|
|
66
|
+
openTimeout?: number;
|
|
62
67
|
}
|
|
63
68
|
/**
|
|
64
69
|
* @param {WebRTCTransportDirectInit} init - WebRTC direct transport configuration
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAGH,OAAO,EAAyB,KAAK,yBAAyB,EAAE,KAAK,+BAA+B,EAAE,MAAM,kCAAkC,CAAA;AAC9I,OAAO,KAAK,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAA;AACvG,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAA;AAE5D,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;IAEvB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAE1B;;;;OAIG;IACH,6BAA6B,CAAC,EAAE,MAAM,CAAA;IAEtC;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IAErB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAGH,OAAO,EAAyB,KAAK,yBAAyB,EAAE,KAAK,+BAA+B,EAAE,MAAM,kCAAkC,CAAA;AAC9I,OAAO,KAAK,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAA;AACvG,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAA;AAE5D,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;IAEvB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAE1B;;;;OAIG;IACH,6BAA6B,CAAC,EAAE,MAAM,CAAA;IAEtC;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IAErB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IAErB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED;;;;;;;GAOG;AACH,iBAAS,YAAY,CAAE,IAAI,CAAC,EAAE,yBAAyB,GAAG,CAAC,UAAU,EAAE,+BAA+B,KAAK,SAAS,CAEnH;AAED;;;;;;;;GAQG;AACH,iBAAS,MAAM,CAAE,IAAI,CAAC,EAAE,mBAAmB,GAAG,CAAC,UAAU,EAAE,yBAAyB,KAAK,SAAS,CAEjG;AAED,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,CAAA"}
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAA;AACnE,OAAO,EAAE,qBAAqB,EAAwE,MAAM,kCAAkC,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAA;AACnE,OAAO,EAAE,qBAAqB,EAAwE,MAAM,kCAAkC,CAAA;AA4C9I;;;;;;;GAOG;AACH,SAAS,YAAY,CAAE,IAAgC;IACrD,OAAO,CAAC,UAA2C,EAAE,EAAE,CAAC,IAAI,qBAAqB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAA;AACrG,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,MAAM,CAAE,IAA0B;IACzC,OAAO,CAAC,UAAqC,EAAE,EAAE,CAAC,IAAI,eAAe,CAAC,UAAU,EAAE,IAAI,CAAC,CAAA;AACzF,CAAC;AAED,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,CAAA"}
|
package/dist/src/maconn.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { ComponentLogger, Logger } from '@libp2p/interface';
|
|
1
2
|
import type { MultiaddrConnection, MultiaddrConnectionTimeline } from '@libp2p/interface/connection';
|
|
2
3
|
import type { CounterGroup } from '@libp2p/interface/metrics';
|
|
3
4
|
import type { AbortOptions, Multiaddr } from '@multiformats/multiaddr';
|
|
@@ -20,7 +21,11 @@ interface WebRTCMultiaddrConnectionInit {
|
|
|
20
21
|
*/
|
|
21
22
|
metrics?: CounterGroup;
|
|
22
23
|
}
|
|
24
|
+
export interface WebRTCMultiaddrConnectionComponents {
|
|
25
|
+
logger: ComponentLogger;
|
|
26
|
+
}
|
|
23
27
|
export declare class WebRTCMultiaddrConnection implements MultiaddrConnection {
|
|
28
|
+
readonly log: Logger;
|
|
24
29
|
/**
|
|
25
30
|
* WebRTC Peer Connection
|
|
26
31
|
*/
|
|
@@ -45,7 +50,7 @@ export declare class WebRTCMultiaddrConnection implements MultiaddrConnection {
|
|
|
45
50
|
* The stream destination, a no-op as the transport natively supports multiplexing
|
|
46
51
|
*/
|
|
47
52
|
sink: Sink<Source<Uint8Array>, Promise<void>>;
|
|
48
|
-
constructor(init: WebRTCMultiaddrConnectionInit);
|
|
53
|
+
constructor(components: WebRTCMultiaddrConnectionComponents, init: WebRTCMultiaddrConnectionInit);
|
|
49
54
|
close(options?: AbortOptions): Promise<void>;
|
|
50
55
|
abort(err: Error): void;
|
|
51
56
|
}
|
package/dist/src/maconn.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"maconn.d.ts","sourceRoot":"","sources":["../../src/maconn.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"maconn.d.ts","sourceRoot":"","sources":["../../src/maconn.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAChE,OAAO,KAAK,EAAE,mBAAmB,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAA;AACpG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAC7D,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACtE,OAAO,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AAEnD,UAAU,6BAA6B;IACrC;;OAEG;IACH,cAAc,EAAE,iBAAiB,CAAA;IAEjC;;OAEG;IACH,UAAU,EAAE,SAAS,CAAA;IAErB;;OAEG;IACH,QAAQ,EAAE,2BAA2B,CAAA;IAErC;;OAEG;IACH,OAAO,CAAC,EAAE,YAAY,CAAA;CACvB;AAED,MAAM,WAAW,mCAAmC;IAClD,MAAM,EAAE,eAAe,CAAA;CACxB;AAED,qBAAa,yBAA0B,YAAW,mBAAmB;IACnE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IAEpB;;OAEG;IACH,QAAQ,CAAC,cAAc,EAAE,iBAAiB,CAAA;IAE1C;;OAEG;IACH,UAAU,EAAE,SAAS,CAAA;IAErB;;OAEG;IACH,QAAQ,EAAE,2BAA2B,CAAA;IAErC;;OAEG;IACH,OAAO,CAAC,EAAE,YAAY,CAAA;IAEtB;;OAEG;IACH,MAAM,EAAE,cAAc,CAAC,UAAU,EAAE,GAAG,EAAE,OAAO,CAAC,CAAc;IAE9D;;OAEG;IACH,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAU;gBAE1C,UAAU,EAAE,mCAAmC,EAAE,IAAI,EAAE,6BAA6B;IAkB3F,KAAK,CAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAQnD,KAAK,CAAE,GAAG,EAAE,KAAK,GAAG,IAAI;CAOzB"}
|
package/dist/src/maconn.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import { logger } from '@libp2p/logger';
|
|
2
1
|
import { nopSink, nopSource } from './util.js';
|
|
3
|
-
const log = logger('libp2p:webrtc:maconn');
|
|
4
2
|
export class WebRTCMultiaddrConnection {
|
|
3
|
+
log;
|
|
5
4
|
/**
|
|
6
5
|
* WebRTC Peer Connection
|
|
7
6
|
*/
|
|
@@ -26,13 +25,14 @@ export class WebRTCMultiaddrConnection {
|
|
|
26
25
|
* The stream destination, a no-op as the transport natively supports multiplexing
|
|
27
26
|
*/
|
|
28
27
|
sink = nopSink;
|
|
29
|
-
constructor(init) {
|
|
28
|
+
constructor(components, init) {
|
|
29
|
+
this.log = components.logger.forComponent('libp2p:webrtc:maconn');
|
|
30
30
|
this.remoteAddr = init.remoteAddr;
|
|
31
31
|
this.timeline = init.timeline;
|
|
32
32
|
this.peerConnection = init.peerConnection;
|
|
33
33
|
const initialState = this.peerConnection.connectionState;
|
|
34
34
|
this.peerConnection.onconnectionstatechange = () => {
|
|
35
|
-
log.trace('peer connection state change', this.peerConnection.connectionState, 'initial state', initialState);
|
|
35
|
+
this.log.trace('peer connection state change', this.peerConnection.connectionState, 'initial state', initialState);
|
|
36
36
|
if (this.peerConnection.connectionState === 'disconnected' || this.peerConnection.connectionState === 'failed' || this.peerConnection.connectionState === 'closed') {
|
|
37
37
|
// nothing else to do but close the connection
|
|
38
38
|
this.timeline.close = Date.now();
|
|
@@ -40,13 +40,13 @@ export class WebRTCMultiaddrConnection {
|
|
|
40
40
|
};
|
|
41
41
|
}
|
|
42
42
|
async close(options) {
|
|
43
|
-
log.trace('closing connection');
|
|
43
|
+
this.log.trace('closing connection');
|
|
44
44
|
this.peerConnection.close();
|
|
45
45
|
this.timeline.close = Date.now();
|
|
46
46
|
this.metrics?.increment({ close: true });
|
|
47
47
|
}
|
|
48
48
|
abort(err) {
|
|
49
|
-
log.error('closing connection due to error', err);
|
|
49
|
+
this.log.error('closing connection due to error', err);
|
|
50
50
|
this.peerConnection.close();
|
|
51
51
|
this.timeline.close = Date.now();
|
|
52
52
|
this.metrics?.increment({ abort: true });
|
package/dist/src/maconn.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"maconn.js","sourceRoot":"","sources":["../../src/maconn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"maconn.js","sourceRoot":"","sources":["../../src/maconn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAiC9C,MAAM,OAAO,yBAAyB;IAC3B,GAAG,CAAQ;IAEpB;;OAEG;IACM,cAAc,CAAmB;IAE1C;;OAEG;IACH,UAAU,CAAW;IAErB;;OAEG;IACH,QAAQ,CAA6B;IAErC;;OAEG;IACH,OAAO,CAAe;IAEtB;;OAEG;IACH,MAAM,GAA6C,SAAS,EAAE,CAAA;IAE9D;;OAEG;IACH,IAAI,GAA4C,OAAO,CAAA;IAEvD,YAAa,UAA+C,EAAE,IAAmC;QAC/F,IAAI,CAAC,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,sBAAsB,CAAC,CAAA;QACjE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAA;QACjC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAA;QAC7B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAA;QAEzC,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,CAAA;QAExD,IAAI,CAAC,cAAc,CAAC,uBAAuB,GAAG,GAAG,EAAE;YACjD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,8BAA8B,EAAE,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,eAAe,EAAE,YAAY,CAAC,CAAA;YAElH,IAAI,IAAI,CAAC,cAAc,CAAC,eAAe,KAAK,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,eAAe,KAAK,QAAQ,IAAI,IAAI,CAAC,cAAc,CAAC,eAAe,KAAK,QAAQ,EAAE;gBAClK,8CAA8C;gBAC9C,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;aACjC;QACH,CAAC,CAAA;IACH,CAAC;IAED,KAAK,CAAC,KAAK,CAAE,OAAsB;QACjC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAA;QAEpC,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAA;QAC3B,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QAChC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;IAC1C,CAAC;IAED,KAAK,CAAE,GAAU;QACf,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,iCAAiC,EAAE,GAAG,CAAC,CAAA;QAEtD,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAA;QAC3B,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QAChC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;IAC1C,CAAC;CACF"}
|
package/dist/src/muxer.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { DataChannelOptions } from './index.js';
|
|
2
|
+
import type { ComponentLogger } from '@libp2p/interface';
|
|
2
3
|
import type { Stream } from '@libp2p/interface/connection';
|
|
3
4
|
import type { CounterGroup } from '@libp2p/interface/metrics';
|
|
4
5
|
import type { StreamMuxer, StreamMuxerFactory, StreamMuxerInit } from '@libp2p/interface/stream-muxer';
|
|
@@ -20,6 +21,9 @@ export interface DataChannelMuxerFactoryInit {
|
|
|
20
21
|
metrics?: CounterGroup;
|
|
21
22
|
dataChannelOptions?: DataChannelOptions;
|
|
22
23
|
}
|
|
24
|
+
export interface DataChannelMuxerFactoryComponents {
|
|
25
|
+
logger: ComponentLogger;
|
|
26
|
+
}
|
|
23
27
|
interface BufferedStream {
|
|
24
28
|
stream: Stream;
|
|
25
29
|
channel: RTCDataChannel;
|
|
@@ -34,12 +38,17 @@ export declare class DataChannelMuxerFactory implements StreamMuxerFactory {
|
|
|
34
38
|
private bufferedStreams;
|
|
35
39
|
private readonly metrics?;
|
|
36
40
|
private readonly dataChannelOptions?;
|
|
37
|
-
|
|
41
|
+
private readonly components;
|
|
42
|
+
private readonly log;
|
|
43
|
+
constructor(components: DataChannelMuxerFactoryComponents, init: DataChannelMuxerFactoryInit);
|
|
38
44
|
createStreamMuxer(init?: StreamMuxerInit): StreamMuxer;
|
|
39
45
|
}
|
|
40
46
|
export interface DataChannelMuxerInit extends DataChannelMuxerFactoryInit, StreamMuxerInit {
|
|
41
47
|
streams: BufferedStream[];
|
|
42
48
|
}
|
|
49
|
+
export interface DataChannelMuxerComponents {
|
|
50
|
+
logger: ComponentLogger;
|
|
51
|
+
}
|
|
43
52
|
/**
|
|
44
53
|
* A libp2p data channel stream muxer
|
|
45
54
|
*/
|
|
@@ -51,10 +60,12 @@ export declare class DataChannelMuxer implements StreamMuxer {
|
|
|
51
60
|
*/
|
|
52
61
|
streams: Stream[];
|
|
53
62
|
protocol: string;
|
|
63
|
+
private readonly log;
|
|
54
64
|
private readonly peerConnection;
|
|
55
65
|
private readonly dataChannelOptions;
|
|
56
66
|
private readonly metrics?;
|
|
57
|
-
|
|
67
|
+
private readonly logger;
|
|
68
|
+
constructor(components: DataChannelMuxerComponents, init: DataChannelMuxerInit);
|
|
58
69
|
/**
|
|
59
70
|
* Gracefully close all tracked streams and stop the muxer
|
|
60
71
|
*/
|
package/dist/src/muxer.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"muxer.d.ts","sourceRoot":"","sources":["../../src/muxer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"muxer.d.ts","sourceRoot":"","sources":["../../src/muxer.ts"],"names":[],"mappings":"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"}
|
package/dist/src/muxer.js
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
import { logger } from '@libp2p/logger';
|
|
2
1
|
import { createStream } from './stream.js';
|
|
3
2
|
import { drainAndClose, nopSink, nopSource } from './util.js';
|
|
4
|
-
const log = logger('libp2p:webrtc:muxer');
|
|
5
3
|
const PROTOCOL = '/webrtc';
|
|
6
4
|
export class DataChannelMuxerFactory {
|
|
7
5
|
protocol;
|
|
@@ -12,13 +10,24 @@ export class DataChannelMuxerFactory {
|
|
|
12
10
|
bufferedStreams = [];
|
|
13
11
|
metrics;
|
|
14
12
|
dataChannelOptions;
|
|
15
|
-
|
|
13
|
+
components;
|
|
14
|
+
log;
|
|
15
|
+
constructor(components, init) {
|
|
16
|
+
this.components = components;
|
|
16
17
|
this.peerConnection = init.peerConnection;
|
|
17
18
|
this.metrics = init.metrics;
|
|
18
19
|
this.protocol = init.protocol ?? PROTOCOL;
|
|
19
20
|
this.dataChannelOptions = init.dataChannelOptions ?? {};
|
|
21
|
+
this.log = components.logger.forComponent('libp2p:webrtc:datachannelmuxerfactory');
|
|
20
22
|
// store any datachannels opened before upgrade has been completed
|
|
21
23
|
this.peerConnection.ondatachannel = ({ channel }) => {
|
|
24
|
+
this.log.trace('incoming early datachannel with channel id %d and label "%s"', channel.id);
|
|
25
|
+
// 'init' channel is only used during connection establishment
|
|
26
|
+
if (channel.label === 'init') {
|
|
27
|
+
this.log.trace('closing early init channel');
|
|
28
|
+
channel.close();
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
22
31
|
// @ts-expect-error fields are set below
|
|
23
32
|
const bufferedStream = {};
|
|
24
33
|
const stream = createStream({
|
|
@@ -27,6 +36,7 @@ export class DataChannelMuxerFactory {
|
|
|
27
36
|
onEnd: (err) => {
|
|
28
37
|
bufferedStream.onEnd(err);
|
|
29
38
|
},
|
|
39
|
+
logger: components.logger,
|
|
30
40
|
...this.dataChannelOptions
|
|
31
41
|
});
|
|
32
42
|
bufferedStream.stream = stream;
|
|
@@ -38,7 +48,7 @@ export class DataChannelMuxerFactory {
|
|
|
38
48
|
};
|
|
39
49
|
}
|
|
40
50
|
createStreamMuxer(init) {
|
|
41
|
-
return new DataChannelMuxer({
|
|
51
|
+
return new DataChannelMuxer(this.components, {
|
|
42
52
|
...init,
|
|
43
53
|
peerConnection: this.peerConnection,
|
|
44
54
|
dataChannelOptions: this.dataChannelOptions,
|
|
@@ -58,11 +68,15 @@ export class DataChannelMuxer {
|
|
|
58
68
|
*/
|
|
59
69
|
streams;
|
|
60
70
|
protocol;
|
|
71
|
+
log;
|
|
61
72
|
peerConnection;
|
|
62
73
|
dataChannelOptions;
|
|
63
74
|
metrics;
|
|
64
|
-
|
|
75
|
+
logger;
|
|
76
|
+
constructor(components, init) {
|
|
65
77
|
this.init = init;
|
|
78
|
+
this.log = components.logger.forComponent('libp2p:webrtc:muxer');
|
|
79
|
+
this.logger = components.logger;
|
|
66
80
|
this.streams = init.streams.map(s => s.stream);
|
|
67
81
|
this.peerConnection = init.peerConnection;
|
|
68
82
|
this.protocol = init.protocol ?? PROTOCOL;
|
|
@@ -75,12 +89,21 @@ export class DataChannelMuxer {
|
|
|
75
89
|
* {@link https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/datachannel_event}
|
|
76
90
|
*/
|
|
77
91
|
this.peerConnection.ondatachannel = ({ channel }) => {
|
|
92
|
+
this.log.trace('incoming datachannel with channel id %d', channel.id);
|
|
93
|
+
// 'init' channel is only used during connection establishment
|
|
94
|
+
if (channel.label === 'init') {
|
|
95
|
+
this.log.trace('closing init channel');
|
|
96
|
+
channel.close();
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
78
99
|
const stream = createStream({
|
|
79
100
|
channel,
|
|
80
101
|
direction: 'inbound',
|
|
81
102
|
onEnd: () => {
|
|
103
|
+
this.log('incoming channel %s ended with state %s', channel.id, channel.readyState);
|
|
82
104
|
this.#onStreamEnd(stream, channel);
|
|
83
105
|
},
|
|
106
|
+
logger: this.logger,
|
|
84
107
|
...this.dataChannelOptions
|
|
85
108
|
});
|
|
86
109
|
this.streams.push(stream);
|
|
@@ -97,6 +120,7 @@ export class DataChannelMuxer {
|
|
|
97
120
|
queueMicrotask(() => {
|
|
98
121
|
this.init.streams.forEach(bufferedStream => {
|
|
99
122
|
bufferedStream.onEnd = () => {
|
|
123
|
+
this.log('incoming early channel %s ended with state %s', bufferedStream.channel.id, bufferedStream.channel.readyState);
|
|
100
124
|
this.#onStreamEnd(bufferedStream.stream, bufferedStream.channel);
|
|
101
125
|
};
|
|
102
126
|
this.metrics?.increment({ incoming_stream: true });
|
|
@@ -106,8 +130,10 @@ export class DataChannelMuxer {
|
|
|
106
130
|
}
|
|
107
131
|
}
|
|
108
132
|
#onStreamEnd(stream, channel) {
|
|
109
|
-
log.trace('stream %s %s %s onEnd', stream.direction, stream.id, stream.protocol);
|
|
110
|
-
drainAndClose(channel, `${stream.direction} ${stream.id} ${stream.protocol}`, this.dataChannelOptions.drainTimeout
|
|
133
|
+
this.log.trace('stream %s %s %s onEnd', stream.direction, stream.id, stream.protocol);
|
|
134
|
+
drainAndClose(channel, `${stream.direction} ${stream.id} ${stream.protocol}`, this.dataChannelOptions.drainTimeout, {
|
|
135
|
+
log: this.log
|
|
136
|
+
});
|
|
111
137
|
this.streams = this.streams.filter(s => s.id !== stream.id);
|
|
112
138
|
this.metrics?.increment({ stream_end: true });
|
|
113
139
|
this.init?.onStreamEnd?.(stream);
|
|
@@ -142,12 +168,15 @@ export class DataChannelMuxer {
|
|
|
142
168
|
newStream() {
|
|
143
169
|
// The spec says the label SHOULD be an empty string: https://github.com/libp2p/specs/blob/master/webrtc/README.md#rtcdatachannel-label
|
|
144
170
|
const channel = this.peerConnection.createDataChannel('');
|
|
171
|
+
this.log.trace('opened outgoing datachannel with channel id %s', channel.id);
|
|
145
172
|
const stream = createStream({
|
|
146
173
|
channel,
|
|
147
174
|
direction: 'outbound',
|
|
148
175
|
onEnd: () => {
|
|
176
|
+
this.log('outgoing channel %s ended with state %s', channel.id, channel.readyState);
|
|
149
177
|
this.#onStreamEnd(stream, channel);
|
|
150
178
|
},
|
|
179
|
+
logger: this.logger,
|
|
151
180
|
...this.dataChannelOptions
|
|
152
181
|
});
|
|
153
182
|
this.streams.push(stream);
|
package/dist/src/muxer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"muxer.js","sourceRoot":"","sources":["../../src/muxer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"muxer.js","sourceRoot":"","sources":["../../src/muxer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { type RTCPeerConnection } from '../webrtc/index.js';
|
|
2
2
|
import { type WebRTCTransportMetrics } from './transport.js';
|
|
3
3
|
import type { DataChannelOptions } from '../index.js';
|
|
4
|
+
import type { LoggerOptions } from '@libp2p/interface';
|
|
4
5
|
import type { ConnectionManager } from '@libp2p/interface-internal/connection-manager';
|
|
5
6
|
import type { IncomingStreamData } from '@libp2p/interface-internal/registrar';
|
|
6
7
|
import type { TransportManager } from '@libp2p/interface-internal/transport-manager';
|
|
@@ -10,7 +11,7 @@ export interface IncomingStreamOpts extends IncomingStreamData {
|
|
|
10
11
|
dataChannelOptions?: Partial<DataChannelOptions>;
|
|
11
12
|
signal: AbortSignal;
|
|
12
13
|
}
|
|
13
|
-
export interface ConnectOptions {
|
|
14
|
+
export interface ConnectOptions extends LoggerOptions {
|
|
14
15
|
peerConnection: RTCPeerConnection;
|
|
15
16
|
multiaddr: Multiaddr;
|
|
16
17
|
connectionManager: ConnectionManager;
|
|
@@ -19,7 +20,7 @@ export interface ConnectOptions {
|
|
|
19
20
|
signal?: AbortSignal;
|
|
20
21
|
metrics?: WebRTCTransportMetrics;
|
|
21
22
|
}
|
|
22
|
-
export declare function initiateConnection({ peerConnection, signal, metrics, multiaddr: ma, connectionManager, transportManager }: ConnectOptions): Promise<{
|
|
23
|
+
export declare function initiateConnection({ peerConnection, signal, metrics, multiaddr: ma, connectionManager, transportManager, log }: ConnectOptions): Promise<{
|
|
23
24
|
remoteAddress: Multiaddr;
|
|
24
25
|
}>;
|
|
25
26
|
//# sourceMappingURL=initiate-connection.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initiate-connection.d.ts","sourceRoot":"","sources":["../../../src/private-to-private/initiate-connection.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"initiate-connection.d.ts","sourceRoot":"","sources":["../../../src/private-to-private/initiate-connection.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,iBAAiB,EAAyB,MAAM,oBAAoB,CAAA;AAElF,OAAO,EAAiC,KAAK,sBAAsB,EAAE,MAAM,gBAAgB,CAAA;AAE3F,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAEtD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAA;AACtF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAA;AAC9E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8CAA8C,CAAA;AACpF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAExD,MAAM,WAAW,kBAAmB,SAAQ,kBAAkB;IAC5D,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;IACnC,kBAAkB,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAA;IAChD,MAAM,EAAE,WAAW,CAAA;CACpB;AAED,MAAM,WAAW,cAAe,SAAQ,aAAa;IACnD,cAAc,EAAE,iBAAiB,CAAA;IACjC,SAAS,EAAE,SAAS,CAAA;IACpB,iBAAiB,EAAE,iBAAiB,CAAA;IACpC,gBAAgB,EAAE,gBAAgB,CAAA;IAClC,kBAAkB,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAA;IAChD,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,OAAO,CAAC,EAAE,sBAAsB,CAAA;CACjC;AAED,wBAAsB,kBAAkB,CAAE,EAAE,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,GAAG,EAAE,EAAE,cAAc,GAAG,OAAO,CAAC;IAAE,aAAa,EAAE,SAAS,CAAA;CAAE,CAAC,CA2J7L"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { CodeError } from '@libp2p/interface/errors';
|
|
2
|
-
import { logger } from '@libp2p/logger';
|
|
3
2
|
import { peerIdFromString } from '@libp2p/peer-id';
|
|
4
3
|
import { pbStream } from 'it-protobuf-stream';
|
|
5
4
|
import pDefer, {} from 'p-defer';
|
|
@@ -7,8 +6,7 @@ import { RTCSessionDescription } from '../webrtc/index.js';
|
|
|
7
6
|
import { Message } from './pb/message.js';
|
|
8
7
|
import { SIGNALING_PROTO_ID, splitAddr } from './transport.js';
|
|
9
8
|
import { readCandidatesUntilConnected, resolveOnConnected } from './util.js';
|
|
10
|
-
|
|
11
|
-
export async function initiateConnection({ peerConnection, signal, metrics, multiaddr: ma, connectionManager, transportManager }) {
|
|
9
|
+
export async function initiateConnection({ peerConnection, signal, metrics, multiaddr: ma, connectionManager, transportManager, log }) {
|
|
12
10
|
const { baseAddr } = splitAddr(ma);
|
|
13
11
|
metrics?.dialerEvents.increment({ open: true });
|
|
14
12
|
log.trace('dialing base address: %a', baseAddr);
|
|
@@ -100,7 +98,8 @@ export async function initiateConnection({ peerConnection, signal, metrics, mult
|
|
|
100
98
|
log.trace('initiator read candidates until connected');
|
|
101
99
|
await readCandidatesUntilConnected(connectedPromise, peerConnection, messageStream, {
|
|
102
100
|
direction: 'initiator',
|
|
103
|
-
signal
|
|
101
|
+
signal,
|
|
102
|
+
log
|
|
104
103
|
});
|
|
105
104
|
log.trace('initiator connected, closing init channel');
|
|
106
105
|
channel.close();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initiate-connection.js","sourceRoot":"","sources":["../../../src/private-to-private/initiate-connection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AACpD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"initiate-connection.js","sourceRoot":"","sources":["../../../src/private-to-private/initiate-connection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAC7C,OAAO,MAAM,EAAE,EAAwB,MAAM,SAAS,CAAA;AACtD,OAAO,EAA0B,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AAClF,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AACzC,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAA+B,MAAM,gBAAgB,CAAA;AAC3F,OAAO,EAAE,4BAA4B,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAA;AAyB5E,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAE,EAAE,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,GAAG,EAAkB;IACpJ,MAAM,EAAE,QAAQ,EAAE,GAAG,SAAS,CAAC,EAAE,CAAC,CAAA;IAElC,OAAO,EAAE,YAAY,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;IAE/C,GAAG,CAAC,KAAK,CAAC,0BAA0B,EAAE,QAAQ,CAAC,CAAA;IAE/C,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,EAAE,CAAA;IAEtC,IAAI,SAAS,IAAI,IAAI,EAAE;QACrB,MAAM,IAAI,SAAS,CAAC,wBAAwB,EAAE,qBAAqB,CAAC,CAAA;KACrE;IAED,MAAM,WAAW,GAAG,iBAAiB,CAAC,cAAc,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAA;IACjF,IAAI,UAAsB,CAAA;IAC1B,IAAI,qBAAqB,GAAG,KAAK,CAAA;IAEjC,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;QAC5B,sEAAsE;QACtE,kEAAkE;QAClE,wEAAwE;QACxE,UAAU,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,QAAQ,EAAE;YACjD,MAAM;SACP,CAAC,CAAA;QACF,sEAAsE;QACtE,4BAA4B;QAC5B,qBAAqB,GAAG,IAAI,CAAA;KAC7B;SAAM;QACL,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC,CAAA;KAC5B;IAED,IAAI;QACF,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,SAAS,CAAC,kBAAkB,EAAE;YAC5D,MAAM;YACN,wBAAwB,EAAE,IAAI;SAC/B,CAAC,CAAA;QAEF,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAA;QAClD,MAAM,gBAAgB,GAA0B,MAAM,EAAE,CAAA;QACxD,MAAM,kBAAkB,GAAG,GAAS,EAAE;YACpC,gBAAgB,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC,uBAAuB,EAAE,2BAA2B,CAAC,CAAC,CAAA;QAC9F,CAAC,CAAA;QAED,IAAI;YACF,kBAAkB,CAAC,cAAc,EAAE,gBAAgB,CAAC,CAAA;YAEpD,mDAAmD;YACnD,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAA;YAErD,0EAA0E;YAC1E,uEAAuE;YACvE,6CAA6C;YAC7C,MAAM,OAAO,GAAG,cAAc,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAA;YAExD,4DAA4D;YAC5D,cAAc,CAAC,cAAc,GAAG,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE;gBAChD,sEAAsE;gBACtE,qEAAqE;gBACrE,8BAA8B;gBAC9B,gEAAgE;gBAChE,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,IAAI,CAAC,CAAA;gBAExD,GAAG,CAAC,KAAK,CAAC,oCAAoC,EAAE,IAAI,CAAC,CAAA;gBAErD,KAAK,aAAa,CAAC,KAAK,CAAC;oBACvB,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,aAAa;oBAChC,IAAI;iBACL,EAAE;oBACD,MAAM;iBACP,CAAC;qBACC,KAAK,CAAC,GAAG,CAAC,EAAE;oBACX,GAAG,CAAC,KAAK,CAAC,6BAA6B,EAAE,GAAG,CAAC,CAAA;gBAC/C,CAAC,CAAC,CAAA;YACN,CAAC,CAAA;YACD,cAAc,CAAC,mBAAmB,GAAG,CAAC,KAAK,EAAE,EAAE;gBAC7C,GAAG,CAAC,+BAA+B,EAAE,KAAK,CAAC,CAAA;YAC7C,CAAC,CAAA;YAED,kBAAkB;YAClB,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,WAAW,EAAE,CAAA;YAEnD,GAAG,CAAC,KAAK,CAAC,6BAA6B,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAA;YAEtD,gCAAgC;YAChC,MAAM,aAAa,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,CAAC,GAAG,EAAE,EAAE;gBAC9E,MAAM;aACP,CAAC,CAAA;YAEF,iCAAiC;YACjC,MAAM,cAAc,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;gBAC7D,GAAG,CAAC,KAAK,CAAC,uCAAuC,EAAE,GAAG,CAAC,CAAA;gBACvD,MAAM,IAAI,SAAS,CAAC,gCAAgC,EAAE,0BAA0B,CAAC,CAAA;YACnF,CAAC,CAAC,CAAA;YAEF,cAAc;YACd,MAAM,aAAa,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC;gBAC7C,MAAM;aACP,CAAC,CAAA;YAEF,IAAI,aAAa,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE;gBAClD,MAAM,IAAI,SAAS,CAAC,kCAAkC,EAAE,0BAA0B,CAAC,CAAA;aACpF;YAED,GAAG,CAAC,KAAK,CAAC,iCAAiC,EAAE,aAAa,CAAC,IAAI,CAAC,CAAA;YAEhE,MAAM,SAAS,GAAG,IAAI,qBAAqB,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,aAAa,CAAC,IAAI,EAAE,CAAC,CAAA;YACxF,MAAM,cAAc,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;gBAC/D,GAAG,CAAC,KAAK,CAAC,wCAAwC,EAAE,GAAG,CAAC,CAAA;gBACxD,MAAM,IAAI,SAAS,CAAC,iCAAiC,EAAE,0BAA0B,CAAC,CAAA;YACpF,CAAC,CAAC,CAAA;YAEF,GAAG,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAA;YAEtD,MAAM,4BAA4B,CAAC,gBAAgB,EAAE,cAAc,EAAE,aAAa,EAAE;gBAClF,SAAS,EAAE,WAAW;gBACtB,MAAM;gBACN,GAAG;aACJ,CAAC,CAAA;YAEF,GAAG,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAA;YACtD,OAAO,CAAC,KAAK,EAAE,CAAA;YAEf,GAAG,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAA;YAChD,MAAM,aAAa,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC;gBAC1C,MAAM;aACP,CAAC,CAAA;YAEF,GAAG,CAAC,KAAK,CAAC,0CAA0C,EAAE,EAAE,CAAC,CAAA;YAEzD,OAAO;gBACL,aAAa,EAAE,EAAE;aAClB,CAAA;SACF;QAAC,OAAO,GAAQ,EAAE;YACjB,cAAc,CAAC,KAAK,EAAE,CAAA;YACtB,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YACjB,MAAM,GAAG,CAAA;SACV;gBAAS;YACR,yBAAyB;YACzB,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAA;YACxD,cAAc,CAAC,cAAc,GAAG,IAAI,CAAA;YACpC,cAAc,CAAC,mBAAmB,GAAG,IAAI,CAAA;SAC1C;KACF;YAAS;QACR,8DAA8D;QAC9D,8DAA8D;QAC9D,IAAI,qBAAqB,EAAE;YACzB,IAAI;gBACF,MAAM,UAAU,CAAC,KAAK,CAAC;oBACrB,MAAM;iBACP,CAAC,CAAA;aACH;YAAC,OAAO,GAAQ,EAAE;gBACjB,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;aACtB;SACF;KACF;AACH,CAAC"}
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import { type Multiaddr } from '@multiformats/multiaddr';
|
|
2
2
|
import { type RTCPeerConnection } from '../webrtc/index.js';
|
|
3
|
+
import type { Logger } from '@libp2p/interface';
|
|
3
4
|
import type { IncomingStreamData } from '@libp2p/interface-internal/registrar';
|
|
4
5
|
export interface IncomingStreamOpts extends IncomingStreamData {
|
|
5
6
|
peerConnection: RTCPeerConnection;
|
|
6
7
|
signal: AbortSignal;
|
|
8
|
+
log: Logger;
|
|
7
9
|
}
|
|
8
|
-
export declare function handleIncomingStream({ peerConnection, stream, signal, connection }: IncomingStreamOpts): Promise<{
|
|
10
|
+
export declare function handleIncomingStream({ peerConnection, stream, signal, connection, log }: IncomingStreamOpts): Promise<{
|
|
9
11
|
remoteAddress: Multiaddr;
|
|
10
12
|
}>;
|
|
11
13
|
//# sourceMappingURL=signaling-stream-handler.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signaling-stream-handler.d.ts","sourceRoot":"","sources":["../../../src/private-to-private/signaling-stream-handler.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"signaling-stream-handler.d.ts","sourceRoot":"","sources":["../../../src/private-to-private/signaling-stream-handler.ts"],"names":[],"mappings":"AACA,OAAO,EAAa,KAAK,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAGnE,OAAO,EAAE,KAAK,iBAAiB,EAAyB,MAAM,oBAAoB,CAAA;AAGlF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAA;AAE9E,MAAM,WAAW,kBAAmB,SAAQ,kBAAkB;IAC5D,cAAc,EAAE,iBAAiB,CAAA;IACjC,MAAM,EAAE,WAAW,CAAA;IACnB,GAAG,EAAE,MAAM,CAAA;CACZ;AAED,wBAAsB,oBAAoB,CAAE,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,kBAAkB,GAAG,OAAO,CAAC;IAAE,aAAa,EAAE,SAAS,CAAA;CAAE,CAAC,CAiH1J"}
|
|
@@ -1,13 +1,11 @@
|
|
|
1
1
|
import { CodeError } from '@libp2p/interface/errors';
|
|
2
|
-
import { logger } from '@libp2p/logger';
|
|
3
2
|
import { multiaddr } from '@multiformats/multiaddr';
|
|
4
3
|
import { pbStream } from 'it-protobuf-stream';
|
|
5
4
|
import pDefer, {} from 'p-defer';
|
|
6
5
|
import { RTCSessionDescription } from '../webrtc/index.js';
|
|
7
6
|
import { Message } from './pb/message.js';
|
|
8
7
|
import { readCandidatesUntilConnected, resolveOnConnected } from './util.js';
|
|
9
|
-
|
|
10
|
-
export async function handleIncomingStream({ peerConnection, stream, signal, connection }) {
|
|
8
|
+
export async function handleIncomingStream({ peerConnection, stream, signal, connection, log }) {
|
|
11
9
|
log.trace('new inbound signaling stream');
|
|
12
10
|
const messageStream = pbStream(stream).pb(Message);
|
|
13
11
|
try {
|
|
@@ -74,7 +72,8 @@ export async function handleIncomingStream({ peerConnection, stream, signal, con
|
|
|
74
72
|
// wait until candidates are connected
|
|
75
73
|
await readCandidatesUntilConnected(connectedPromise, peerConnection, messageStream, {
|
|
76
74
|
direction: 'recipient',
|
|
77
|
-
signal
|
|
75
|
+
signal,
|
|
76
|
+
log
|
|
78
77
|
});
|
|
79
78
|
log.trace('recipient connected, closing signaling stream');
|
|
80
79
|
await messageStream.unwrap().unwrap().close({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signaling-stream-handler.js","sourceRoot":"","sources":["../../../src/private-to-private/signaling-stream-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AACpD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"signaling-stream-handler.js","sourceRoot":"","sources":["../../../src/private-to-private/signaling-stream-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AACpD,OAAO,EAAE,SAAS,EAAkB,MAAM,yBAAyB,CAAA;AACnE,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAC7C,OAAO,MAAM,EAAE,EAAwB,MAAM,SAAS,CAAA;AACtD,OAAO,EAA0B,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AAClF,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AACzC,OAAO,EAAE,4BAA4B,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAA;AAU5E,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAE,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,EAAsB;IACjH,GAAG,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAA;IAEzC,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAA;IAElD,IAAI;QACF,MAAM,gBAAgB,GAA0B,MAAM,EAAE,CAAA;QACxD,MAAM,iBAAiB,GAA0B,MAAM,EAAE,CAAA;QAEzD,MAAM,CAAC,OAAO,GAAG,GAAG,EAAE;YACpB,gBAAgB,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC,mCAAmC,EAAE,aAAa,CAAC,CAAC,CAAA;QAC5F,CAAC,CAAA;QAED,sBAAsB;QACtB,cAAc,CAAC,cAAc,GAAG,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE;YAChD,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAC5B,KAAK,IAAI,EAAE;gBACT,sEAAsE;gBACtE,qEAAqE;gBACrE,8BAA8B;gBAC9B,gEAAgE;gBAChE,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,IAAI,CAAC,CAAA;gBAExD,GAAG,CAAC,KAAK,CAAC,oCAAoC,EAAE,IAAI,CAAC,CAAA;gBAErD,MAAM,aAAa,CAAC,KAAK,CAAC;oBACxB,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,aAAa;oBAChC,IAAI;iBACL,EAAE;oBACD,MAAM;iBACP,CAAC,CAAA;YACJ,CAAC,EACD,CAAC,GAAG,EAAE,EAAE;gBACN,GAAG,CAAC,KAAK,CAAC,kDAAkD,EAAE,GAAG,CAAC,CAAA;gBAClE,gBAAgB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;YAC9B,CAAC,CACF,CAAA;QACH,CAAC,CAAA;QAED,kBAAkB,CAAC,cAAc,EAAE,gBAAgB,CAAC,CAAA;QAEpD,oBAAoB;QACpB,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC;YACvC,MAAM;SACP,CAAC,CAAA;QAEF,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE;YAC3C,MAAM,IAAI,SAAS,CAAC,8CAA8C,OAAO,CAAC,IAAI,IAAI,WAAW,GAAG,EAAE,0BAA0B,CAAC,CAAA;SAC9H;QAED,GAAG,CAAC,KAAK,CAAC,gCAAgC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;QAEzD,MAAM,KAAK,GAAG,IAAI,qBAAqB,CAAC;YACtC,IAAI,EAAE,OAAO;YACb,GAAG,EAAE,OAAO,CAAC,IAAI;SAClB,CAAC,CAAA;QAEF,MAAM,cAAc,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;YAC3D,GAAG,CAAC,KAAK,CAAC,wCAAwC,EAAE,GAAG,CAAC,CAAA;YACxD,MAAM,IAAI,SAAS,CAAC,iCAAiC,EAAE,0BAA0B,CAAC,CAAA;QACpF,CAAC,CAAC,CAAA;QAEF,iCAAiC;QACjC,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,YAAY,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;YAC7D,GAAG,CAAC,KAAK,CAAC,gCAAgC,EAAE,GAAG,CAAC,CAAA;YAChD,iBAAiB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;YAC7B,MAAM,IAAI,SAAS,CAAC,yBAAyB,EAAE,0BAA0B,CAAC,CAAA;QAC5E,CAAC,CAAC,CAAA;QAEF,GAAG,CAAC,KAAK,CAAC,8BAA8B,EAAE,MAAM,CAAC,GAAG,CAAC,CAAA;QAErD,iCAAiC;QACjC,MAAM,aAAa,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,EAAE,EAAE;YAC7E,MAAM;SACP,CAAC,CAAA;QAEF,MAAM,cAAc,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;YAC3D,GAAG,CAAC,KAAK,CAAC,uCAAuC,EAAE,GAAG,CAAC,CAAA;YACvD,iBAAiB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;YAC7B,MAAM,IAAI,SAAS,CAAC,gCAAgC,EAAE,0BAA0B,CAAC,CAAA;QACnF,CAAC,CAAC,CAAA;QAEF,iBAAiB,CAAC,OAAO,EAAE,CAAA;QAE3B,GAAG,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAA;QAEtD,sCAAsC;QACtC,MAAM,4BAA4B,CAAC,gBAAgB,EAAE,cAAc,EAAE,aAAa,EAAE;YAClF,SAAS,EAAE,WAAW;YACtB,MAAM;YACN,GAAG;SACJ,CAAC,CAAA;QAEF,GAAG,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAA;QAC1D,MAAM,aAAa,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC;YAC1C,MAAM;SACP,CAAC,CAAA;KACH;IAAC,OAAO,GAAQ,EAAE;QACjB,IAAI,cAAc,CAAC,eAAe,KAAK,WAAW,EAAE;YAClD,GAAG,CAAC,KAAK,CAAC,oDAAoD,EAAE,UAAU,CAAC,UAAU,EAAE,GAAG,CAAC,CAAA;YAE3F,cAAc,CAAC,KAAK,EAAE,CAAA;YACtB,MAAM,GAAG,CAAA;SACV;aAAM;YACL,GAAG,CAAC,4GAA4G,EAAE,UAAU,CAAC,UAAU,EAAE,GAAG,CAAC,CAAA;SAC9I;KACF;IAED,MAAM,aAAa,GAAG,SAAS,CAAC,eAAe,UAAU,CAAC,UAAU,CAAC,SAAS,EAAE,EAAE,CAAC,CAAA;IAEnF,GAAG,CAAC,KAAK,CAAC,0CAA0C,EAAE,aAAa,CAAC,CAAA;IAEpE,OAAO,EAAE,aAAa,EAAE,CAAA;AAC1B,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { type CreateListenerOptions, type DialOptions, symbol, type Transport, type Listener, type Upgrader } from '@libp2p/interface/transport';
|
|
2
2
|
import { type Multiaddr } from '@multiformats/multiaddr';
|
|
3
3
|
import type { DataChannelOptions } from '../index.js';
|
|
4
|
+
import type { ComponentLogger } from '@libp2p/interface';
|
|
4
5
|
import type { Connection } from '@libp2p/interface/connection';
|
|
5
6
|
import type { PeerId } from '@libp2p/interface/peer-id';
|
|
6
7
|
import type { CounterGroup, Metrics } from '@libp2p/interface/src/metrics/index.js';
|
|
@@ -25,6 +26,7 @@ export interface WebRTCTransportComponents {
|
|
|
25
26
|
transportManager: TransportManager;
|
|
26
27
|
connectionManager: ConnectionManager;
|
|
27
28
|
metrics?: Metrics;
|
|
29
|
+
logger: ComponentLogger;
|
|
28
30
|
}
|
|
29
31
|
export interface WebRTCTransportMetrics {
|
|
30
32
|
dialerEvents: CounterGroup;
|
|
@@ -33,6 +35,7 @@ export interface WebRTCTransportMetrics {
|
|
|
33
35
|
export declare class WebRTCTransport implements Transport, Startable {
|
|
34
36
|
private readonly components;
|
|
35
37
|
private readonly init;
|
|
38
|
+
private readonly log;
|
|
36
39
|
private _started;
|
|
37
40
|
private readonly metrics?;
|
|
38
41
|
private readonly shutdownController;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../../src/private-to-private/transport.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,qBAAqB,EAAE,KAAK,WAAW,EAAE,MAAM,EAAE,KAAK,SAAS,EAAE,KAAK,QAAQ,EAAE,KAAK,QAAQ,EAAE,MAAM,6BAA6B,CAAA;
|
|
1
|
+
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../../src/private-to-private/transport.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,qBAAqB,EAAE,KAAK,WAAW,EAAE,MAAM,EAAE,KAAK,SAAS,EAAE,KAAK,QAAQ,EAAE,KAAK,QAAQ,EAAE,MAAM,6BAA6B,CAAA;AAEhJ,OAAO,EAAa,KAAK,SAAS,EAAE,MAAM,yBAAyB,CAAA;AASnE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AACrD,OAAO,KAAK,EAAE,eAAe,EAAU,MAAM,mBAAmB,CAAA;AAChE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAA;AAC9D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,wCAAwC,CAAA;AACnF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAA;AAC5D,OAAO,KAAK,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAA;AACzF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4DAA4D,CAAA;AACnG,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8CAA8C,CAAA;AAIpF,eAAO,MAAM,kBAAkB,4BAA4B,CAAA;AAG3D,MAAM,WAAW,mBAAmB;IAClC,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;IACnC,WAAW,CAAC,EAAE,kBAAkB,CAAA;IAEhC;;;OAGG;IACH,wBAAwB,CAAC,EAAE,MAAM,CAAA;CAClC;AAED,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,SAAS,CAAA;IACpB,QAAQ,EAAE,QAAQ,CAAA;IAClB,gBAAgB,EAAE,gBAAgB,CAAA;IAClC,iBAAiB,EAAE,iBAAiB,CAAA;IACpC,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,MAAM,EAAE,eAAe,CAAA;CACxB;AAED,MAAM,WAAW,sBAAsB;IACrC,YAAY,EAAE,YAAY,CAAA;IAC1B,cAAc,EAAE,YAAY,CAAA;CAC7B;AAED,qBAAa,eAAgB,YAAW,SAAS,EAAE,SAAS;IAOxD,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,IAAI;IAPvB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;IAC5B,OAAO,CAAC,QAAQ,CAAQ;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAwB;IACjD,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAiB;gBAGjC,UAAU,EAAE,yBAAyB,EACrC,IAAI,GAAE,mBAAwB;IAmBjD,SAAS,IAAK,OAAO;IAIf,KAAK,IAAK,OAAO,CAAC,IAAI,CAAC;IASvB,IAAI,IAAK,OAAO,CAAC,IAAI,CAAC;IAM5B,cAAc,CAAE,OAAO,EAAE,qBAAqB,GAAG,QAAQ;IAMzD,QAAQ,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,oBAAmB;IAEhD,QAAQ,CAAC,CAAC,MAAM,CAAC,QAAO;IAExB,MAAM,CAAE,UAAU,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE;IAWvC,IAAI,CAAE,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;IAsC/D,WAAW,CAAE,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IA2C7E,OAAO,CAAC,gBAAgB;CAezB;AAED,wBAAgB,SAAS,CAAE,EAAE,EAAE,SAAS,GAAG;IAAE,QAAQ,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CA4BjF"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { CodeError } from '@libp2p/interface/errors';
|
|
2
2
|
import { symbol } from '@libp2p/interface/transport';
|
|
3
|
-
import { logger } from '@libp2p/logger';
|
|
4
3
|
import { peerIdFromString } from '@libp2p/peer-id';
|
|
5
4
|
import { multiaddr } from '@multiformats/multiaddr';
|
|
6
5
|
import { WebRTC } from '@multiformats/multiaddr-matcher';
|
|
@@ -11,7 +10,6 @@ import { cleanup, RTCPeerConnection } from '../webrtc/index.js';
|
|
|
11
10
|
import { initiateConnection } from './initiate-connection.js';
|
|
12
11
|
import { WebRTCPeerListener } from './listener.js';
|
|
13
12
|
import { handleIncomingStream } from './signaling-stream-handler.js';
|
|
14
|
-
const log = logger('libp2p:webrtc:peer');
|
|
15
13
|
const WEBRTC_TRANSPORT = '/webrtc';
|
|
16
14
|
const CIRCUIT_RELAY_TRANSPORT = '/p2p-circuit';
|
|
17
15
|
export const SIGNALING_PROTO_ID = '/webrtc-signaling/0.0.1';
|
|
@@ -19,12 +17,14 @@ const INBOUND_CONNECTION_TIMEOUT = 30 * 1000;
|
|
|
19
17
|
export class WebRTCTransport {
|
|
20
18
|
components;
|
|
21
19
|
init;
|
|
20
|
+
log;
|
|
22
21
|
_started = false;
|
|
23
22
|
metrics;
|
|
24
23
|
shutdownController;
|
|
25
24
|
constructor(components, init = {}) {
|
|
26
25
|
this.components = components;
|
|
27
26
|
this.init = init;
|
|
27
|
+
this.log = components.logger.forComponent('libp2p:webrtc');
|
|
28
28
|
this.shutdownController = new AbortController();
|
|
29
29
|
if (components.metrics != null) {
|
|
30
30
|
this.metrics = {
|
|
@@ -44,7 +44,7 @@ export class WebRTCTransport {
|
|
|
44
44
|
}
|
|
45
45
|
async start() {
|
|
46
46
|
await this.components.registrar.handle(SIGNALING_PROTO_ID, (data) => {
|
|
47
|
-
this._onProtocol(data).catch(err => { log.error('failed to handle incoming connect from %p', data.connection.remotePeer, err); });
|
|
47
|
+
this._onProtocol(data).catch(err => { this.log.error('failed to handle incoming connect from %p', data.connection.remotePeer, err); });
|
|
48
48
|
}, {
|
|
49
49
|
runOnTransientConnection: true
|
|
50
50
|
});
|
|
@@ -73,9 +73,9 @@ export class WebRTCTransport {
|
|
|
73
73
|
* <relay address>/p2p/<relay-peer>/p2p-circuit/webrtc/p2p/<destination-peer>
|
|
74
74
|
*/
|
|
75
75
|
async dial(ma, options) {
|
|
76
|
-
log.trace('dialing address: %a', ma);
|
|
76
|
+
this.log.trace('dialing address: %a', ma);
|
|
77
77
|
const peerConnection = new RTCPeerConnection(this.init.rtcConfiguration);
|
|
78
|
-
const muxerFactory = new DataChannelMuxerFactory({
|
|
78
|
+
const muxerFactory = new DataChannelMuxerFactory(this.components, {
|
|
79
79
|
peerConnection,
|
|
80
80
|
dataChannelOptions: this.init.dataChannel
|
|
81
81
|
});
|
|
@@ -85,9 +85,10 @@ export class WebRTCTransport {
|
|
|
85
85
|
dataChannelOptions: this.init.dataChannel,
|
|
86
86
|
signal: options.signal,
|
|
87
87
|
connectionManager: this.components.connectionManager,
|
|
88
|
-
transportManager: this.components.transportManager
|
|
88
|
+
transportManager: this.components.transportManager,
|
|
89
|
+
log: this.log
|
|
89
90
|
});
|
|
90
|
-
const webRTCConn = new WebRTCMultiaddrConnection({
|
|
91
|
+
const webRTCConn = new WebRTCMultiaddrConnection(this.components, {
|
|
91
92
|
peerConnection,
|
|
92
93
|
timeline: { open: Date.now() },
|
|
93
94
|
remoteAddr: remoteAddress,
|
|
@@ -105,7 +106,7 @@ export class WebRTCTransport {
|
|
|
105
106
|
async _onProtocol({ connection, stream }) {
|
|
106
107
|
const signal = AbortSignal.timeout(this.init.inboundConnectionTimeout ?? INBOUND_CONNECTION_TIMEOUT);
|
|
107
108
|
const peerConnection = new RTCPeerConnection(this.init.rtcConfiguration);
|
|
108
|
-
const muxerFactory = new DataChannelMuxerFactory({
|
|
109
|
+
const muxerFactory = new DataChannelMuxerFactory(this.components, {
|
|
109
110
|
peerConnection,
|
|
110
111
|
dataChannelOptions: this.init.dataChannel
|
|
111
112
|
});
|
|
@@ -114,9 +115,10 @@ export class WebRTCTransport {
|
|
|
114
115
|
peerConnection,
|
|
115
116
|
connection,
|
|
116
117
|
stream,
|
|
117
|
-
signal
|
|
118
|
+
signal,
|
|
119
|
+
log: this.log
|
|
118
120
|
});
|
|
119
|
-
const webRTCConn = new WebRTCMultiaddrConnection({
|
|
121
|
+
const webRTCConn = new WebRTCMultiaddrConnection(this.components, {
|
|
120
122
|
peerConnection,
|
|
121
123
|
timeline: { open: (new Date()).getTime() },
|
|
122
124
|
remoteAddr: remoteAddress,
|
|
@@ -144,7 +146,7 @@ export class WebRTCTransport {
|
|
|
144
146
|
const shutDownListener = () => {
|
|
145
147
|
webRTCConn.close()
|
|
146
148
|
.catch(err => {
|
|
147
|
-
log.error('could not close WebRTCMultiaddrConnection', err);
|
|
149
|
+
this.log.error('could not close WebRTCMultiaddrConnection', err);
|
|
148
150
|
});
|
|
149
151
|
};
|
|
150
152
|
this.shutdownController.signal.addEventListener('abort', shutDownListener);
|