mediasoup 3.20.9 → 3.21.0
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 +9 -3
- package/node/lib/Channel.d.ts.map +1 -1
- package/node/lib/Channel.js +7 -3
- package/node/lib/ConsumerTypes.d.ts.map +1 -1
- package/node/lib/PipeTransport.d.ts.map +1 -1
- package/node/lib/PipeTransport.js +2 -1
- package/node/lib/ProducerTypes.d.ts.map +1 -1
- package/node/lib/Router.d.ts.map +1 -1
- package/node/lib/Router.js +6 -6
- package/node/lib/RtpObserver.d.ts.map +1 -1
- package/node/lib/RtpObserver.js +3 -2
- package/node/lib/Transport.d.ts.map +1 -1
- package/node/lib/Transport.js +15 -3
- package/node/lib/TransportTypes.d.ts +2 -1
- package/node/lib/TransportTypes.d.ts.map +1 -1
- package/node/lib/WebRtcTransportTypes.d.ts.map +1 -1
- package/node/lib/errors.d.ts +9 -3
- package/node/lib/errors.d.ts.map +1 -1
- package/node/lib/errors.js +24 -7
- package/node/lib/fbs/transport/dump.d.ts +5 -1
- package/node/lib/fbs/transport/dump.d.ts.map +1 -1
- package/node/lib/fbs/transport/dump.js +23 -10
- package/node/lib/index.d.ts +4 -0
- package/node/lib/index.d.ts.map +1 -1
- package/node/lib/index.js +5 -1
- package/node/lib/rtpParametersTypes.d.ts.map +1 -1
- package/node/lib/test/test-ActiveSpeakerObserver.js +4 -0
- package/node/lib/test/test-AudioLevelObserver.js +4 -0
- package/node/lib/test/test-Consumer.js +16 -7
- package/node/lib/test/test-DataConsumer.js +11 -2
- package/node/lib/test/test-DataProducer.js +5 -2
- package/node/lib/test/test-DirectTransport.js +5 -2
- package/node/lib/test/test-PipeTransport.js +22 -1
- package/node/lib/test/test-PlainTransport.js +6 -3
- package/node/lib/test/test-Producer.js +6 -4
- package/node/lib/test/test-Router.js +4 -2
- package/node/lib/test/test-WebRtcServer.js +4 -2
- package/node/lib/test/test-WebRtcTransport.js +14 -7
- package/node/lib/test/test-Worker.js +4 -4
- package/node/lib/test/test-werift-sctp.js +7 -1
- package/npm-scripts.mjs +50 -10
- package/package.json +14 -10
- package/worker/fbs/transport.fbs +1 -0
- package/worker/include/Channel/ChannelRequest.hpp +2 -0
- package/worker/include/MediaSoupErrors.hpp +24 -0
- package/worker/include/RTC/ICE/StunPacket.hpp +21 -2
- package/worker/include/RTC/NackGenerator.hpp +2 -2
- package/worker/include/RTC/RTP/RtpStreamRecv.hpp +2 -2
- package/worker/include/RTC/Router.hpp +10 -6
- package/worker/include/RTC/Transport.hpp +19 -9
- package/worker/include/Worker.hpp +7 -5
- package/worker/include/handles/TcpConnectionHandle.hpp +2 -2
- package/worker/include/handles/TcpServerHandle.hpp +2 -2
- package/worker/include/handles/UdpSocketHandle.hpp +2 -2
- package/worker/src/Channel/ChannelRequest.cpp +21 -0
- package/worker/src/Channel/ChannelSocket.cpp +8 -0
- package/worker/src/RTC/Consumer.cpp +6 -0
- package/worker/src/RTC/ICE/IceServer.cpp +2 -1
- package/worker/src/RTC/ICE/StunPacket.cpp +8 -0
- package/worker/src/RTC/NackGenerator.cpp +1 -1
- package/worker/src/RTC/Producer.cpp +1 -1
- package/worker/src/RTC/Router.cpp +56 -53
- package/worker/src/RTC/SCTP/association/Association.cpp +0 -8
- package/worker/src/RTC/SeqManager.cpp +1 -3
- package/worker/src/RTC/SvcProducerStreamManager.cpp +1 -1
- package/worker/src/RTC/Transport.cpp +118 -76
- package/worker/src/Worker.cpp +51 -102
- package/worker/src/handles/TcpConnectionHandle.cpp +21 -7
- package/worker/src/handles/TcpServerHandle.cpp +10 -10
- package/worker/src/handles/UdpSocketHandle.cpp +15 -5
- package/worker/src/handles/UnixStreamSocketHandle.cpp +4 -3
- package/worker/test/src/RTC/ICE/TestStunPacket.cpp +6 -2
- package/worker/test/src/RTC/RTP/TestRtpStreamRecv.cpp +1 -1
- package/worker/test/src/RTC/TestNackGenerator.cpp +1 -1
|
@@ -38,6 +38,7 @@ exports.DumpT = exports.Dump = void 0;
|
|
|
38
38
|
/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */
|
|
39
39
|
const flatbuffers = __importStar(require("flatbuffers"));
|
|
40
40
|
const uint32_string_1 = require("../../fbs/common/uint32-string");
|
|
41
|
+
const sctp_negotiated_capabilities_1 = require("../../fbs/sctp-association/sctp-negotiated-capabilities");
|
|
41
42
|
const sctp_parameters_1 = require("../../fbs/sctp-parameters/sctp-parameters");
|
|
42
43
|
const recv_rtp_header_extensions_1 = require("../../fbs/transport/recv-rtp-header-extensions");
|
|
43
44
|
const rtp_listener_1 = require("../../fbs/transport/rtp-listener");
|
|
@@ -137,24 +138,28 @@ class Dump {
|
|
|
137
138
|
const offset = this.bb.__offset(this.bb_pos, 30);
|
|
138
139
|
return offset ? this.bb.readUint8(this.bb_pos + offset) : null;
|
|
139
140
|
}
|
|
140
|
-
|
|
141
|
+
sctpNegotiatedCapabilities(obj) {
|
|
141
142
|
const offset = this.bb.__offset(this.bb_pos, 32);
|
|
143
|
+
return offset ? (obj || new sctp_negotiated_capabilities_1.SctpNegotiatedCapabilities()).__init(this.bb.__indirect(this.bb_pos + offset), this.bb) : null;
|
|
144
|
+
}
|
|
145
|
+
sctpListener(obj) {
|
|
146
|
+
const offset = this.bb.__offset(this.bb_pos, 34);
|
|
142
147
|
return offset ? (obj || new sctp_listener_1.SctpListener()).__init(this.bb.__indirect(this.bb_pos + offset), this.bb) : null;
|
|
143
148
|
}
|
|
144
149
|
traceEventTypes(index) {
|
|
145
|
-
const offset = this.bb.__offset(this.bb_pos,
|
|
150
|
+
const offset = this.bb.__offset(this.bb_pos, 36);
|
|
146
151
|
return offset ? this.bb.readUint8(this.bb.__vector(this.bb_pos + offset) + index) : 0;
|
|
147
152
|
}
|
|
148
153
|
traceEventTypesLength() {
|
|
149
|
-
const offset = this.bb.__offset(this.bb_pos,
|
|
154
|
+
const offset = this.bb.__offset(this.bb_pos, 36);
|
|
150
155
|
return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0;
|
|
151
156
|
}
|
|
152
157
|
traceEventTypesArray() {
|
|
153
|
-
const offset = this.bb.__offset(this.bb_pos,
|
|
158
|
+
const offset = this.bb.__offset(this.bb_pos, 36);
|
|
154
159
|
return offset ? new Uint8Array(this.bb.bytes().buffer, this.bb.bytes().byteOffset + this.bb.__vector(this.bb_pos + offset), this.bb.__vector_len(this.bb_pos + offset)) : null;
|
|
155
160
|
}
|
|
156
161
|
static startDump(builder) {
|
|
157
|
-
builder.startObject(
|
|
162
|
+
builder.startObject(17);
|
|
158
163
|
}
|
|
159
164
|
static addId(builder, idOffset) {
|
|
160
165
|
builder.addFieldOffset(0, idOffset, 0);
|
|
@@ -258,11 +263,14 @@ class Dump {
|
|
|
258
263
|
static addSctpState(builder, sctpState) {
|
|
259
264
|
builder.addFieldInt8(13, sctpState, null);
|
|
260
265
|
}
|
|
266
|
+
static addSctpNegotiatedCapabilities(builder, sctpNegotiatedCapabilitiesOffset) {
|
|
267
|
+
builder.addFieldOffset(14, sctpNegotiatedCapabilitiesOffset, 0);
|
|
268
|
+
}
|
|
261
269
|
static addSctpListener(builder, sctpListenerOffset) {
|
|
262
|
-
builder.addFieldOffset(
|
|
270
|
+
builder.addFieldOffset(15, sctpListenerOffset, 0);
|
|
263
271
|
}
|
|
264
272
|
static addTraceEventTypes(builder, traceEventTypesOffset) {
|
|
265
|
-
builder.addFieldOffset(
|
|
273
|
+
builder.addFieldOffset(16, traceEventTypesOffset, 0);
|
|
266
274
|
}
|
|
267
275
|
static createTraceEventTypesVector(builder, data) {
|
|
268
276
|
builder.startVector(1, data.length, 1);
|
|
@@ -285,11 +293,11 @@ class Dump {
|
|
|
285
293
|
builder.requiredField(offset, 18); // data_consumer_ids
|
|
286
294
|
builder.requiredField(offset, 20); // recv_rtp_header_extensions
|
|
287
295
|
builder.requiredField(offset, 22); // rtp_listener
|
|
288
|
-
builder.requiredField(offset,
|
|
296
|
+
builder.requiredField(offset, 36); // trace_event_types
|
|
289
297
|
return offset;
|
|
290
298
|
}
|
|
291
299
|
unpack() {
|
|
292
|
-
return new DumpT(this.id(), this.direct(), this.bb.createScalarList(this.producerIds.bind(this), this.producerIdsLength()), this.bb.createScalarList(this.consumerIds.bind(this), this.consumerIdsLength()), this.bb.createObjList(this.mapSsrcConsumerId.bind(this), this.mapSsrcConsumerIdLength()), this.bb.createObjList(this.mapRtxSsrcConsumerId.bind(this), this.mapRtxSsrcConsumerIdLength()), this.bb.createScalarList(this.dataProducerIds.bind(this), this.dataProducerIdsLength()), this.bb.createScalarList(this.dataConsumerIds.bind(this), this.dataConsumerIdsLength()), (this.recvRtpHeaderExtensions() !== null ? this.recvRtpHeaderExtensions().unpack() : null), (this.rtpListener() !== null ? this.rtpListener().unpack() : null), this.maxSendMessageSize(), this.maxReceiveMessageSize(), (this.sctpParameters() !== null ? this.sctpParameters().unpack() : null), this.sctpState(), (this.sctpListener() !== null ? this.sctpListener().unpack() : null), this.bb.createScalarList(this.traceEventTypes.bind(this), this.traceEventTypesLength()));
|
|
300
|
+
return new DumpT(this.id(), this.direct(), this.bb.createScalarList(this.producerIds.bind(this), this.producerIdsLength()), this.bb.createScalarList(this.consumerIds.bind(this), this.consumerIdsLength()), this.bb.createObjList(this.mapSsrcConsumerId.bind(this), this.mapSsrcConsumerIdLength()), this.bb.createObjList(this.mapRtxSsrcConsumerId.bind(this), this.mapRtxSsrcConsumerIdLength()), this.bb.createScalarList(this.dataProducerIds.bind(this), this.dataProducerIdsLength()), this.bb.createScalarList(this.dataConsumerIds.bind(this), this.dataConsumerIdsLength()), (this.recvRtpHeaderExtensions() !== null ? this.recvRtpHeaderExtensions().unpack() : null), (this.rtpListener() !== null ? this.rtpListener().unpack() : null), this.maxSendMessageSize(), this.maxReceiveMessageSize(), (this.sctpParameters() !== null ? this.sctpParameters().unpack() : null), this.sctpState(), (this.sctpNegotiatedCapabilities() !== null ? this.sctpNegotiatedCapabilities().unpack() : null), (this.sctpListener() !== null ? this.sctpListener().unpack() : null), this.bb.createScalarList(this.traceEventTypes.bind(this), this.traceEventTypesLength()));
|
|
293
301
|
}
|
|
294
302
|
unpackTo(_o) {
|
|
295
303
|
_o.id = this.id();
|
|
@@ -306,6 +314,7 @@ class Dump {
|
|
|
306
314
|
_o.maxReceiveMessageSize = this.maxReceiveMessageSize();
|
|
307
315
|
_o.sctpParameters = (this.sctpParameters() !== null ? this.sctpParameters().unpack() : null);
|
|
308
316
|
_o.sctpState = this.sctpState();
|
|
317
|
+
_o.sctpNegotiatedCapabilities = (this.sctpNegotiatedCapabilities() !== null ? this.sctpNegotiatedCapabilities().unpack() : null);
|
|
309
318
|
_o.sctpListener = (this.sctpListener() !== null ? this.sctpListener().unpack() : null);
|
|
310
319
|
_o.traceEventTypes = this.bb.createScalarList(this.traceEventTypes.bind(this), this.traceEventTypesLength());
|
|
311
320
|
}
|
|
@@ -326,9 +335,10 @@ class DumpT {
|
|
|
326
335
|
maxReceiveMessageSize;
|
|
327
336
|
sctpParameters;
|
|
328
337
|
sctpState;
|
|
338
|
+
sctpNegotiatedCapabilities;
|
|
329
339
|
sctpListener;
|
|
330
340
|
traceEventTypes;
|
|
331
|
-
constructor(id = null, direct = false, producerIds = [], consumerIds = [], mapSsrcConsumerId = [], mapRtxSsrcConsumerId = [], dataProducerIds = [], dataConsumerIds = [], recvRtpHeaderExtensions = null, rtpListener = null, maxSendMessageSize = 0, maxReceiveMessageSize = 0, sctpParameters = null, sctpState = null, sctpListener = null, traceEventTypes = []) {
|
|
341
|
+
constructor(id = null, direct = false, producerIds = [], consumerIds = [], mapSsrcConsumerId = [], mapRtxSsrcConsumerId = [], dataProducerIds = [], dataConsumerIds = [], recvRtpHeaderExtensions = null, rtpListener = null, maxSendMessageSize = 0, maxReceiveMessageSize = 0, sctpParameters = null, sctpState = null, sctpNegotiatedCapabilities = null, sctpListener = null, traceEventTypes = []) {
|
|
332
342
|
this.id = id;
|
|
333
343
|
this.direct = direct;
|
|
334
344
|
this.producerIds = producerIds;
|
|
@@ -343,6 +353,7 @@ class DumpT {
|
|
|
343
353
|
this.maxReceiveMessageSize = maxReceiveMessageSize;
|
|
344
354
|
this.sctpParameters = sctpParameters;
|
|
345
355
|
this.sctpState = sctpState;
|
|
356
|
+
this.sctpNegotiatedCapabilities = sctpNegotiatedCapabilities;
|
|
346
357
|
this.sctpListener = sctpListener;
|
|
347
358
|
this.traceEventTypes = traceEventTypes;
|
|
348
359
|
}
|
|
@@ -357,6 +368,7 @@ class DumpT {
|
|
|
357
368
|
const recvRtpHeaderExtensions = (this.recvRtpHeaderExtensions !== null ? this.recvRtpHeaderExtensions.pack(builder) : 0);
|
|
358
369
|
const rtpListener = (this.rtpListener !== null ? this.rtpListener.pack(builder) : 0);
|
|
359
370
|
const sctpParameters = (this.sctpParameters !== null ? this.sctpParameters.pack(builder) : 0);
|
|
371
|
+
const sctpNegotiatedCapabilities = (this.sctpNegotiatedCapabilities !== null ? this.sctpNegotiatedCapabilities.pack(builder) : 0);
|
|
360
372
|
const sctpListener = (this.sctpListener !== null ? this.sctpListener.pack(builder) : 0);
|
|
361
373
|
const traceEventTypes = Dump.createTraceEventTypesVector(builder, this.traceEventTypes);
|
|
362
374
|
Dump.startDump(builder);
|
|
@@ -375,6 +387,7 @@ class DumpT {
|
|
|
375
387
|
Dump.addSctpParameters(builder, sctpParameters);
|
|
376
388
|
if (this.sctpState !== null)
|
|
377
389
|
Dump.addSctpState(builder, this.sctpState);
|
|
390
|
+
Dump.addSctpNegotiatedCapabilities(builder, sctpNegotiatedCapabilities);
|
|
378
391
|
Dump.addSctpListener(builder, sctpListener);
|
|
379
392
|
Dump.addTraceEventTypes(builder, traceEventTypes);
|
|
380
393
|
return Dump.endDump(builder);
|
package/node/lib/index.d.ts
CHANGED
package/node/lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACX,QAAQ,EAER,iBAAiB,EAEjB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAG5D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAElE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAGvC;;GAEG;AACH,YAAY,KAAK,KAAK,MAAM,SAAS,CAAC;AAEtC;;GAEG;AAEH,eAAO,MAAM,OAAO,EAAE,MAA8C,CAAC;AAErE,QAAA,MAAM,QAAQ,EAAE,QAAqD,CAAC;AAEtE;;GAEG;AACH,OAAO,EAAE,QAAQ,EAAE,CAAC;AAEpB;;GAEG;AACH,OAAO,EAAE,gBAAgB,IAAI,SAAS,EAAE,MAAM,UAAU,CAAC;AAIzD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,CAAC,EAAE,iBAAiB,GAAG,IAAI,CA0BxE;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,aAAa,SAAS,OAAO,GAAG,OAAO,EAAE,EAC3E,QAAkB,EAClB,OAAO,EACP,UAAkB,EAClB,UAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAElB,SAAS,EACT,oBAAoB,EACpB,OAAO,GACP,GAAE,cAAc,CAAC,aAAa,CAAM,GAAG,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CA6BrE;AAED;;GAEG;AACH,wBAAgB,2BAA2B,IAAI,qBAAqB,CAEnE;AAED;;GAEG;AACH,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAE/D;;GAEG;AACH,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAE/B;;GAEG;AACH,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACX,QAAQ,EAER,iBAAiB,EAEjB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAG5D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAElE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAGvC;;GAEG;AACH,YAAY,KAAK,KAAK,MAAM,SAAS,CAAC;AAEtC;;GAEG;AACH,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AAEnC;;GAEG;AAEH,eAAO,MAAM,OAAO,EAAE,MAA8C,CAAC;AAErE,QAAA,MAAM,QAAQ,EAAE,QAAqD,CAAC;AAEtE;;GAEG;AACH,OAAO,EAAE,QAAQ,EAAE,CAAC;AAEpB;;GAEG;AACH,OAAO,EAAE,gBAAgB,IAAI,SAAS,EAAE,MAAM,UAAU,CAAC;AAIzD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,CAAC,EAAE,iBAAiB,GAAG,IAAI,CA0BxE;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,aAAa,SAAS,OAAO,GAAG,OAAO,EAAE,EAC3E,QAAkB,EAClB,OAAO,EACP,UAAkB,EAClB,UAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAElB,SAAS,EACT,oBAAoB,EACpB,OAAO,GACP,GAAE,cAAc,CAAC,aAAa,CAAM,GAAG,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CA6BrE;AAED;;GAEG;AACH,wBAAgB,2BAA2B,IAAI,qBAAqB,CAEnE;AAED;;GAEG;AACH,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAE/D;;GAEG;AACH,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAE/B;;GAEG;AACH,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC"}
|
package/node/lib/index.js
CHANGED
|
@@ -33,7 +33,7 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.extras = exports.ortc = exports.parseScalabilityMode = exports.workerBin = exports.observer = exports.version = void 0;
|
|
36
|
+
exports.extras = exports.ortc = exports.parseScalabilityMode = exports.workerBin = exports.observer = exports.version = exports.errors = void 0;
|
|
37
37
|
exports.setLogEventListeners = setLogEventListeners;
|
|
38
38
|
exports.createWorker = createWorker;
|
|
39
39
|
exports.getSupportedRtpCapabilities = getSupportedRtpCapabilities;
|
|
@@ -43,6 +43,10 @@ const Worker_1 = require("./Worker");
|
|
|
43
43
|
const supportedRtpCapabilities_1 = require("./supportedRtpCapabilities");
|
|
44
44
|
const scalabilityModesUtils_1 = require("./scalabilityModesUtils");
|
|
45
45
|
const utils = __importStar(require("./utils"));
|
|
46
|
+
/**
|
|
47
|
+
* Expose all errors.
|
|
48
|
+
*/
|
|
49
|
+
exports.errors = __importStar(require("./errors"));
|
|
46
50
|
/**
|
|
47
51
|
* Expose mediasoup version.
|
|
48
52
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rtpParametersTypes.d.ts","sourceRoot":"","sources":["../src/rtpParametersTypes.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,OAAO,CAAC;AAE1C;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG;IAC7B;;OAEG;IACH,MAAM,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAE9B;;OAEG;IACH,gBAAgB,CAAC,EAAE,kBAAkB,EAAE,CAAC;CACxC,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,qBAAqB,GAAG,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC,GAAG;IACrE,MAAM,CAAC,EAAE,wBAAwB,EAAE,CAAC;CACpC,CAAC;AAEF;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAChC;;OAEG;IACH,IAAI,EAAE,SAAS,CAAC;IAEhB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;;;;OAKG;IACH,oBAAoB,EAAE,MAAM,CAAC;IAE7B;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAErC;;OAEG;IACH,YAAY,CAAC,EAAE,YAAY,EAAE,CAAC;CAC9B,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,wBAAwB,GAAG,IAAI,CAC1C,kBAAkB,EAClB,sBAAsB,CACtB,GAAG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC9B,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,2BAA2B,
|
|
1
|
+
{"version":3,"file":"rtpParametersTypes.d.ts","sourceRoot":"","sources":["../src/rtpParametersTypes.ts"],"names":[],"mappings":"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"}
|
|
@@ -35,6 +35,7 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
36
|
const mediasoup = __importStar(require("../"));
|
|
37
37
|
const enhancedEvents_1 = require("../enhancedEvents");
|
|
38
|
+
const errors_1 = require("../errors");
|
|
38
39
|
const utils = __importStar(require("../utils"));
|
|
39
40
|
const ctx = {
|
|
40
41
|
mediaCodecs: utils.deepFreeze([
|
|
@@ -100,6 +101,7 @@ test('activeSpeakerObserver.close() succeeds', async () => {
|
|
|
100
101
|
expect(activeSpeakerObserver.closed).toBe(true);
|
|
101
102
|
dump = await ctx.router.dump();
|
|
102
103
|
expect(dump.rtpObserverIds.length).toBe(0);
|
|
104
|
+
await expect(activeSpeakerObserver.pause()).rejects.toThrow(errors_1.NotFoundError);
|
|
103
105
|
}, 2000);
|
|
104
106
|
test('ActiveSpeakerObserver emits "routerclose" if Router is closed', async () => {
|
|
105
107
|
const activeSpeakerObserver = await ctx.router.createActiveSpeakerObserver();
|
|
@@ -107,6 +109,7 @@ test('ActiveSpeakerObserver emits "routerclose" if Router is closed', async () =
|
|
|
107
109
|
ctx.router.close();
|
|
108
110
|
await promise;
|
|
109
111
|
expect(activeSpeakerObserver.closed).toBe(true);
|
|
112
|
+
await expect(activeSpeakerObserver.pause()).rejects.toThrow(errors_1.NotFoundError);
|
|
110
113
|
}, 2000);
|
|
111
114
|
test('ActiveSpeakerObserver emits "routerclose" if Worker is closed', async () => {
|
|
112
115
|
const activeSpeakerObserver = await ctx.router.createActiveSpeakerObserver();
|
|
@@ -114,4 +117,5 @@ test('ActiveSpeakerObserver emits "routerclose" if Worker is closed', async () =
|
|
|
114
117
|
ctx.worker.close();
|
|
115
118
|
await promise;
|
|
116
119
|
expect(activeSpeakerObserver.closed).toBe(true);
|
|
120
|
+
await expect(activeSpeakerObserver.pause()).rejects.toThrow(errors_1.WorkerClosedError);
|
|
117
121
|
}, 2000);
|
|
@@ -35,6 +35,7 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
36
|
const mediasoup = __importStar(require("../"));
|
|
37
37
|
const enhancedEvents_1 = require("../enhancedEvents");
|
|
38
|
+
const errors_1 = require("../errors");
|
|
38
39
|
const utils = __importStar(require("../utils"));
|
|
39
40
|
const ctx = {
|
|
40
41
|
mediaCodecs: utils.deepFreeze([
|
|
@@ -105,6 +106,7 @@ test('audioLevelObserver.close() succeeds', async () => {
|
|
|
105
106
|
expect(audioLevelObserver.closed).toBe(true);
|
|
106
107
|
dump = await ctx.router.dump();
|
|
107
108
|
expect(dump.rtpObserverIds.length).toBe(0);
|
|
109
|
+
await expect(audioLevelObserver.pause()).rejects.toThrow(errors_1.NotFoundError);
|
|
108
110
|
}, 2000);
|
|
109
111
|
test('AudioLevelObserver emits "routerclose" if Router is closed', async () => {
|
|
110
112
|
const audioLevelObserver = await ctx.router.createAudioLevelObserver();
|
|
@@ -112,6 +114,7 @@ test('AudioLevelObserver emits "routerclose" if Router is closed', async () => {
|
|
|
112
114
|
ctx.router.close();
|
|
113
115
|
await promise;
|
|
114
116
|
expect(audioLevelObserver.closed).toBe(true);
|
|
117
|
+
await expect(audioLevelObserver.pause()).rejects.toThrow(errors_1.NotFoundError);
|
|
115
118
|
}, 2000);
|
|
116
119
|
test('AudioLevelObserver emits "routerclose" if Worker is closed', async () => {
|
|
117
120
|
const audioLevelObserver = await ctx.router.createAudioLevelObserver();
|
|
@@ -119,4 +122,5 @@ test('AudioLevelObserver emits "routerclose" if Worker is closed', async () => {
|
|
|
119
122
|
ctx.worker.close();
|
|
120
123
|
await promise;
|
|
121
124
|
expect(audioLevelObserver.closed).toBe(true);
|
|
125
|
+
await expect(audioLevelObserver.pause()).rejects.toThrow(errors_1.WorkerClosedError);
|
|
122
126
|
}, 2000);
|
|
@@ -570,6 +570,12 @@ test('transport.consume() succeeds', async () => {
|
|
|
570
570
|
]),
|
|
571
571
|
});
|
|
572
572
|
}, 2000);
|
|
573
|
+
test('transport.consume() with unknown producerId fails', async () => {
|
|
574
|
+
await expect(ctx.webRtcTransport2.consume({
|
|
575
|
+
producerId: '12345678',
|
|
576
|
+
rtpCapabilities: ctx.consumerDeviceCapabilities,
|
|
577
|
+
})).rejects.toThrow(errors_1.NotFoundError);
|
|
578
|
+
}, 2000);
|
|
573
579
|
test('transport.consume() with enableRtx succeeds', async () => {
|
|
574
580
|
const audioConsumer2 = await ctx.webRtcTransport2.consume({
|
|
575
581
|
producerId: ctx.audioProducer.id,
|
|
@@ -1137,6 +1143,7 @@ test('consumer.close() succeeds', async () => {
|
|
|
1137
1143
|
audioConsumer.close();
|
|
1138
1144
|
expect(onObserverClose).toHaveBeenCalledTimes(1);
|
|
1139
1145
|
expect(audioConsumer.closed).toBe(true);
|
|
1146
|
+
await expect(audioConsumer.dump()).rejects.toThrow(errors_1.NotFoundError);
|
|
1140
1147
|
const routerDump = await ctx.router.dump();
|
|
1141
1148
|
expect(routerDump.mapProducerIdConsumerIds).toEqual(expect.arrayContaining([
|
|
1142
1149
|
{ key: ctx.audioProducer.id, values: [] },
|
|
@@ -1158,14 +1165,14 @@ test('Consumer methods reject if closed', async () => {
|
|
|
1158
1165
|
rtpCapabilities: ctx.consumerDeviceCapabilities,
|
|
1159
1166
|
});
|
|
1160
1167
|
audioConsumer.close();
|
|
1161
|
-
await expect(audioConsumer.dump()).rejects.toThrow(
|
|
1162
|
-
await expect(audioConsumer.getStats()).rejects.toThrow(
|
|
1163
|
-
await expect(audioConsumer.pause()).rejects.toThrow(
|
|
1164
|
-
await expect(audioConsumer.resume()).rejects.toThrow(
|
|
1168
|
+
await expect(audioConsumer.dump()).rejects.toThrow(errors_1.NotFoundError);
|
|
1169
|
+
await expect(audioConsumer.getStats()).rejects.toThrow(errors_1.NotFoundError);
|
|
1170
|
+
await expect(audioConsumer.pause()).rejects.toThrow(errors_1.NotFoundError);
|
|
1171
|
+
await expect(audioConsumer.resume()).rejects.toThrow(errors_1.NotFoundError);
|
|
1165
1172
|
// @ts-expect-error --- Testing purposes.
|
|
1166
|
-
await expect(audioConsumer.setPreferredLayers({})).rejects.toThrow(
|
|
1167
|
-
await expect(audioConsumer.setPriority(2)).rejects.toThrow(
|
|
1168
|
-
await expect(audioConsumer.requestKeyFrame()).rejects.toThrow(
|
|
1173
|
+
await expect(audioConsumer.setPreferredLayers({})).rejects.toThrow(TypeError);
|
|
1174
|
+
await expect(audioConsumer.setPriority(2)).rejects.toThrow(errors_1.NotFoundError);
|
|
1175
|
+
await expect(audioConsumer.requestKeyFrame()).rejects.toThrow(errors_1.NotFoundError);
|
|
1169
1176
|
}, 2000);
|
|
1170
1177
|
test('Consumer emits "producerclose" if Producer is closed', async () => {
|
|
1171
1178
|
const audioConsumer = await ctx.webRtcTransport2.consume({
|
|
@@ -1179,6 +1186,7 @@ test('Consumer emits "producerclose" if Producer is closed', async () => {
|
|
|
1179
1186
|
await promise;
|
|
1180
1187
|
expect(onObserverClose).toHaveBeenCalledTimes(1);
|
|
1181
1188
|
expect(audioConsumer.closed).toBe(true);
|
|
1189
|
+
await expect(audioConsumer.dump()).rejects.toThrow(errors_1.NotFoundError);
|
|
1182
1190
|
}, 2000);
|
|
1183
1191
|
test('Consumer emits "transportclose" if Transport is closed', async () => {
|
|
1184
1192
|
const videoConsumer = await ctx.webRtcTransport2.consume({
|
|
@@ -1192,6 +1200,7 @@ test('Consumer emits "transportclose" if Transport is closed', async () => {
|
|
|
1192
1200
|
await promise;
|
|
1193
1201
|
expect(onObserverClose).toHaveBeenCalledTimes(1);
|
|
1194
1202
|
expect(videoConsumer.closed).toBe(true);
|
|
1203
|
+
await expect(videoConsumer.dump()).rejects.toThrow(errors_1.NotFoundError);
|
|
1195
1204
|
await expect(ctx.router.dump()).resolves.toMatchObject({
|
|
1196
1205
|
mapProducerIdConsumerIds: expect.arrayContaining([
|
|
1197
1206
|
{ key: ctx.audioProducer.id, values: [] },
|
|
@@ -35,6 +35,7 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
36
|
const mediasoup = __importStar(require("../"));
|
|
37
37
|
const enhancedEvents_1 = require("../enhancedEvents");
|
|
38
|
+
const errors_1 = require("../errors");
|
|
38
39
|
const utils = __importStar(require("../utils"));
|
|
39
40
|
const ctx = {
|
|
40
41
|
sctpDataProducerOptions: utils.deepFreeze({
|
|
@@ -108,6 +109,11 @@ test('transport.consumeData() succeeds', async () => {
|
|
|
108
109
|
dataConsumerIds: [dataConsumer.id],
|
|
109
110
|
});
|
|
110
111
|
}, 2000);
|
|
112
|
+
test('transport.consumeData() with unknown dataProducerId fails', async () => {
|
|
113
|
+
await expect(ctx.webRtcTransport2.consumeData({
|
|
114
|
+
dataProducerId: '12345678',
|
|
115
|
+
})).rejects.toThrow(errors_1.NotFoundError);
|
|
116
|
+
}, 2000);
|
|
111
117
|
test('dataConsumer.dump() succeeds', async () => {
|
|
112
118
|
const dataConsumer = await ctx.webRtcTransport2.consumeData({
|
|
113
119
|
dataProducerId: ctx.sctpDataProducer.id,
|
|
@@ -345,6 +351,7 @@ test('dataConsumer.close() succeeds', async () => {
|
|
|
345
351
|
dataConsumer.close();
|
|
346
352
|
expect(onObserverClose).toHaveBeenCalledTimes(1);
|
|
347
353
|
expect(dataConsumer.closed).toBe(true);
|
|
354
|
+
await expect(dataConsumer.dump()).rejects.toThrow(errors_1.NotFoundError);
|
|
348
355
|
const dump = await ctx.router.dump();
|
|
349
356
|
expect(dump.mapDataProducerIdDataConsumerIds).toEqual(expect.arrayContaining([{ key: ctx.sctpDataProducer.id, values: [] }]));
|
|
350
357
|
expect(dump.mapDataConsumerIdDataProducerId).toEqual([]);
|
|
@@ -359,8 +366,8 @@ test('Consumer methods reject if closed', async () => {
|
|
|
359
366
|
dataProducerId: ctx.sctpDataProducer.id,
|
|
360
367
|
});
|
|
361
368
|
dataConsumer.close();
|
|
362
|
-
await expect(dataConsumer.dump()).rejects.toThrow(
|
|
363
|
-
await expect(dataConsumer.getStats()).rejects.toThrow(
|
|
369
|
+
await expect(dataConsumer.dump()).rejects.toThrow(errors_1.NotFoundError);
|
|
370
|
+
await expect(dataConsumer.getStats()).rejects.toThrow(errors_1.NotFoundError);
|
|
364
371
|
}, 2000);
|
|
365
372
|
test('DataConsumer emits "dataproducerclose" if DataProducer is closed', async () => {
|
|
366
373
|
const dataConsumer = await ctx.webRtcTransport2.consumeData({
|
|
@@ -373,6 +380,7 @@ test('DataConsumer emits "dataproducerclose" if DataProducer is closed', async (
|
|
|
373
380
|
await promise;
|
|
374
381
|
expect(onObserverClose).toHaveBeenCalledTimes(1);
|
|
375
382
|
expect(dataConsumer.closed).toBe(true);
|
|
383
|
+
await expect(dataConsumer.dump()).rejects.toThrow(errors_1.NotFoundError);
|
|
376
384
|
}, 2000);
|
|
377
385
|
test('DataConsumer emits "transportclose" if Transport is closed', async () => {
|
|
378
386
|
const dataConsumer = await ctx.webRtcTransport2.consumeData({
|
|
@@ -385,6 +393,7 @@ test('DataConsumer emits "transportclose" if Transport is closed', async () => {
|
|
|
385
393
|
await promise;
|
|
386
394
|
expect(onObserverClose).toHaveBeenCalledTimes(1);
|
|
387
395
|
expect(dataConsumer.closed).toBe(true);
|
|
396
|
+
await expect(dataConsumer.dump()).rejects.toThrow(errors_1.NotFoundError);
|
|
388
397
|
await expect(ctx.router.dump()).resolves.toMatchObject({
|
|
389
398
|
mapDataProducerIdDataConsumerIds: {},
|
|
390
399
|
mapDataConsumerIdDataProducerId: {},
|
|
@@ -35,6 +35,7 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
36
|
const mediasoup = __importStar(require("../"));
|
|
37
37
|
const enhancedEvents_1 = require("../enhancedEvents");
|
|
38
|
+
const errors_1 = require("../errors");
|
|
38
39
|
const utils = __importStar(require("../utils"));
|
|
39
40
|
const ctx = {
|
|
40
41
|
dataProducerOptions1: utils.deepFreeze({
|
|
@@ -249,6 +250,7 @@ test('dataProducer.close() succeeds', async () => {
|
|
|
249
250
|
dataProducer1.close();
|
|
250
251
|
expect(onObserverClose).toHaveBeenCalledTimes(1);
|
|
251
252
|
expect(dataProducer1.closed).toBe(true);
|
|
253
|
+
await expect(dataProducer1.dump()).rejects.toThrow(errors_1.NotFoundError);
|
|
252
254
|
await expect(ctx.router.dump()).resolves.toMatchObject({
|
|
253
255
|
mapDataProducerIdDataConsumerIds: {},
|
|
254
256
|
mapDataConsumerIdDataProducerId: {},
|
|
@@ -262,8 +264,8 @@ test('dataProducer.close() succeeds', async () => {
|
|
|
262
264
|
test('DataProducer methods reject if closed', async () => {
|
|
263
265
|
const dataProducer1 = await ctx.webRtcTransport1.produceData(ctx.dataProducerOptions1);
|
|
264
266
|
dataProducer1.close();
|
|
265
|
-
await expect(dataProducer1.dump()).rejects.toThrow(
|
|
266
|
-
await expect(dataProducer1.getStats()).rejects.toThrow(
|
|
267
|
+
await expect(dataProducer1.dump()).rejects.toThrow(errors_1.NotFoundError);
|
|
268
|
+
await expect(dataProducer1.getStats()).rejects.toThrow(errors_1.NotFoundError);
|
|
267
269
|
}, 2000);
|
|
268
270
|
test('DataProducer emits "transportclose" if Transport is closed', async () => {
|
|
269
271
|
const dataProducer2 = await ctx.webRtcTransport2.produceData(ctx.dataProducerOptions2);
|
|
@@ -274,4 +276,5 @@ test('DataProducer emits "transportclose" if Transport is closed', async () => {
|
|
|
274
276
|
await promise;
|
|
275
277
|
expect(onObserverClose).toHaveBeenCalledTimes(1);
|
|
276
278
|
expect(dataProducer2.closed).toBe(true);
|
|
279
|
+
await expect(dataProducer2.dump()).rejects.toThrow(errors_1.NotFoundError);
|
|
277
280
|
}, 2000);
|
|
@@ -35,6 +35,7 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
36
|
const mediasoup = __importStar(require("../"));
|
|
37
37
|
const enhancedEvents_1 = require("../enhancedEvents");
|
|
38
|
+
const errors_1 = require("../errors");
|
|
38
39
|
const ctx = {};
|
|
39
40
|
beforeEach(async () => {
|
|
40
41
|
ctx.worker = await mediasoup.createWorker();
|
|
@@ -309,8 +310,8 @@ test('DirectTransport methods reject if closed', async () => {
|
|
|
309
310
|
directTransport.close();
|
|
310
311
|
expect(onObserverClose).toHaveBeenCalledTimes(1);
|
|
311
312
|
expect(directTransport.closed).toBe(true);
|
|
312
|
-
await expect(directTransport.dump()).rejects.toThrow(
|
|
313
|
-
await expect(directTransport.getStats()).rejects.toThrow(
|
|
313
|
+
await expect(directTransport.dump()).rejects.toThrow(errors_1.NotFoundError);
|
|
314
|
+
await expect(directTransport.getStats()).rejects.toThrow(errors_1.NotFoundError);
|
|
314
315
|
}, 2000);
|
|
315
316
|
test('DirectTransport emits "routerclose" if Router is closed', async () => {
|
|
316
317
|
const directTransport = await ctx.router.createDirectTransport();
|
|
@@ -321,6 +322,7 @@ test('DirectTransport emits "routerclose" if Router is closed', async () => {
|
|
|
321
322
|
await promise;
|
|
322
323
|
expect(onObserverClose).toHaveBeenCalledTimes(1);
|
|
323
324
|
expect(directTransport.closed).toBe(true);
|
|
325
|
+
await expect(directTransport.getStats()).rejects.toThrow(errors_1.NotFoundError);
|
|
324
326
|
}, 2000);
|
|
325
327
|
test('DirectTransport emits "routerclose" if Worker is closed', async () => {
|
|
326
328
|
const directTransport = await ctx.router.createDirectTransport();
|
|
@@ -331,4 +333,5 @@ test('DirectTransport emits "routerclose" if Worker is closed', async () => {
|
|
|
331
333
|
await promise;
|
|
332
334
|
expect(onObserverClose).toHaveBeenCalledTimes(1);
|
|
333
335
|
expect(directTransport.closed).toBe(true);
|
|
336
|
+
await expect(directTransport.getStats()).rejects.toThrow(errors_1.WorkerClosedError);
|
|
334
337
|
}, 2000);
|
|
@@ -36,6 +36,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
36
36
|
const pick_port_1 = require("pick-port");
|
|
37
37
|
const mediasoup = __importStar(require("../"));
|
|
38
38
|
const enhancedEvents_1 = require("../enhancedEvents");
|
|
39
|
+
const errors_1 = require("../errors");
|
|
39
40
|
const utils = __importStar(require("../utils"));
|
|
40
41
|
const ctx = {
|
|
41
42
|
mediaCodecs: utils.deepFreeze([
|
|
@@ -472,6 +473,24 @@ test('router.pipeToRouter() succeeds with video', async () => {
|
|
|
472
473
|
]);
|
|
473
474
|
expect(pipeProducer.paused).toBe(true);
|
|
474
475
|
}, 2000);
|
|
476
|
+
test('router.pipeToRouter() with unknown router, producerId or dataProducerId fails', async () => {
|
|
477
|
+
const router3 = await ctx.worker1.createRouter({
|
|
478
|
+
mediaCodecs: ctx.mediaCodecs,
|
|
479
|
+
});
|
|
480
|
+
router3.close();
|
|
481
|
+
await expect(ctx.router1.pipeToRouter({
|
|
482
|
+
router: router3,
|
|
483
|
+
producerId: ctx.videoProducer.id,
|
|
484
|
+
})).rejects.toThrow(errors_1.NotFoundError);
|
|
485
|
+
await expect(ctx.router1.pipeToRouter({
|
|
486
|
+
router: ctx.router2,
|
|
487
|
+
producerId: '12345678',
|
|
488
|
+
})).rejects.toThrow(errors_1.NotFoundError);
|
|
489
|
+
await expect(ctx.router1.pipeToRouter({
|
|
490
|
+
router: ctx.router2,
|
|
491
|
+
dataProducerId: '12345678',
|
|
492
|
+
})).rejects.toThrow(errors_1.NotFoundError);
|
|
493
|
+
}, 2000);
|
|
475
494
|
test('router.createPipeTransport() with wrong arguments rejects with TypeError', async () => {
|
|
476
495
|
// @ts-expect-error --- Testing purposes.
|
|
477
496
|
await expect(ctx.router1.createPipeTransport({})).rejects.toThrow(TypeError);
|
|
@@ -776,7 +795,7 @@ test('producer.pause() and producer.resume() are transmitted to pipe Consumer',
|
|
|
776
795
|
await ctx.videoProducer.pause();
|
|
777
796
|
// We need to obtain the pipeProducer to await for its 'puase' and 'resume'
|
|
778
797
|
// events, otherwise we may get errors like this:
|
|
779
|
-
//
|
|
798
|
+
// WorkerClosedError: Channel closed, pending request aborted [method:PRODUCER_PAUSE, id:8]
|
|
780
799
|
// See related fixed issue:
|
|
781
800
|
// https://github.com/versatica/mediasoup/issues/1374
|
|
782
801
|
const { pipeProducer: pipeVideoProducer } = await ctx.router1.pipeToRouter({
|
|
@@ -822,6 +841,7 @@ test('producer.close() is transmitted to pipe Consumer', async () => {
|
|
|
822
841
|
await (0, enhancedEvents_1.enhancedOnce)(videoConsumer, 'producerclose');
|
|
823
842
|
}
|
|
824
843
|
expect(videoConsumer.closed).toBe(true);
|
|
844
|
+
await expect(videoConsumer.dump()).rejects.toThrow(errors_1.NotFoundError);
|
|
825
845
|
}, 2000);
|
|
826
846
|
test('router.pipeToRouter() with keepId: true fails if both Routers belong to the same Worker', async () => {
|
|
827
847
|
const router1bis = await ctx.worker1.createRouter({
|
|
@@ -914,6 +934,7 @@ test('dataProducer.close() is transmitted to pipe DataConsumer', async () => {
|
|
|
914
934
|
await (0, enhancedEvents_1.enhancedOnce)(dataConsumer, 'dataproducerclose');
|
|
915
935
|
}
|
|
916
936
|
expect(dataConsumer.closed).toBe(true);
|
|
937
|
+
await expect(dataConsumer.dump()).rejects.toThrow(errors_1.NotFoundError);
|
|
917
938
|
}, 2000);
|
|
918
939
|
test('router.pipeToRouter() called twice generates a single PipeTransport pair', async () => {
|
|
919
940
|
const routerA = await ctx.worker1.createRouter({
|
|
@@ -37,6 +37,7 @@ const os = __importStar(require("node:os"));
|
|
|
37
37
|
const pick_port_1 = require("pick-port");
|
|
38
38
|
const mediasoup = __importStar(require("../"));
|
|
39
39
|
const enhancedEvents_1 = require("../enhancedEvents");
|
|
40
|
+
const errors_1 = require("../errors");
|
|
40
41
|
const utils = __importStar(require("../utils"));
|
|
41
42
|
const IS_WINDOWS = os.platform() === 'win32';
|
|
42
43
|
const ctx = {
|
|
@@ -460,9 +461,9 @@ test('PlainTransport methods reject if closed', async () => {
|
|
|
460
461
|
plainTransport.close();
|
|
461
462
|
expect(onObserverClose).toHaveBeenCalledTimes(1);
|
|
462
463
|
expect(plainTransport.closed).toBe(true);
|
|
463
|
-
await expect(plainTransport.dump()).rejects.toThrow(
|
|
464
|
-
await expect(plainTransport.getStats()).rejects.toThrow(
|
|
465
|
-
await expect(plainTransport.connect({})).rejects.toThrow(
|
|
464
|
+
await expect(plainTransport.dump()).rejects.toThrow(errors_1.NotFoundError);
|
|
465
|
+
await expect(plainTransport.getStats()).rejects.toThrow(errors_1.NotFoundError);
|
|
466
|
+
await expect(plainTransport.connect({})).rejects.toThrow(errors_1.NotFoundError);
|
|
466
467
|
}, 2000);
|
|
467
468
|
test('router.createPlainTransport() with fixed port succeeds', async () => {
|
|
468
469
|
const port = await (0, pick_port_1.pickPort)({
|
|
@@ -486,6 +487,7 @@ test('PlainTransport emits "routerclose" if Router is closed', async () => {
|
|
|
486
487
|
await promise;
|
|
487
488
|
expect(onObserverClose).toHaveBeenCalledTimes(1);
|
|
488
489
|
expect(plainTransport.closed).toBe(true);
|
|
490
|
+
await expect(plainTransport.dump()).rejects.toThrow(errors_1.NotFoundError);
|
|
489
491
|
}, 2000);
|
|
490
492
|
test('PlainTransport emits "routerclose" if Worker is closed', async () => {
|
|
491
493
|
const plainTransport = await ctx.router.createPlainTransport({
|
|
@@ -498,4 +500,5 @@ test('PlainTransport emits "routerclose" if Worker is closed', async () => {
|
|
|
498
500
|
await promise;
|
|
499
501
|
expect(onObserverClose).toHaveBeenCalledTimes(1);
|
|
500
502
|
expect(plainTransport.closed).toBe(true);
|
|
503
|
+
await expect(plainTransport.dump()).rejects.toThrow(errors_1.WorkerClosedError);
|
|
501
504
|
}, 2000);
|
|
@@ -650,6 +650,7 @@ test('producer.close() succeeds', async () => {
|
|
|
650
650
|
audioProducer.close();
|
|
651
651
|
expect(onObserverClose).toHaveBeenCalledTimes(1);
|
|
652
652
|
expect(audioProducer.closed).toBe(true);
|
|
653
|
+
await expect(audioProducer.dump()).rejects.toThrow(errors_1.NotFoundError);
|
|
653
654
|
await expect(ctx.router.dump()).resolves.toMatchObject({
|
|
654
655
|
mapProducerIdConsumerIds: [],
|
|
655
656
|
mapConsumerIdProducerId: [],
|
|
@@ -663,10 +664,10 @@ test('producer.close() succeeds', async () => {
|
|
|
663
664
|
test('Producer methods reject if closed', async () => {
|
|
664
665
|
const audioProducer = await ctx.webRtcTransport1.produce(ctx.audioProducerOptions);
|
|
665
666
|
audioProducer.close();
|
|
666
|
-
await expect(audioProducer.dump()).rejects.toThrow(
|
|
667
|
-
await expect(audioProducer.getStats()).rejects.toThrow(
|
|
668
|
-
await expect(audioProducer.pause()).rejects.toThrow(
|
|
669
|
-
await expect(audioProducer.resume()).rejects.toThrow(
|
|
667
|
+
await expect(audioProducer.dump()).rejects.toThrow(errors_1.NotFoundError);
|
|
668
|
+
await expect(audioProducer.getStats()).rejects.toThrow(errors_1.NotFoundError);
|
|
669
|
+
await expect(audioProducer.pause()).rejects.toThrow(errors_1.NotFoundError);
|
|
670
|
+
await expect(audioProducer.resume()).rejects.toThrow(errors_1.NotFoundError);
|
|
670
671
|
}, 2000);
|
|
671
672
|
test('Producer emits "transportclose" if Transport is closed', async () => {
|
|
672
673
|
const videoProducer = await ctx.webRtcTransport2.produce(ctx.videoProducerOptions);
|
|
@@ -677,4 +678,5 @@ test('Producer emits "transportclose" if Transport is closed', async () => {
|
|
|
677
678
|
await promise;
|
|
678
679
|
expect(onObserverClose).toHaveBeenCalledTimes(1);
|
|
679
680
|
expect(videoProducer.closed).toBe(true);
|
|
681
|
+
await expect(videoProducer.dump()).rejects.toThrow(errors_1.NotFoundError);
|
|
680
682
|
}, 2000);
|
|
@@ -143,9 +143,9 @@ test('worker.createRouter() with wrong arguments rejects with TypeError', async
|
|
|
143
143
|
// @ts-expect-error --- Testing purposes.
|
|
144
144
|
ctx.worker.createRouter({ appData: 'NOT-AN-OBJECT' })).rejects.toThrow(TypeError);
|
|
145
145
|
}, 2000);
|
|
146
|
-
test('worker.createRouter() rejects with
|
|
146
|
+
test('worker.createRouter() rejects with WorkerClosedError if Worker is closed', async () => {
|
|
147
147
|
ctx.worker.close();
|
|
148
|
-
await expect(ctx.worker.createRouter({ mediaCodecs: ctx.mediaCodecs })).rejects.toThrow(errors_1.
|
|
148
|
+
await expect(ctx.worker.createRouter({ mediaCodecs: ctx.mediaCodecs })).rejects.toThrow(errors_1.WorkerClosedError);
|
|
149
149
|
}, 2000);
|
|
150
150
|
test('router.rtpCapabilities getter returns cloned RTP capabilities', async () => {
|
|
151
151
|
const router = await ctx.worker.createRouter({
|
|
@@ -182,6 +182,7 @@ test('router.close() succeeds', async () => {
|
|
|
182
182
|
router.close();
|
|
183
183
|
expect(onObserverClose).toHaveBeenCalledTimes(1);
|
|
184
184
|
expect(router.closed).toBe(true);
|
|
185
|
+
await expect(router.dump()).rejects.toThrow(errors_1.NotFoundError);
|
|
185
186
|
}, 2000);
|
|
186
187
|
test('Router emits "workerclose" if Worker is closed', async () => {
|
|
187
188
|
const router = await ctx.worker.createRouter({
|
|
@@ -194,4 +195,5 @@ test('Router emits "workerclose" if Worker is closed', async () => {
|
|
|
194
195
|
await promise;
|
|
195
196
|
expect(onObserverClose).toHaveBeenCalledTimes(1);
|
|
196
197
|
expect(router.closed).toBe(true);
|
|
198
|
+
await expect(router.dump()).rejects.toThrow(errors_1.WorkerClosedError);
|
|
197
199
|
}, 2000);
|
|
@@ -282,7 +282,7 @@ test('worker.createWebRtcServer() with unavailable listenInfos rejects with Erro
|
|
|
282
282
|
})).rejects.toThrow(Error);
|
|
283
283
|
worker2.close();
|
|
284
284
|
}, 2000);
|
|
285
|
-
test('worker.createWebRtcServer() rejects with
|
|
285
|
+
test('worker.createWebRtcServer() rejects with WorkerClosedError if Worker is closed', async () => {
|
|
286
286
|
ctx.worker.close();
|
|
287
287
|
const port = await (0, pick_port_1.pickPort)({
|
|
288
288
|
type: 'udp',
|
|
@@ -291,7 +291,7 @@ test('worker.createWebRtcServer() rejects with InvalidStateError if Worker is cl
|
|
|
291
291
|
});
|
|
292
292
|
await expect(ctx.worker.createWebRtcServer({
|
|
293
293
|
listenInfos: [{ protocol: 'udp', ip: '127.0.0.1', port }],
|
|
294
|
-
})).rejects.toThrow(errors_1.
|
|
294
|
+
})).rejects.toThrow(errors_1.WorkerClosedError);
|
|
295
295
|
}, 2000);
|
|
296
296
|
test('webRtcServer.close() succeeds', async () => {
|
|
297
297
|
const port = await (0, pick_port_1.pickPort)({
|
|
@@ -305,6 +305,7 @@ test('webRtcServer.close() succeeds', async () => {
|
|
|
305
305
|
const onObserverClose = jest.fn();
|
|
306
306
|
webRtcServer.observer.once('close', onObserverClose);
|
|
307
307
|
webRtcServer.close();
|
|
308
|
+
await expect(webRtcServer.dump()).rejects.toThrow(errors_1.NotFoundError);
|
|
308
309
|
expect(onObserverClose).toHaveBeenCalledTimes(1);
|
|
309
310
|
expect(webRtcServer.closed).toBe(true);
|
|
310
311
|
}, 2000);
|
|
@@ -324,6 +325,7 @@ test('WebRtcServer emits "workerclose" if Worker is closed', async () => {
|
|
|
324
325
|
await promise;
|
|
325
326
|
expect(onObserverClose).toHaveBeenCalledTimes(1);
|
|
326
327
|
expect(webRtcServer.closed).toBe(true);
|
|
328
|
+
await expect(webRtcServer.dump()).rejects.toThrow(errors_1.WorkerClosedError);
|
|
327
329
|
}, 2000);
|
|
328
330
|
test('router.createWebRtcTransport() with webRtcServer succeeds and transport is closed', async () => {
|
|
329
331
|
const port1 = await (0, pick_port_1.pickPort)({
|