@webex/plugin-meetings 3.8.1-next.8 → 3.8.1
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 +13 -26
- package/dist/annotation/annotation.types.d.ts +42 -0
- package/dist/annotation/constants.d.ts +31 -0
- package/dist/annotation/index.d.ts +117 -0
- package/dist/breakouts/breakout.d.ts +8 -0
- package/dist/breakouts/breakout.js +1 -1
- package/dist/breakouts/collection.d.ts +5 -0
- package/dist/breakouts/edit-lock-error.d.ts +15 -0
- package/dist/breakouts/events.d.ts +8 -0
- package/dist/breakouts/index.d.ts +5 -0
- package/dist/breakouts/index.js +1 -1
- package/dist/breakouts/request.d.ts +22 -0
- package/dist/breakouts/utils.d.ts +15 -0
- package/dist/common/browser-detection.d.ts +9 -0
- package/dist/common/collection.d.ts +48 -0
- package/dist/common/config.d.ts +2 -0
- package/dist/common/errors/captcha-error.d.ts +15 -0
- package/dist/common/errors/intent-to-join.d.ts +16 -0
- package/dist/common/errors/join-meeting.d.ts +17 -0
- package/dist/common/errors/media.d.ts +15 -0
- package/dist/common/errors/no-meeting-info.d.ts +14 -0
- package/dist/common/errors/parameter.d.ts +15 -0
- package/dist/common/errors/password-error.d.ts +15 -0
- package/dist/common/errors/permission.d.ts +14 -0
- package/dist/common/errors/reclaim-host-role-error.d.ts +60 -0
- package/dist/common/errors/reclaim-host-role-error.js +158 -0
- package/dist/common/errors/reclaim-host-role-error.js.map +1 -0
- package/dist/common/errors/reclaim-host-role-errors.d.ts +60 -0
- package/dist/common/errors/reconnection-in-progress.d.ts +9 -0
- package/dist/common/errors/reconnection-in-progress.js +35 -0
- package/dist/common/errors/reconnection-in-progress.js.map +1 -0
- package/dist/common/errors/reconnection.d.ts +15 -0
- package/dist/common/errors/stats.d.ts +15 -0
- package/dist/common/errors/webex-errors.d.ts +81 -0
- package/dist/common/errors/webex-meetings-error.d.ts +20 -0
- package/dist/common/events/events-scope.d.ts +17 -0
- package/dist/common/events/events.d.ts +12 -0
- package/dist/common/events/trigger-proxy.d.ts +2 -0
- package/dist/common/events/util.d.ts +2 -0
- package/dist/common/logs/logger-config.d.ts +2 -0
- package/dist/common/logs/logger-proxy.d.ts +2 -0
- package/dist/common/logs/request.d.ts +34 -0
- package/dist/common/queue.d.ts +32 -0
- package/dist/config.d.ts +73 -0
- package/dist/constants.d.ts +952 -0
- package/dist/constants.js +1 -8
- package/dist/constants.js.map +1 -1
- package/dist/controls-options-manager/constants.d.ts +4 -0
- package/dist/controls-options-manager/enums.d.ts +5 -0
- package/dist/controls-options-manager/enums.js +0 -1
- package/dist/controls-options-manager/enums.js.map +1 -1
- package/dist/controls-options-manager/index.d.ts +120 -0
- package/dist/controls-options-manager/types.d.ts +43 -0
- package/dist/controls-options-manager/types.js.map +1 -1
- package/dist/controls-options-manager/util.d.ts +7 -0
- package/dist/controls-options-manager/util.js +0 -26
- package/dist/controls-options-manager/util.js.map +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/interceptors/index.d.ts +2 -0
- package/dist/interceptors/locusRetry.d.ts +27 -0
- package/dist/interpretation/collection.d.ts +5 -0
- package/dist/interpretation/index.d.ts +5 -0
- package/dist/interpretation/index.js +1 -1
- package/dist/interpretation/siLanguage.d.ts +5 -0
- package/dist/interpretation/siLanguage.js +1 -1
- package/dist/locus-info/controlsUtils.d.ts +2 -0
- package/dist/locus-info/controlsUtils.js +3 -11
- package/dist/locus-info/controlsUtils.js.map +1 -1
- package/dist/locus-info/embeddedAppsUtils.d.ts +2 -0
- package/dist/locus-info/fullState.d.ts +2 -0
- package/dist/locus-info/hostUtils.d.ts +2 -0
- package/dist/locus-info/index.d.ts +269 -0
- package/dist/locus-info/index.js +0 -30
- package/dist/locus-info/index.js.map +1 -1
- package/dist/locus-info/infoUtils.d.ts +2 -0
- package/dist/locus-info/mediaSharesUtils.d.ts +2 -0
- package/dist/locus-info/parser.d.ts +212 -0
- package/dist/locus-info/selfUtils.d.ts +2 -0
- package/dist/media/index.d.ts +32 -0
- package/dist/media/properties.d.ts +108 -0
- package/dist/media/util.d.ts +2 -0
- package/dist/mediaQualityMetrics/config.d.ts +233 -0
- package/dist/mediaQualityMetrics/config.js +513 -0
- package/dist/mediaQualityMetrics/config.js.map +1 -0
- package/dist/meeting/brbState.js +2 -3
- package/dist/meeting/brbState.js.map +1 -1
- package/dist/meeting/effectsState.d.ts +42 -0
- package/dist/meeting/effectsState.js +260 -0
- package/dist/meeting/effectsState.js.map +1 -0
- package/dist/meeting/in-meeting-actions.d.ts +79 -0
- package/dist/meeting/in-meeting-actions.js +1 -5
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/meeting/index.d.ts +1622 -0
- package/dist/meeting/index.js +66 -88
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/locusMediaRequest.d.ts +74 -0
- package/dist/meeting/muteState.d.ts +116 -0
- package/dist/meeting/request.d.ts +257 -0
- package/dist/meeting/request.type.d.ts +11 -0
- package/dist/meeting/state.d.ts +9 -0
- package/dist/meeting/util.d.ts +2 -0
- package/dist/meeting/voicea-meeting.d.ts +16 -0
- package/dist/meeting-info/collection.d.ts +20 -0
- package/dist/meeting-info/index.d.ts +57 -0
- package/dist/meeting-info/meeting-info-v2.d.ts +93 -0
- package/dist/meeting-info/request.d.ts +22 -0
- package/dist/meeting-info/util.d.ts +2 -0
- package/dist/meeting-info/utilv2.d.ts +2 -0
- package/dist/meetings/collection.d.ts +23 -0
- package/dist/meetings/index.d.ts +296 -0
- package/dist/meetings/meetings.types.d.ts +4 -0
- package/dist/meetings/request.d.ts +27 -0
- package/dist/meetings/util.d.ts +18 -0
- package/dist/member/index.d.ts +148 -0
- package/dist/member/member.types.d.ts +11 -0
- package/dist/member/member.types.js +18 -0
- package/dist/member/member.types.js.map +1 -0
- package/dist/member/types.d.ts +32 -0
- package/dist/member/util.d.ts +2 -0
- package/dist/members/collection.d.ts +24 -0
- package/dist/members/index.d.ts +308 -0
- package/dist/members/request.d.ts +58 -0
- package/dist/members/types.d.ts +25 -0
- package/dist/members/util.d.ts +2 -0
- package/dist/metrics/config.d.ts +169 -0
- package/dist/metrics/config.js +289 -0
- package/dist/metrics/config.js.map +1 -0
- package/dist/metrics/constants.d.ts +59 -0
- package/dist/metrics/constants.js +0 -1
- package/dist/metrics/constants.js.map +1 -1
- package/dist/metrics/index.d.ts +152 -0
- package/dist/multistream/mediaRequestManager.d.ts +119 -0
- package/dist/multistream/receiveSlot.d.ts +68 -0
- package/dist/multistream/receiveSlotManager.d.ts +56 -0
- package/dist/multistream/remoteMedia.d.ts +72 -0
- package/dist/multistream/remoteMediaGroup.d.ts +49 -0
- package/dist/multistream/remoteMediaManager.d.ts +300 -0
- package/dist/multistream/sendSlotManager.d.ts +69 -0
- package/dist/networkQualityMonitor/index.d.ts +70 -0
- package/dist/networkQualityMonitor/index.js +226 -0
- package/dist/networkQualityMonitor/index.js.map +1 -0
- package/dist/peer-connection-manager/index.d.ts +6 -0
- package/dist/peer-connection-manager/index.js +671 -0
- package/dist/peer-connection-manager/index.js.map +1 -0
- package/dist/peer-connection-manager/util.d.ts +6 -0
- package/dist/peer-connection-manager/util.js +110 -0
- package/dist/peer-connection-manager/util.js.map +1 -0
- package/dist/personal-meeting-room/index.d.ts +47 -0
- package/dist/personal-meeting-room/request.d.ts +14 -0
- package/dist/personal-meeting-room/util.d.ts +2 -0
- package/dist/reachability/clusterReachability.d.ts +109 -0
- package/dist/reachability/index.d.ts +139 -0
- package/dist/reachability/index.js +10 -5
- package/dist/reachability/index.js.map +1 -1
- package/dist/reachability/request.d.ts +35 -0
- package/dist/reachability/util.d.ts +8 -0
- package/dist/reactions/constants.d.ts +3 -0
- package/dist/reactions/reactions.d.ts +4 -0
- package/dist/reactions/reactions.type.d.ts +32 -0
- package/dist/reconnection-manager/index.d.ts +112 -0
- package/dist/recording-controller/enums.d.ts +7 -0
- package/dist/recording-controller/index.d.ts +193 -0
- package/dist/recording-controller/util.d.ts +13 -0
- package/dist/roap/collection.d.ts +10 -0
- package/dist/roap/collection.js +63 -0
- package/dist/roap/collection.js.map +1 -0
- package/dist/roap/handler.d.ts +47 -0
- package/dist/roap/handler.js +279 -0
- package/dist/roap/handler.js.map +1 -0
- package/dist/roap/index.d.ts +116 -0
- package/dist/roap/request.d.ts +35 -0
- package/dist/roap/state.d.ts +9 -0
- package/dist/roap/state.js +127 -0
- package/dist/roap/state.js.map +1 -0
- package/dist/roap/turnDiscovery.d.ts +81 -0
- package/dist/roap/util.d.ts +2 -0
- package/dist/roap/util.js +76 -0
- package/dist/roap/util.js.map +1 -0
- package/dist/rtcMetrics/constants.d.ts +4 -0
- package/dist/rtcMetrics/constants.js +11 -0
- package/dist/rtcMetrics/constants.js.map +1 -0
- package/dist/rtcMetrics/index.d.ts +61 -0
- package/dist/rtcMetrics/index.js +197 -0
- package/dist/rtcMetrics/index.js.map +1 -0
- package/dist/statsAnalyzer/global.d.ts +118 -0
- package/dist/statsAnalyzer/global.js +127 -0
- package/dist/statsAnalyzer/global.js.map +1 -0
- package/dist/statsAnalyzer/index.d.ts +193 -0
- package/dist/statsAnalyzer/index.js +1019 -0
- package/dist/statsAnalyzer/index.js.map +1 -0
- package/dist/statsAnalyzer/mqaUtil.d.ts +22 -0
- package/dist/statsAnalyzer/mqaUtil.js +181 -0
- package/dist/statsAnalyzer/mqaUtil.js.map +1 -0
- package/dist/transcription/index.d.ts +64 -0
- package/dist/types/common/errors/reconnection-in-progress.d.ts +9 -0
- package/dist/types/constants.d.ts +0 -6
- package/dist/types/controls-options-manager/enums.d.ts +1 -2
- package/dist/types/controls-options-manager/types.d.ts +1 -4
- package/dist/types/mediaQualityMetrics/config.d.ts +241 -0
- package/dist/types/meeting/in-meeting-actions.d.ts +0 -4
- package/dist/types/metrics/constants.d.ts +0 -1
- package/dist/types/networkQualityMonitor/index.d.ts +70 -0
- package/dist/types/reachability/index.d.ts +2 -2
- package/dist/types/rtcMetrics/constants.d.ts +4 -0
- package/dist/types/rtcMetrics/index.d.ts +71 -0
- package/dist/types/statsAnalyzer/global.d.ts +36 -0
- package/dist/types/statsAnalyzer/index.d.ts +217 -0
- package/dist/types/statsAnalyzer/mqaUtil.d.ts +48 -0
- package/dist/webinar/collection.d.ts +16 -0
- package/dist/webinar/index.d.ts +5 -0
- package/dist/webinar/index.js +1 -1
- package/package.json +22 -22
- package/src/constants.ts +0 -9
- package/src/controls-options-manager/enums.ts +0 -1
- package/src/controls-options-manager/types.ts +1 -6
- package/src/controls-options-manager/util.ts +0 -31
- package/src/locus-info/controlsUtils.ts +0 -15
- package/src/locus-info/index.ts +0 -41
- package/src/meeting/brbState.ts +2 -4
- package/src/meeting/in-meeting-actions.ts +0 -8
- package/src/meeting/index.ts +29 -62
- package/src/metrics/constants.ts +0 -1
- package/src/reachability/index.ts +13 -5
- package/test/unit/spec/controls-options-manager/util.js +0 -58
- package/test/unit/spec/locus-info/controlsUtils.js +0 -52
- package/test/unit/spec/locus-info/index.js +0 -42
- package/test/unit/spec/meeting/brbState.ts +2 -21
- package/test/unit/spec/meeting/in-meeting-actions.ts +0 -4
- package/test/unit/spec/meeting/index.js +27 -130
- package/test/unit/spec/reachability/index.ts +6 -2
@@ -0,0 +1,116 @@
|
|
1
|
+
import { StatelessWebexPlugin } from '@webex/webex-core';
|
2
|
+
import Meeting from '../meeting';
|
3
|
+
/**
|
4
|
+
* Roap options
|
5
|
+
* @typedef {Object} RoapOptions
|
6
|
+
* @property {String} sdp
|
7
|
+
* @property {Meeting} meeting
|
8
|
+
* @property {Number} roapSeq
|
9
|
+
* @property {Boolean} reconnect
|
10
|
+
*/
|
11
|
+
/**
|
12
|
+
* @typedef {Object} SeqOptions
|
13
|
+
* @property {String} correlationId
|
14
|
+
* @property {String} mediaId
|
15
|
+
* @property {Number} seq
|
16
|
+
*/
|
17
|
+
/**
|
18
|
+
* @class Roap
|
19
|
+
* @export
|
20
|
+
* @private
|
21
|
+
*/
|
22
|
+
export default class Roap extends StatelessWebexPlugin {
|
23
|
+
attrs: any;
|
24
|
+
lastRoapOffer: any;
|
25
|
+
options: any;
|
26
|
+
roapHandler: any;
|
27
|
+
roapRequest: any;
|
28
|
+
turnDiscovery: any;
|
29
|
+
/**
|
30
|
+
*
|
31
|
+
* @param {Object} attrs
|
32
|
+
* @param {Object} options
|
33
|
+
*/
|
34
|
+
constructor(attrs: any, options: any);
|
35
|
+
/**
|
36
|
+
* Starts listening to mercury events for Roap messages
|
37
|
+
* @param {object} data event object
|
38
|
+
* @returns {Promise}
|
39
|
+
* @private
|
40
|
+
* @memberof Roap
|
41
|
+
*/
|
42
|
+
private roapEvent;
|
43
|
+
/**
|
44
|
+
*
|
45
|
+
* @param {String} correlationId correlation id of a meeting
|
46
|
+
* @param {Number} seq ROAP sequence number
|
47
|
+
* @returns {Promise}
|
48
|
+
* @private
|
49
|
+
* @memberof Roap
|
50
|
+
*/
|
51
|
+
private stop;
|
52
|
+
/**
|
53
|
+
*
|
54
|
+
* @param {SeqOptions} options
|
55
|
+
* @returns {null}
|
56
|
+
* @private
|
57
|
+
* @memberof Roap
|
58
|
+
*/
|
59
|
+
private sendRoapOK;
|
60
|
+
/**
|
61
|
+
* Sends a ROAP answer...
|
62
|
+
* @param {SeqOptions} options
|
63
|
+
* @param {Boolean} options.audioMuted
|
64
|
+
* @param {Boolean} options.videoMuted
|
65
|
+
* @returns {Promise}
|
66
|
+
* @private
|
67
|
+
* @memberof Roap
|
68
|
+
*/
|
69
|
+
private sendRoapAnswer;
|
70
|
+
/**
|
71
|
+
* Sends a ROAP error...
|
72
|
+
* @param {Object} session
|
73
|
+
* @param {Object} locus
|
74
|
+
* @param {String} errorType
|
75
|
+
* @returns {Promise}
|
76
|
+
* @private
|
77
|
+
* @memberof Roap
|
78
|
+
*/
|
79
|
+
private sendRoapError;
|
80
|
+
/**
|
81
|
+
* sends a roap media request
|
82
|
+
* @param {RoapOptions} options
|
83
|
+
* @returns {Promise}
|
84
|
+
* @private
|
85
|
+
* @memberof Roap
|
86
|
+
*/
|
87
|
+
sendRoapMediaRequest(options: any): any;
|
88
|
+
/**
|
89
|
+
* sends a roap media request
|
90
|
+
* @param {RoapOptions} options
|
91
|
+
* @returns {Promise}
|
92
|
+
* @private
|
93
|
+
* @memberof Roap
|
94
|
+
*/
|
95
|
+
sendRoapCallRequest: (options: any) => any;
|
96
|
+
/**
|
97
|
+
* Called when the roap sequence is finished (completed successfully or failed)
|
98
|
+
* @param {String} correlationId id of the meeting affected
|
99
|
+
* @param {String} sequenceId the id of the finished sequence
|
100
|
+
* @returns {undefined}
|
101
|
+
* @private
|
102
|
+
* @memberof Roap
|
103
|
+
*/
|
104
|
+
private roapFinished;
|
105
|
+
/**
|
106
|
+
* Performs a TURN server discovery procedure, which involves exchanging
|
107
|
+
* some roap messages with the server. This exchange has to be done before
|
108
|
+
* any other roap messages are sent
|
109
|
+
*
|
110
|
+
* @param {Meeting} meeting
|
111
|
+
* @param {Boolean} isReconnecting should be set to true if this is a new
|
112
|
+
* media connection just after a reconnection
|
113
|
+
* @returns {Promise}
|
114
|
+
*/
|
115
|
+
doTurnDiscovery(meeting: Meeting, isReconnecting: boolean): any;
|
116
|
+
}
|
@@ -0,0 +1,35 @@
|
|
1
|
+
import { StatelessWebexPlugin } from '@webex/webex-core';
|
2
|
+
/**
|
3
|
+
* @class RoapRequest
|
4
|
+
*/
|
5
|
+
export default class RoapRequest extends StatelessWebexPlugin {
|
6
|
+
/**
|
7
|
+
* Joins a meeting via ROAP
|
8
|
+
* @param {Object} options
|
9
|
+
* @returns {Promise} returns a promise that resolves/rejects whatever the request does
|
10
|
+
*/
|
11
|
+
attachRechabilityData(localSdp: any): any;
|
12
|
+
joinMeetingWithRoap(options: any): Promise<any>;
|
13
|
+
/**
|
14
|
+
* Sends a ROAP message
|
15
|
+
* @param {Object} options
|
16
|
+
* @param {Object} options.roapMessage
|
17
|
+
* @param {String} options.locusSelfUrl
|
18
|
+
* @param {String} options.mediaId
|
19
|
+
* @param {String} options.correlationId
|
20
|
+
* @param {Boolean} options.audioMuted
|
21
|
+
* @param {Boolean} options.videoMuted
|
22
|
+
* @param {String} options.meetingId
|
23
|
+
* @returns {Promise} returns the response/failure of the request
|
24
|
+
*/
|
25
|
+
sendRoap(options: {
|
26
|
+
roapMessage: any;
|
27
|
+
locusSelfUrl: string;
|
28
|
+
mediaId: string;
|
29
|
+
correlationId: string;
|
30
|
+
audioMuted: boolean;
|
31
|
+
videoMuted: boolean;
|
32
|
+
meetingId: string;
|
33
|
+
preferTranscoding?: boolean;
|
34
|
+
}): any;
|
35
|
+
}
|
@@ -0,0 +1,127 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
|
4
|
+
var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
|
5
|
+
_Object$defineProperty(exports, "__esModule", {
|
6
|
+
value: true
|
7
|
+
});
|
8
|
+
exports.default = void 0;
|
9
|
+
var _javascriptStateMachine = _interopRequireDefault(require("javascript-state-machine"));
|
10
|
+
var _loggerProxy = _interopRequireDefault(require("../common/logs/logger-proxy"));
|
11
|
+
var _constants = require("../constants");
|
12
|
+
var shouldStep = function shouldStep(roap, meeting) {
|
13
|
+
var messageType = roap.msg.messageType;
|
14
|
+
if (meeting) {
|
15
|
+
if (messageType === _constants._OFFER_ && roap.remote && meeting.shareStatus === _constants._REQUESTED_) {
|
16
|
+
// The peer-connection is waiting for answer but got an offer Reset. Try to
|
17
|
+
// send the offer later after you accept the answer
|
18
|
+
return false;
|
19
|
+
}
|
20
|
+
// Assuming the mercury event has come first before the response for the event
|
21
|
+
// we have to wait for the response and trigger the ROAP request later on
|
22
|
+
if (!meeting.mediaProperties.peerConnection && messageType === _constants._ANSWER_) {
|
23
|
+
return false;
|
24
|
+
}
|
25
|
+
}
|
26
|
+
_loggerProxy.default.logger.log('Roap:state#shouldStep --> RoapStateMachine: PeerConnectionState, ', meeting.mediaProperties.peerConnection.signalingState);
|
27
|
+
_loggerProxy.default.logger.log('Roap:state#shouldStep --> RoapStateMachine: success save proceeding with transition, ', roap.msg);
|
28
|
+
return true;
|
29
|
+
};
|
30
|
+
var handleTransition = function handleTransition(value, signal, meeting) {
|
31
|
+
_loggerProxy.default.logger.log("Roap:state#handleTransition --> current ".concat(value, " to ").concat(signal));
|
32
|
+
switch (value) {
|
33
|
+
case _constants.ROAP.ROAP_STATE.INIT:
|
34
|
+
if (signal === _constants.ROAP.ROAP_SIGNAL.RX_OFFER) {
|
35
|
+
return _constants.ROAP.ROAP_STATE.WAIT_TX_ANSWER;
|
36
|
+
}
|
37
|
+
if (signal === _constants.ROAP.ROAP_SIGNAL.TX_OFFER) {
|
38
|
+
return _constants.ROAP.ROAP_STATE.WAIT_RX_ANSWER;
|
39
|
+
}
|
40
|
+
return value;
|
41
|
+
case _constants.ROAP.ROAP_STATE.WAIT_RX_OFFER:
|
42
|
+
return value;
|
43
|
+
case _constants.ROAP.ROAP_STATE.WAIT_RX_ANSWER:
|
44
|
+
if (signal === _constants.ROAP.ROAP_SIGNAL.RX_ANSWER) {
|
45
|
+
// There is a race condition where the /call response comes after mercury event from the server
|
46
|
+
// As mercury sends roap event if it didnt get back a response. We can send the roap ok after that
|
47
|
+
if (meeting.mediaId) {
|
48
|
+
return _constants.ROAP.ROAP_STATE.WAIT_TX_OK;
|
49
|
+
}
|
50
|
+
_loggerProxy.default.logger.error('Roap:state#handleTransition --> Race Condition no mediaId, continuing.');
|
51
|
+
return value;
|
52
|
+
}
|
53
|
+
if (signal === _constants.ROAP.ROAP_SIGNAL.RX_OFFER) {
|
54
|
+
return _constants.ROAP.ROAP_STATE.GLARE;
|
55
|
+
}
|
56
|
+
return value;
|
57
|
+
case _constants.ROAP.ROAP_STATE.WAIT_TX_OFFER:
|
58
|
+
return value;
|
59
|
+
case _constants.ROAP.ROAP_STATE.WAIT_TX_ANSWER:
|
60
|
+
if (signal === _constants.ROAP.ROAP_SIGNAL.TX_ANSWER) {
|
61
|
+
return _constants.ROAP.ROAP_STATE.WAIT_RX_OK;
|
62
|
+
}
|
63
|
+
return value;
|
64
|
+
case _constants.ROAP.ROAP_STATE.WAIT_TX_OK:
|
65
|
+
if (signal === _constants.ROAP.ROAP_SIGNAL.TX_OK) {
|
66
|
+
return _constants.ROAP.ROAP_STATE.INIT;
|
67
|
+
}
|
68
|
+
return value;
|
69
|
+
case _constants.ROAP.ROAP_STATE.WAIT_RX_OK:
|
70
|
+
if (signal === _constants.ROAP.ROAP_SIGNAL.RX_OK) {
|
71
|
+
return _constants.ROAP.ROAP_STATE.INIT;
|
72
|
+
}
|
73
|
+
return value;
|
74
|
+
case _constants.ROAP.ROAP_STATE.ERROR:
|
75
|
+
// eslint-disable-next-line no-warning-comments
|
76
|
+
// TODO: resolve error state. Add a signal constant and handle the cleanup
|
77
|
+
return _constants.ROAP.ROAP_STATE.INIT;
|
78
|
+
case _constants.ROAP.ROAP_STATE.GLARE:
|
79
|
+
return _constants.ROAP.ROAP_STATE.WAIT_RX_ANSWER;
|
80
|
+
default:
|
81
|
+
return value;
|
82
|
+
}
|
83
|
+
};
|
84
|
+
var RoapStateMachine = {
|
85
|
+
/**
|
86
|
+
* @param {Roap} roapRef
|
87
|
+
* initializes the state machine
|
88
|
+
* @returns {StateMachine} an instance of a state machine
|
89
|
+
*/
|
90
|
+
createState: function createState() {
|
91
|
+
var RoapState = _javascriptStateMachine.default.factory({
|
92
|
+
init: _constants.ROAP.ROAP_STATE.INIT,
|
93
|
+
transitions: [{
|
94
|
+
name: _constants.ROAP.ROAP_TRANSITIONS.STEP,
|
95
|
+
from: '*',
|
96
|
+
/**
|
97
|
+
* Method to handle the transitions between states
|
98
|
+
* @param {String} signal
|
99
|
+
* @param {Meeting} meeting instance of a Meeting
|
100
|
+
* @param {Object} roap
|
101
|
+
* @returns {String} new state value
|
102
|
+
*/
|
103
|
+
to: function to(signal, meeting, roap) {
|
104
|
+
var value = this.state;
|
105
|
+
if (!shouldStep(roap, meeting)) {
|
106
|
+
return value;
|
107
|
+
}
|
108
|
+
return handleTransition(value, signal, meeting);
|
109
|
+
}
|
110
|
+
}],
|
111
|
+
methods: {
|
112
|
+
/**
|
113
|
+
* Event that fires after we've transitioned to a new state
|
114
|
+
* @param {Object} transition
|
115
|
+
* @returns {null}
|
116
|
+
*/
|
117
|
+
onAfterStep: function onAfterStep(transition) {
|
118
|
+
_loggerProxy.default.logger.log("Roap:state#onAfterStep --> RoapStateMachine->onAfterStep#fired! State changed from '".concat(transition.from, "' to '").concat(transition.to, "' with transition '").concat(transition.transition, "''."));
|
119
|
+
}
|
120
|
+
}
|
121
|
+
});
|
122
|
+
return new RoapState();
|
123
|
+
}
|
124
|
+
};
|
125
|
+
var _default = RoapStateMachine;
|
126
|
+
exports.default = _default;
|
127
|
+
//# sourceMappingURL=state.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"names":["_javascriptStateMachine","_interopRequireDefault","require","_loggerProxy","_constants","shouldStep","roap","meeting","messageType","msg","_OFFER_","remote","shareStatus","_REQUESTED_","mediaProperties","peerConnection","_ANSWER_","LoggerProxy","logger","log","signalingState","handleTransition","value","signal","concat","ROAP","ROAP_STATE","INIT","ROAP_SIGNAL","RX_OFFER","WAIT_TX_ANSWER","TX_OFFER","WAIT_RX_ANSWER","WAIT_RX_OFFER","RX_ANSWER","mediaId","WAIT_TX_OK","error","GLARE","WAIT_TX_OFFER","TX_ANSWER","WAIT_RX_OK","TX_OK","RX_OK","ERROR","RoapStateMachine","createState","RoapState","StateMachine","factory","init","transitions","name","ROAP_TRANSITIONS","STEP","from","to","state","methods","onAfterStep","transition","_default","exports","default"],"sources":["state.ts"],"sourcesContent":["import StateMachine from 'javascript-state-machine';\n\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport {ROAP, _OFFER_, _ANSWER_, _REQUESTED_} from '../constants';\nimport Meeting from '../meeting';\n\nconst shouldStep = (roap, meeting) => {\n const {messageType} = roap.msg;\n\n if (meeting) {\n if (messageType === _OFFER_ && roap.remote && meeting.shareStatus === _REQUESTED_) {\n // The peer-connection is waiting for answer but got an offer Reset. Try to\n // send the offer later after you accept the answer\n return false;\n }\n // Assuming the mercury event has come first before the response for the event\n // we have to wait for the response and trigger the ROAP request later on\n if (!meeting.mediaProperties.peerConnection && messageType === _ANSWER_) {\n return false;\n }\n }\n LoggerProxy.logger.log(\n 'Roap:state#shouldStep --> RoapStateMachine: PeerConnectionState, ',\n meeting.mediaProperties.peerConnection.signalingState\n );\n LoggerProxy.logger.log(\n 'Roap:state#shouldStep --> RoapStateMachine: success save proceeding with transition, ',\n roap.msg\n );\n\n return true;\n};\n\nconst handleTransition = (value, signal, meeting) => {\n LoggerProxy.logger.log(`Roap:state#handleTransition --> current ${value} to ${signal}`);\n\n switch (value) {\n case ROAP.ROAP_STATE.INIT:\n if (signal === ROAP.ROAP_SIGNAL.RX_OFFER) {\n return ROAP.ROAP_STATE.WAIT_TX_ANSWER;\n }\n if (signal === ROAP.ROAP_SIGNAL.TX_OFFER) {\n return ROAP.ROAP_STATE.WAIT_RX_ANSWER;\n }\n\n return value;\n\n case ROAP.ROAP_STATE.WAIT_RX_OFFER:\n return value;\n\n case ROAP.ROAP_STATE.WAIT_RX_ANSWER:\n if (signal === ROAP.ROAP_SIGNAL.RX_ANSWER) {\n // There is a race condition where the /call response comes after mercury event from the server\n // As mercury sends roap event if it didnt get back a response. We can send the roap ok after that\n if (meeting.mediaId) {\n return ROAP.ROAP_STATE.WAIT_TX_OK;\n }\n LoggerProxy.logger.error(\n 'Roap:state#handleTransition --> Race Condition no mediaId, continuing.'\n );\n\n return value;\n }\n\n if (signal === ROAP.ROAP_SIGNAL.RX_OFFER) {\n return ROAP.ROAP_STATE.GLARE;\n }\n\n return value;\n\n case ROAP.ROAP_STATE.WAIT_TX_OFFER:\n return value;\n\n case ROAP.ROAP_STATE.WAIT_TX_ANSWER:\n if (signal === ROAP.ROAP_SIGNAL.TX_ANSWER) {\n return ROAP.ROAP_STATE.WAIT_RX_OK;\n }\n\n return value;\n\n case ROAP.ROAP_STATE.WAIT_TX_OK:\n if (signal === ROAP.ROAP_SIGNAL.TX_OK) {\n return ROAP.ROAP_STATE.INIT;\n }\n\n return value;\n\n case ROAP.ROAP_STATE.WAIT_RX_OK:\n if (signal === ROAP.ROAP_SIGNAL.RX_OK) {\n return ROAP.ROAP_STATE.INIT;\n }\n\n return value;\n\n case ROAP.ROAP_STATE.ERROR:\n // eslint-disable-next-line no-warning-comments\n // TODO: resolve error state. Add a signal constant and handle the cleanup\n return ROAP.ROAP_STATE.INIT;\n\n case ROAP.ROAP_STATE.GLARE:\n return ROAP.ROAP_STATE.WAIT_RX_ANSWER;\n default:\n return value;\n }\n};\n\nconst RoapStateMachine = {\n /**\n * @param {Roap} roapRef\n * initializes the state machine\n * @returns {StateMachine} an instance of a state machine\n */\n createState() {\n const RoapState = StateMachine.factory({\n init: ROAP.ROAP_STATE.INIT,\n transitions: [\n {\n name: ROAP.ROAP_TRANSITIONS.STEP,\n from: '*',\n /**\n * Method to handle the transitions between states\n * @param {String} signal\n * @param {Meeting} meeting instance of a Meeting\n * @param {Object} roap\n * @returns {String} new state value\n */\n to(signal: string, meeting: Meeting, roap: object) {\n const value = this.state;\n\n if (!shouldStep(roap, meeting)) {\n return value;\n }\n\n return handleTransition(value, signal, meeting);\n },\n },\n ],\n methods: {\n /**\n * Event that fires after we've transitioned to a new state\n * @param {Object} transition\n * @returns {null}\n */\n onAfterStep(transition: any) {\n LoggerProxy.logger.log(\n `Roap:state#onAfterStep --> RoapStateMachine->onAfterStep#fired! State changed from '${transition.from}' to '${transition.to}' with transition '${transition.transition}''.`\n );\n },\n },\n });\n\n return new RoapState();\n },\n};\n\nexport default RoapStateMachine;\n"],"mappings":"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"}
|
@@ -0,0 +1,81 @@
|
|
1
|
+
import RoapRequest from './request';
|
2
|
+
import Meeting from '../meeting';
|
3
|
+
/**
|
4
|
+
* Handles the process of finding out TURN server information from Linus.
|
5
|
+
* This is achieved by sending a TURN_DISCOVERY_REQUEST.
|
6
|
+
*/
|
7
|
+
export default class TurnDiscovery {
|
8
|
+
private roapRequest;
|
9
|
+
private defer?;
|
10
|
+
private turnInfo;
|
11
|
+
private responseTimer?;
|
12
|
+
/**
|
13
|
+
* Constructor
|
14
|
+
*
|
15
|
+
* @param {RoapRequest} roapRequest
|
16
|
+
*/
|
17
|
+
constructor(roapRequest: RoapRequest);
|
18
|
+
/**
|
19
|
+
* waits for TURN_DISCOVERY_RESPONSE message to arrive
|
20
|
+
*
|
21
|
+
* @returns {Promise}
|
22
|
+
* @private
|
23
|
+
* @memberof Roap
|
24
|
+
*/
|
25
|
+
private waitForTurnDiscoveryResponse;
|
26
|
+
/**
|
27
|
+
* handles TURN_DISCOVERY_RESPONSE roap message
|
28
|
+
*
|
29
|
+
* @param {Object} roapMessage
|
30
|
+
* @returns {void}
|
31
|
+
* @public
|
32
|
+
* @memberof Roap
|
33
|
+
*/
|
34
|
+
handleTurnDiscoveryResponse(roapMessage: object): void;
|
35
|
+
/**
|
36
|
+
* sends the TURN_DISCOVERY_REQUEST roap request
|
37
|
+
*
|
38
|
+
* @param {Meeting} meeting
|
39
|
+
* @param {Boolean} isReconnecting
|
40
|
+
* @returns {Promise}
|
41
|
+
* @private
|
42
|
+
* @memberof Roap
|
43
|
+
*/
|
44
|
+
private sendRoapTurnDiscoveryRequest;
|
45
|
+
/**
|
46
|
+
* Sends the OK message that server expects to receive
|
47
|
+
* after it sends us TURN_DISCOVERY_RESPONSE
|
48
|
+
*
|
49
|
+
* @param {Meeting} meeting
|
50
|
+
* @returns {Promise}
|
51
|
+
*/
|
52
|
+
sendRoapOK(meeting: Meeting): any;
|
53
|
+
/**
|
54
|
+
* Retrieves TURN server information from the backend by doing
|
55
|
+
* a roap message exchange:
|
56
|
+
* client server
|
57
|
+
* | -----TURN_DISCOVERY_REQUEST-----> |
|
58
|
+
* | <----TURN_DISCOVERY_RESPONSE----- |
|
59
|
+
* | --------------OK----------------> |
|
60
|
+
*
|
61
|
+
* @param {Meeting} meeting
|
62
|
+
* @param {Boolean} isReconnecting should be set to true if this is a new
|
63
|
+
* media connection just after a reconnection
|
64
|
+
* @returns {Promise}
|
65
|
+
*/
|
66
|
+
doTurnDiscovery(meeting: Meeting, isReconnecting?: boolean): Promise<any>;
|
67
|
+
/**
|
68
|
+
* Gets the reason why reachability is skipped.
|
69
|
+
*
|
70
|
+
* @param {Meeting} meeting
|
71
|
+
* @returns {Promise<string>} Promise with empty string if reachability is not skipped or a reason if it is skipped
|
72
|
+
*/
|
73
|
+
private getSkipReason;
|
74
|
+
/**
|
75
|
+
* Checks if TURN discovery is skipped.
|
76
|
+
*
|
77
|
+
* @param {Meeting} meeting
|
78
|
+
* @returns {Boolean} true if TURN discovery is being skipped, false if it is being done
|
79
|
+
*/
|
80
|
+
isSkipped(meeting: any): Promise<boolean>;
|
81
|
+
}
|
@@ -0,0 +1,76 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
|
4
|
+
var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
|
5
|
+
_Object$defineProperty(exports, "__esModule", {
|
6
|
+
value: true
|
7
|
+
});
|
8
|
+
exports.default = void 0;
|
9
|
+
var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/promise"));
|
10
|
+
var _peerConnectionManager = _interopRequireDefault(require("../peer-connection-manager"));
|
11
|
+
var _constants = require("../constants");
|
12
|
+
var _loggerProxy = _interopRequireDefault(require("../common/logs/logger-proxy"));
|
13
|
+
var _parameter = _interopRequireDefault(require("../common/errors/parameter"));
|
14
|
+
var RoapUtil = {};
|
15
|
+
var ROAP_ANSWER = _constants._ANSWER_.toLowerCase();
|
16
|
+
RoapUtil.shouldHandleMedia = function (meeting) {
|
17
|
+
var offer = meeting.mediaProperties.peerConnection && meeting.mediaProperties.peerConnection.signalingState === _constants.SDP.HAVE_LOCAL_OFFER;
|
18
|
+
if (offer) {
|
19
|
+
return false;
|
20
|
+
}
|
21
|
+
return true;
|
22
|
+
};
|
23
|
+
RoapUtil.handleError = function (pc) {
|
24
|
+
return _peerConnectionManager.default.rollBackLocalDescription({
|
25
|
+
peerConnection: pc
|
26
|
+
}).then(function () {
|
27
|
+
return _promise.default.resolve(true);
|
28
|
+
}).catch(function (err) {
|
29
|
+
_loggerProxy.default.logger.error("Roap:util#handleError --> ".concat(err));
|
30
|
+
return _promise.default.reject(err);
|
31
|
+
});
|
32
|
+
};
|
33
|
+
RoapUtil.findError = function (messageType, errorType, type) {
|
34
|
+
return (type === _constants.ROAP.RECEIVE_ROAP_MSG || type === _constants.ROAP.SEND_ROAP_MSG) && messageType === _constants._ERROR_ && errorType === _constants._CONFLICT_;
|
35
|
+
};
|
36
|
+
RoapUtil.ensureMeeting = function (meeting, type) {
|
37
|
+
if (type === _constants.ROAP.RECEIVE_ROAP_MSG || type === _constants.ROAP.SEND_ROAP_MSG || type === _constants.ROAP.SEND_ROAP_MSG_SUCCESS) {
|
38
|
+
if (!meeting) {
|
39
|
+
return false;
|
40
|
+
}
|
41
|
+
}
|
42
|
+
return true;
|
43
|
+
};
|
44
|
+
RoapUtil.updatePeerConnection = function (meeting, session) {
|
45
|
+
return _peerConnectionManager.default.updatePeerConnection({
|
46
|
+
offerSdp: session.OFFER.sdps,
|
47
|
+
peerConnection: meeting.mediaProperties.peerConnection
|
48
|
+
}, {
|
49
|
+
meetingId: meeting.id,
|
50
|
+
remoteQualityLevel: meeting.mediaProperties.remoteQualityLevel
|
51
|
+
}).then(function (res) {
|
52
|
+
meeting.roap.lastRoapOffer = session.OFFER.sdps;
|
53
|
+
return res;
|
54
|
+
});
|
55
|
+
};
|
56
|
+
RoapUtil.setRemoteDescription = function (meeting, session) {
|
57
|
+
_loggerProxy.default.logger.info("Roap:util#setRemoteDescription --> Transmit WAIT_TX_OK, correlationId: ".concat(meeting.correlationId));
|
58
|
+
if (!(meeting && meeting.mediaProperties.peerConnection)) {
|
59
|
+
_loggerProxy.default.logger.error("Roap:util#setRemoteDescription --> DANGER no media or screen peer connection, correlationId: ".concat(meeting.correlationId));
|
60
|
+
return _promise.default.reject(new _parameter.default('Must provide a media or screen peer connection'));
|
61
|
+
}
|
62
|
+
return _peerConnectionManager.default.setRemoteSessionDetails(meeting.mediaProperties.peerConnection, ROAP_ANSWER, session.ANSWER.sdps[0], meeting.id).then(function () {
|
63
|
+
_loggerProxy.default.logger.info("Roap:util#setRemoteDescription --> Success for correlationId: ".concat(meeting.correlationId));
|
64
|
+
return {
|
65
|
+
seq: session.ANSWER.seq,
|
66
|
+
mediaId: meeting.mediaId,
|
67
|
+
correlationId: meeting.correlationId
|
68
|
+
};
|
69
|
+
}).catch(function (err) {
|
70
|
+
_loggerProxy.default.logger.error("Roap:util#setRemoteDescription --> ".concat(err));
|
71
|
+
throw err;
|
72
|
+
});
|
73
|
+
};
|
74
|
+
var _default = RoapUtil;
|
75
|
+
exports.default = _default;
|
76
|
+
//# sourceMappingURL=util.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"names":["_peerConnectionManager","_interopRequireDefault","require","_constants","_loggerProxy","_parameter","RoapUtil","ROAP_ANSWER","_ANSWER_","toLowerCase","shouldHandleMedia","meeting","offer","mediaProperties","peerConnection","signalingState","SDP","HAVE_LOCAL_OFFER","handleError","pc","PeerConnectionManager","rollBackLocalDescription","then","_promise","default","resolve","catch","err","LoggerProxy","logger","error","concat","reject","findError","messageType","errorType","type","ROAP","RECEIVE_ROAP_MSG","SEND_ROAP_MSG","_ERROR_","_CONFLICT_","ensureMeeting","SEND_ROAP_MSG_SUCCESS","updatePeerConnection","session","offerSdp","OFFER","sdps","meetingId","id","remoteQualityLevel","res","roap","lastRoapOffer","setRemoteDescription","info","correlationId","ParameterError","setRemoteSessionDetails","ANSWER","seq","mediaId","_default","exports"],"sources":["util.ts"],"sourcesContent":["import PeerConnectionManager from '../peer-connection-manager';\nimport {_ANSWER_, _ERROR_, _CONFLICT_, ROAP, SDP} from '../constants';\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport ParameterError from '../common/errors/parameter';\n\nconst RoapUtil: any = {};\nconst ROAP_ANSWER = _ANSWER_.toLowerCase();\n\nRoapUtil.shouldHandleMedia = (meeting) => {\n const offer =\n meeting.mediaProperties.peerConnection &&\n meeting.mediaProperties.peerConnection.signalingState === SDP.HAVE_LOCAL_OFFER;\n\n if (offer) {\n return false;\n }\n\n return true;\n};\n\nRoapUtil.handleError = (pc) =>\n PeerConnectionManager.rollBackLocalDescription({peerConnection: pc})\n .then(() => Promise.resolve(true))\n .catch((err) => {\n LoggerProxy.logger.error(`Roap:util#handleError --> ${err}`);\n\n return Promise.reject(err);\n });\n\nRoapUtil.findError = (messageType, errorType, type) =>\n (type === ROAP.RECEIVE_ROAP_MSG || type === ROAP.SEND_ROAP_MSG) &&\n messageType === _ERROR_ &&\n errorType === _CONFLICT_;\n\nRoapUtil.ensureMeeting = (meeting, type) => {\n if (\n type === ROAP.RECEIVE_ROAP_MSG ||\n type === ROAP.SEND_ROAP_MSG ||\n type === ROAP.SEND_ROAP_MSG_SUCCESS\n ) {\n if (!meeting) {\n return false;\n }\n }\n\n return true;\n};\n\nRoapUtil.updatePeerConnection = (meeting, session) =>\n PeerConnectionManager.updatePeerConnection(\n {\n offerSdp: session.OFFER.sdps,\n peerConnection: meeting.mediaProperties.peerConnection,\n },\n {\n meetingId: meeting.id,\n remoteQualityLevel: meeting.mediaProperties.remoteQualityLevel,\n }\n ).then((res) => {\n meeting.roap.lastRoapOffer = session.OFFER.sdps;\n\n return res;\n });\n\nRoapUtil.setRemoteDescription = (meeting, session) => {\n LoggerProxy.logger.info(\n `Roap:util#setRemoteDescription --> Transmit WAIT_TX_OK, correlationId: ${meeting.correlationId}`\n );\n if (!(meeting && meeting.mediaProperties.peerConnection)) {\n LoggerProxy.logger.error(\n `Roap:util#setRemoteDescription --> DANGER no media or screen peer connection, correlationId: ${meeting.correlationId}`\n );\n\n return Promise.reject(new ParameterError('Must provide a media or screen peer connection'));\n }\n\n return PeerConnectionManager.setRemoteSessionDetails(\n meeting.mediaProperties.peerConnection,\n ROAP_ANSWER,\n session.ANSWER.sdps[0],\n meeting.id\n )\n .then(() => {\n LoggerProxy.logger.info(\n `Roap:util#setRemoteDescription --> Success for correlationId: ${meeting.correlationId}`\n );\n\n return {\n seq: session.ANSWER.seq,\n mediaId: meeting.mediaId,\n correlationId: meeting.correlationId,\n };\n })\n .catch((err) => {\n LoggerProxy.logger.error(`Roap:util#setRemoteDescription --> ${err}`);\n throw err;\n });\n};\n\nexport default RoapUtil;\n"],"mappings":"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"}
|
@@ -0,0 +1,11 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
|
4
|
+
_Object$defineProperty(exports, "__esModule", {
|
5
|
+
value: true
|
6
|
+
});
|
7
|
+
exports.default = void 0;
|
8
|
+
var RTC_METRICS = exports.default = {
|
9
|
+
APP_ID: 'FFB51ED5-4319-4C55-8303-B1F2FCCDE231'
|
10
|
+
};
|
11
|
+
//# sourceMappingURL=constants.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"names":["RTC_METRICS","exports","default","APP_ID"],"sources":["constants.ts"],"sourcesContent":["const RTC_METRICS = {APP_ID: 'FFB51ED5-4319-4C55-8303-B1F2FCCDE231'};\n\nexport {RTC_METRICS as default};\n"],"mappings":";;;;;;;AAAA,IAAMA,WAAW,GAAAC,OAAA,CAAAC,OAAA,GAAG;EAACC,MAAM,EAAE;AAAsC,CAAC"}
|
@@ -0,0 +1,61 @@
|
|
1
|
+
/**
|
2
|
+
* Rtc Metrics
|
3
|
+
*/
|
4
|
+
export default class RtcMetrics {
|
5
|
+
/**
|
6
|
+
* Array of MetricData items to be sent to the metrics service.
|
7
|
+
*/
|
8
|
+
metricsQueue: any[];
|
9
|
+
intervalId: number;
|
10
|
+
webex: any;
|
11
|
+
meetingId: string;
|
12
|
+
correlationId: string;
|
13
|
+
connectionId: string;
|
14
|
+
/**
|
15
|
+
* Initialize the interval.
|
16
|
+
*
|
17
|
+
* @param {object} webex - The main `webex` object.
|
18
|
+
* @param {string} meetingId - The meeting id.
|
19
|
+
* @param {string} correlationId - The correlation id.
|
20
|
+
*/
|
21
|
+
constructor(webex: any, meetingId: any, correlationId: any);
|
22
|
+
/**
|
23
|
+
* Check to see if the metrics queue has any items.
|
24
|
+
*
|
25
|
+
* @returns {void}
|
26
|
+
*/
|
27
|
+
sendMetricsInQueue(): void;
|
28
|
+
/**
|
29
|
+
* Add metrics items to the metrics queue.
|
30
|
+
*
|
31
|
+
* @param {object} data - An object with a payload array of metrics items.
|
32
|
+
*
|
33
|
+
* @returns {void}
|
34
|
+
*/
|
35
|
+
addMetrics(data: any): void;
|
36
|
+
/**
|
37
|
+
* Clear the metrics interval.
|
38
|
+
*
|
39
|
+
* @returns {void}
|
40
|
+
*/
|
41
|
+
closeMetrics(): void;
|
42
|
+
/**
|
43
|
+
* Anonymize IP addresses.
|
44
|
+
*
|
45
|
+
* @param {array} stats - An RTCStatsReport organized into an array of strings.
|
46
|
+
* @returns {string}
|
47
|
+
*/
|
48
|
+
anonymizeIp(stats: string): string;
|
49
|
+
/**
|
50
|
+
* Set a new connection id.
|
51
|
+
*
|
52
|
+
* @returns {void}
|
53
|
+
*/
|
54
|
+
private setNewConnectionId;
|
55
|
+
/**
|
56
|
+
* Send metrics to the metrics service.
|
57
|
+
*
|
58
|
+
* @returns {void}
|
59
|
+
*/
|
60
|
+
private sendMetrics;
|
61
|
+
}
|