@webex/plugin-meetings 1.159.5 → 1.161.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/dist/analyzer/analyzer.js.map +1 -1
- package/dist/analyzer/calculator.js.map +1 -1
- package/dist/common/browser-detection.js.map +1 -1
- package/dist/common/collection.js.map +1 -1
- package/dist/common/config.js.map +1 -1
- package/dist/common/constants.js.map +1 -1
- package/dist/common/errors/captcha-error.js +3 -1
- package/dist/common/errors/captcha-error.js.map +1 -1
- package/dist/common/errors/intent-to-join.js +3 -1
- package/dist/common/errors/intent-to-join.js.map +1 -1
- package/dist/common/errors/join-meeting.js +3 -1
- package/dist/common/errors/join-meeting.js.map +1 -1
- package/dist/common/errors/media.js +3 -1
- package/dist/common/errors/media.js.map +1 -1
- package/dist/common/errors/parameter.js +3 -1
- package/dist/common/errors/parameter.js.map +1 -1
- package/dist/common/errors/password-error.js +3 -1
- package/dist/common/errors/password-error.js.map +1 -1
- package/dist/common/errors/permission.js +3 -1
- package/dist/common/errors/permission.js.map +1 -1
- package/dist/common/errors/reconnection-in-progress.js +3 -1
- package/dist/common/errors/reconnection-in-progress.js.map +1 -1
- package/dist/common/errors/reconnection.js +3 -1
- package/dist/common/errors/reconnection.js.map +1 -1
- package/dist/common/errors/stats.js +3 -1
- package/dist/common/errors/stats.js.map +1 -1
- package/dist/common/errors/webex-errors.js +9 -7
- package/dist/common/errors/webex-errors.js.map +1 -1
- package/dist/common/errors/webex-meetings-error.js.map +1 -1
- package/dist/common/events/events-scope.js.map +1 -1
- package/dist/common/events/events.js.map +1 -1
- package/dist/common/events/trigger-proxy.js.map +1 -1
- package/dist/common/events/util.js.map +1 -1
- package/dist/common/logs/logger-config.js.map +1 -1
- package/dist/common/logs/logger-proxy.js.map +1 -1
- package/dist/common/logs/request.js.map +1 -1
- package/dist/common/queue.js.map +1 -1
- package/dist/config.js.map +1 -1
- package/dist/constants.js +2 -2
- package/dist/constants.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/locus-info/controlsUtils.js +4 -3
- package/dist/locus-info/controlsUtils.js.map +1 -1
- package/dist/locus-info/fullState.js.map +1 -1
- package/dist/locus-info/hostUtils.js.map +1 -1
- package/dist/locus-info/index.js.map +1 -1
- package/dist/locus-info/infoUtils.js.map +1 -1
- package/dist/locus-info/mediaSharesUtils.js.map +1 -1
- package/dist/locus-info/parser.js.map +1 -1
- package/dist/locus-info/selfUtils.js.map +1 -1
- package/dist/media/index.js +2 -2
- package/dist/media/index.js.map +1 -1
- package/dist/media/properties.js.map +1 -1
- package/dist/media/util.js.map +1 -1
- package/dist/mediaQualityMetrics/config.js.map +1 -1
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/meeting/index.js +2 -2
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/muteState.js +3 -1
- package/dist/meeting/muteState.js.map +1 -1
- package/dist/meeting/request.js +2 -2
- package/dist/meeting/request.js.map +1 -1
- package/dist/meeting/state.js.map +1 -1
- package/dist/meeting/util.js +2 -2
- package/dist/meeting/util.js.map +1 -1
- package/dist/meeting-info/collection.js.map +1 -1
- package/dist/meeting-info/index.js.map +1 -1
- package/dist/meeting-info/meeting-info-v2.js +6 -6
- package/dist/meeting-info/meeting-info-v2.js.map +1 -1
- package/dist/meeting-info/request.js.map +1 -1
- package/dist/meeting-info/util.js.map +1 -1
- package/dist/meeting-info/utilv2.js.map +1 -1
- package/dist/meetings/collection.js.map +1 -1
- package/dist/meetings/index.js +219 -219
- package/dist/meetings/index.js.map +1 -1
- package/dist/meetings/request.js.map +1 -1
- package/dist/meetings/util.js.map +1 -1
- package/dist/member/index.js.map +1 -1
- package/dist/member/util.js.map +1 -1
- package/dist/members/collection.js.map +1 -1
- package/dist/members/index.js.map +1 -1
- package/dist/members/request.js.map +1 -1
- package/dist/members/util.js.map +1 -1
- package/dist/metrics/config.js +1 -1
- package/dist/metrics/config.js.map +1 -1
- package/dist/metrics/constants.js.map +1 -1
- package/dist/metrics/index.js.map +1 -1
- package/dist/metrics/mqa-processor.js +2 -2
- package/dist/metrics/mqa-processor.js.map +1 -1
- package/dist/networkQualityMonitor/index.js.map +1 -1
- package/dist/peer-connection-manager/index.js.map +1 -1
- package/dist/peer-connection-manager/util.js.map +1 -1
- package/dist/personal-meeting-room/index.js.map +1 -1
- package/dist/personal-meeting-room/request.js.map +1 -1
- package/dist/personal-meeting-room/util.js.map +1 -1
- package/dist/reachability/index.js.map +1 -1
- package/dist/reachability/request.js +4 -3
- package/dist/reachability/request.js.map +1 -1
- package/dist/reconnection-manager/index.js +2 -2
- package/dist/reconnection-manager/index.js.map +1 -1
- package/dist/roap/collection.js.map +1 -1
- package/dist/roap/handler.js.map +1 -1
- package/dist/roap/index.js +7 -7
- package/dist/roap/index.js.map +1 -1
- package/dist/roap/request.js +2 -2
- package/dist/roap/request.js.map +1 -1
- package/dist/roap/state.js.map +1 -1
- package/dist/roap/util.js.map +1 -1
- package/dist/stats/data.js.map +1 -1
- package/dist/stats/events.js.map +1 -1
- package/dist/stats/filter.js.map +1 -1
- package/dist/stats/history.js.map +1 -1
- package/dist/stats/index.js +126 -126
- package/dist/stats/index.js.map +1 -1
- package/dist/stats/metrics.js.map +1 -1
- package/dist/stats/stats.js.map +1 -1
- package/dist/stats/stream.js.map +1 -1
- package/dist/stats/transformer.js.map +1 -1
- package/dist/stats/util.js.map +1 -1
- package/dist/statsAnalyzer/global.js.map +1 -1
- package/dist/statsAnalyzer/index.js +1 -1
- package/dist/statsAnalyzer/index.js.map +1 -1
- package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
- package/dist/transcription/index.js.map +1 -1
- package/package.json +6 -6
- package/src/common/errors/webex-errors.js +1 -1
- package/src/locus-info/parser.js +2 -2
- package/src/meeting/index.js +1 -2
- package/src/meeting/util.js +2 -2
- package/src/meetings/index.js +554 -557
- package/src/roap/index.js +48 -48
- package/src/stats/index.js +142 -142
- package/src/statsAnalyzer/index.js +1 -1
package/src/roap/index.js
CHANGED
|
@@ -282,55 +282,55 @@ export default class Roap extends StatelessWebexPlugin {
|
|
|
282
282
|
* @private
|
|
283
283
|
* @memberof Roap
|
|
284
284
|
*/
|
|
285
|
-
sendRoapCallRequest = (options) => {
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
285
|
+
sendRoapCallRequest = (options) => {
|
|
286
|
+
const {meeting} = options;
|
|
287
|
+
const roapMessage = {
|
|
288
|
+
messageType: ROAP.ROAP_TYPES.OFFER,
|
|
289
|
+
sdps: [options.sdp],
|
|
290
|
+
version: ROAP.ROAP_VERSION,
|
|
291
|
+
seq: typeof options.roapSeq !== 'number' && Number.isNaN(parseFloat(options.roapSeq)) ? 0 : options.roapSeq + 1,
|
|
292
|
+
tieBreaker: 4294967294 // Math.floor(Math.random() * (2 ** 32) - 1) // TODO: Handle the roap conflict scenario
|
|
293
|
+
};
|
|
294
294
|
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
295
|
+
this.roapHandler.submit({
|
|
296
|
+
type: ROAP.SEND_ROAP_MSG,
|
|
297
|
+
msg: roapMessage,
|
|
298
|
+
correlationId: meeting.correlationId
|
|
299
|
+
});
|
|
300
300
|
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
301
|
+
const roapBody = {
|
|
302
|
+
localMedias: [
|
|
303
|
+
{
|
|
304
|
+
localSdp: JSON.stringify(this.roapRequest.attachRechabilityData({
|
|
305
|
+
roapMessage,
|
|
306
|
+
// eslint-disable-next-line no-warning-comments
|
|
307
|
+
// TODO: check whats the need for video and audiomute
|
|
308
|
+
audioMuted: !!meeting.isAudioMuted(),
|
|
309
|
+
videoMuted: !!meeting.isVideoMuted()
|
|
310
|
+
}))
|
|
311
311
|
// mediaId: meeting.mediaId
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
312
|
+
}
|
|
313
|
+
]
|
|
314
|
+
};
|
|
315
315
|
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
316
|
+
return MeetingUtil.joinMeetingOptions(meeting, {roapMessage: roapBody})
|
|
317
|
+
.then((locus) => {
|
|
318
|
+
this.roapHandler.submit({
|
|
319
|
+
type: ROAP.SEND_ROAP_MSG_SUCCESS,
|
|
320
|
+
seq: roapMessage.seq,
|
|
321
|
+
correlationId: meeting.correlationId
|
|
322
|
+
});
|
|
323
|
+
meeting.setRoapSeq(roapMessage.seq);
|
|
324
324
|
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
325
|
+
// eslint-disable-next-line no-warning-comments
|
|
326
|
+
// TODO: we need to attach peerconenction to locus not sure if we need to pass everything here
|
|
327
|
+
return locus;
|
|
328
328
|
// eslint-disable-next-line no-warning-comments
|
|
329
329
|
// TODO: check where to update the sequence number
|
|
330
|
-
|
|
331
|
-
};
|
|
330
|
+
});
|
|
331
|
+
};
|
|
332
332
|
|
|
333
|
-
/**
|
|
333
|
+
/**
|
|
334
334
|
* Called when the roap sequence is finished (completed successfully or failed)
|
|
335
335
|
* @param {String} correlationId id of the meeting affected
|
|
336
336
|
* @param {String} sequenceId the id of the finished sequence
|
|
@@ -338,13 +338,13 @@ sendRoapCallRequest = (options) => {
|
|
|
338
338
|
* @private
|
|
339
339
|
* @memberof Roap
|
|
340
340
|
*/
|
|
341
|
-
roapFinished(correlationId, sequenceId) {
|
|
342
|
-
|
|
343
|
-
|
|
341
|
+
roapFinished(correlationId, sequenceId) {
|
|
342
|
+
RoapCollection.onSessionSequenceFinish(correlationId, sequenceId);
|
|
343
|
+
const meeting = this.webex.meetings.meetingCollection.getByKey('correlationId', correlationId);
|
|
344
344
|
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
345
|
+
meeting.mediaNegotiatedEvent();
|
|
346
|
+
if (!RoapCollection.isBusy(correlationId)) {
|
|
347
|
+
meeting.processNextQueuedMediaUpdate();
|
|
348
|
+
}
|
|
348
349
|
}
|
|
349
350
|
}
|
|
350
|
-
}
|
package/src/stats/index.js
CHANGED
|
@@ -12,62 +12,62 @@ import StatsUtil from '../stats/util';
|
|
|
12
12
|
* @class WebRTCStats
|
|
13
13
|
*/
|
|
14
14
|
export default class WebRTCStats extends StatelessWebexPlugin {
|
|
15
|
-
|
|
15
|
+
namespace = MEETINGS;
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
/**
|
|
18
18
|
*
|
|
19
19
|
* @param {Object} attrs
|
|
20
20
|
* @param {Object} options
|
|
21
21
|
* @param {Object} [optionalCreateOptions]
|
|
22
22
|
*/
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
23
|
+
constructor(attrs, options, optionalCreateOptions) {
|
|
24
|
+
super({}, options);
|
|
25
|
+
/**
|
|
26
26
|
* @instance
|
|
27
27
|
* @type {Object}
|
|
28
28
|
* @private
|
|
29
29
|
* @memberof WebRTCStats
|
|
30
30
|
*/
|
|
31
|
-
|
|
32
|
-
|
|
31
|
+
this.attrs = attrs;
|
|
32
|
+
/**
|
|
33
33
|
* @instance
|
|
34
34
|
* @type {Object}
|
|
35
35
|
* @private
|
|
36
36
|
* @memberof WebRTCStats
|
|
37
37
|
*/
|
|
38
|
-
|
|
39
|
-
|
|
38
|
+
this.options = options;
|
|
39
|
+
/**
|
|
40
40
|
* @instance
|
|
41
41
|
* @type {Object}
|
|
42
42
|
* @public
|
|
43
43
|
* @memberof WebRTCStats
|
|
44
44
|
*/
|
|
45
|
-
|
|
46
|
-
|
|
45
|
+
this.senders = {};
|
|
46
|
+
/**
|
|
47
47
|
* @instance
|
|
48
48
|
* @type {Object}
|
|
49
49
|
* @public
|
|
50
50
|
* @memberof WebRTCStats
|
|
51
51
|
*/
|
|
52
|
-
|
|
53
|
-
|
|
52
|
+
this.receivers = {};
|
|
53
|
+
/**
|
|
54
54
|
* @instance
|
|
55
55
|
* @type {Meeting}
|
|
56
56
|
* @private
|
|
57
57
|
* @memberof WebRTCStats
|
|
58
58
|
*/
|
|
59
|
-
|
|
60
|
-
|
|
59
|
+
this.meetingRef = null;
|
|
60
|
+
/**
|
|
61
61
|
* @instance
|
|
62
62
|
* @type {Object}
|
|
63
63
|
* @public
|
|
64
64
|
* @memberof WebRTCStats
|
|
65
65
|
*/
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
66
|
+
this.statsConfig = null;
|
|
67
|
+
this.populate(optionalCreateOptions);
|
|
68
|
+
}
|
|
69
69
|
|
|
70
|
-
|
|
70
|
+
/**
|
|
71
71
|
* @param {Object} [optionalCreateOptions]
|
|
72
72
|
* @param {Object} optionalCreateOptions.config
|
|
73
73
|
* @param {Meeting} optionalCreateOptions.meeting
|
|
@@ -77,244 +77,244 @@ export default class WebRTCStats extends StatelessWebexPlugin {
|
|
|
77
77
|
* @private
|
|
78
78
|
* @memberof WebRTCStats
|
|
79
79
|
*/
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
}
|
|
80
|
+
populate(optionalCreateOptions) {
|
|
81
|
+
if (optionalCreateOptions) {
|
|
82
|
+
if (optionalCreateOptions.config) {
|
|
83
|
+
this.setConfig(optionalCreateOptions.config);
|
|
84
|
+
}
|
|
85
|
+
if (optionalCreateOptions.meeting) {
|
|
86
|
+
this.associateMeeting(optionalCreateOptions.meeting);
|
|
87
|
+
}
|
|
88
|
+
if (optionalCreateOptions.senders) {
|
|
89
|
+
this.addSenders(optionalCreateOptions.senders);
|
|
90
|
+
}
|
|
91
|
+
if (optionalCreateOptions.receivers) {
|
|
92
|
+
this.addReceivers(optionalCreateOptions.receivers);
|
|
94
93
|
}
|
|
95
|
-
|
|
96
|
-
return this;
|
|
97
94
|
}
|
|
98
95
|
|
|
99
|
-
|
|
96
|
+
return this;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
100
|
* @param {Object} config
|
|
101
101
|
* @returns {WebRTCStats}
|
|
102
102
|
* @public
|
|
103
103
|
* @memberof WebRTCStats
|
|
104
104
|
*/
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
105
|
+
setConfig(config) {
|
|
106
|
+
this.statsConfig = config;
|
|
107
|
+
}
|
|
108
108
|
|
|
109
|
-
|
|
109
|
+
/**
|
|
110
110
|
* @param {Meeting} meeting
|
|
111
111
|
* @returns {WebRTCStats}
|
|
112
112
|
* @public
|
|
113
113
|
* @memberof WebRTCStats
|
|
114
114
|
*/
|
|
115
|
-
|
|
116
|
-
|
|
115
|
+
associateMeeting(meeting) {
|
|
116
|
+
this.meetingRef = meeting;
|
|
117
117
|
|
|
118
|
-
|
|
119
|
-
|
|
118
|
+
return this;
|
|
119
|
+
}
|
|
120
120
|
|
|
121
|
-
|
|
121
|
+
/**
|
|
122
122
|
* @param {Object} senders
|
|
123
123
|
* @param {Boolean} useConfig
|
|
124
124
|
* @returns {WebRTCStats}
|
|
125
125
|
* @public
|
|
126
126
|
* @memberof WebRTCStats
|
|
127
127
|
*/
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
}
|
|
132
|
-
senders.forEach((sender) => {
|
|
133
|
-
this.addSender(sender, useConfig);
|
|
134
|
-
});
|
|
135
|
-
|
|
136
|
-
return this;
|
|
128
|
+
addSenders(senders, useConfig = false) {
|
|
129
|
+
if (!senders.forEach) {
|
|
130
|
+
throw new TypeError('Stats senders must be created with an iterable array of senders to act on.');
|
|
137
131
|
}
|
|
132
|
+
senders.forEach((sender) => {
|
|
133
|
+
this.addSender(sender, useConfig);
|
|
134
|
+
});
|
|
138
135
|
|
|
139
|
-
|
|
136
|
+
return this;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
/**
|
|
140
140
|
* @param {Object} sender
|
|
141
141
|
* @param {Boolean} useConfig
|
|
142
142
|
* @returns {WebRTCStats}
|
|
143
143
|
* @public
|
|
144
144
|
* @memberof WebRTCStats
|
|
145
145
|
*/
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
}
|
|
151
|
-
sender.type = STATS.SENDER;
|
|
152
|
-
this.senders[sender.id] = new MeetingStats(this.attrs, this.options, sender);
|
|
146
|
+
addSender(sender, useConfig = false) {
|
|
147
|
+
if (sender) {
|
|
148
|
+
if (useConfig) {
|
|
149
|
+
StatsUtil.generateSingularOptions(sender, this.statsConfig, this.meetingRef, STATS.SENDERS);
|
|
153
150
|
}
|
|
154
|
-
|
|
155
|
-
|
|
151
|
+
sender.type = STATS.SENDER;
|
|
152
|
+
this.senders[sender.id] = new MeetingStats(this.attrs, this.options, sender);
|
|
156
153
|
}
|
|
157
154
|
|
|
158
|
-
|
|
155
|
+
return this;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
/**
|
|
159
159
|
*
|
|
160
160
|
* @param {String} id
|
|
161
161
|
* @returns {WebRTCStats}
|
|
162
162
|
* @public
|
|
163
163
|
* @memberof WebRTCStats
|
|
164
164
|
*/
|
|
165
|
-
|
|
166
|
-
|
|
165
|
+
addSenderStats(id) {
|
|
166
|
+
const newSender = new MeetingStats(this.attrs, this.options);
|
|
167
167
|
|
|
168
|
-
|
|
168
|
+
this.senders[id] = newSender;
|
|
169
169
|
|
|
170
|
-
|
|
171
|
-
|
|
170
|
+
return newSender;
|
|
171
|
+
}
|
|
172
172
|
|
|
173
|
-
|
|
173
|
+
/**
|
|
174
174
|
*
|
|
175
175
|
* @param {String} id
|
|
176
176
|
* @returns {WebRTCStats}
|
|
177
177
|
* @public
|
|
178
178
|
* @memberof WebRTCStats
|
|
179
179
|
*/
|
|
180
|
-
|
|
181
|
-
|
|
180
|
+
addReceiverStats(id) {
|
|
181
|
+
const newReceiver = new MeetingStats(this.attrs, this.options);
|
|
182
182
|
|
|
183
|
-
|
|
183
|
+
this.receivers[id] = newReceiver;
|
|
184
184
|
|
|
185
|
-
|
|
186
|
-
|
|
185
|
+
return newReceiver;
|
|
186
|
+
}
|
|
187
187
|
|
|
188
|
-
|
|
188
|
+
/**
|
|
189
189
|
* @param {Object} receivers
|
|
190
190
|
* @param {boolean} useConfig
|
|
191
191
|
* @returns {WebRTCStats}
|
|
192
192
|
* @public
|
|
193
193
|
* @memberof WebRTCStats
|
|
194
194
|
*/
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
}
|
|
199
|
-
receivers.forEach((receiver) => {
|
|
200
|
-
this.addReceiver(receiver, useConfig);
|
|
201
|
-
});
|
|
202
|
-
|
|
203
|
-
return this;
|
|
195
|
+
addReceivers(receivers, useConfig = false) {
|
|
196
|
+
if (!receivers.forEach) {
|
|
197
|
+
throw new TypeError('Stats receivers must be created with an iterable array of receivers to act on.');
|
|
204
198
|
}
|
|
199
|
+
receivers.forEach((receiver) => {
|
|
200
|
+
this.addReceiver(receiver, useConfig);
|
|
201
|
+
});
|
|
205
202
|
|
|
206
|
-
|
|
203
|
+
return this;
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
/**
|
|
207
207
|
* @param {Object} receiver
|
|
208
208
|
* @param {boolean} useConfig
|
|
209
209
|
* @returns {WebRTCStats}
|
|
210
210
|
* @public
|
|
211
211
|
* @memberof WebRTCStats
|
|
212
212
|
*/
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
}
|
|
218
|
-
receiver.type = STATS.RECEIVER;
|
|
219
|
-
this.receivers[receiver.id] = new MeetingStats(this.attrs, this.options, receiver);
|
|
213
|
+
addReceiver(receiver, useConfig = false) {
|
|
214
|
+
if (receiver) {
|
|
215
|
+
if (useConfig) {
|
|
216
|
+
StatsUtil.generateSingularOptions(receiver, this.statsConfig, this.meetingRef, STATS.RECEIVERS);
|
|
220
217
|
}
|
|
221
|
-
|
|
222
|
-
|
|
218
|
+
receiver.type = STATS.RECEIVER;
|
|
219
|
+
this.receivers[receiver.id] = new MeetingStats(this.attrs, this.options, receiver);
|
|
223
220
|
}
|
|
224
221
|
|
|
225
|
-
|
|
222
|
+
return this;
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
/**
|
|
226
226
|
* @returns {Object}
|
|
227
227
|
* @public
|
|
228
228
|
* @memberof WebRTCStats
|
|
229
229
|
*/
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
230
|
+
getReceivers() {
|
|
231
|
+
return this.receivers;
|
|
232
|
+
}
|
|
233
233
|
|
|
234
|
-
|
|
234
|
+
/**
|
|
235
235
|
* @returns {Object}
|
|
236
236
|
* @public
|
|
237
237
|
* @memberof WebRTCStats
|
|
238
238
|
*/
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
239
|
+
getSenders() {
|
|
240
|
+
return this.senders;
|
|
241
|
+
}
|
|
242
242
|
|
|
243
|
-
|
|
243
|
+
/**
|
|
244
244
|
* @param {String} id
|
|
245
245
|
* @returns {Object}
|
|
246
246
|
* @public
|
|
247
247
|
* @memberof WebRTCStats
|
|
248
248
|
*/
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
249
|
+
getSender(id) {
|
|
250
|
+
return this.senders[id];
|
|
251
|
+
}
|
|
252
252
|
|
|
253
|
-
|
|
253
|
+
/**
|
|
254
254
|
* @param {String} id
|
|
255
255
|
* @returns {Object}
|
|
256
256
|
* @public
|
|
257
257
|
* @memberof WebRTCStats
|
|
258
258
|
*/
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
259
|
+
getReceiver(id) {
|
|
260
|
+
return this.receivers[id];
|
|
261
|
+
}
|
|
262
262
|
|
|
263
|
-
|
|
263
|
+
/**
|
|
264
264
|
* @returns {Object}
|
|
265
265
|
* @public
|
|
266
266
|
* @memberof WebRTCStats
|
|
267
267
|
*/
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
268
|
+
destroySenders() {
|
|
269
|
+
forEach(this.senders, (v, k) => {
|
|
270
|
+
this.destroySender(k);
|
|
271
|
+
});
|
|
272
|
+
}
|
|
273
273
|
|
|
274
|
-
|
|
274
|
+
/**
|
|
275
275
|
* @returns {undefined}
|
|
276
276
|
* @public
|
|
277
277
|
* @memberof WebRTCStats
|
|
278
278
|
*/
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
279
|
+
destroyReceivers() {
|
|
280
|
+
forEach(this.receivers, (v, k) => {
|
|
281
|
+
this.destroyReceiver(k);
|
|
282
|
+
});
|
|
283
|
+
}
|
|
284
284
|
|
|
285
|
-
|
|
285
|
+
/**
|
|
286
286
|
* @param {String} id
|
|
287
287
|
* @returns {undefined}
|
|
288
288
|
* @public
|
|
289
289
|
* @memberof WebRTCStats
|
|
290
290
|
*/
|
|
291
|
-
|
|
292
|
-
|
|
291
|
+
destroySender(id) {
|
|
292
|
+
let sender = this.getSender(id);
|
|
293
293
|
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
}
|
|
294
|
+
if (sender) {
|
|
295
|
+
if (sender.stream) {
|
|
296
|
+
sender.stream.destroy();
|
|
298
297
|
}
|
|
299
|
-
sender = null;
|
|
300
|
-
delete this.receivers[id];
|
|
301
298
|
}
|
|
299
|
+
sender = null;
|
|
300
|
+
delete this.receivers[id];
|
|
301
|
+
}
|
|
302
302
|
|
|
303
|
-
|
|
303
|
+
/**
|
|
304
304
|
* @param {String} id
|
|
305
305
|
* @returns {undefined}
|
|
306
306
|
* @public
|
|
307
307
|
* @memberof WebRTCStats
|
|
308
308
|
*/
|
|
309
|
-
|
|
310
|
-
|
|
309
|
+
destroyReceiver(id) {
|
|
310
|
+
let receiver = this.getReceiver(id);
|
|
311
311
|
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
}
|
|
312
|
+
if (receiver) {
|
|
313
|
+
if (receiver.stream) {
|
|
314
|
+
receiver.stream.destroy();
|
|
316
315
|
}
|
|
317
|
-
receiver = null;
|
|
318
|
-
delete this.receivers[id];
|
|
319
316
|
}
|
|
317
|
+
receiver = null;
|
|
318
|
+
delete this.receivers[id];
|
|
319
|
+
}
|
|
320
320
|
}
|
|
@@ -228,7 +228,7 @@ export default class StatsAnalyzer extends EventsScope {
|
|
|
228
228
|
|
|
229
229
|
mqaData.networkType = this.statsResults.connectionType.local.networkType;
|
|
230
230
|
|
|
231
|
-
this.mqaSentCount
|
|
231
|
+
this.mqaSentCount += 1;
|
|
232
232
|
|
|
233
233
|
mqaData.intervals[0].intervalNumber = this.mqaSentCount;
|
|
234
234
|
|