mediasoup-client 3.6.93 → 3.6.94

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/lib/Transport.js CHANGED
@@ -219,7 +219,7 @@ class Transport extends EnhancedEventEmitter_1.EnhancedEventEmitter {
219
219
  throw new TypeError('missing iceParameters');
220
220
  }
221
221
  // Enqueue command.
222
- return this._awaitQueue.push(async () => this._handler.restartIce(iceParameters), 'transport.restartIce()');
222
+ return this._awaitQueue.push(async () => await this._handler.restartIce(iceParameters), 'transport.restartIce()');
223
223
  }
224
224
  /**
225
225
  * Update ICE servers.
@@ -715,31 +715,31 @@ class Transport extends EnhancedEventEmitter_1.EnhancedEventEmitter {
715
715
  if (this._closed) {
716
716
  return;
717
717
  }
718
- this._awaitQueue.push(async () => this._handler.stopSending(producer.localId), 'producer @close event')
718
+ this._awaitQueue.push(async () => await this._handler.stopSending(producer.localId), 'producer @close event')
719
719
  .catch((error) => logger.warn('producer.close() failed:%o', error));
720
720
  });
721
721
  producer.on('@pause', (callback, errback) => {
722
- this._awaitQueue.push(async () => this._handler.pauseSending(producer.localId), 'producer @pause event')
722
+ this._awaitQueue.push(async () => await this._handler.pauseSending(producer.localId), 'producer @pause event')
723
723
  .then(callback)
724
724
  .catch(errback);
725
725
  });
726
726
  producer.on('@resume', (callback, errback) => {
727
- this._awaitQueue.push(async () => this._handler.resumeSending(producer.localId), 'producer @resume event')
727
+ this._awaitQueue.push(async () => await this._handler.resumeSending(producer.localId), 'producer @resume event')
728
728
  .then(callback)
729
729
  .catch(errback);
730
730
  });
731
731
  producer.on('@replacetrack', (track, callback, errback) => {
732
- this._awaitQueue.push(async () => this._handler.replaceTrack(producer.localId, track), 'producer @replacetrack event')
732
+ this._awaitQueue.push(async () => await this._handler.replaceTrack(producer.localId, track), 'producer @replacetrack event')
733
733
  .then(callback)
734
734
  .catch(errback);
735
735
  });
736
736
  producer.on('@setmaxspatiallayer', (spatialLayer, callback, errback) => {
737
- this._awaitQueue.push(async () => (this._handler.setMaxSpatialLayer(producer.localId, spatialLayer)), 'producer @setmaxspatiallayer event')
737
+ this._awaitQueue.push(async () => (await this._handler.setMaxSpatialLayer(producer.localId, spatialLayer)), 'producer @setmaxspatiallayer event')
738
738
  .then(callback)
739
739
  .catch(errback);
740
740
  });
741
741
  producer.on('@setrtpencodingparameters', (params, callback, errback) => {
742
- this._awaitQueue.push(async () => (this._handler.setRtpEncodingParameters(producer.localId, params)), 'producer @setrtpencodingparameters event')
742
+ this._awaitQueue.push(async () => (await this._handler.setRtpEncodingParameters(producer.localId, params)), 'producer @setrtpencodingparameters event')
743
743
  .then(callback)
744
744
  .catch(errback);
745
745
  });
@@ -3,6 +3,7 @@ import { IceParameters } from '../Transport';
3
3
  import { RtpCapabilities } from '../RtpParameters';
4
4
  import { SctpCapabilities } from '../SctpParameters';
5
5
  export declare class Chrome111 extends HandlerInterface {
6
+ private _closed;
6
7
  private _direction?;
7
8
  private _remoteSdp?;
8
9
  private _sendingRtpParametersByKind?;
@@ -43,6 +44,7 @@ export declare class Chrome111 extends HandlerInterface {
43
44
  getReceiverStats(localId: string): Promise<RTCStatsReport>;
44
45
  receiveDataChannel({ sctpStreamParameters, label, protocol }: HandlerReceiveDataChannelOptions): Promise<HandlerReceiveDataChannelResult>;
45
46
  private setupTransport;
47
+ private assertNotClosed;
46
48
  private assertSendDirection;
47
49
  private assertRecvDirection;
48
50
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Chrome111.d.ts","sourceRoot":"","sources":["../../src/handlers/Chrome111.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Chrome111.d.ts","sourceRoot":"","sources":["../../src/handlers/Chrome111.ts"],"names":[],"mappings":"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"}
@@ -31,6 +31,7 @@ const ortc = __importStar(require("../ortc"));
31
31
  const sdpCommonUtils = __importStar(require("./sdp/commonUtils"));
32
32
  const sdpUnifiedPlanUtils = __importStar(require("./sdp/unifiedPlanUtils"));
33
33
  const ortcUtils = __importStar(require("./ortc/utils"));
34
+ const errors_1 = require("../errors");
34
35
  const HandlerInterface_1 = require("./HandlerInterface");
35
36
  const RemoteSdp_1 = require("./sdp/RemoteSdp");
36
37
  const scalabilityModes_1 = require("../scalabilityModes");
@@ -45,6 +46,8 @@ class Chrome111 extends HandlerInterface_1.HandlerInterface {
45
46
  }
46
47
  constructor() {
47
48
  super();
49
+ // Closed flag.
50
+ this._closed = false;
48
51
  // Map of RTCTransceivers indexed by MID.
49
52
  this._mapMidTransceiver = new Map();
50
53
  // Local stream for sending.
@@ -61,6 +64,10 @@ class Chrome111 extends HandlerInterface_1.HandlerInterface {
61
64
  }
62
65
  close() {
63
66
  logger.debug('close()');
67
+ if (this._closed) {
68
+ return;
69
+ }
70
+ this._closed = true;
64
71
  // Close RTCPeerConnection.
65
72
  if (this._pc) {
66
73
  try {
@@ -108,6 +115,7 @@ class Chrome111 extends HandlerInterface_1.HandlerInterface {
108
115
  };
109
116
  }
110
117
  run({ direction, iceParameters, iceCandidates, dtlsParameters, sctpParameters, iceServers, iceTransportPolicy, additionalSettings, proprietaryConstraints, extendedRtpCapabilities }) {
118
+ this.assertNotClosed();
111
119
  logger.debug('run()');
112
120
  this._direction = direction;
113
121
  this._remoteSdp = new RemoteSdp_1.RemoteSdp({
@@ -169,12 +177,14 @@ class Chrome111 extends HandlerInterface_1.HandlerInterface {
169
177
  }
170
178
  }
171
179
  async updateIceServers(iceServers) {
180
+ this.assertNotClosed();
172
181
  logger.debug('updateIceServers()');
173
182
  const configuration = this._pc.getConfiguration();
174
183
  configuration.iceServers = iceServers;
175
184
  this._pc.setConfiguration(configuration);
176
185
  }
177
186
  async restartIce(iceParameters) {
187
+ this.assertNotClosed();
178
188
  logger.debug('restartIce()');
179
189
  // Provide the remote SDP handler with new remote ICE parameters.
180
190
  this._remoteSdp.updateIceParameters(iceParameters);
@@ -199,9 +209,11 @@ class Chrome111 extends HandlerInterface_1.HandlerInterface {
199
209
  }
200
210
  }
201
211
  async getTransportStats() {
212
+ this.assertNotClosed();
202
213
  return this._pc.getStats();
203
214
  }
204
215
  async send({ track, encodings, codecOptions, codec }) {
216
+ this.assertNotClosed();
205
217
  this.assertSendDirection();
206
218
  logger.debug('send() [kind:%s, track.id:%s]', track.kind, track.id);
207
219
  if (encodings && encodings.length > 1) {
@@ -299,6 +311,9 @@ class Chrome111 extends HandlerInterface_1.HandlerInterface {
299
311
  async stopSending(localId) {
300
312
  this.assertSendDirection();
301
313
  logger.debug('stopSending() [localId:%s]', localId);
314
+ if (this._closed) {
315
+ return;
316
+ }
302
317
  const transceiver = this._mapMidTransceiver.get(localId);
303
318
  if (!transceiver) {
304
319
  throw new Error('associated RTCRtpTransceiver not found');
@@ -321,6 +336,7 @@ class Chrome111 extends HandlerInterface_1.HandlerInterface {
321
336
  this._mapMidTransceiver.delete(localId);
322
337
  }
323
338
  async pauseSending(localId) {
339
+ this.assertNotClosed();
324
340
  this.assertSendDirection();
325
341
  logger.debug('pauseSending() [localId:%s]', localId);
326
342
  const transceiver = this._mapMidTransceiver.get(localId);
@@ -337,6 +353,7 @@ class Chrome111 extends HandlerInterface_1.HandlerInterface {
337
353
  await this._pc.setRemoteDescription(answer);
338
354
  }
339
355
  async resumeSending(localId) {
356
+ this.assertNotClosed();
340
357
  this.assertSendDirection();
341
358
  logger.debug('resumeSending() [localId:%s]', localId);
342
359
  const transceiver = this._mapMidTransceiver.get(localId);
@@ -353,6 +370,7 @@ class Chrome111 extends HandlerInterface_1.HandlerInterface {
353
370
  await this._pc.setRemoteDescription(answer);
354
371
  }
355
372
  async replaceTrack(localId, track) {
373
+ this.assertNotClosed();
356
374
  this.assertSendDirection();
357
375
  if (track) {
358
376
  logger.debug('replaceTrack() [localId:%s, track.id:%s]', localId, track.id);
@@ -367,6 +385,7 @@ class Chrome111 extends HandlerInterface_1.HandlerInterface {
367
385
  await transceiver.sender.replaceTrack(track);
368
386
  }
369
387
  async setMaxSpatialLayer(localId, spatialLayer) {
388
+ this.assertNotClosed();
370
389
  this.assertSendDirection();
371
390
  logger.debug('setMaxSpatialLayer() [localId:%s, spatialLayer:%s]', localId, spatialLayer);
372
391
  const transceiver = this._mapMidTransceiver.get(localId);
@@ -392,6 +411,7 @@ class Chrome111 extends HandlerInterface_1.HandlerInterface {
392
411
  await this._pc.setRemoteDescription(answer);
393
412
  }
394
413
  async setRtpEncodingParameters(localId, params) {
414
+ this.assertNotClosed();
395
415
  this.assertSendDirection();
396
416
  logger.debug('setRtpEncodingParameters() [localId:%s, params:%o]', localId, params);
397
417
  const transceiver = this._mapMidTransceiver.get(localId);
@@ -412,6 +432,7 @@ class Chrome111 extends HandlerInterface_1.HandlerInterface {
412
432
  await this._pc.setRemoteDescription(answer);
413
433
  }
414
434
  async getSenderStats(localId) {
435
+ this.assertNotClosed();
415
436
  this.assertSendDirection();
416
437
  const transceiver = this._mapMidTransceiver.get(localId);
417
438
  if (!transceiver) {
@@ -420,6 +441,7 @@ class Chrome111 extends HandlerInterface_1.HandlerInterface {
420
441
  return transceiver.sender.getStats();
421
442
  }
422
443
  async sendDataChannel({ ordered, maxPacketLifeTime, maxRetransmits, label, protocol }) {
444
+ this.assertNotClosed();
423
445
  this.assertSendDirection();
424
446
  const options = {
425
447
  negotiated: true,
@@ -464,6 +486,7 @@ class Chrome111 extends HandlerInterface_1.HandlerInterface {
464
486
  return { dataChannel, sctpStreamParameters };
465
487
  }
466
488
  async receive(optionsList) {
489
+ this.assertNotClosed();
467
490
  this.assertRecvDirection();
468
491
  const results = [];
469
492
  const mapLocalId = new Map();
@@ -528,6 +551,9 @@ class Chrome111 extends HandlerInterface_1.HandlerInterface {
528
551
  }
529
552
  async stopReceiving(localIds) {
530
553
  this.assertRecvDirection();
554
+ if (this._closed) {
555
+ return;
556
+ }
531
557
  for (const localId of localIds) {
532
558
  logger.debug('stopReceiving() [localId:%s]', localId);
533
559
  const transceiver = this._mapMidTransceiver.get(localId);
@@ -547,6 +573,7 @@ class Chrome111 extends HandlerInterface_1.HandlerInterface {
547
573
  }
548
574
  }
549
575
  async pauseReceiving(localIds) {
576
+ this.assertNotClosed();
550
577
  this.assertRecvDirection();
551
578
  for (const localId of localIds) {
552
579
  logger.debug('pauseReceiving() [localId:%s]', localId);
@@ -565,6 +592,7 @@ class Chrome111 extends HandlerInterface_1.HandlerInterface {
565
592
  await this._pc.setLocalDescription(answer);
566
593
  }
567
594
  async resumeReceiving(localIds) {
595
+ this.assertNotClosed();
568
596
  this.assertRecvDirection();
569
597
  for (const localId of localIds) {
570
598
  logger.debug('resumeReceiving() [localId:%s]', localId);
@@ -583,6 +611,7 @@ class Chrome111 extends HandlerInterface_1.HandlerInterface {
583
611
  await this._pc.setLocalDescription(answer);
584
612
  }
585
613
  async getReceiverStats(localId) {
614
+ this.assertNotClosed();
586
615
  this.assertRecvDirection();
587
616
  const transceiver = this._mapMidTransceiver.get(localId);
588
617
  if (!transceiver) {
@@ -591,6 +620,7 @@ class Chrome111 extends HandlerInterface_1.HandlerInterface {
591
620
  return transceiver.receiver.getStats();
592
621
  }
593
622
  async receiveDataChannel({ sctpStreamParameters, label, protocol }) {
623
+ this.assertNotClosed();
594
624
  this.assertRecvDirection();
595
625
  const { streamId, ordered, maxPacketLifeTime, maxRetransmits } = sctpStreamParameters;
596
626
  const options = {
@@ -640,6 +670,11 @@ class Chrome111 extends HandlerInterface_1.HandlerInterface {
640
670
  });
641
671
  this._transportReady = true;
642
672
  }
673
+ assertNotClosed() {
674
+ if (this._closed) {
675
+ throw new errors_1.InvalidStateError('method called in a closed handler');
676
+ }
677
+ }
643
678
  assertSendDirection() {
644
679
  if (this._direction !== 'send') {
645
680
  throw new Error('method can just be called for handlers with "send" direction');
@@ -3,6 +3,7 @@ import { IceParameters } from '../Transport';
3
3
  import { RtpCapabilities } from '../RtpParameters';
4
4
  import { SctpCapabilities } from '../SctpParameters';
5
5
  export declare class Chrome74 extends HandlerInterface {
6
+ private _closed;
6
7
  private _direction?;
7
8
  private _remoteSdp?;
8
9
  private _sendingRtpParametersByKind?;
@@ -43,6 +44,7 @@ export declare class Chrome74 extends HandlerInterface {
43
44
  getReceiverStats(localId: string): Promise<RTCStatsReport>;
44
45
  receiveDataChannel({ sctpStreamParameters, label, protocol }: HandlerReceiveDataChannelOptions): Promise<HandlerReceiveDataChannelResult>;
45
46
  private setupTransport;
47
+ private assertNotClosed;
46
48
  private assertSendDirection;
47
49
  private assertRecvDirection;
48
50
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Chrome74.d.ts","sourceRoot":"","sources":["../../src/handlers/Chrome74.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Chrome74.d.ts","sourceRoot":"","sources":["../../src/handlers/Chrome74.ts"],"names":[],"mappings":"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"}
@@ -31,6 +31,7 @@ const ortc = __importStar(require("../ortc"));
31
31
  const sdpCommonUtils = __importStar(require("./sdp/commonUtils"));
32
32
  const sdpUnifiedPlanUtils = __importStar(require("./sdp/unifiedPlanUtils"));
33
33
  const ortcUtils = __importStar(require("./ortc/utils"));
34
+ const errors_1 = require("../errors");
34
35
  const HandlerInterface_1 = require("./HandlerInterface");
35
36
  const RemoteSdp_1 = require("./sdp/RemoteSdp");
36
37
  const scalabilityModes_1 = require("../scalabilityModes");
@@ -45,6 +46,8 @@ class Chrome74 extends HandlerInterface_1.HandlerInterface {
45
46
  }
46
47
  constructor() {
47
48
  super();
49
+ // Closed flag.
50
+ this._closed = false;
48
51
  // Map of RTCTransceivers indexed by MID.
49
52
  this._mapMidTransceiver = new Map();
50
53
  // Local stream for sending.
@@ -61,6 +64,10 @@ class Chrome74 extends HandlerInterface_1.HandlerInterface {
61
64
  }
62
65
  close() {
63
66
  logger.debug('close()');
67
+ if (this._closed) {
68
+ return;
69
+ }
70
+ this._closed = true;
64
71
  // Close RTCPeerConnection.
65
72
  if (this._pc) {
66
73
  try {
@@ -169,12 +176,14 @@ class Chrome74 extends HandlerInterface_1.HandlerInterface {
169
176
  }
170
177
  }
171
178
  async updateIceServers(iceServers) {
179
+ this.assertNotClosed();
172
180
  logger.debug('updateIceServers()');
173
181
  const configuration = this._pc.getConfiguration();
174
182
  configuration.iceServers = iceServers;
175
183
  this._pc.setConfiguration(configuration);
176
184
  }
177
185
  async restartIce(iceParameters) {
186
+ this.assertNotClosed();
178
187
  logger.debug('restartIce()');
179
188
  // Provide the remote SDP handler with new remote ICE parameters.
180
189
  this._remoteSdp.updateIceParameters(iceParameters);
@@ -199,9 +208,11 @@ class Chrome74 extends HandlerInterface_1.HandlerInterface {
199
208
  }
200
209
  }
201
210
  async getTransportStats() {
211
+ this.assertNotClosed();
202
212
  return this._pc.getStats();
203
213
  }
204
214
  async send({ track, encodings, codecOptions, codec }) {
215
+ this.assertNotClosed();
205
216
  this.assertSendDirection();
206
217
  logger.debug('send() [kind:%s, track.id:%s]', track.kind, track.id);
207
218
  if (encodings && encodings.length > 1) {
@@ -316,6 +327,9 @@ class Chrome74 extends HandlerInterface_1.HandlerInterface {
316
327
  async stopSending(localId) {
317
328
  this.assertSendDirection();
318
329
  logger.debug('stopSending() [localId:%s]', localId);
330
+ if (this._closed) {
331
+ return;
332
+ }
319
333
  const transceiver = this._mapMidTransceiver.get(localId);
320
334
  if (!transceiver) {
321
335
  throw new Error('associated RTCRtpTransceiver not found');
@@ -338,6 +352,7 @@ class Chrome74 extends HandlerInterface_1.HandlerInterface {
338
352
  this._mapMidTransceiver.delete(localId);
339
353
  }
340
354
  async pauseSending(localId) {
355
+ this.assertNotClosed();
341
356
  this.assertSendDirection();
342
357
  logger.debug('pauseSending() [localId:%s]', localId);
343
358
  const transceiver = this._mapMidTransceiver.get(localId);
@@ -354,6 +369,7 @@ class Chrome74 extends HandlerInterface_1.HandlerInterface {
354
369
  await this._pc.setRemoteDescription(answer);
355
370
  }
356
371
  async resumeSending(localId) {
372
+ this.assertNotClosed();
357
373
  this.assertSendDirection();
358
374
  logger.debug('resumeSending() [localId:%s]', localId);
359
375
  const transceiver = this._mapMidTransceiver.get(localId);
@@ -370,6 +386,7 @@ class Chrome74 extends HandlerInterface_1.HandlerInterface {
370
386
  await this._pc.setRemoteDescription(answer);
371
387
  }
372
388
  async replaceTrack(localId, track) {
389
+ this.assertNotClosed();
373
390
  this.assertSendDirection();
374
391
  if (track) {
375
392
  logger.debug('replaceTrack() [localId:%s, track.id:%s]', localId, track.id);
@@ -384,6 +401,7 @@ class Chrome74 extends HandlerInterface_1.HandlerInterface {
384
401
  await transceiver.sender.replaceTrack(track);
385
402
  }
386
403
  async setMaxSpatialLayer(localId, spatialLayer) {
404
+ this.assertNotClosed();
387
405
  this.assertSendDirection();
388
406
  logger.debug('setMaxSpatialLayer() [localId:%s, spatialLayer:%s]', localId, spatialLayer);
389
407
  const transceiver = this._mapMidTransceiver.get(localId);
@@ -409,6 +427,7 @@ class Chrome74 extends HandlerInterface_1.HandlerInterface {
409
427
  await this._pc.setRemoteDescription(answer);
410
428
  }
411
429
  async setRtpEncodingParameters(localId, params) {
430
+ this.assertNotClosed();
412
431
  this.assertSendDirection();
413
432
  logger.debug('setRtpEncodingParameters() [localId:%s, params:%o]', localId, params);
414
433
  const transceiver = this._mapMidTransceiver.get(localId);
@@ -429,6 +448,7 @@ class Chrome74 extends HandlerInterface_1.HandlerInterface {
429
448
  await this._pc.setRemoteDescription(answer);
430
449
  }
431
450
  async getSenderStats(localId) {
451
+ this.assertNotClosed();
432
452
  this.assertSendDirection();
433
453
  const transceiver = this._mapMidTransceiver.get(localId);
434
454
  if (!transceiver) {
@@ -437,6 +457,7 @@ class Chrome74 extends HandlerInterface_1.HandlerInterface {
437
457
  return transceiver.sender.getStats();
438
458
  }
439
459
  async sendDataChannel({ ordered, maxPacketLifeTime, maxRetransmits, label, protocol }) {
460
+ this.assertNotClosed();
440
461
  this.assertSendDirection();
441
462
  const options = {
442
463
  negotiated: true,
@@ -481,6 +502,7 @@ class Chrome74 extends HandlerInterface_1.HandlerInterface {
481
502
  return { dataChannel, sctpStreamParameters };
482
503
  }
483
504
  async receive(optionsList) {
505
+ this.assertNotClosed();
484
506
  this.assertRecvDirection();
485
507
  const results = [];
486
508
  const mapLocalId = new Map();
@@ -545,6 +567,9 @@ class Chrome74 extends HandlerInterface_1.HandlerInterface {
545
567
  }
546
568
  async stopReceiving(localIds) {
547
569
  this.assertRecvDirection();
570
+ if (this._closed) {
571
+ return;
572
+ }
548
573
  for (const localId of localIds) {
549
574
  logger.debug('stopReceiving() [localId:%s]', localId);
550
575
  const transceiver = this._mapMidTransceiver.get(localId);
@@ -564,6 +589,7 @@ class Chrome74 extends HandlerInterface_1.HandlerInterface {
564
589
  }
565
590
  }
566
591
  async pauseReceiving(localIds) {
592
+ this.assertNotClosed();
567
593
  this.assertRecvDirection();
568
594
  for (const localId of localIds) {
569
595
  logger.debug('pauseReceiving() [localId:%s]', localId);
@@ -582,6 +608,7 @@ class Chrome74 extends HandlerInterface_1.HandlerInterface {
582
608
  await this._pc.setLocalDescription(answer);
583
609
  }
584
610
  async resumeReceiving(localIds) {
611
+ this.assertNotClosed();
585
612
  this.assertRecvDirection();
586
613
  for (const localId of localIds) {
587
614
  logger.debug('resumeReceiving() [localId:%s]', localId);
@@ -600,6 +627,7 @@ class Chrome74 extends HandlerInterface_1.HandlerInterface {
600
627
  await this._pc.setLocalDescription(answer);
601
628
  }
602
629
  async getReceiverStats(localId) {
630
+ this.assertNotClosed();
603
631
  this.assertRecvDirection();
604
632
  const transceiver = this._mapMidTransceiver.get(localId);
605
633
  if (!transceiver) {
@@ -608,6 +636,7 @@ class Chrome74 extends HandlerInterface_1.HandlerInterface {
608
636
  return transceiver.receiver.getStats();
609
637
  }
610
638
  async receiveDataChannel({ sctpStreamParameters, label, protocol }) {
639
+ this.assertNotClosed();
611
640
  this.assertRecvDirection();
612
641
  const { streamId, ordered, maxPacketLifeTime, maxRetransmits } = sctpStreamParameters;
613
642
  const options = {
@@ -657,6 +686,11 @@ class Chrome74 extends HandlerInterface_1.HandlerInterface {
657
686
  });
658
687
  this._transportReady = true;
659
688
  }
689
+ assertNotClosed() {
690
+ if (this._closed) {
691
+ throw new errors_1.InvalidStateError('method called in a closed handler');
692
+ }
693
+ }
660
694
  assertSendDirection() {
661
695
  if (this._direction !== 'send') {
662
696
  throw new Error('method can just be called for handlers with "send" direction');
@@ -8,6 +8,7 @@ export type FakeParameters = {
8
8
  generateLocalDtlsParameters: () => DtlsParameters;
9
9
  };
10
10
  export declare class FakeHandler extends HandlerInterface {
11
+ private _closed;
11
12
  private fakeParameters;
12
13
  private _rtpParametersByKind?;
13
14
  private _cname;
@@ -45,5 +46,6 @@ export declare class FakeHandler extends HandlerInterface {
45
46
  getReceiverStats(localId: string): Promise<RTCStatsReport>;
46
47
  receiveDataChannel({ sctpStreamParameters, label, protocol }: HandlerReceiveDataChannelOptions): Promise<HandlerReceiveDataChannelResult>;
47
48
  private setupTransport;
49
+ private assertNotClosed;
48
50
  }
49
51
  //# sourceMappingURL=FakeHandler.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FakeHandler.d.ts","sourceRoot":"","sources":["../../src/handlers/FakeHandler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FakeHandler.d.ts","sourceRoot":"","sources":["../../src/handlers/FakeHandler.ts"],"names":[],"mappings":"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"}
@@ -29,6 +29,7 @@ const Logger_1 = require("../Logger");
29
29
  const fake_mediastreamtrack_1 = require("fake-mediastreamtrack");
30
30
  const utils = __importStar(require("../utils"));
31
31
  const ortc = __importStar(require("../ortc"));
32
+ const errors_1 = require("../errors");
32
33
  const HandlerInterface_1 = require("./HandlerInterface");
33
34
  const logger = new Logger_1.Logger('FakeHandler');
34
35
  class FakeDataChannel extends EnhancedEventEmitter_1.EnhancedEventEmitter {
@@ -61,6 +62,8 @@ class FakeHandler extends HandlerInterface_1.HandlerInterface {
61
62
  }
62
63
  constructor(fakeParameters) {
63
64
  super();
65
+ // Closed flag.
66
+ this._closed = false;
64
67
  // Local RTCP CNAME.
65
68
  this._cname = `CNAME-${utils.generateRandomNumber()}`;
66
69
  // Got transport local and remote parameters.
@@ -78,6 +81,10 @@ class FakeHandler extends HandlerInterface_1.HandlerInterface {
78
81
  }
79
82
  close() {
80
83
  logger.debug('close()');
84
+ if (this._closed) {
85
+ return;
86
+ }
87
+ this._closed = true;
81
88
  }
82
89
  // NOTE: Custom method for simulation purposes.
83
90
  setConnectionState(connectionState) {
@@ -96,6 +103,7 @@ class FakeHandler extends HandlerInterface_1.HandlerInterface {
96
103
  direction, iceParameters, iceCandidates, dtlsParameters, sctpParameters, iceServers, iceTransportPolicy, proprietaryConstraints, extendedRtpCapabilities
97
104
  /* eslint-enable @typescript-eslint/no-unused-vars */
