@webex/plugin-meetings 3.0.0-beta.40 → 3.0.0-beta.401
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 +58 -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/events.js +45 -0
- package/dist/breakouts/events.js.map +1 -0
- package/dist/breakouts/index.js +625 -123
- package/dist/breakouts/index.js.map +1 -1
- package/dist/breakouts/utils.js +27 -8
- 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 +6 -10
- package/dist/config.js.map +1 -1
- package/dist/constants.js +247 -34
- 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 +116 -2
- package/dist/index.js.map +1 -1
- package/dist/interceptors/index.js +15 -0
- package/dist/interceptors/index.js.map +1 -0
- package/dist/interceptors/locusRetry.js +93 -0
- package/dist/interceptors/locusRetry.js.map +1 -0
- package/dist/interpretation/collection.js +23 -0
- package/dist/interpretation/collection.js.map +1 -0
- package/dist/interpretation/index.js +380 -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 +386 -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 +71 -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 +65 -102
- 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 +135 -330
- 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 +4509 -3000
- 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 +236 -136
- package/dist/meeting/muteState.js.map +1 -1
- package/dist/meeting/request.js +185 -155
- package/dist/meeting/request.js.map +1 -1
- package/dist/meeting/util.js +676 -417
- package/dist/meeting/util.js.map +1 -1
- package/dist/meeting/voicea-meeting.js +172 -0
- package/dist/meeting/voicea-meeting.js.map +1 -0
- 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 +201 -57
- package/dist/meeting-info/meeting-info-v2.js.map +1 -1
- package/dist/meeting-info/util.js +8 -7
- package/dist/meeting-info/util.js.map +1 -1
- package/dist/meeting-info/utilv2.js +44 -40
- 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 +484 -119
- 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 +73 -7
- package/dist/meetings/util.js.map +1 -1
- package/dist/member/index.js +57 -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 +100 -5
- 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 +18 -1
- 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 +223 -32
- package/dist/multistream/mediaRequestManager.js.map +1 -1
- package/dist/multistream/receiveSlot.js +10 -0
- 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 +3 -1
- package/dist/multistream/remoteMedia.js.map +1 -1
- package/dist/multistream/remoteMediaGroup.js +76 -5
- package/dist/multistream/remoteMediaGroup.js.map +1 -1
- package/dist/multistream/remoteMediaManager.js +366 -104
- package/dist/multistream/remoteMediaManager.js.map +1 -1
- package/dist/multistream/sendSlotManager.js +255 -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 +263 -390
- package/dist/reachability/index.js.map +1 -1
- package/dist/reachability/request.js +6 -4
- 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 +266 -202
- 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 +66 -28
- package/dist/roap/index.js.map +1 -1
- package/dist/roap/request.js +48 -64
- package/dist/roap/request.js.map +1 -1
- package/dist/roap/turnDiscovery.js +407 -79
- 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 +179 -0
- package/dist/rtcMetrics/index.js.map +1 -0
- package/dist/statsAnalyzer/index.js +357 -295
- package/dist/statsAnalyzer/index.js.map +1 -1
- package/dist/statsAnalyzer/mqaUtil.js +296 -156
- 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/events.d.ts +8 -0
- package/dist/types/breakouts/utils.d.ts +9 -2
- 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 +204 -32
- 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 -5
- package/dist/types/interceptors/index.d.ts +2 -0
- package/dist/types/interceptors/locusRetry.d.ts +27 -0
- 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 -49
- package/dist/types/mediaQualityMetrics/config.d.ts +99 -223
- package/dist/types/meeting/in-meeting-actions.d.ts +86 -2
- package/dist/types/meeting/index.d.ts +630 -505
- package/dist/types/meeting/locusMediaRequest.d.ts +74 -0
- package/dist/types/meeting/muteState.d.ts +88 -26
- package/dist/types/meeting/request.d.ts +65 -43
- package/dist/types/meeting/util.d.ts +117 -1
- package/dist/types/meeting/voicea-meeting.d.ts +16 -0
- 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 +113 -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 +17 -0
- package/dist/types/metrics/index.d.ts +4 -111
- package/dist/types/multistream/mediaRequestManager.d.ts +72 -3
- package/dist/types/multistream/receiveSlot.d.ts +7 -3
- package/dist/types/multistream/receiveSlotManager.d.ts +14 -4
- package/dist/types/multistream/remoteMedia.d.ts +3 -31
- package/dist/types/multistream/remoteMediaGroup.d.ts +2 -9
- package/dist/types/multistream/remoteMediaManager.d.ts +62 -2
- package/dist/types/multistream/sendSlotManager.d.ts +70 -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 +3 -1
- 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 +11 -2
- package/dist/types/roap/request.d.ts +9 -8
- package/dist/types/roap/turnDiscovery.d.ts +90 -9
- package/dist/types/rtcMetrics/constants.d.ts +4 -0
- package/dist/types/rtcMetrics/index.d.ts +61 -0
- package/dist/types/statsAnalyzer/index.d.ts +34 -12
- package/dist/types/statsAnalyzer/mqaUtil.d.ts +28 -4
- 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 +27 -6
- package/src/breakouts/breakout.ts +67 -9
- package/src/breakouts/events.ts +56 -0
- package/src/breakouts/index.ts +494 -73
- package/src/breakouts/utils.ts +26 -8
- 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 +6 -13
- package/src/constants.ts +234 -22
- 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 +45 -0
- package/src/interceptors/index.ts +3 -0
- package/src/interceptors/locusRetry.ts +67 -0
- package/src/interpretation/README.md +60 -0
- package/src/interpretation/collection.ts +19 -0
- package/src/interpretation/index.ts +349 -0
- package/src/interpretation/siLanguage.ts +18 -0
- package/src/locus-info/controlsUtils.ts +108 -0
- package/src/locus-info/index.ts +417 -59
- package/src/locus-info/infoUtils.ts +10 -2
- package/src/locus-info/mediaSharesUtils.ts +80 -0
- package/src/locus-info/parser.ts +258 -47
- package/src/locus-info/selfUtils.ts +81 -5
- package/src/media/index.ts +100 -108
- package/src/media/properties.ts +88 -117
- package/src/mediaQualityMetrics/config.ts +103 -238
- package/src/meeting/in-meeting-actions.ts +171 -3
- package/src/meeting/index.ts +3899 -2622
- package/src/meeting/locusMediaRequest.ts +313 -0
- package/src/meeting/muteState.ts +237 -136
- package/src/meeting/request.ts +166 -122
- package/src/meeting/util.ts +690 -395
- package/src/meeting/voicea-meeting.ts +122 -0
- package/src/meeting-info/index.ts +81 -8
- package/src/meeting-info/meeting-info-v2.ts +166 -16
- package/src/meeting-info/util.ts +13 -10
- package/src/meeting-info/utilv2.ts +47 -37
- package/src/meetings/collection.ts +33 -0
- package/src/meetings/index.ts +507 -127
- package/src/meetings/meetings.types.ts +12 -0
- package/src/meetings/request.ts +2 -0
- package/src/meetings/util.ts +81 -12
- package/src/member/index.ts +57 -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 +133 -7
- 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 +17 -0
- package/src/metrics/index.ts +1 -469
- package/src/multistream/mediaRequestManager.ts +271 -56
- package/src/multistream/receiveSlot.ts +11 -4
- package/src/multistream/receiveSlotManager.ts +34 -24
- package/src/multistream/remoteMedia.ts +5 -3
- package/src/multistream/remoteMediaGroup.ts +78 -0
- package/src/multistream/remoteMediaManager.ts +248 -44
- package/src/multistream/sendSlotManager.ts +199 -0
- package/src/reachability/clusterReachability.ts +320 -0
- package/src/reachability/index.ts +229 -346
- package/src/reachability/request.ts +8 -4
- package/src/reachability/util.ts +24 -0
- package/src/reconnection-manager/index.ts +128 -97
- package/src/recording-controller/index.ts +20 -3
- package/src/recording-controller/util.ts +26 -9
- package/src/roap/index.ts +76 -25
- package/src/roap/request.ts +48 -67
- package/src/roap/turnDiscovery.ts +331 -67
- package/src/rtcMetrics/constants.ts +3 -0
- package/src/rtcMetrics/index.ts +166 -0
- package/src/statsAnalyzer/index.ts +457 -416
- package/src/statsAnalyzer/mqaUtil.ts +317 -170
- 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 +321 -262
- 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 +119 -28
- package/test/unit/spec/breakouts/events.ts +89 -0
- package/test/unit/spec/breakouts/index.ts +1204 -118
- package/test/unit/spec/breakouts/utils.js +27 -2
- 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/interceptors/locusRetry.ts +131 -0
- package/test/unit/spec/interpretation/collection.ts +15 -0
- package/test/unit/spec/interpretation/index.ts +625 -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 +1372 -37
- 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 +41 -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 +203 -17
- package/test/unit/spec/media/index.ts +178 -81
- 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 +7520 -2267
- package/test/unit/spec/meeting/locusMediaRequest.ts +442 -0
- package/test/unit/spec/meeting/muteState.js +549 -207
- package/test/unit/spec/meeting/request.js +476 -54
- package/test/unit/spec/meeting/utils.js +827 -74
- package/test/unit/spec/meeting/voicea-meeting.ts +266 -0
- package/test/unit/spec/meeting-info/index.js +300 -0
- package/test/unit/spec/meeting-info/meetinginfov2.js +535 -9
- 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 +1489 -219
- package/test/unit/spec/meetings/utils.js +229 -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 +2 -52
- package/test/unit/spec/multistream/mediaRequestManager.ts +782 -114
- package/test/unit/spec/multistream/receiveSlot.ts +9 -1
- package/test/unit/spec/multistream/receiveSlotManager.ts +32 -30
- package/test/unit/spec/multistream/remoteMedia.ts +2 -0
- package/test/unit/spec/multistream/remoteMediaGroup.ts +345 -0
- package/test/unit/spec/multistream/remoteMediaManager.ts +525 -0
- package/test/unit/spec/multistream/sendSlotManager.ts +274 -0
- package/test/unit/spec/reachability/clusterReachability.ts +279 -0
- package/test/unit/spec/reachability/index.ts +551 -14
- package/test/unit/spec/reachability/request.js +3 -1
- package/test/unit/spec/reachability/util.ts +40 -0
- package/test/unit/spec/reconnection-manager/index.js +171 -11
- package/test/unit/spec/recording-controller/index.js +293 -218
- package/test/unit/spec/recording-controller/util.js +223 -96
- package/test/unit/spec/roap/index.ts +233 -81
- package/test/unit/spec/roap/request.ts +100 -62
- package/test/unit/spec/roap/turnDiscovery.ts +682 -108
- package/test/unit/spec/rtcMetrics/index.ts +122 -0
- package/test/unit/spec/stats-analyzer/index.js +1252 -12
- 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 -57
- package/test/utils/webex-test-users.js +12 -4
- package/dist/metrics/config.js +0 -289
- package/dist/metrics/config.js.map +0 -1
- package/dist/types/metrics/config.d.ts +0 -169
- package/src/index.js +0 -18
- package/src/metrics/config.ts +0 -485
|
@@ -18,6 +18,7 @@ var _metrics = _interopRequireDefault(require("../metrics"));
|
|
|
18
18
|
var _constants = _interopRequireDefault(require("../metrics/constants"));
|
|
19
19
|
var _loggerProxy = _interopRequireDefault(require("../common/logs/logger-proxy"));
|
|
20
20
|
var _constants2 = require("../constants");
|
|
21
|
+
var _util = _interopRequireDefault(require("../meeting/util"));
|
|
21
22
|
// @ts-ignore - Types not available for @webex/common
|
|
22
23
|
|
|
23
24
|
var TURN_DISCOVERY_TIMEOUT = 10; // in seconds
|
|
@@ -27,7 +28,13 @@ var TURN_DISCOVERY_TIMEOUT = 10; // in seconds
|
|
|
27
28
|
// so we can do it with seq=0 or not do it at all and then we create the RoapMediaConnection
|
|
28
29
|
// and do the SDP offer with seq=1
|
|
29
30
|
var TURN_DISCOVERY_SEQ = 0;
|
|
30
|
-
|
|
31
|
+
var TurnDiscoverySkipReason = {
|
|
32
|
+
missingHttpResponse: 'missing http response',
|
|
33
|
+
// when we asked for the TURN discovery response to be in the http response, but it wasn't there
|
|
34
|
+
reachability: 'reachability',
|
|
35
|
+
// when udp reachability to public clusters is ok, so we don't need TURN (this doens't apply when joinWithMedia() is used)
|
|
36
|
+
alreadyInProgress: 'already in progress' // when we try to start TURN discovery while it's already in progress
|
|
37
|
+
};
|
|
31
38
|
/**
|
|
32
39
|
* Handles the process of finding out TURN server information from Linus.
|
|
33
40
|
* This is achieved by sending a TURN_DISCOVERY_REQUEST.
|
|
@@ -78,23 +85,27 @@ var TurnDiscovery = /*#__PURE__*/function () {
|
|
|
78
85
|
}
|
|
79
86
|
|
|
80
87
|
/**
|
|
81
|
-
*
|
|
88
|
+
* Handles TURN_DISCOVERY_RESPONSE roap message. Use it if the roap message comes over the websocket,
|
|
89
|
+
* otherwise use handleTurnDiscoveryHttpResponse() if it comes in the http response.
|
|
82
90
|
*
|
|
83
91
|
* @param {Object} roapMessage
|
|
92
|
+
* @param {string} from string to indicate how we got the response (used just for logging)
|
|
84
93
|
* @returns {void}
|
|
85
94
|
* @public
|
|
86
95
|
* @memberof Roap
|
|
87
96
|
*/
|
|
88
97
|
}, {
|
|
89
98
|
key: "handleTurnDiscoveryResponse",
|
|
90
|
-
value: function handleTurnDiscoveryResponse(roapMessage) {
|
|
99
|
+
value: function handleTurnDiscoveryResponse(roapMessage, from) {
|
|
91
100
|
var _this = this;
|
|
92
|
-
// @ts-ignore - Fix missing type
|
|
93
101
|
var headers = roapMessage.headers;
|
|
94
102
|
if (!this.defer) {
|
|
95
|
-
_loggerProxy.default.logger.warn(
|
|
103
|
+
_loggerProxy.default.logger.warn("Roap:turnDiscovery#handleTurnDiscoveryResponse --> unexpected TURN discovery response ".concat(from));
|
|
96
104
|
return;
|
|
97
105
|
}
|
|
106
|
+
if (roapMessage.messageType !== _constants2.ROAP.ROAP_TYPES.TURN_DISCOVERY_RESPONSE) {
|
|
107
|
+
this.defer.reject(new Error("TURN_DISCOVERY_RESPONSE ".concat(from, " has unexpected messageType: ").concat((0, _stringify.default)(roapMessage))));
|
|
108
|
+
}
|
|
98
109
|
var expectedHeaders = [{
|
|
99
110
|
headerName: 'x-cisco-turn-url',
|
|
100
111
|
field: 'url'
|
|
@@ -118,14 +129,244 @@ var TurnDiscovery = /*#__PURE__*/function () {
|
|
|
118
129
|
clearTimeout(this.responseTimer);
|
|
119
130
|
this.responseTimer = undefined;
|
|
120
131
|
if (foundHeaders !== expectedHeaders.length) {
|
|
121
|
-
_loggerProxy.default.logger.warn("Roap:turnDiscovery#handleTurnDiscoveryResponse --> missing some headers, received: ".concat((0, _stringify.default)(headers)));
|
|
122
|
-
this.defer.reject(new Error("TURN_DISCOVERY_RESPONSE missing some headers: ".concat((0, _stringify.default)(headers))));
|
|
132
|
+
_loggerProxy.default.logger.warn("Roap:turnDiscovery#handleTurnDiscoveryResponse --> missing some headers, received ".concat(from, ": ").concat((0, _stringify.default)(headers)));
|
|
133
|
+
this.defer.reject(new Error("TURN_DISCOVERY_RESPONSE ".concat(from, " missing some headers: ").concat((0, _stringify.default)(headers))));
|
|
123
134
|
} else {
|
|
124
|
-
_loggerProxy.default.logger.info("Roap:turnDiscovery#handleTurnDiscoveryResponse --> received a valid response, url=".concat(this.turnInfo.url));
|
|
125
|
-
this.defer.resolve(
|
|
135
|
+
_loggerProxy.default.logger.info("Roap:turnDiscovery#handleTurnDiscoveryResponse --> received a valid response ".concat(from, ", url=").concat(this.turnInfo.url));
|
|
136
|
+
this.defer.resolve({
|
|
137
|
+
isOkRequired: !(headers !== null && headers !== void 0 && headers.includes('noOkInTransaction'))
|
|
138
|
+
});
|
|
126
139
|
}
|
|
127
140
|
}
|
|
128
141
|
|
|
142
|
+
/**
|
|
143
|
+
* Generates TURN_DISCOVERY_REQUEST roap message. When this method returns a roapMessage, it means that a TURN discovery process has started.
|
|
144
|
+
* It needs be ended by calling handleTurnDiscoveryHttpResponse() once you get a response from the backend. If you don't get any response
|
|
145
|
+
* or want to abort, you need to call abort().
|
|
146
|
+
*
|
|
147
|
+
* @param {Meeting} meeting
|
|
148
|
+
* @param {boolean} isForced
|
|
149
|
+
* @returns {Object}
|
|
150
|
+
*/
|
|
151
|
+
}, {
|
|
152
|
+
key: "generateTurnDiscoveryRequestMessage",
|
|
153
|
+
value: function () {
|
|
154
|
+
var _generateTurnDiscoveryRequestMessage = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(meeting, isForced) {
|
|
155
|
+
var turnDiscoverySkippedReason, roapMessage;
|
|
156
|
+
return _regenerator.default.wrap(function _callee$(_context) {
|
|
157
|
+
while (1) switch (_context.prev = _context.next) {
|
|
158
|
+
case 0:
|
|
159
|
+
if (!this.defer) {
|
|
160
|
+
_context.next = 3;
|
|
161
|
+
break;
|
|
162
|
+
}
|
|
163
|
+
_loggerProxy.default.logger.warn('Roap:turnDiscovery#generateTurnDiscoveryRequestMessage --> TURN discovery already in progress');
|
|
164
|
+
return _context.abrupt("return", {
|
|
165
|
+
roapMessage: undefined,
|
|
166
|
+
turnDiscoverySkippedReason: TurnDiscoverySkipReason.alreadyInProgress
|
|
167
|
+
});
|
|
168
|
+
case 3:
|
|
169
|
+
if (isForced) {
|
|
170
|
+
_context.next = 7;
|
|
171
|
+
break;
|
|
172
|
+
}
|
|
173
|
+
_context.next = 6;
|
|
174
|
+
return this.getSkipReason(meeting);
|
|
175
|
+
case 6:
|
|
176
|
+
turnDiscoverySkippedReason = _context.sent;
|
|
177
|
+
case 7:
|
|
178
|
+
if (!turnDiscoverySkippedReason) {
|
|
179
|
+
_context.next = 9;
|
|
180
|
+
break;
|
|
181
|
+
}
|
|
182
|
+
return _context.abrupt("return", {
|
|
183
|
+
roapMessage: undefined,
|
|
184
|
+
turnDiscoverySkippedReason: turnDiscoverySkippedReason
|
|
185
|
+
});
|
|
186
|
+
case 9:
|
|
187
|
+
this.defer = new _common.Defer();
|
|
188
|
+
roapMessage = {
|
|
189
|
+
messageType: _constants2.ROAP.ROAP_TYPES.TURN_DISCOVERY_REQUEST,
|
|
190
|
+
version: _constants2.ROAP.ROAP_VERSION,
|
|
191
|
+
seq: TURN_DISCOVERY_SEQ,
|
|
192
|
+
headers: ['includeAnswerInHttpResponse', 'noOkInTransaction']
|
|
193
|
+
};
|
|
194
|
+
_loggerProxy.default.logger.info('Roap:turnDiscovery#generateTurnDiscoveryRequestMessage --> generated TURN_DISCOVERY_REQUEST message');
|
|
195
|
+
return _context.abrupt("return", {
|
|
196
|
+
roapMessage: roapMessage,
|
|
197
|
+
turnDiscoverySkippedReason: undefined
|
|
198
|
+
});
|
|
199
|
+
case 13:
|
|
200
|
+
case "end":
|
|
201
|
+
return _context.stop();
|
|
202
|
+
}
|
|
203
|
+
}, _callee, this);
|
|
204
|
+
}));
|
|
205
|
+
function generateTurnDiscoveryRequestMessage(_x, _x2) {
|
|
206
|
+
return _generateTurnDiscoveryRequestMessage.apply(this, arguments);
|
|
207
|
+
}
|
|
208
|
+
return generateTurnDiscoveryRequestMessage;
|
|
209
|
+
}()
|
|
210
|
+
/**
|
|
211
|
+
* Handles any errors that occur during TURN discovery without re-throwing them.
|
|
212
|
+
*
|
|
213
|
+
* @param {Meeting} meeting
|
|
214
|
+
* @param {Error} error
|
|
215
|
+
* @returns {TurnDiscoveryResult}
|
|
216
|
+
*/
|
|
217
|
+
}, {
|
|
218
|
+
key: "handleTurnDiscoveryFailure",
|
|
219
|
+
value: function handleTurnDiscoveryFailure(meeting, error) {
|
|
220
|
+
// we catch any errors and resolve with no turn information so that the normal call join flow can continue without TURN
|
|
221
|
+
_loggerProxy.default.logger.info("Roap:turnDiscovery#doTurnDiscovery --> TURN discovery failed, continuing without TURN: ".concat(error));
|
|
222
|
+
_metrics.default.sendBehavioralMetric(_constants.default.TURN_DISCOVERY_FAILURE, {
|
|
223
|
+
correlation_id: meeting.correlationId,
|
|
224
|
+
locus_id: meeting.locusUrl.split('/').pop(),
|
|
225
|
+
reason: error.message,
|
|
226
|
+
stack: error.stack
|
|
227
|
+
});
|
|
228
|
+
return {
|
|
229
|
+
turnServerInfo: undefined,
|
|
230
|
+
turnDiscoverySkippedReason: "failure: ".concat(error.message)
|
|
231
|
+
};
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
/**
|
|
235
|
+
* Handles TURN_DISCOVERY_RESPONSE roap message that came in http response. If the response is not valid,
|
|
236
|
+
* it returns an object with turnServerInfo set to undefined. In that case you need to call abort()
|
|
237
|
+
* to end the TURN discovery process.
|
|
238
|
+
*
|
|
239
|
+
* @param {Meeting} meeting
|
|
240
|
+
* @param {Object|undefined} httpResponse can be undefined to indicate that we didn't get the response
|
|
241
|
+
* @returns {Promise<TurnDiscoveryResult>}
|
|
242
|
+
* @memberof Roap
|
|
243
|
+
*/
|
|
244
|
+
}, {
|
|
245
|
+
key: "handleTurnDiscoveryHttpResponse",
|
|
246
|
+
value: function () {
|
|
247
|
+
var _handleTurnDiscoveryHttpResponse = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(meeting, httpResponse) {
|
|
248
|
+
var roapMessage, _yield$this$defer$pro, isOkRequired;
|
|
249
|
+
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
250
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
251
|
+
case 0:
|
|
252
|
+
if (this.defer) {
|
|
253
|
+
_context2.next = 3;
|
|
254
|
+
break;
|
|
255
|
+
}
|
|
256
|
+
_loggerProxy.default.logger.warn('Roap:turnDiscovery#handleTurnDiscoveryHttpResponse --> unexpected http response, TURN discovery is not in progress');
|
|
257
|
+
throw new Error('handleTurnDiscoveryHttpResponse() called before generateTurnDiscoveryRequestMessage()');
|
|
258
|
+
case 3:
|
|
259
|
+
if (!(httpResponse === undefined)) {
|
|
260
|
+
_context2.next = 5;
|
|
261
|
+
break;
|
|
262
|
+
}
|
|
263
|
+
return _context2.abrupt("return", {
|
|
264
|
+
turnServerInfo: undefined,
|
|
265
|
+
turnDiscoverySkippedReason: TurnDiscoverySkipReason.missingHttpResponse
|
|
266
|
+
});
|
|
267
|
+
case 5:
|
|
268
|
+
_context2.prev = 5;
|
|
269
|
+
roapMessage = this.parseHttpTurnDiscoveryResponse(meeting, httpResponse);
|
|
270
|
+
if (roapMessage) {
|
|
271
|
+
_context2.next = 9;
|
|
272
|
+
break;
|
|
273
|
+
}
|
|
274
|
+
return _context2.abrupt("return", {
|
|
275
|
+
turnServerInfo: undefined,
|
|
276
|
+
turnDiscoverySkippedReason: TurnDiscoverySkipReason.missingHttpResponse
|
|
277
|
+
});
|
|
278
|
+
case 9:
|
|
279
|
+
this.handleTurnDiscoveryResponse(roapMessage, 'in http response');
|
|
280
|
+
_context2.next = 12;
|
|
281
|
+
return this.defer.promise;
|
|
282
|
+
case 12:
|
|
283
|
+
_yield$this$defer$pro = _context2.sent;
|
|
284
|
+
isOkRequired = _yield$this$defer$pro.isOkRequired;
|
|
285
|
+
if (!isOkRequired) {
|
|
286
|
+
_context2.next = 17;
|
|
287
|
+
break;
|
|
288
|
+
}
|
|
289
|
+
_context2.next = 17;
|
|
290
|
+
return this.sendRoapOK(meeting);
|
|
291
|
+
case 17:
|
|
292
|
+
this.defer = undefined;
|
|
293
|
+
_loggerProxy.default.logger.info('Roap:turnDiscovery#doTurnDiscovery --> TURN discovery completed');
|
|
294
|
+
return _context2.abrupt("return", {
|
|
295
|
+
turnServerInfo: this.turnInfo,
|
|
296
|
+
turnDiscoverySkippedReason: undefined
|
|
297
|
+
});
|
|
298
|
+
case 22:
|
|
299
|
+
_context2.prev = 22;
|
|
300
|
+
_context2.t0 = _context2["catch"](5);
|
|
301
|
+
this.abort();
|
|
302
|
+
return _context2.abrupt("return", this.handleTurnDiscoveryFailure(meeting, _context2.t0));
|
|
303
|
+
case 26:
|
|
304
|
+
case "end":
|
|
305
|
+
return _context2.stop();
|
|
306
|
+
}
|
|
307
|
+
}, _callee2, this, [[5, 22]]);
|
|
308
|
+
}));
|
|
309
|
+
function handleTurnDiscoveryHttpResponse(_x3, _x4) {
|
|
310
|
+
return _handleTurnDiscoveryHttpResponse.apply(this, arguments);
|
|
311
|
+
}
|
|
312
|
+
return handleTurnDiscoveryHttpResponse;
|
|
313
|
+
}()
|
|
314
|
+
/**
|
|
315
|
+
* Aborts current TURN discovery. This method needs to be called if you called generateTurnDiscoveryRequestMessage(),
|
|
316
|
+
* but then never got any response from the server.
|
|
317
|
+
* @returns {void}
|
|
318
|
+
*/
|
|
319
|
+
}, {
|
|
320
|
+
key: "abort",
|
|
321
|
+
value: function abort() {
|
|
322
|
+
if (this.defer) {
|
|
323
|
+
this.defer.reject(new Error('TURN discovery aborted'));
|
|
324
|
+
this.defer = undefined;
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
/**
|
|
329
|
+
* Parses the TURN_DISCOVERY_RESPONSE roap message out of the http response
|
|
330
|
+
* and returns it.
|
|
331
|
+
*
|
|
332
|
+
* @param {Meeting} meeting
|
|
333
|
+
* @param {any} httpResponse
|
|
334
|
+
* @returns {any}
|
|
335
|
+
*/
|
|
336
|
+
}, {
|
|
337
|
+
key: "parseHttpTurnDiscoveryResponse",
|
|
338
|
+
value: function parseHttpTurnDiscoveryResponse(meeting, httpResponse) {
|
|
339
|
+
var _httpResponse$mediaCo, _httpResponse$mediaCo2;
|
|
340
|
+
var turnDiscoveryResponse;
|
|
341
|
+
if ((_httpResponse$mediaCo = httpResponse.mediaConnections) !== null && _httpResponse$mediaCo !== void 0 && (_httpResponse$mediaCo2 = _httpResponse$mediaCo[0]) !== null && _httpResponse$mediaCo2 !== void 0 && _httpResponse$mediaCo2.remoteSdp) {
|
|
342
|
+
var remoteSdp = JSON.parse(httpResponse.mediaConnections[0].remoteSdp);
|
|
343
|
+
if (remoteSdp.roapMessage) {
|
|
344
|
+
// yes, it's misleading that remoteSdp actually contains a TURN discovery response, but that's how the backend works...
|
|
345
|
+
var _remoteSdp$roapMessag = remoteSdp.roapMessage,
|
|
346
|
+
seq = _remoteSdp$roapMessag.seq,
|
|
347
|
+
messageType = _remoteSdp$roapMessag.messageType,
|
|
348
|
+
errorType = _remoteSdp$roapMessag.errorType,
|
|
349
|
+
errorCause = _remoteSdp$roapMessag.errorCause,
|
|
350
|
+
headers = _remoteSdp$roapMessag.headers;
|
|
351
|
+
turnDiscoveryResponse = {
|
|
352
|
+
seq: seq,
|
|
353
|
+
messageType: messageType,
|
|
354
|
+
errorType: errorType,
|
|
355
|
+
errorCause: errorCause,
|
|
356
|
+
headers: headers
|
|
357
|
+
};
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
if (!turnDiscoveryResponse) {
|
|
361
|
+
_metrics.default.sendBehavioralMetric(_constants.default.ROAP_HTTP_RESPONSE_MISSING, {
|
|
362
|
+
correlationId: meeting.correlationId,
|
|
363
|
+
messageType: 'TURN_DISCOVERY_RESPONSE',
|
|
364
|
+
isMultistream: meeting.isMultistream
|
|
365
|
+
});
|
|
366
|
+
}
|
|
367
|
+
return turnDiscoveryResponse;
|
|
368
|
+
}
|
|
369
|
+
|
|
129
370
|
/**
|
|
130
371
|
* sends the TURN_DISCOVERY_REQUEST roap request
|
|
131
372
|
*
|
|
@@ -138,35 +379,53 @@ var TurnDiscovery = /*#__PURE__*/function () {
|
|
|
138
379
|
}, {
|
|
139
380
|
key: "sendRoapTurnDiscoveryRequest",
|
|
140
381
|
value: function sendRoapTurnDiscoveryRequest(meeting, isReconnecting) {
|
|
141
|
-
var
|
|
382
|
+
var _this2 = this;
|
|
142
383
|
if (this.defer) {
|
|
143
384
|
_loggerProxy.default.logger.warn('Roap:turnDiscovery#sendRoapTurnDiscoveryRequest --> already in progress');
|
|
144
|
-
return _promise.default.resolve(
|
|
385
|
+
return _promise.default.resolve({
|
|
386
|
+
turnServerInfo: undefined,
|
|
387
|
+
turnDiscoverySkippedReason: TurnDiscoverySkipReason.alreadyInProgress
|
|
388
|
+
});
|
|
145
389
|
}
|
|
146
390
|
this.defer = new _common.Defer();
|
|
147
391
|
var roapMessage = {
|
|
148
392
|
messageType: _constants2.ROAP.ROAP_TYPES.TURN_DISCOVERY_REQUEST,
|
|
149
393
|
version: _constants2.ROAP.ROAP_VERSION,
|
|
150
|
-
seq: TURN_DISCOVERY_SEQ
|
|
394
|
+
seq: TURN_DISCOVERY_SEQ,
|
|
395
|
+
headers: ['includeAnswerInHttpResponse', 'noOkInTransaction']
|
|
151
396
|
};
|
|
152
397
|
_loggerProxy.default.logger.info('Roap:turnDiscovery#sendRoapTurnDiscoveryRequest --> sending TURN_DISCOVERY_REQUEST');
|
|
153
398
|
return this.roapRequest.sendRoap({
|
|
154
399
|
roapMessage: roapMessage,
|
|
155
|
-
correlationId: meeting.correlationId,
|
|
156
400
|
// @ts-ignore - Fix missing type
|
|
157
401
|
locusSelfUrl: meeting.selfUrl,
|
|
158
402
|
// @ts-ignore - Fix missing type
|
|
159
403
|
mediaId: isReconnecting ? '' : meeting.mediaId,
|
|
160
|
-
audioMuted: (_meeting$audio = meeting.audio) === null || _meeting$audio === void 0 ? void 0 : _meeting$audio.isLocallyMuted(),
|
|
161
|
-
videoMuted: (_meeting$video = meeting.video) === null || _meeting$video === void 0 ? void 0 : _meeting$video.isLocallyMuted(),
|
|
162
404
|
meetingId: meeting.id,
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
405
|
+
locusMediaRequest: meeting.locusMediaRequest,
|
|
406
|
+
// @ts-ignore - because of meeting.webex
|
|
407
|
+
ipVersion: _util.default.getIpVersion(meeting.webex)
|
|
408
|
+
}).then( /*#__PURE__*/function () {
|
|
409
|
+
var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(response) {
|
|
410
|
+
var mediaConnections;
|
|
411
|
+
return _regenerator.default.wrap(function _callee3$(_context3) {
|
|
412
|
+
while (1) switch (_context3.prev = _context3.next) {
|
|
413
|
+
case 0:
|
|
414
|
+
mediaConnections = response.mediaConnections;
|
|
415
|
+
if (mediaConnections) {
|
|
416
|
+
meeting.updateMediaConnections(mediaConnections);
|
|
417
|
+
}
|
|
418
|
+
return _context3.abrupt("return", _this2.handleTurnDiscoveryHttpResponse(meeting, response));
|
|
419
|
+
case 3:
|
|
420
|
+
case "end":
|
|
421
|
+
return _context3.stop();
|
|
422
|
+
}
|
|
423
|
+
}, _callee3);
|
|
424
|
+
}));
|
|
425
|
+
return function (_x5) {
|
|
426
|
+
return _ref.apply(this, arguments);
|
|
427
|
+
};
|
|
428
|
+
}());
|
|
170
429
|
}
|
|
171
430
|
|
|
172
431
|
/**
|
|
@@ -179,8 +438,11 @@ var TurnDiscovery = /*#__PURE__*/function () {
|
|
|
179
438
|
}, {
|
|
180
439
|
key: "sendRoapOK",
|
|
181
440
|
value: function sendRoapOK(meeting) {
|
|
182
|
-
|
|
183
|
-
|
|
441
|
+
_loggerProxy.default.logger.info('Roap:turnDiscovery#sendRoapOK --> TURN discovery response requires OK, sending it...');
|
|
442
|
+
_metrics.default.sendBehavioralMetric(_constants.default.TURN_DISCOVERY_REQUIRES_OK, {
|
|
443
|
+
correlation_id: meeting.correlationId,
|
|
444
|
+
locus_id: meeting.locusUrl.split('/').pop()
|
|
445
|
+
});
|
|
184
446
|
return this.roapRequest.sendRoap({
|
|
185
447
|
roapMessage: {
|
|
186
448
|
messageType: _constants2.ROAP.ROAP_TYPES.OK,
|
|
@@ -191,14 +453,78 @@ var TurnDiscovery = /*#__PURE__*/function () {
|
|
|
191
453
|
locusSelfUrl: meeting.selfUrl,
|
|
192
454
|
// @ts-ignore - fix type
|
|
193
455
|
mediaId: meeting.mediaId,
|
|
194
|
-
correlationId: meeting.correlationId,
|
|
195
|
-
audioMuted: (_meeting$audio2 = meeting.audio) === null || _meeting$audio2 === void 0 ? void 0 : _meeting$audio2.isLocallyMuted(),
|
|
196
|
-
videoMuted: (_meeting$video2 = meeting.video) === null || _meeting$video2 === void 0 ? void 0 : _meeting$video2.isLocallyMuted(),
|
|
197
456
|
meetingId: meeting.id,
|
|
198
|
-
|
|
457
|
+
locusMediaRequest: meeting.locusMediaRequest
|
|
199
458
|
});
|
|
200
459
|
}
|
|
201
460
|
|
|
461
|
+
/**
|
|
462
|
+
* Gets the reason why reachability is skipped.
|
|
463
|
+
*
|
|
464
|
+
* @param {Meeting} meeting
|
|
465
|
+
* @returns {Promise<string>} Promise with empty string if reachability is not skipped or a reason if it is skipped
|
|
466
|
+
*/
|
|
467
|
+
}, {
|
|
468
|
+
key: "getSkipReason",
|
|
469
|
+
value: function () {
|
|
470
|
+
var _getSkipReason = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4(meeting) {
|
|
471
|
+
var isAnyPublicClusterReachable;
|
|
472
|
+
return _regenerator.default.wrap(function _callee4$(_context4) {
|
|
473
|
+
while (1) switch (_context4.prev = _context4.next) {
|
|
474
|
+
case 0:
|
|
475
|
+
_context4.next = 2;
|
|
476
|
+
return meeting.webex.meetings.reachability.isAnyPublicClusterReachable();
|
|
477
|
+
case 2:
|
|
478
|
+
isAnyPublicClusterReachable = _context4.sent;
|
|
479
|
+
if (!isAnyPublicClusterReachable) {
|
|
480
|
+
_context4.next = 6;
|
|
481
|
+
break;
|
|
482
|
+
}
|
|
483
|
+
_loggerProxy.default.logger.info('Roap:turnDiscovery#getSkipReason --> reachability has not failed, skipping TURN discovery');
|
|
484
|
+
return _context4.abrupt("return", TurnDiscoverySkipReason.reachability);
|
|
485
|
+
case 6:
|
|
486
|
+
return _context4.abrupt("return", undefined);
|
|
487
|
+
case 7:
|
|
488
|
+
case "end":
|
|
489
|
+
return _context4.stop();
|
|
490
|
+
}
|
|
491
|
+
}, _callee4);
|
|
492
|
+
}));
|
|
493
|
+
function getSkipReason(_x6) {
|
|
494
|
+
return _getSkipReason.apply(this, arguments);
|
|
495
|
+
}
|
|
496
|
+
return getSkipReason;
|
|
497
|
+
}()
|
|
498
|
+
/**
|
|
499
|
+
* Checks if TURN discovery is skipped.
|
|
500
|
+
*
|
|
501
|
+
* @param {Meeting} meeting
|
|
502
|
+
* @returns {Boolean} true if TURN discovery is being skipped, false if it is being done
|
|
503
|
+
*/
|
|
504
|
+
}, {
|
|
505
|
+
key: "isSkipped",
|
|
506
|
+
value: function () {
|
|
507
|
+
var _isSkipped = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5(meeting) {
|
|
508
|
+
var skipReason;
|
|
509
|
+
return _regenerator.default.wrap(function _callee5$(_context5) {
|
|
510
|
+
while (1) switch (_context5.prev = _context5.next) {
|
|
511
|
+
case 0:
|
|
512
|
+
_context5.next = 2;
|
|
513
|
+
return this.getSkipReason(meeting);
|
|
514
|
+
case 2:
|
|
515
|
+
skipReason = _context5.sent;
|
|
516
|
+
return _context5.abrupt("return", !!skipReason);
|
|
517
|
+
case 4:
|
|
518
|
+
case "end":
|
|
519
|
+
return _context5.stop();
|
|
520
|
+
}
|
|
521
|
+
}, _callee5, this);
|
|
522
|
+
}));
|
|
523
|
+
function isSkipped(_x7) {
|
|
524
|
+
return _isSkipped.apply(this, arguments);
|
|
525
|
+
}
|
|
526
|
+
return isSkipped;
|
|
527
|
+
}()
|
|
202
528
|
/**
|
|
203
529
|
* Retrieves TURN server information from the backend by doing
|
|
204
530
|
* a roap message exchange:
|
|
@@ -212,75 +538,77 @@ var TurnDiscovery = /*#__PURE__*/function () {
|
|
|
212
538
|
* so it works fine no matter if TURN discovery is done or not.
|
|
213
539
|
*
|
|
214
540
|
* @param {Meeting} meeting
|
|
215
|
-
* @param {Boolean} isReconnecting should be set to true if this is a new
|
|
541
|
+
* @param {Boolean} [isReconnecting] should be set to true if this is a new
|
|
216
542
|
* media connection just after a reconnection
|
|
543
|
+
* @param {Boolean} [isForced]
|
|
217
544
|
* @returns {Promise}
|
|
218
545
|
*/
|
|
219
546
|
}, {
|
|
220
547
|
key: "doTurnDiscovery",
|
|
221
548
|
value: function () {
|
|
222
|
-
var _doTurnDiscovery = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function
|
|
223
|
-
var
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
while (1) switch (_context.prev = _context.next) {
|
|
549
|
+
var _doTurnDiscovery = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6(meeting, isReconnecting, isForced) {
|
|
550
|
+
var turnDiscoverySkippedReason, turnDiscoveryResult, _yield$this$waitForTu, isOkRequired;
|
|
551
|
+
return _regenerator.default.wrap(function _callee6$(_context6) {
|
|
552
|
+
while (1) switch (_context6.prev = _context6.next) {
|
|
227
553
|
case 0:
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
case 2:
|
|
231
|
-
isAnyClusterReachable = _context.sent;
|
|
232
|
-
if (!isAnyClusterReachable) {
|
|
233
|
-
_context.next = 6;
|
|
554
|
+
if (isForced) {
|
|
555
|
+
_context6.next = 4;
|
|
234
556
|
break;
|
|
235
557
|
}
|
|
236
|
-
|
|
237
|
-
return
|
|
558
|
+
_context6.next = 3;
|
|
559
|
+
return this.getSkipReason(meeting);
|
|
560
|
+
case 3:
|
|
561
|
+
turnDiscoverySkippedReason = _context6.sent;
|
|
562
|
+
case 4:
|
|
563
|
+
if (!turnDiscoverySkippedReason) {
|
|
564
|
+
_context6.next = 6;
|
|
565
|
+
break;
|
|
566
|
+
}
|
|
567
|
+
return _context6.abrupt("return", {
|
|
238
568
|
turnServerInfo: undefined,
|
|
239
|
-
turnDiscoverySkippedReason:
|
|
569
|
+
turnDiscoverySkippedReason: turnDiscoverySkippedReason
|
|
240
570
|
});
|
|
241
571
|
case 6:
|
|
242
|
-
|
|
243
|
-
|
|
572
|
+
_context6.prev = 6;
|
|
573
|
+
_context6.next = 9;
|
|
574
|
+
return this.sendRoapTurnDiscoveryRequest(meeting, isReconnecting);
|
|
575
|
+
case 9:
|
|
576
|
+
turnDiscoveryResult = _context6.sent;
|
|
577
|
+
if (!(turnDiscoveryResult.turnDiscoverySkippedReason !== TurnDiscoverySkipReason.missingHttpResponse)) {
|
|
578
|
+
_context6.next = 12;
|
|
244
579
|
break;
|
|
245
580
|
}
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
581
|
+
return _context6.abrupt("return", turnDiscoveryResult);
|
|
582
|
+
case 12:
|
|
583
|
+
_context6.next = 14;
|
|
584
|
+
return this.waitForTurnDiscoveryResponse();
|
|
585
|
+
case 14:
|
|
586
|
+
_yield$this$waitForTu = _context6.sent;
|
|
587
|
+
isOkRequired = _yield$this$waitForTu.isOkRequired;
|
|
588
|
+
if (!isOkRequired) {
|
|
589
|
+
_context6.next = 19;
|
|
590
|
+
break;
|
|
591
|
+
}
|
|
592
|
+
_context6.next = 19;
|
|
593
|
+
return this.sendRoapOK(meeting);
|
|
594
|
+
case 19:
|
|
595
|
+
this.defer = undefined;
|
|
596
|
+
_loggerProxy.default.logger.info('Roap:turnDiscovery#doTurnDiscovery --> TURN discovery completed');
|
|
597
|
+
return _context6.abrupt("return", {
|
|
598
|
+
turnServerInfo: this.turnInfo,
|
|
599
|
+
turnDiscoverySkippedReason: undefined
|
|
250
600
|
});
|
|
251
|
-
case
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
}).then(function () {
|
|
257
|
-
_this2.defer = undefined;
|
|
258
|
-
_loggerProxy.default.logger.info('Roap:turnDiscovery#doTurnDiscovery --> TURN discovery completed');
|
|
259
|
-
return {
|
|
260
|
-
turnServerInfo: _this2.turnInfo,
|
|
261
|
-
turnDiscoverySkippedReason: undefined
|
|
262
|
-
};
|
|
263
|
-
}).catch(function (e) {
|
|
264
|
-
// we catch any errors and resolve with no turn information so that the normal call join flow can continue without TURN
|
|
265
|
-
_loggerProxy.default.logger.info("Roap:turnDiscovery#doTurnDiscovery --> TURN discovery failed, continuing without TURN: ".concat(e));
|
|
266
|
-
_metrics.default.sendBehavioralMetric(_constants.default.TURN_DISCOVERY_FAILURE, {
|
|
267
|
-
correlation_id: meeting.correlationId,
|
|
268
|
-
locus_id: meeting.locusUrl.split('/').pop(),
|
|
269
|
-
reason: e.message,
|
|
270
|
-
stack: e.stack
|
|
271
|
-
});
|
|
272
|
-
return {
|
|
273
|
-
turnServerInfo: undefined,
|
|
274
|
-
turnDiscoverySkippedReason: undefined
|
|
275
|
-
};
|
|
276
|
-
}));
|
|
277
|
-
case 10:
|
|
601
|
+
case 24:
|
|
602
|
+
_context6.prev = 24;
|
|
603
|
+
_context6.t0 = _context6["catch"](6);
|
|
604
|
+
return _context6.abrupt("return", this.handleTurnDiscoveryFailure(meeting, _context6.t0));
|
|
605
|
+
case 27:
|
|
278
606
|
case "end":
|
|
279
|
-
return
|
|
607
|
+
return _context6.stop();
|
|
280
608
|
}
|
|
281
|
-
},
|
|
609
|
+
}, _callee6, this, [[6, 24]]);
|
|
282
610
|
}));
|
|
283
|
-
function doTurnDiscovery(
|
|
611
|
+
function doTurnDiscovery(_x8, _x9, _x10) {
|
|
284
612
|
return _doTurnDiscovery.apply(this, arguments);
|
|
285
613
|
}
|
|
286
614
|
return doTurnDiscovery;
|