@webex/plugin-meetings 3.0.0-beta.34 → 3.0.0-beta.340
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 +46 -8
- package/dist/annotation/annotation.types.js +7 -0
- package/dist/annotation/annotation.types.js.map +1 -0
- package/dist/annotation/constants.js +49 -0
- package/dist/annotation/constants.js.map +1 -0
- package/dist/annotation/index.js +342 -0
- package/dist/annotation/index.js.map +1 -0
- package/dist/breakouts/breakout.js +94 -15
- package/dist/breakouts/breakout.js.map +1 -1
- package/dist/breakouts/edit-lock-error.js +52 -0
- package/dist/breakouts/edit-lock-error.js.map +1 -0
- package/dist/breakouts/events.js +45 -0
- package/dist/breakouts/events.js.map +1 -0
- package/dist/breakouts/index.js +709 -35
- package/dist/breakouts/index.js.map +1 -1
- package/dist/breakouts/utils.js +45 -1
- package/dist/breakouts/utils.js.map +1 -1
- package/dist/common/errors/no-meeting-info.js +51 -0
- package/dist/common/errors/no-meeting-info.js.map +1 -0
- package/dist/common/errors/reclaim-host-role-errors.js +158 -0
- package/dist/common/errors/reclaim-host-role-errors.js.map +1 -0
- package/dist/common/errors/webex-errors.js +48 -7
- package/dist/common/errors/webex-errors.js.map +1 -1
- package/dist/common/logs/logger-proxy.js +1 -1
- package/dist/common/logs/logger-proxy.js.map +1 -1
- package/dist/common/logs/request.js +5 -1
- package/dist/common/logs/request.js.map +1 -1
- package/dist/common/queue.js +24 -9
- package/dist/common/queue.js.map +1 -1
- package/dist/config.js +5 -10
- package/dist/config.js.map +1 -1
- package/dist/constants.js +233 -29
- package/dist/constants.js.map +1 -1
- package/dist/controls-options-manager/enums.js +14 -2
- package/dist/controls-options-manager/enums.js.map +1 -1
- package/dist/controls-options-manager/index.js +109 -15
- package/dist/controls-options-manager/index.js.map +1 -1
- package/dist/controls-options-manager/types.js +7 -0
- package/dist/controls-options-manager/types.js.map +1 -0
- package/dist/controls-options-manager/util.js +309 -18
- package/dist/controls-options-manager/util.js.map +1 -1
- package/dist/index.js +112 -1
- package/dist/index.js.map +1 -1
- package/dist/interpretation/collection.js +23 -0
- package/dist/interpretation/collection.js.map +1 -0
- package/dist/interpretation/index.js +366 -0
- package/dist/interpretation/index.js.map +1 -0
- package/dist/interpretation/siLanguage.js +25 -0
- package/dist/interpretation/siLanguage.js.map +1 -0
- package/dist/locus-info/controlsUtils.js +91 -2
- package/dist/locus-info/controlsUtils.js.map +1 -1
- package/dist/locus-info/index.js +383 -62
- package/dist/locus-info/index.js.map +1 -1
- package/dist/locus-info/infoUtils.js +7 -1
- package/dist/locus-info/infoUtils.js.map +1 -1
- package/dist/locus-info/mediaSharesUtils.js +57 -1
- package/dist/locus-info/mediaSharesUtils.js.map +1 -1
- package/dist/locus-info/parser.js +249 -72
- package/dist/locus-info/parser.js.map +1 -1
- package/dist/locus-info/selfUtils.js +89 -14
- package/dist/locus-info/selfUtils.js.map +1 -1
- package/dist/media/index.js +62 -116
- package/dist/media/index.js.map +1 -1
- package/dist/media/properties.js +73 -124
- package/dist/media/properties.js.map +1 -1
- package/dist/mediaQualityMetrics/config.js +1 -204
- package/dist/mediaQualityMetrics/config.js.map +1 -1
- package/dist/meeting/in-meeting-actions.js +86 -2
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/meeting/index.js +3927 -2960
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/locusMediaRequest.js +292 -0
- package/dist/meeting/locusMediaRequest.js.map +1 -0
- package/dist/meeting/muteState.js +224 -131
- package/dist/meeting/muteState.js.map +1 -1
- package/dist/meeting/request.js +260 -196
- package/dist/meeting/request.js.map +1 -1
- package/dist/meeting/util.js +601 -417
- package/dist/meeting/util.js.map +1 -1
- package/dist/meeting-info/index.js +73 -7
- package/dist/meeting-info/index.js.map +1 -1
- package/dist/meeting-info/meeting-info-v2.js +192 -51
- package/dist/meeting-info/meeting-info-v2.js.map +1 -1
- package/dist/meeting-info/util.js +1 -1
- package/dist/meeting-info/util.js.map +1 -1
- package/dist/meeting-info/utilv2.js +36 -36
- package/dist/meeting-info/utilv2.js.map +1 -1
- package/dist/meetings/collection.js +39 -0
- package/dist/meetings/collection.js.map +1 -1
- package/dist/meetings/index.js +424 -116
- package/dist/meetings/index.js.map +1 -1
- package/dist/meetings/meetings.types.js +7 -0
- package/dist/meetings/meetings.types.js.map +1 -0
- package/dist/meetings/request.js +2 -0
- package/dist/meetings/request.js.map +1 -1
- package/dist/meetings/util.js +72 -6
- package/dist/meetings/util.js.map +1 -1
- package/dist/member/index.js +58 -0
- package/dist/member/index.js.map +1 -1
- package/dist/member/types.js +25 -0
- package/dist/member/types.js.map +1 -0
- package/dist/member/util.js +132 -25
- package/dist/member/util.js.map +1 -1
- package/dist/members/collection.js +10 -0
- package/dist/members/collection.js.map +1 -1
- package/dist/members/index.js +102 -6
- package/dist/members/index.js.map +1 -1
- package/dist/members/request.js +106 -38
- package/dist/members/request.js.map +1 -1
- package/dist/members/types.js +15 -0
- package/dist/members/types.js.map +1 -0
- package/dist/members/util.js +326 -232
- package/dist/members/util.js.map +1 -1
- package/dist/metrics/constants.js +16 -5
- package/dist/metrics/constants.js.map +1 -1
- package/dist/metrics/index.js +1 -446
- package/dist/metrics/index.js.map +1 -1
- package/dist/multistream/mediaRequestManager.js +228 -58
- package/dist/multistream/mediaRequestManager.js.map +1 -1
- package/dist/multistream/receiveSlot.js +29 -16
- package/dist/multistream/receiveSlot.js.map +1 -1
- package/dist/multistream/receiveSlotManager.js +39 -36
- package/dist/multistream/receiveSlotManager.js.map +1 -1
- package/dist/multistream/remoteMedia.js +44 -18
- package/dist/multistream/remoteMedia.js.map +1 -1
- package/dist/multistream/remoteMediaGroup.js +60 -3
- package/dist/multistream/remoteMediaGroup.js.map +1 -1
- package/dist/multistream/remoteMediaManager.js +209 -59
- package/dist/multistream/remoteMediaManager.js.map +1 -1
- package/dist/multistream/sendSlotManager.js +233 -0
- package/dist/multistream/sendSlotManager.js.map +1 -0
- package/dist/reachability/clusterReachability.js +356 -0
- package/dist/reachability/clusterReachability.js.map +1 -0
- package/dist/reachability/index.js +273 -391
- package/dist/reachability/index.js.map +1 -1
- package/dist/reachability/request.js +17 -8
- package/dist/reachability/request.js.map +1 -1
- package/dist/reachability/util.js +29 -0
- package/dist/reachability/util.js.map +1 -0
- package/dist/reconnection-manager/index.js +214 -170
- package/dist/reconnection-manager/index.js.map +1 -1
- package/dist/recording-controller/index.js +21 -2
- package/dist/recording-controller/index.js.map +1 -1
- package/dist/recording-controller/util.js +9 -8
- package/dist/recording-controller/util.js.map +1 -1
- package/dist/roap/index.js +62 -35
- package/dist/roap/index.js.map +1 -1
- package/dist/roap/request.js +112 -97
- package/dist/roap/request.js.map +1 -1
- package/dist/roap/turnDiscovery.js +95 -38
- package/dist/roap/turnDiscovery.js.map +1 -1
- package/dist/rtcMetrics/constants.js +12 -0
- package/dist/rtcMetrics/constants.js.map +1 -0
- package/dist/rtcMetrics/index.js +142 -0
- package/dist/rtcMetrics/index.js.map +1 -0
- package/dist/statsAnalyzer/index.js +181 -214
- package/dist/statsAnalyzer/index.js.map +1 -1
- package/dist/statsAnalyzer/mqaUtil.js +22 -18
- package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
- package/dist/types/annotation/annotation.types.d.ts +42 -0
- package/dist/types/annotation/constants.d.ts +31 -0
- package/dist/types/annotation/index.d.ts +117 -0
- package/dist/types/breakouts/edit-lock-error.d.ts +15 -0
- package/dist/types/breakouts/events.d.ts +8 -0
- package/dist/types/breakouts/utils.d.ts +14 -0
- package/dist/types/common/errors/no-meeting-info.d.ts +14 -0
- package/dist/types/common/errors/reclaim-host-role-errors.d.ts +60 -0
- package/dist/types/common/errors/webex-errors.d.ts +25 -1
- package/dist/types/common/logs/request.d.ts +2 -0
- package/dist/types/common/queue.d.ts +9 -7
- package/dist/types/config.d.ts +2 -7
- package/dist/types/constants.d.ts +201 -30
- package/dist/types/controls-options-manager/enums.d.ts +11 -1
- package/dist/types/controls-options-manager/index.d.ts +17 -1
- package/dist/types/controls-options-manager/types.d.ts +43 -0
- package/dist/types/controls-options-manager/util.d.ts +1 -7
- package/dist/types/index.d.ts +6 -4
- package/dist/types/interpretation/collection.d.ts +5 -0
- package/dist/types/interpretation/index.d.ts +5 -0
- package/dist/types/interpretation/siLanguage.d.ts +5 -0
- package/dist/types/locus-info/index.d.ts +57 -4
- package/dist/types/locus-info/parser.d.ts +66 -6
- package/dist/types/media/index.d.ts +2 -0
- package/dist/types/media/properties.d.ts +34 -48
- package/dist/types/mediaQualityMetrics/config.d.ts +0 -128
- package/dist/types/meeting/in-meeting-actions.d.ts +86 -2
- package/dist/types/meeting/index.d.ts +506 -512
- package/dist/types/meeting/locusMediaRequest.d.ts +74 -0
- package/dist/types/meeting/muteState.d.ts +93 -25
- package/dist/types/meeting/request.d.ts +72 -43
- package/dist/types/meeting/util.d.ts +101 -1
- package/dist/types/meeting-info/index.d.ts +13 -1
- package/dist/types/meeting-info/meeting-info-v2.d.ts +31 -1
- package/dist/types/meetings/collection.d.ts +17 -0
- package/dist/types/meetings/index.d.ts +91 -21
- package/dist/types/meetings/meetings.types.d.ts +4 -0
- package/dist/types/member/index.d.ts +14 -0
- package/dist/types/member/types.d.ts +32 -0
- package/dist/types/members/collection.d.ts +5 -0
- package/dist/types/members/index.d.ts +35 -2
- package/dist/types/members/request.d.ts +73 -9
- package/dist/types/members/types.d.ts +25 -0
- package/dist/types/members/util.d.ts +214 -1
- package/dist/types/metrics/constants.d.ts +15 -4
- package/dist/types/metrics/index.d.ts +4 -111
- package/dist/types/multistream/mediaRequestManager.d.ts +72 -5
- package/dist/types/multistream/receiveSlot.d.ts +13 -11
- package/dist/types/multistream/receiveSlotManager.d.ts +14 -4
- package/dist/types/multistream/remoteMedia.d.ts +8 -29
- package/dist/types/multistream/remoteMediaGroup.d.ts +0 -9
- package/dist/types/multistream/remoteMediaManager.d.ts +46 -2
- package/dist/types/multistream/sendSlotManager.d.ts +61 -0
- package/dist/types/reachability/clusterReachability.d.ts +109 -0
- package/dist/types/reachability/index.d.ts +60 -95
- package/dist/types/reachability/request.d.ts +7 -3
- package/dist/types/reachability/util.d.ts +8 -0
- package/dist/types/reconnection-manager/index.d.ts +19 -0
- package/dist/types/recording-controller/index.d.ts +15 -1
- package/dist/types/recording-controller/util.d.ts +5 -4
- package/dist/types/roap/index.d.ts +2 -1
- package/dist/types/roap/request.d.ts +15 -11
- package/dist/types/roap/turnDiscovery.d.ts +21 -3
- package/dist/types/rtcMetrics/constants.d.ts +4 -0
- package/dist/types/rtcMetrics/index.d.ts +54 -0
- package/dist/types/statsAnalyzer/index.d.ts +29 -11
- package/dist/types/webinar/collection.d.ts +16 -0
- package/dist/types/webinar/index.d.ts +5 -0
- package/dist/webinar/collection.js +44 -0
- package/dist/webinar/collection.js.map +1 -0
- package/dist/webinar/index.js +69 -0
- package/dist/webinar/index.js.map +1 -0
- package/package.json +22 -19
- package/src/annotation/annotation.types.ts +50 -0
- package/src/annotation/constants.ts +36 -0
- package/src/annotation/index.ts +328 -0
- package/src/breakouts/README.md +42 -12
- package/src/breakouts/breakout.ts +67 -9
- package/src/breakouts/edit-lock-error.ts +25 -0
- package/src/breakouts/events.ts +56 -0
- package/src/breakouts/index.ts +592 -20
- package/src/breakouts/utils.ts +42 -0
- package/src/common/errors/no-meeting-info.ts +24 -0
- package/src/common/errors/reclaim-host-role-errors.ts +134 -0
- package/src/common/errors/webex-errors.ts +44 -2
- package/src/common/logs/logger-proxy.ts +1 -1
- package/src/common/logs/request.ts +5 -1
- package/src/common/queue.ts +22 -8
- package/src/config.ts +4 -9
- package/src/constants.ts +224 -20
- package/src/controls-options-manager/enums.ts +12 -0
- package/src/controls-options-manager/index.ts +116 -21
- package/src/controls-options-manager/types.ts +59 -0
- package/src/controls-options-manager/util.ts +294 -14
- package/src/index.ts +40 -0
- package/src/interpretation/README.md +60 -0
- package/src/interpretation/collection.ts +19 -0
- package/src/interpretation/index.ts +332 -0
- package/src/interpretation/siLanguage.ts +18 -0
- package/src/locus-info/controlsUtils.ts +108 -0
- package/src/locus-info/index.ts +413 -59
- package/src/locus-info/infoUtils.ts +10 -2
- package/src/locus-info/mediaSharesUtils.ts +64 -0
- package/src/locus-info/parser.ts +258 -47
- package/src/locus-info/selfUtils.ts +81 -5
- package/src/media/index.ts +102 -122
- package/src/media/properties.ts +87 -110
- package/src/mediaQualityMetrics/config.ts +0 -135
- package/src/meeting/in-meeting-actions.ts +171 -3
- package/src/meeting/index.ts +3276 -2555
- package/src/meeting/locusMediaRequest.ts +313 -0
- package/src/meeting/muteState.ts +223 -136
- package/src/meeting/request.ts +177 -121
- package/src/meeting/util.ts +588 -394
- package/src/meeting-info/index.ts +81 -8
- package/src/meeting-info/meeting-info-v2.ts +170 -14
- package/src/meeting-info/util.ts +1 -1
- package/src/meeting-info/utilv2.ts +23 -23
- package/src/meetings/collection.ts +33 -0
- package/src/meetings/index.ts +454 -125
- package/src/meetings/meetings.types.ts +12 -0
- package/src/meetings/request.ts +2 -0
- package/src/meetings/util.ts +80 -11
- package/src/member/index.ts +58 -0
- package/src/member/types.ts +38 -0
- package/src/member/util.ts +141 -25
- package/src/members/collection.ts +8 -0
- package/src/members/index.ts +134 -8
- package/src/members/request.ts +97 -17
- package/src/members/types.ts +29 -0
- package/src/members/util.ts +333 -240
- package/src/metrics/constants.ts +15 -4
- package/src/metrics/index.ts +1 -469
- package/src/multistream/mediaRequestManager.ts +277 -82
- package/src/multistream/receiveSlot.ts +31 -17
- package/src/multistream/receiveSlotManager.ts +34 -24
- package/src/multistream/remoteMedia.ts +27 -2
- package/src/multistream/remoteMediaGroup.ts +59 -0
- package/src/multistream/remoteMediaManager.ts +148 -30
- package/src/multistream/sendSlotManager.ts +170 -0
- package/src/reachability/clusterReachability.ts +320 -0
- package/src/reachability/index.ts +236 -342
- package/src/reachability/request.ts +17 -8
- package/src/reachability/util.ts +24 -0
- package/src/reconnection-manager/index.ts +128 -106
- package/src/recording-controller/index.ts +20 -3
- package/src/recording-controller/util.ts +26 -9
- package/src/roap/index.ts +63 -32
- package/src/roap/request.ts +100 -104
- package/src/roap/turnDiscovery.ts +48 -26
- package/src/rtcMetrics/constants.ts +3 -0
- package/src/rtcMetrics/index.ts +124 -0
- package/src/statsAnalyzer/index.ts +218 -289
- package/src/statsAnalyzer/mqaUtil.ts +28 -30
- package/src/webinar/collection.ts +31 -0
- package/src/webinar/index.ts +62 -0
- package/test/integration/spec/converged-space-meetings.js +60 -3
- package/test/integration/spec/journey.js +320 -261
- package/test/integration/spec/space-meeting.js +76 -3
- package/test/unit/spec/annotation/index.ts +418 -0
- package/test/unit/spec/breakouts/breakout.ts +118 -28
- package/test/unit/spec/breakouts/edit-lock-error.ts +30 -0
- package/test/unit/spec/breakouts/events.ts +89 -0
- package/test/unit/spec/breakouts/index.ts +1395 -69
- package/test/unit/spec/breakouts/utils.js +52 -1
- package/test/unit/spec/common/queue.js +31 -2
- package/test/unit/spec/controls-options-manager/index.js +163 -0
- package/test/unit/spec/controls-options-manager/util.js +576 -60
- package/test/unit/spec/fixture/locus.js +1 -0
- package/test/unit/spec/interpretation/collection.ts +15 -0
- package/test/unit/spec/interpretation/index.ts +589 -0
- package/test/unit/spec/interpretation/siLanguage.ts +28 -0
- package/test/unit/spec/locus-info/controlsUtils.js +316 -43
- package/test/unit/spec/locus-info/index.js +1304 -33
- package/test/unit/spec/locus-info/infoUtils.js +37 -15
- package/test/unit/spec/locus-info/lib/SeqCmp.json +16 -0
- package/test/unit/spec/locus-info/mediaSharesUtils.ts +32 -0
- package/test/unit/spec/locus-info/parser.js +116 -35
- package/test/unit/spec/locus-info/selfConstant.js +27 -4
- package/test/unit/spec/locus-info/selfUtils.js +208 -17
- package/test/unit/spec/media/index.ts +120 -37
- package/test/unit/spec/media/properties.ts +2 -2
- package/test/unit/spec/meeting/in-meeting-actions.ts +85 -3
- package/test/unit/spec/meeting/index.js +5849 -2014
- package/test/unit/spec/meeting/locusMediaRequest.ts +442 -0
- package/test/unit/spec/meeting/muteState.js +402 -213
- package/test/unit/spec/meeting/request.js +483 -49
- package/test/unit/spec/meeting/utils.js +679 -64
- package/test/unit/spec/meeting-info/index.js +300 -0
- package/test/unit/spec/meeting-info/meetinginfov2.js +526 -5
- package/test/unit/spec/meeting-info/utilv2.js +21 -0
- package/test/unit/spec/meetings/collection.js +26 -0
- package/test/unit/spec/meetings/index.js +1231 -212
- package/test/unit/spec/meetings/utils.js +202 -2
- package/test/unit/spec/member/index.js +61 -6
- package/test/unit/spec/member/util.js +510 -34
- package/test/unit/spec/members/index.js +432 -1
- package/test/unit/spec/members/request.js +206 -27
- package/test/unit/spec/members/utils.js +210 -0
- package/test/unit/spec/metrics/index.js +1 -50
- package/test/unit/spec/multistream/mediaRequestManager.ts +776 -162
- package/test/unit/spec/multistream/receiveSlot.ts +28 -20
- package/test/unit/spec/multistream/receiveSlotManager.ts +32 -30
- package/test/unit/spec/multistream/remoteMedia.ts +30 -0
- package/test/unit/spec/multistream/remoteMediaGroup.ts +266 -0
- package/test/unit/spec/multistream/remoteMediaManager.ts +326 -0
- package/test/unit/spec/multistream/sendSlotManager.ts +242 -0
- package/test/unit/spec/reachability/clusterReachability.ts +279 -0
- package/test/unit/spec/reachability/index.ts +486 -13
- package/test/unit/spec/reachability/request.js +68 -0
- package/test/unit/spec/reachability/util.ts +40 -0
- package/test/unit/spec/reconnection-manager/index.js +117 -11
- package/test/unit/spec/recording-controller/index.js +294 -218
- package/test/unit/spec/recording-controller/util.js +223 -96
- package/test/unit/spec/roap/index.ts +174 -63
- package/test/unit/spec/roap/request.ts +226 -85
- package/test/unit/spec/roap/turnDiscovery.ts +76 -34
- package/test/unit/spec/rtcMetrics/index.ts +93 -0
- package/test/unit/spec/stats-analyzer/index.js +231 -7
- package/test/unit/spec/webinar/collection.ts +13 -0
- package/test/unit/spec/webinar/index.ts +60 -0
- package/test/utils/integrationTestUtils.js +46 -0
- package/test/utils/testUtils.js +0 -52
- package/dist/meeting/effectsState.js +0 -262
- package/dist/meeting/effectsState.js.map +0 -1
- package/dist/metrics/config.js +0 -289
- package/dist/metrics/config.js.map +0 -1
- package/dist/types/meeting/effectsState.d.ts +0 -42
- package/dist/types/metrics/config.d.ts +0 -169
- package/src/index.js +0 -16
- package/src/meeting/effectsState.ts +0 -211
- package/src/metrics/config.ts +0 -485
- package/test/unit/spec/meeting/effectsState.js +0 -285
|
@@ -139,6 +139,20 @@ export declare class RemoteMediaManager extends EventsScope {
|
|
|
139
139
|
* @returns {LayoutId}
|
|
140
140
|
*/
|
|
141
141
|
getLayoutId(): LayoutId | undefined;
|
|
142
|
+
/**
|
|
143
|
+
* sets the preferLiveVideo
|
|
144
|
+
*/
|
|
145
|
+
setPreferLiveVideo(preferLiveVideo: boolean): void;
|
|
146
|
+
/**
|
|
147
|
+
* Sets CSIs for multiple RemoteMedia instances belonging to RemoteMediaGroup.
|
|
148
|
+
* For each entry in the remoteMediaCsis array:
|
|
149
|
+
* - if csi is specified, the RemoteMedia instance is pinned to that CSI
|
|
150
|
+
* - if csi is undefined, the RemoteMedia instance is unpinned
|
|
151
|
+
*/
|
|
152
|
+
setActiveSpeakerCsis(remoteMediaCsis: {
|
|
153
|
+
remoteMedia: RemoteMedia;
|
|
154
|
+
csi?: number;
|
|
155
|
+
}[]): void;
|
|
142
156
|
/**
|
|
143
157
|
* Creates the audio slots
|
|
144
158
|
*/
|
|
@@ -161,9 +175,39 @@ export declare class RemoteMediaManager extends EventsScope {
|
|
|
161
175
|
*/
|
|
162
176
|
private releaseUnusedVideoSlots;
|
|
163
177
|
/**
|
|
164
|
-
* Allocates receive slots to all video panes
|
|
178
|
+
* Allocates receive slots to all active speaker video panes
|
|
179
|
+
* in the current selected layout.
|
|
180
|
+
*
|
|
181
|
+
* Allocation tries to keep the same order of the slots between the previous
|
|
182
|
+
* layout and the new one. Sorting helps making sure that highest priority slots
|
|
183
|
+
* go in the same order in the new layout.
|
|
184
|
+
*/
|
|
185
|
+
private allocateSlotsToActiveSpeakerPaneGroups;
|
|
186
|
+
/**
|
|
187
|
+
* Allocates receive slots to all receiver selected video panes
|
|
188
|
+
* in the current selected layout
|
|
189
|
+
*/
|
|
190
|
+
private allocateSlotsToReceiverSelectedVideoPaneGroups;
|
|
191
|
+
/**
|
|
192
|
+
* Ensures that we have enough slots for the current layout.
|
|
193
|
+
*/
|
|
194
|
+
private refillRequiredSlotsIfNeeded;
|
|
195
|
+
/**
|
|
196
|
+
* Move all active speaker slots to "unused"
|
|
197
|
+
*/
|
|
198
|
+
private trimActiveSpeakerSlots;
|
|
199
|
+
/**
|
|
200
|
+
* Logs the state of the receive slots
|
|
165
201
|
*/
|
|
166
|
-
private
|
|
202
|
+
private logMainVideoReceiveSlots;
|
|
203
|
+
/** logs main audio slots */
|
|
204
|
+
private logMainAudioReceiveSlots;
|
|
205
|
+
/** logs slides video slots */
|
|
206
|
+
private logSlidesVideoReceiveSlots;
|
|
207
|
+
/** logs slides audio slots */
|
|
208
|
+
private logSlidesAudioReceiveSlots;
|
|
209
|
+
/** Logs all current receive slots */
|
|
210
|
+
logAllReceiveSlots(): void;
|
|
167
211
|
/**
|
|
168
212
|
* Makes sure we have the right number of receive slots created for the current layout
|
|
169
213
|
* and allocates them to the right video panes / pane groups
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { SendSlot, MediaType, LocalStream, MultistreamRoapMediaConnection } from '@webex/internal-media-core';
|
|
2
|
+
export default class SendSlotManager {
|
|
3
|
+
private readonly slots;
|
|
4
|
+
private readonly LoggerProxy;
|
|
5
|
+
constructor(LoggerProxy: any);
|
|
6
|
+
/**
|
|
7
|
+
* This method is used to create a sendSlot for the given mediaType and returns the created sendSlot
|
|
8
|
+
* @param {MultistreamRoapMediaConnection} mediaConnection MultistreamRoapMediaConnection for which a sendSlot needs to be created
|
|
9
|
+
* @param {MediaType} mediaType MediaType for which a sendSlot needs to be created (AUDIO_MAIN/VIDEO_MAIN/AUDIO_SLIDES/VIDEO_SLIDES)
|
|
10
|
+
* @param {boolean} active This is optional boolean to set the active state of the sendSlot. Default is true
|
|
11
|
+
* @returns {SendSlot} slot The created sendSlot
|
|
12
|
+
*/
|
|
13
|
+
createSlot(mediaConnection: MultistreamRoapMediaConnection, mediaType: MediaType, active?: boolean): SendSlot;
|
|
14
|
+
/**
|
|
15
|
+
* This method is used to retrieve the sendSlot for the given mediaType
|
|
16
|
+
* @param {MediaType} mediaType of which the slot needs to be retrieved
|
|
17
|
+
* @returns {SendSlot}
|
|
18
|
+
*/
|
|
19
|
+
getSlot(mediaType: MediaType): SendSlot;
|
|
20
|
+
/**
|
|
21
|
+
* This method publishes the given stream to the sendSlot for the given mediaType
|
|
22
|
+
* @param {MediaType} mediaType MediaType of the sendSlot to which a stream needs to be published (AUDIO_MAIN/VIDEO_MAIN/AUDIO_SLIDES/VIDEO_SLIDES)
|
|
23
|
+
* @param {LocalStream} stream LocalStream to be published
|
|
24
|
+
* @returns {Promise<void>}
|
|
25
|
+
*/
|
|
26
|
+
publishStream(mediaType: MediaType, stream: LocalStream): Promise<void>;
|
|
27
|
+
/**
|
|
28
|
+
* This method unpublishes the stream from the sendSlot of the given mediaType
|
|
29
|
+
* @param {MediaType} mediaType MediaType of the sendSlot from which a stream needs to be unpublished (AUDIO_MAIN/VIDEO_MAIN/AUDIO_SLIDES/VIDEO_SLIDES)
|
|
30
|
+
* @returns {Promise<void>}
|
|
31
|
+
*/
|
|
32
|
+
unpublishStream(mediaType: MediaType): Promise<void>;
|
|
33
|
+
/**
|
|
34
|
+
* This method is used to set the active state of the sendSlot for the given mediaType
|
|
35
|
+
* @param {MediaType} mediaType The MediaType of the sendSlot for which the active state needs to be set (AUDIO_MAIN/VIDEO_MAIN/AUDIO_SLIDES/VIDEO_SLIDES)
|
|
36
|
+
* @param {boolean} active The boolean to set the active state of the sendSlot. Default is true
|
|
37
|
+
* @returns {void}
|
|
38
|
+
*/
|
|
39
|
+
setActive(mediaType: MediaType, active?: boolean): void;
|
|
40
|
+
/**
|
|
41
|
+
* This method is used to set the codec parameters for the sendSlot of the given mediaType
|
|
42
|
+
* @param {MediaType} mediaType MediaType of the sendSlot for which the codec parameters needs to be set (AUDIO_MAIN/VIDEO_MAIN/AUDIO_SLIDES/VIDEO_SLIDES)
|
|
43
|
+
* @param {Object} codecParameters
|
|
44
|
+
* @returns {Promise<void>}
|
|
45
|
+
*/
|
|
46
|
+
setCodecParameters(mediaType: MediaType, codecParameters: {
|
|
47
|
+
[key: string]: string | undefined;
|
|
48
|
+
}): Promise<void>;
|
|
49
|
+
/**
|
|
50
|
+
* This method is used to delete the codec parameters for the sendSlot of the given mediaType
|
|
51
|
+
* @param {MediaType} mediaType MediaType of the sendSlot for which the codec parameters needs to be deleted (AUDIO_MAIN/VIDEO_MAIN/AUDIO_SLIDES/VIDEO_SLIDES)
|
|
52
|
+
* @param {Array<String>} parameters Array of keys of the codec parameters to be deleted
|
|
53
|
+
* @returns {Promise<void>}
|
|
54
|
+
*/
|
|
55
|
+
deleteCodecParameters(mediaType: MediaType, parameters: string[]): Promise<void>;
|
|
56
|
+
/**
|
|
57
|
+
* This method is used to reset the SendSlotsManager by deleting all the sendSlots
|
|
58
|
+
* @returns {undefined}
|
|
59
|
+
*/
|
|
60
|
+
reset(): void;
|
|
61
|
+
}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { ClusterNode } from './request';
|
|
2
|
+
export type TransportResult = {
|
|
3
|
+
result: 'reachable' | 'unreachable' | 'untested';
|
|
4
|
+
latencyInMilliseconds?: number;
|
|
5
|
+
clientMediaIPs?: string[];
|
|
6
|
+
};
|
|
7
|
+
export type ClusterReachabilityResult = {
|
|
8
|
+
udp: TransportResult;
|
|
9
|
+
tcp: TransportResult;
|
|
10
|
+
xtls: TransportResult;
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* A class that handles reachability checks for a single cluster.
|
|
14
|
+
*/
|
|
15
|
+
export declare class ClusterReachability {
|
|
16
|
+
private numUdpUrls;
|
|
17
|
+
private numTcpUrls;
|
|
18
|
+
private result;
|
|
19
|
+
private pc?;
|
|
20
|
+
private defer;
|
|
21
|
+
private startTimestamp;
|
|
22
|
+
readonly isVideoMesh: boolean;
|
|
23
|
+
readonly name: any;
|
|
24
|
+
/**
|
|
25
|
+
* Constructor for ClusterReachability
|
|
26
|
+
* @param {string} name cluster name
|
|
27
|
+
* @param {ClusterNode} clusterInfo information about the media cluster
|
|
28
|
+
*/
|
|
29
|
+
constructor(name: string, clusterInfo: ClusterNode);
|
|
30
|
+
/**
|
|
31
|
+
* Gets total elapsed time, can be called only after start() is called
|
|
32
|
+
* @returns {Number} Milliseconds
|
|
33
|
+
*/
|
|
34
|
+
private getElapsedTime;
|
|
35
|
+
/**
|
|
36
|
+
* Generate peerConnection config settings
|
|
37
|
+
* @param {ClusterNode} cluster
|
|
38
|
+
* @returns {RTCConfiguration} peerConnectionConfig
|
|
39
|
+
*/
|
|
40
|
+
private buildPeerConnectionConfig;
|
|
41
|
+
/**
|
|
42
|
+
* Creates an RTCPeerConnection
|
|
43
|
+
* @param {ClusterNode} clusterInfo information about the media cluster
|
|
44
|
+
* @returns {RTCPeerConnection} peerConnection
|
|
45
|
+
*/
|
|
46
|
+
private createPeerConnection;
|
|
47
|
+
/**
|
|
48
|
+
* @returns {ClusterReachabilityResult} reachability result for this cluster
|
|
49
|
+
*/
|
|
50
|
+
getResult(): ClusterReachabilityResult;
|
|
51
|
+
/**
|
|
52
|
+
* Closes the peerConnection
|
|
53
|
+
*
|
|
54
|
+
* @returns {void}
|
|
55
|
+
*/
|
|
56
|
+
private closePeerConnection;
|
|
57
|
+
/**
|
|
58
|
+
* Resolves the defer, indicating that reachability checks for this cluster are completed
|
|
59
|
+
*
|
|
60
|
+
* @returns {void}
|
|
61
|
+
*/
|
|
62
|
+
private finishReachabilityCheck;
|
|
63
|
+
/**
|
|
64
|
+
* Adds public IP (client media IPs)
|
|
65
|
+
* @param {string} protocol
|
|
66
|
+
* @param {string} publicIP
|
|
67
|
+
* @returns {void}
|
|
68
|
+
*/
|
|
69
|
+
private addPublicIP;
|
|
70
|
+
/**
|
|
71
|
+
* Registers a listener for the iceGatheringStateChange event
|
|
72
|
+
*
|
|
73
|
+
* @returns {void}
|
|
74
|
+
*/
|
|
75
|
+
private registerIceGatheringStateChangeListener;
|
|
76
|
+
/**
|
|
77
|
+
* Checks if we have the results for all the protocols (UDP and TCP)
|
|
78
|
+
*
|
|
79
|
+
* @returns {boolean} true if we have all results, false otherwise
|
|
80
|
+
*/
|
|
81
|
+
private haveWeGotAllResults;
|
|
82
|
+
/**
|
|
83
|
+
* Stores the latency in the result for the given protocol and marks it as reachable
|
|
84
|
+
*
|
|
85
|
+
* @param {string} protocol
|
|
86
|
+
* @param {number} latency
|
|
87
|
+
* @returns {void}
|
|
88
|
+
*/
|
|
89
|
+
private storeLatencyResult;
|
|
90
|
+
/**
|
|
91
|
+
* Registers a listener for the icecandidate event
|
|
92
|
+
*
|
|
93
|
+
* @returns {void}
|
|
94
|
+
*/
|
|
95
|
+
private registerIceCandidateListener;
|
|
96
|
+
/**
|
|
97
|
+
* Starts the process of doing UDP and TCP reachability checks on the media cluster.
|
|
98
|
+
* XTLS reachability checking is not supported.
|
|
99
|
+
*
|
|
100
|
+
* @returns {Promise}
|
|
101
|
+
*/
|
|
102
|
+
start(): Promise<ClusterReachabilityResult>;
|
|
103
|
+
/**
|
|
104
|
+
* Starts the process of gathering ICE candidates
|
|
105
|
+
*
|
|
106
|
+
* @returns {Promise} promise that's resolved once reachability checks for this cluster are completed or timeout is reached
|
|
107
|
+
*/
|
|
108
|
+
private gatherIceCandidates;
|
|
109
|
+
}
|
|
@@ -1,6 +1,37 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
|
|
3
3
|
*/
|
|
4
|
+
import ReachabilityRequest from './request';
|
|
5
|
+
import { ClusterReachability, ClusterReachabilityResult } from './clusterReachability';
|
|
6
|
+
export type ReachabilityMetrics = {
|
|
7
|
+
reachability_public_udp_success: number;
|
|
8
|
+
reachability_public_udp_failed: number;
|
|
9
|
+
reachability_public_tcp_success: number;
|
|
10
|
+
reachability_public_tcp_failed: number;
|
|
11
|
+
reachability_vmn_udp_success: number;
|
|
12
|
+
reachability_vmn_udp_failed: number;
|
|
13
|
+
reachability_vmn_tcp_success: number;
|
|
14
|
+
reachability_vmn_tcp_failed: number;
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* This is the type that matches what backend expects us to send to them. It is a bit weird, because
|
|
18
|
+
* it uses strings instead of booleans and numbers, but that's what they require.
|
|
19
|
+
*/
|
|
20
|
+
export type TransportResultForBackend = {
|
|
21
|
+
reachable?: 'true' | 'false';
|
|
22
|
+
latencyInMilliseconds?: string;
|
|
23
|
+
clientMediaIPs?: string[];
|
|
24
|
+
untested?: 'true';
|
|
25
|
+
};
|
|
26
|
+
export type ReachabilityResultForBackend = {
|
|
27
|
+
udp: TransportResultForBackend;
|
|
28
|
+
tcp: TransportResultForBackend;
|
|
29
|
+
xtls: TransportResultForBackend;
|
|
30
|
+
};
|
|
31
|
+
export type ReachabilityResultsForBackend = Record<string, ReachabilityResultForBackend>;
|
|
32
|
+
export type ReachabilityResults = Record<string, ClusterReachabilityResult & {
|
|
33
|
+
isVideoMesh?: boolean;
|
|
34
|
+
}>;
|
|
4
35
|
/**
|
|
5
36
|
* @class Reachability
|
|
6
37
|
* @export
|
|
@@ -8,8 +39,10 @@
|
|
|
8
39
|
export default class Reachability {
|
|
9
40
|
namespace: string;
|
|
10
41
|
webex: object;
|
|
11
|
-
reachabilityRequest:
|
|
12
|
-
|
|
42
|
+
reachabilityRequest: ReachabilityRequest;
|
|
43
|
+
clusterReachability: {
|
|
44
|
+
[key: string]: ClusterReachability;
|
|
45
|
+
};
|
|
13
46
|
/**
|
|
14
47
|
* Creates an instance of Reachability.
|
|
15
48
|
* @param {object} webex
|
|
@@ -17,87 +50,45 @@ export default class Reachability {
|
|
|
17
50
|
*/
|
|
18
51
|
constructor(webex: object);
|
|
19
52
|
/**
|
|
20
|
-
*
|
|
21
|
-
* @returns {
|
|
22
|
-
* @public
|
|
23
|
-
* @async
|
|
24
|
-
* @memberof Reachability
|
|
25
|
-
*/
|
|
26
|
-
gatherReachability(): Promise<unknown>;
|
|
27
|
-
/**
|
|
28
|
-
* fetches reachability data and checks for cluster reachability
|
|
29
|
-
* @returns {boolean}
|
|
53
|
+
* Gets a list of media clusters from the backend and performs reachability checks on all the clusters
|
|
54
|
+
* @returns {Promise<ReachabilityResults>} reachability results
|
|
30
55
|
* @public
|
|
31
56
|
* @memberof Reachability
|
|
32
57
|
*/
|
|
33
|
-
|
|
58
|
+
gatherReachability(): Promise<ReachabilityResults>;
|
|
34
59
|
/**
|
|
35
|
-
*
|
|
36
|
-
*
|
|
37
|
-
*
|
|
38
|
-
* @
|
|
39
|
-
* @memberof Reachability
|
|
60
|
+
* Returns statistics about last reachability results. The returned value is an object
|
|
61
|
+
* with a flat list of properties so that it can be easily sent with metrics
|
|
62
|
+
*
|
|
63
|
+
* @returns {Promise} Promise with metrics values, it never rejects/throws.
|
|
40
64
|
*/
|
|
41
|
-
|
|
65
|
+
getReachabilityMetrics(): Promise<ReachabilityMetrics>;
|
|
42
66
|
/**
|
|
43
|
-
*
|
|
44
|
-
* @param {
|
|
45
|
-
* @returns {
|
|
46
|
-
* @private
|
|
47
|
-
* @memberof Reachability
|
|
67
|
+
* Maps our internal transport result to the format that backend expects
|
|
68
|
+
* @param {TransportResult} transportResult
|
|
69
|
+
* @returns {TransportResultForBackend}
|
|
48
70
|
*/
|
|
49
|
-
private
|
|
71
|
+
private mapTransportResultToBackendDataFormat;
|
|
50
72
|
/**
|
|
51
|
-
*
|
|
52
|
-
*
|
|
53
|
-
* @returns {
|
|
54
|
-
* @private
|
|
55
|
-
* @memberof Reachability
|
|
73
|
+
* Reachability results as an object in the format that backend expects
|
|
74
|
+
*
|
|
75
|
+
* @returns {any} reachability results that need to be sent to the backend
|
|
56
76
|
*/
|
|
57
|
-
|
|
77
|
+
getReachabilityResults(): Promise<ReachabilityResultsForBackend | undefined>;
|
|
58
78
|
/**
|
|
59
|
-
*
|
|
60
|
-
* @
|
|
61
|
-
* @
|
|
62
|
-
* @private
|
|
79
|
+
* fetches reachability data and checks for cluster reachability
|
|
80
|
+
* @returns {boolean}
|
|
81
|
+
* @public
|
|
63
82
|
* @memberof Reachability
|
|
64
83
|
*/
|
|
65
|
-
|
|
84
|
+
isAnyPublicClusterReachable(): Promise<boolean>;
|
|
66
85
|
/**
|
|
67
86
|
* Get list of all unreachable clusters
|
|
68
87
|
* @returns {array} Unreachable clusters
|
|
69
88
|
* @private
|
|
70
89
|
* @memberof Reachability
|
|
71
90
|
*/
|
|
72
|
-
private
|
|
73
|
-
/**
|
|
74
|
-
* Attach an event handler for the icegatheringstatechange
|
|
75
|
-
* event and measure latency.
|
|
76
|
-
* @param {RTCPeerConnection} peerConnection
|
|
77
|
-
* @returns {undefined}
|
|
78
|
-
* @private
|
|
79
|
-
* @memberof Reachability
|
|
80
|
-
*/
|
|
81
|
-
private handleIceGatheringStateChange;
|
|
82
|
-
/**
|
|
83
|
-
* Attach an event handler for the icecandidate
|
|
84
|
-
* event and measure latency.
|
|
85
|
-
* @param {RTCPeerConnection} peerConnection
|
|
86
|
-
* @returns {undefined}
|
|
87
|
-
* @private
|
|
88
|
-
* @memberof Reachability
|
|
89
|
-
*/
|
|
90
|
-
private handleOnIceCandidate;
|
|
91
|
-
/**
|
|
92
|
-
* An event handler on an RTCPeerConnection when the state of the ICE
|
|
93
|
-
* candidate gathering process changes. Used to measure connection
|
|
94
|
-
* speed.
|
|
95
|
-
* @private
|
|
96
|
-
* @param {RTCPeerConnection} peerConnection
|
|
97
|
-
* @param {number} timeout
|
|
98
|
-
* @returns {Promise}
|
|
99
|
-
*/
|
|
100
|
-
private iceGatheringState;
|
|
91
|
+
private getUnreachableClusters;
|
|
101
92
|
/**
|
|
102
93
|
* Make a log of unreachable clusters.
|
|
103
94
|
* @returns {undefined}
|
|
@@ -106,35 +97,9 @@ export default class Reachability {
|
|
|
106
97
|
*/
|
|
107
98
|
private logUnreachableClusters;
|
|
108
99
|
/**
|
|
109
|
-
*
|
|
110
|
-
* @param {
|
|
111
|
-
* @returns {
|
|
112
|
-
* @private
|
|
113
|
-
* @memberof Reachability
|
|
114
|
-
*/
|
|
115
|
-
private parseIceResultsToReachabilityResults;
|
|
116
|
-
/**
|
|
117
|
-
* fetches reachability data
|
|
118
|
-
* @param {object} clusterList
|
|
119
|
-
* @returns {Promise<localSDPData>} reachability check results
|
|
120
|
-
* @private
|
|
121
|
-
* @memberof Reachability
|
|
122
|
-
*/
|
|
123
|
-
private performReachabilityCheck;
|
|
124
|
-
/**
|
|
125
|
-
* Records latency and closes the peerConnection
|
|
126
|
-
* @param {RTCPeerConnection} peerConnection
|
|
127
|
-
* @param {number} elapsed Latency in milliseconds
|
|
128
|
-
* @returns {undefined}
|
|
129
|
-
* @private
|
|
130
|
-
* @memberof Reachability
|
|
131
|
-
*/
|
|
132
|
-
private setLatencyAndClose;
|
|
133
|
-
/**
|
|
134
|
-
* utility function
|
|
135
|
-
* @returns {undefined}
|
|
136
|
-
* @private
|
|
137
|
-
* @memberof Reachability
|
|
100
|
+
* Performs reachability checks for all clusters
|
|
101
|
+
* @param {ClusterList} clusterList
|
|
102
|
+
* @returns {Promise<ReachabilityResults>} reachability check results
|
|
138
103
|
*/
|
|
139
|
-
private
|
|
104
|
+
private performReachabilityChecks;
|
|
140
105
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { IP_VERSION } from '../constants';
|
|
1
2
|
export interface ClusterNode {
|
|
2
3
|
isVideoMesh: boolean;
|
|
3
4
|
udp: Array<string>;
|
|
@@ -19,12 +20,15 @@ declare class ReachabilityRequest {
|
|
|
19
20
|
*/
|
|
20
21
|
constructor(webex: object);
|
|
21
22
|
/**
|
|
22
|
-
*
|
|
23
|
+
* Gets the cluster information
|
|
23
24
|
*
|
|
24
|
-
* @param {
|
|
25
|
+
* @param {IP_VERSION} ipVersion information about current ip network we're on
|
|
25
26
|
* @returns {Promise}
|
|
26
27
|
*/
|
|
27
|
-
getClusters: () => Promise<
|
|
28
|
+
getClusters: (ipVersion?: IP_VERSION) => Promise<{
|
|
29
|
+
clusters: ClusterList;
|
|
30
|
+
joinCookie: any;
|
|
31
|
+
}>;
|
|
28
32
|
/**
|
|
29
33
|
* gets remote SDP For Clusters
|
|
30
34
|
* @param {Object} localSDPList localSDPs for the cluster
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Converts a stun url to a turn url
|
|
3
|
+
*
|
|
4
|
+
* @param {string} stunUrl url of a stun server
|
|
5
|
+
* @param {'tcp'|'udp'} protocol what protocol to use for the turn server
|
|
6
|
+
* @returns {string} url of a turn server
|
|
7
|
+
*/
|
|
8
|
+
export declare function convertStunUrlToTurn(stunUrl: string, protocol: 'udp' | 'tcp'): string;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
|
|
3
3
|
*/
|
|
4
|
+
import { RECONNECTION_STATE } from '../constants';
|
|
4
5
|
import Meeting from '../meeting';
|
|
5
6
|
/**
|
|
6
7
|
* @export
|
|
@@ -58,12 +59,30 @@ export default class ReconnectionManager {
|
|
|
58
59
|
* @memberof ReconnectionManager
|
|
59
60
|
*/
|
|
60
61
|
cleanUp(): void;
|
|
62
|
+
/**
|
|
63
|
+
* Stop the local share stream.
|
|
64
|
+
*
|
|
65
|
+
* @param {string} reason a {@link SHARE_STOPPED_REASON}
|
|
66
|
+
* @returns {undefined}
|
|
67
|
+
* @private
|
|
68
|
+
* @memberof ReconnectionManager
|
|
69
|
+
*/
|
|
70
|
+
private stopLocalShareStream;
|
|
61
71
|
/**
|
|
62
72
|
* @public
|
|
63
73
|
* @memberof ReconnectionManager
|
|
64
74
|
* @returns {Boolean} true if reconnection operation is in progress
|
|
65
75
|
*/
|
|
66
76
|
isReconnectInProgress(): boolean;
|
|
77
|
+
/**
|
|
78
|
+
* Sets the reconnection status
|
|
79
|
+
*
|
|
80
|
+
* @public
|
|
81
|
+
* @param {RECONNECTION_STATE} status
|
|
82
|
+
* @memberof ReconnectionManager
|
|
83
|
+
* @returns {undefined}
|
|
84
|
+
*/
|
|
85
|
+
setStatus(status: RECONNECTION_STATE): void;
|
|
67
86
|
/**
|
|
68
87
|
* @returns {Boolean}
|
|
69
88
|
* @throws {ReconnectionError}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { SELF_POLICY } from '../constants';
|
|
1
2
|
import MeetingRequest from '../meeting/request';
|
|
2
3
|
/**
|
|
3
4
|
* @description Recording manages the recording functionality of the meeting object, there should only be one instantation of recording per meeting
|
|
@@ -20,6 +21,13 @@ export default class RecordingController {
|
|
|
20
21
|
* @memberof RecordingInfo
|
|
21
22
|
*/
|
|
22
23
|
private displayHints;
|
|
24
|
+
/**
|
|
25
|
+
* @instance
|
|
26
|
+
* @type {Object}
|
|
27
|
+
* @private
|
|
28
|
+
* @memberof RecordingInfo
|
|
29
|
+
*/
|
|
30
|
+
private selfUserPolicies;
|
|
23
31
|
/**
|
|
24
32
|
* @instance
|
|
25
33
|
* @type {string}
|
|
@@ -62,7 +70,6 @@ export default class RecordingController {
|
|
|
62
70
|
});
|
|
63
71
|
/**
|
|
64
72
|
* @param {MeetingRequest} request
|
|
65
|
-
* @param {LocusInfo} info
|
|
66
73
|
* @returns {void}
|
|
67
74
|
* @private
|
|
68
75
|
* @memberof RecordingController
|
|
@@ -94,6 +101,13 @@ export default class RecordingController {
|
|
|
94
101
|
* @memberof RecordingController
|
|
95
102
|
*/
|
|
96
103
|
setDisplayHints(hints: Array<string>): void;
|
|
104
|
+
/**
|
|
105
|
+
* @param {Object} selfUserPolicies
|
|
106
|
+
* @returns {void}
|
|
107
|
+
* @public
|
|
108
|
+
* @memberof RecordingController
|
|
109
|
+
*/
|
|
110
|
+
setUserPolicy(selfUserPolicies: Record<SELF_POLICY, boolean>): void;
|
|
97
111
|
/**
|
|
98
112
|
* @param {string} id
|
|
99
113
|
* @returns {void}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
+
import { SELF_POLICY } from '../constants';
|
|
1
2
|
import RecordingAction from './enums';
|
|
2
3
|
declare const _default: {
|
|
3
|
-
canUserStart: (displayHints: string[]) => boolean;
|
|
4
|
-
canUserPause: (displayHints: string[]) => boolean;
|
|
5
|
-
canUserResume: (displayHints: string[]) => boolean;
|
|
6
|
-
canUserStop: (displayHints: string[]) => boolean;
|
|
4
|
+
canUserStart: (displayHints: string[], userPolicies: Record<SELF_POLICY, boolean>) => boolean;
|
|
5
|
+
canUserPause: (displayHints: string[], userPolicies: Record<SELF_POLICY, boolean>) => boolean;
|
|
6
|
+
canUserResume: (displayHints: string[], userPolicies: Record<SELF_POLICY, boolean>) => boolean;
|
|
7
|
+
canUserStop: (displayHints: string[], userPolicies: Record<SELF_POLICY, boolean>) => boolean;
|
|
7
8
|
deriveRecordingStates: (action: RecordingAction) => {
|
|
8
9
|
recording: boolean;
|
|
9
10
|
paused: boolean;
|
|
@@ -71,7 +71,8 @@ export default class Roap extends StatelessWebexPlugin {
|
|
|
71
71
|
* @param {Meeting} meeting
|
|
72
72
|
* @param {Boolean} isReconnecting should be set to true if this is a new
|
|
73
73
|
* media connection just after a reconnection
|
|
74
|
+
* @param {Boolean} [isForced]
|
|
74
75
|
* @returns {Promise}
|
|
75
76
|
*/
|
|
76
|
-
doTurnDiscovery(meeting: Meeting, isReconnecting: boolean): any;
|
|
77
|
+
doTurnDiscovery(meeting: Meeting, isReconnecting: boolean, isForced?: boolean): any;
|
|
77
78
|
}
|
|
@@ -1,14 +1,19 @@
|
|
|
1
1
|
import { StatelessWebexPlugin } from '@webex/webex-core';
|
|
2
|
+
import { IP_VERSION } from '../constants';
|
|
3
|
+
import { LocusMediaRequest } from '../meeting/locusMediaRequest';
|
|
2
4
|
/**
|
|
3
5
|
* @class RoapRequest
|
|
4
6
|
*/
|
|
5
7
|
export default class RoapRequest extends StatelessWebexPlugin {
|
|
6
8
|
/**
|
|
7
|
-
*
|
|
9
|
+
* Returns reachability data.
|
|
8
10
|
* @param {Object} localSdp
|
|
9
|
-
* @returns {
|
|
11
|
+
* @returns {Object}
|
|
10
12
|
*/
|
|
11
|
-
|
|
13
|
+
attachReachabilityData(localSdp: any): Promise<{
|
|
14
|
+
localSdp: any;
|
|
15
|
+
joinCookie: any;
|
|
16
|
+
}>;
|
|
12
17
|
/**
|
|
13
18
|
* Sends a ROAP message
|
|
14
19
|
* @param {Object} options
|
|
@@ -16,20 +21,19 @@ export default class RoapRequest extends StatelessWebexPlugin {
|
|
|
16
21
|
* @param {String} options.locusSelfUrl
|
|
17
22
|
* @param {String} options.mediaId
|
|
18
23
|
* @param {String} options.correlationId
|
|
19
|
-
* @param {Boolean} options.audioMuted
|
|
20
|
-
* @param {Boolean} options.videoMuted
|
|
21
24
|
* @param {String} options.meetingId
|
|
22
|
-
* @param {
|
|
25
|
+
* @param {IP_VERSION} options.ipVersion only required for offers
|
|
23
26
|
* @returns {Promise} returns the response/failure of the request
|
|
24
27
|
*/
|
|
25
28
|
sendRoap(options: {
|
|
26
29
|
roapMessage: any;
|
|
27
30
|
locusSelfUrl: string;
|
|
28
31
|
mediaId: string;
|
|
29
|
-
correlationId: string;
|
|
30
|
-
audioMuted: boolean;
|
|
31
|
-
videoMuted: boolean;
|
|
32
32
|
meetingId: string;
|
|
33
|
-
|
|
34
|
-
|
|
33
|
+
ipVersion?: IP_VERSION;
|
|
34
|
+
locusMediaRequest?: LocusMediaRequest;
|
|
35
|
+
}): Promise<{
|
|
36
|
+
mediaConnections: any;
|
|
37
|
+
locus: any;
|
|
38
|
+
}>;
|
|
35
39
|
}
|
|
@@ -49,7 +49,24 @@ export default class TurnDiscovery {
|
|
|
49
49
|
* @param {Meeting} meeting
|
|
50
50
|
* @returns {Promise}
|
|
51
51
|
*/
|
|
52
|
-
sendRoapOK(meeting: Meeting): Promise<
|
|
52
|
+
sendRoapOK(meeting: Meeting): Promise<{
|
|
53
|
+
mediaConnections: any;
|
|
54
|
+
locus: any;
|
|
55
|
+
}>;
|
|
56
|
+
/**
|
|
57
|
+
* Gets the reason why reachability is skipped.
|
|
58
|
+
*
|
|
59
|
+
* @param {Meeting} meeting
|
|
60
|
+
* @returns {Promise<string>} Promise with empty string if reachability is not skipped or a reason if it is skipped
|
|
61
|
+
*/
|
|
62
|
+
private getSkipReason;
|
|
63
|
+
/**
|
|
64
|
+
* Checks if TURN discovery is skipped.
|
|
65
|
+
*
|
|
66
|
+
* @param {Meeting} meeting
|
|
67
|
+
* @returns {Boolean} true if TURN discovery is being skipped, false if it is being done
|
|
68
|
+
*/
|
|
69
|
+
isSkipped(meeting: any): Promise<boolean>;
|
|
53
70
|
/**
|
|
54
71
|
* Retrieves TURN server information from the backend by doing
|
|
55
72
|
* a roap message exchange:
|
|
@@ -63,11 +80,12 @@ export default class TurnDiscovery {
|
|
|
63
80
|
* so it works fine no matter if TURN discovery is done or not.
|
|
64
81
|
*
|
|
65
82
|
* @param {Meeting} meeting
|
|
66
|
-
* @param {Boolean} isReconnecting should be set to true if this is a new
|
|
83
|
+
* @param {Boolean} [isReconnecting] should be set to true if this is a new
|
|
67
84
|
* media connection just after a reconnection
|
|
85
|
+
* @param {Boolean} [isForced]
|
|
68
86
|
* @returns {Promise}
|
|
69
87
|
*/
|
|
70
|
-
doTurnDiscovery(meeting: Meeting, isReconnecting?: boolean): Promise<{
|
|
88
|
+
doTurnDiscovery(meeting: Meeting, isReconnecting?: boolean, isForced?: boolean): Promise<{
|
|
71
89
|
turnServerInfo: any;
|
|
72
90
|
turnDiscoverySkippedReason: any;
|
|
73
91
|
}>;
|