98
105
  }) {
106
+ this.assertNotClosed();
99
107
  logger.debug('run()');
100
108
  // Generic sending RTP parameters for audio and video.
101
109
  // @type {Object}
@@ -107,20 +115,22 @@ class FakeHandler extends HandlerInterface_1.HandlerInterface {
107
115
  }
108
116
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
109
117
  async updateIceServers(iceServers) {
118
+ this.assertNotClosed();
110
119
  logger.debug('updateIceServers()');
111
- return;
112
120
  }
113
121
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
114
122
  async restartIce(iceParameters) {
123
+ this.assertNotClosed();
115
124
  logger.debug('restartIce()');
116
- return;
117
125
  }
118
126
  async getTransportStats() {
127
+ this.assertNotClosed();
119
128
  return new Map(); // NOTE: Whatever.
120
129
  }
121
130
  async send(
122
131
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
123
132
  { track, encodings, codecOptions, codec }) {
133
+ this.assertNotClosed();
124
134
  logger.debug('send() [kind:%s, track.id:%s]', track.kind, track.id);
125
135
  if (!this._transportReady) {
126
136
  await this.setupTransport({ localDtlsRole: 'server' });
@@ -152,6 +162,9 @@ class FakeHandler extends HandlerInterface_1.HandlerInterface {
152
162
  }
153
163
  async stopSending(localId) {
154
164
  logger.debug('stopSending() [localId:%s]', localId);
165
+ if (this._closed) {
166
+ return;
167
+ }
155
168
  if (!this._tracks.has(Number(localId))) {
156
169
  throw new Error('local track not found');
157
170
  }
@@ -159,13 +172,16 @@ class FakeHandler extends HandlerInterface_1.HandlerInterface {
159
172
  }
160
173
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
161
174
  async pauseSending(localId) {
175
+ this.assertNotClosed();
162
176
  // Unimplemented.
163
177
  }
164
178
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
165
179
  async resumeSending(localId) {
180
+ this.assertNotClosed();
166
181
  // Unimplemented.
167
182
  }
168
183
  async replaceTrack(localId, track) {
184
+ this.assertNotClosed();
169
185
  if (track) {
170
186
  logger.debug('replaceTrack() [localId:%s, track.id:%s]', localId, track.id);
171
187
  }
@@ -176,16 +192,20 @@ class FakeHandler extends HandlerInterface_1.HandlerInterface {
176
192
  this._tracks.set(Number(localId), track);
177
193
  }
178
194
  async setMaxSpatialLayer(localId, spatialLayer) {
195
+ this.assertNotClosed();
179
196
  logger.debug('setMaxSpatialLayer() [localId:%s, spatialLayer:%s]', localId, spatialLayer);
180
197
  }
181
198
  async setRtpEncodingParameters(localId, params) {
199
+ this.assertNotClosed();
182
200
  logger.debug('setRtpEncodingParameters() [localId:%s, params:%o]', localId, params);
183
201
  }
184
202
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
185
203
  async getSenderStats(localId) {
204
+ this.assertNotClosed();
186
205
  return new Map(); // NOTE: Whatever.
187
206
  }
188
207
  async sendDataChannel({ ordered, maxPacketLifeTime, maxRetransmits, label, protocol }) {
208
+ this.assertNotClosed();
189
209
  if (!this._transportReady) {
190
210
  await this.setupTransport({ localDtlsRole: 'server' });
191
211
  }
@@ -208,6 +228,7 @@ class FakeHandler extends HandlerInterface_1.HandlerInterface {
208
228
  return { dataChannel, sctpStreamParameters };
209
229
  }
210
230
  async receive(optionsList) {
231
+ this.assertNotClosed();
211
232
  const results = [];
212
233
  for (const options of optionsList) {
213
234
  const { trackId, kind } = options;
@@ -223,6 +244,9 @@ class FakeHandler extends HandlerInterface_1.HandlerInterface {
223
244
  return results;
224
245
  }
225
246
  async stopReceiving(localIds) {
247
+ if (this._closed) {
248
+ return;
249
+ }
226
250
  for (const localId of localIds) {
227
251
  logger.debug('stopReceiving() [localId:%s]', localId);
228
252
  this._tracks.delete(Number(localId));
@@ -231,18 +255,22 @@ class FakeHandler extends HandlerInterface_1.HandlerInterface {
231
255
  async pauseReceiving(
232
256
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
233
257
  localIds) {
258
+ this.assertNotClosed();
234
259
  // Unimplemented.
235
260
  }
236
261
  async resumeReceiving(
237
262
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
238
263
  localIds) {
264
+ this.assertNotClosed();
239
265
  // Unimplemented.
240
266
  }
241
267
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
242
268
  async getReceiverStats(localId) {
269
+ this.assertNotClosed();
243
270
  return new Map(); //
244
271
  }
245
272
  async receiveDataChannel({ sctpStreamParameters, label, protocol }) {
273
+ this.assertNotClosed();
246
274
  if (!this._transportReady) {
247
275
  await this.setupTransport({ localDtlsRole: 'client' });
248
276
  }
@@ -272,5 +300,10 @@ class FakeHandler extends HandlerInterface_1.HandlerInterface {
272
300
  await new Promise((resolve, reject) => (this.emit('@connect', { dtlsParameters }, resolve, reject)));
273
301
  this._transportReady = true;
274
302
  }
303
+ assertNotClosed() {
304
+ if (this._closed) {
305
+ throw new errors_1.InvalidStateError('method called in a closed handler');
306
+ }
307
+ }
275
308
  }
276
309
  exports.FakeHandler = FakeHandler;