Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

CustomSignalingLayer.js 2.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. import { getLogger } from '@jitsi/logger';
  2. import SignalingLayer from '../../service/RTC/SignalingLayer';
  3. const logger = getLogger(__filename);
  4. /**
  5. * Custom semi-mock implementation for the Proxy connection service.
  6. */
  7. export default class CustomSignalingLayer extends SignalingLayer {
  8. /**
  9. * Creates new instance.
  10. */
  11. constructor() {
  12. super();
  13. /**
  14. * A map that stores SSRCs of remote streams.
  15. * @type {Map<number, string>} maps SSRC number to jid
  16. */
  17. this.ssrcOwners = new Map();
  18. /**
  19. *
  20. * @type {ChatRoom|null}
  21. */
  22. this.chatRoom = null;
  23. }
  24. /**
  25. * @inheritDoc
  26. */
  27. getPeerMediaInfo(owner, mediaType, sourceName) { // eslint-disable-line no-unused-vars
  28. return {};
  29. }
  30. /**
  31. * @inheritDoc
  32. */
  33. getPeerSourceInfo(owner, sourceName) { // eslint-disable-line no-unused-vars
  34. return undefined;
  35. }
  36. /**
  37. * @inheritDoc
  38. */
  39. getSSRCOwner(ssrc) {
  40. return this.ssrcOwners.get(ssrc);
  41. }
  42. /**
  43. * @inheritDoc
  44. */
  45. getTrackSourceName(ssrc) { // eslint-disable-line no-unused-vars
  46. return undefined;
  47. }
  48. /**
  49. * @inheritDoc
  50. */
  51. removeSSRCOwners(ssrcList) {
  52. if (!ssrcList?.length) {
  53. return;
  54. }
  55. for (const ssrc of ssrcList) {
  56. this.ssrcOwners.delete(ssrc);
  57. }
  58. }
  59. /**
  60. * Sets the <tt>ChatRoom</tt> instance used.
  61. * @param {ChatRoom} room
  62. */
  63. setChatRoom(room) {
  64. this.chatRoom = room;
  65. }
  66. /**
  67. * @inheritDoc
  68. */
  69. setSSRCOwner(ssrc, endpointId) {
  70. if (typeof ssrc !== 'number') {
  71. throw new TypeError(`SSRC(${ssrc}) must be a number`);
  72. }
  73. // Now signaling layer instance is shared between different JingleSessionPC instances, so although very unlikely
  74. // an SSRC conflict could potentially occur. Log a message to make debugging easier.
  75. const existingOwner = this.ssrcOwners.get(ssrc);
  76. if (existingOwner && existingOwner !== endpointId) {
  77. logger.error(`SSRC owner re-assigned from ${existingOwner} to ${endpointId}`);
  78. }
  79. this.ssrcOwners.set(ssrc, endpointId);
  80. }
  81. /**
  82. * @inheritDoc
  83. */
  84. setTrackMuteStatus(sourceName, muted) { // eslint-disable-line no-unused-vars
  85. return false;
  86. }
  87. /**
  88. * @inheritDoc
  89. */
  90. setTrackVideoType(sourceName, videoType) { // eslint-disable-line no-unused-vars
  91. return false;
  92. }
  93. /**
  94. * @inheritDoc
  95. */
  96. setTrackSourceName(ssrc, sourceName) { // eslint-disable-line no-unused-vars
  97. }
  98. /**
  99. * @inheritDoc
  100. */
  101. updateSsrcOwnersOnLeave(id) {
  102. const ssrcs = Array.from(this.ssrcOwners)
  103. .filter(entry => entry[1] === id)
  104. .map(entry => entry[0]);
  105. if (!ssrcs?.length) {
  106. return;
  107. }
  108. this.removeSSRCOwners(ssrcs);
  109. }
  110. }