@webex/plugin-meetings 3.8.1 → 3.9.0-webinar5k.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +26 -13
- package/dist/breakouts/breakout.js +1 -1
- package/dist/breakouts/index.js +1 -1
- package/dist/constants.js +16 -3
- package/dist/constants.js.map +1 -1
- package/dist/controls-options-manager/enums.js +1 -0
- package/dist/controls-options-manager/enums.js.map +1 -1
- package/dist/controls-options-manager/types.js.map +1 -1
- package/dist/controls-options-manager/util.js +26 -0
- package/dist/controls-options-manager/util.js.map +1 -1
- package/dist/hashTree/constants.js +23 -0
- package/dist/hashTree/constants.js.map +1 -0
- package/dist/hashTree/hashTree.js +516 -0
- package/dist/hashTree/hashTree.js.map +1 -0
- package/dist/hashTree/hashTreeParser.js +521 -0
- package/dist/hashTree/hashTreeParser.js.map +1 -0
- package/dist/interpretation/index.js +1 -1
- package/dist/interpretation/siLanguage.js +1 -1
- package/dist/locus-info/controlsUtils.js +11 -3
- package/dist/locus-info/controlsUtils.js.map +1 -1
- package/dist/locus-info/index.js +331 -59
- package/dist/locus-info/index.js.map +1 -1
- package/dist/media/index.js +2 -2
- package/dist/media/index.js.map +1 -1
- package/dist/meeting/brbState.js +17 -14
- package/dist/meeting/brbState.js.map +1 -1
- package/dist/meeting/in-meeting-actions.js +5 -1
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/meeting/index.js +264 -125
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/muteState.js +2 -5
- package/dist/meeting/muteState.js.map +1 -1
- package/dist/meeting/request.js +19 -0
- package/dist/meeting/request.js.map +1 -1
- package/dist/meeting/request.type.js.map +1 -1
- package/dist/meeting/util.js +8 -11
- package/dist/meeting/util.js.map +1 -1
- package/dist/meetings/index.js +6 -2
- package/dist/meetings/index.js.map +1 -1
- package/dist/member/types.js.map +1 -1
- package/dist/members/collection.js +13 -0
- package/dist/members/collection.js.map +1 -1
- package/dist/members/index.js +44 -23
- package/dist/members/index.js.map +1 -1
- package/dist/members/request.js +3 -3
- package/dist/members/request.js.map +1 -1
- package/dist/members/util.js +18 -6
- package/dist/members/util.js.map +1 -1
- package/dist/metrics/constants.js +1 -0
- package/dist/metrics/constants.js.map +1 -1
- package/dist/multistream/sendSlotManager.js +32 -2
- package/dist/multistream/sendSlotManager.js.map +1 -1
- package/dist/reachability/index.js +5 -10
- package/dist/reachability/index.js.map +1 -1
- package/dist/types/constants.d.ts +12 -0
- package/dist/types/controls-options-manager/enums.d.ts +2 -1
- package/dist/types/controls-options-manager/types.d.ts +4 -1
- package/dist/types/hashTree/constants.d.ts +8 -0
- package/dist/types/hashTree/hashTree.d.ts +128 -0
- package/dist/types/hashTree/hashTreeParser.d.ts +152 -0
- package/dist/types/locus-info/index.d.ts +93 -3
- package/dist/types/meeting/brbState.d.ts +0 -1
- package/dist/types/meeting/in-meeting-actions.d.ts +4 -0
- package/dist/types/meeting/index.d.ts +36 -3
- package/dist/types/meeting/request.d.ts +9 -1
- package/dist/types/meeting/request.type.d.ts +74 -0
- package/dist/types/meeting/util.d.ts +3 -3
- package/dist/types/member/types.d.ts +1 -0
- package/dist/types/members/collection.d.ts +6 -0
- package/dist/types/members/index.d.ts +15 -3
- package/dist/types/members/request.d.ts +1 -1
- package/dist/types/members/util.d.ts +5 -2
- package/dist/types/metrics/constants.d.ts +1 -0
- package/dist/types/multistream/sendSlotManager.d.ts +16 -0
- package/dist/types/reachability/index.d.ts +2 -2
- package/dist/webinar/index.js +1 -1
- package/package.json +26 -25
- package/src/constants.ts +16 -0
- package/src/controls-options-manager/enums.ts +1 -0
- package/src/controls-options-manager/types.ts +6 -1
- package/src/controls-options-manager/util.ts +31 -0
- package/src/hashTree/constants.ts +12 -0
- package/src/hashTree/hashTree.ts +460 -0
- package/src/hashTree/hashTreeParser.ts +556 -0
- package/src/locus-info/controlsUtils.ts +15 -0
- package/src/locus-info/index.ts +434 -58
- package/src/media/index.ts +2 -2
- package/src/meeting/brbState.ts +13 -9
- package/src/meeting/in-meeting-actions.ts +8 -0
- package/src/meeting/index.ts +193 -39
- package/src/meeting/muteState.ts +2 -6
- package/src/meeting/request.ts +16 -0
- package/src/meeting/request.type.ts +64 -0
- package/src/meeting/util.ts +17 -20
- package/src/meetings/index.ts +17 -3
- package/src/member/types.ts +1 -0
- package/src/members/collection.ts +11 -0
- package/src/members/index.ts +33 -7
- package/src/members/request.ts +2 -2
- package/src/members/util.ts +14 -3
- package/src/metrics/constants.ts +1 -0
- package/src/multistream/sendSlotManager.ts +34 -2
- package/src/reachability/index.ts +5 -13
- package/test/unit/spec/controls-options-manager/util.js +58 -0
- package/test/unit/spec/hashTree/hashTree.ts +394 -0
- package/test/unit/spec/hashTree/hashTreeParser.ts +156 -0
- package/test/unit/spec/locus-info/controlsUtils.js +52 -0
- package/test/unit/spec/locus-info/index.js +547 -54
- package/test/unit/spec/media/index.ts +107 -0
- package/test/unit/spec/meeting/brbState.ts +23 -4
- package/test/unit/spec/meeting/in-meeting-actions.ts +4 -0
- package/test/unit/spec/meeting/index.js +647 -46
- package/test/unit/spec/meeting/request.js +71 -0
- package/test/unit/spec/members/index.js +33 -10
- package/test/unit/spec/members/request.js +2 -2
- package/test/unit/spec/members/utils.js +27 -7
- package/test/unit/spec/multistream/sendSlotManager.ts +59 -0
- package/test/unit/spec/reachability/index.ts +2 -6
- package/dist/annotation/annotation.types.d.ts +0 -42
- package/dist/annotation/constants.d.ts +0 -31
- package/dist/annotation/index.d.ts +0 -117
- package/dist/breakouts/breakout.d.ts +0 -8
- package/dist/breakouts/collection.d.ts +0 -5
- package/dist/breakouts/edit-lock-error.d.ts +0 -15
- package/dist/breakouts/events.d.ts +0 -8
- package/dist/breakouts/index.d.ts +0 -5
- package/dist/breakouts/request.d.ts +0 -22
- package/dist/breakouts/utils.d.ts +0 -15
- package/dist/common/browser-detection.d.ts +0 -9
- package/dist/common/collection.d.ts +0 -48
- package/dist/common/config.d.ts +0 -2
- package/dist/common/errors/captcha-error.d.ts +0 -15
- package/dist/common/errors/intent-to-join.d.ts +0 -16
- package/dist/common/errors/join-meeting.d.ts +0 -17
- package/dist/common/errors/media.d.ts +0 -15
- package/dist/common/errors/no-meeting-info.d.ts +0 -14
- package/dist/common/errors/parameter.d.ts +0 -15
- package/dist/common/errors/password-error.d.ts +0 -15
- package/dist/common/errors/permission.d.ts +0 -14
- package/dist/common/errors/reclaim-host-role-error.d.ts +0 -60
- package/dist/common/errors/reclaim-host-role-error.js +0 -158
- package/dist/common/errors/reclaim-host-role-error.js.map +0 -1
- package/dist/common/errors/reclaim-host-role-errors.d.ts +0 -60
- package/dist/common/errors/reconnection-in-progress.d.ts +0 -9
- package/dist/common/errors/reconnection-in-progress.js +0 -35
- package/dist/common/errors/reconnection-in-progress.js.map +0 -1
- package/dist/common/errors/reconnection.d.ts +0 -15
- package/dist/common/errors/stats.d.ts +0 -15
- package/dist/common/errors/webex-errors.d.ts +0 -81
- package/dist/common/errors/webex-meetings-error.d.ts +0 -20
- package/dist/common/events/events-scope.d.ts +0 -17
- package/dist/common/events/events.d.ts +0 -12
- package/dist/common/events/trigger-proxy.d.ts +0 -2
- package/dist/common/events/util.d.ts +0 -2
- package/dist/common/logs/logger-config.d.ts +0 -2
- package/dist/common/logs/logger-proxy.d.ts +0 -2
- package/dist/common/logs/request.d.ts +0 -34
- package/dist/common/queue.d.ts +0 -32
- package/dist/config.d.ts +0 -73
- package/dist/constants.d.ts +0 -952
- package/dist/controls-options-manager/constants.d.ts +0 -4
- package/dist/controls-options-manager/enums.d.ts +0 -5
- package/dist/controls-options-manager/index.d.ts +0 -120
- package/dist/controls-options-manager/types.d.ts +0 -43
- package/dist/controls-options-manager/util.d.ts +0 -7
- package/dist/index.d.ts +0 -4
- package/dist/interceptors/index.d.ts +0 -2
- package/dist/interceptors/locusRetry.d.ts +0 -27
- package/dist/interpretation/collection.d.ts +0 -5
- package/dist/interpretation/index.d.ts +0 -5
- package/dist/interpretation/siLanguage.d.ts +0 -5
- package/dist/locus-info/controlsUtils.d.ts +0 -2
- package/dist/locus-info/embeddedAppsUtils.d.ts +0 -2
- package/dist/locus-info/fullState.d.ts +0 -2
- package/dist/locus-info/hostUtils.d.ts +0 -2
- package/dist/locus-info/index.d.ts +0 -269
- package/dist/locus-info/infoUtils.d.ts +0 -2
- package/dist/locus-info/mediaSharesUtils.d.ts +0 -2
- package/dist/locus-info/parser.d.ts +0 -212
- package/dist/locus-info/selfUtils.d.ts +0 -2
- package/dist/media/index.d.ts +0 -32
- package/dist/media/properties.d.ts +0 -108
- package/dist/media/util.d.ts +0 -2
- package/dist/mediaQualityMetrics/config.d.ts +0 -233
- package/dist/mediaQualityMetrics/config.js +0 -513
- package/dist/mediaQualityMetrics/config.js.map +0 -1
- package/dist/meeting/effectsState.d.ts +0 -42
- package/dist/meeting/effectsState.js +0 -260
- package/dist/meeting/effectsState.js.map +0 -1
- package/dist/meeting/in-meeting-actions.d.ts +0 -79
- package/dist/meeting/index.d.ts +0 -1622
- package/dist/meeting/locusMediaRequest.d.ts +0 -74
- package/dist/meeting/muteState.d.ts +0 -116
- package/dist/meeting/request.d.ts +0 -257
- package/dist/meeting/request.type.d.ts +0 -11
- package/dist/meeting/state.d.ts +0 -9
- package/dist/meeting/util.d.ts +0 -2
- package/dist/meeting/voicea-meeting.d.ts +0 -16
- package/dist/meeting-info/collection.d.ts +0 -20
- package/dist/meeting-info/index.d.ts +0 -57
- package/dist/meeting-info/meeting-info-v2.d.ts +0 -93
- package/dist/meeting-info/request.d.ts +0 -22
- package/dist/meeting-info/util.d.ts +0 -2
- package/dist/meeting-info/utilv2.d.ts +0 -2
- package/dist/meetings/collection.d.ts +0 -23
- package/dist/meetings/index.d.ts +0 -296
- package/dist/meetings/meetings.types.d.ts +0 -4
- package/dist/meetings/request.d.ts +0 -27
- package/dist/meetings/util.d.ts +0 -18
- package/dist/member/index.d.ts +0 -148
- package/dist/member/member.types.d.ts +0 -11
- package/dist/member/member.types.js +0 -18
- package/dist/member/member.types.js.map +0 -1
- package/dist/member/types.d.ts +0 -32
- package/dist/member/util.d.ts +0 -2
- package/dist/members/collection.d.ts +0 -24
- package/dist/members/index.d.ts +0 -308
- package/dist/members/request.d.ts +0 -58
- package/dist/members/types.d.ts +0 -25
- package/dist/members/util.d.ts +0 -2
- package/dist/metrics/config.d.ts +0 -169
- package/dist/metrics/config.js +0 -289
- package/dist/metrics/config.js.map +0 -1
- package/dist/metrics/constants.d.ts +0 -59
- package/dist/metrics/index.d.ts +0 -152
- package/dist/multistream/mediaRequestManager.d.ts +0 -119
- package/dist/multistream/receiveSlot.d.ts +0 -68
- package/dist/multistream/receiveSlotManager.d.ts +0 -56
- package/dist/multistream/remoteMedia.d.ts +0 -72
- package/dist/multistream/remoteMediaGroup.d.ts +0 -49
- package/dist/multistream/remoteMediaManager.d.ts +0 -300
- package/dist/multistream/sendSlotManager.d.ts +0 -69
- package/dist/networkQualityMonitor/index.d.ts +0 -70
- package/dist/networkQualityMonitor/index.js +0 -226
- package/dist/networkQualityMonitor/index.js.map +0 -1
- package/dist/peer-connection-manager/index.d.ts +0 -6
- package/dist/peer-connection-manager/index.js +0 -671
- package/dist/peer-connection-manager/index.js.map +0 -1
- package/dist/peer-connection-manager/util.d.ts +0 -6
- package/dist/peer-connection-manager/util.js +0 -110
- package/dist/peer-connection-manager/util.js.map +0 -1
- package/dist/personal-meeting-room/index.d.ts +0 -47
- package/dist/personal-meeting-room/request.d.ts +0 -14
- package/dist/personal-meeting-room/util.d.ts +0 -2
- package/dist/reachability/clusterReachability.d.ts +0 -109
- package/dist/reachability/index.d.ts +0 -139
- package/dist/reachability/request.d.ts +0 -35
- package/dist/reachability/util.d.ts +0 -8
- package/dist/reactions/constants.d.ts +0 -3
- package/dist/reactions/reactions.d.ts +0 -4
- package/dist/reactions/reactions.type.d.ts +0 -32
- package/dist/reconnection-manager/index.d.ts +0 -112
- package/dist/recording-controller/enums.d.ts +0 -7
- package/dist/recording-controller/index.d.ts +0 -193
- package/dist/recording-controller/util.d.ts +0 -13
- package/dist/roap/collection.d.ts +0 -10
- package/dist/roap/collection.js +0 -63
- package/dist/roap/collection.js.map +0 -1
- package/dist/roap/handler.d.ts +0 -47
- package/dist/roap/handler.js +0 -279
- package/dist/roap/handler.js.map +0 -1
- package/dist/roap/index.d.ts +0 -116
- package/dist/roap/request.d.ts +0 -35
- package/dist/roap/state.d.ts +0 -9
- package/dist/roap/state.js +0 -127
- package/dist/roap/state.js.map +0 -1
- package/dist/roap/turnDiscovery.d.ts +0 -81
- package/dist/roap/util.d.ts +0 -2
- package/dist/roap/util.js +0 -76
- package/dist/roap/util.js.map +0 -1
- package/dist/rtcMetrics/constants.d.ts +0 -4
- package/dist/rtcMetrics/constants.js +0 -11
- package/dist/rtcMetrics/constants.js.map +0 -1
- package/dist/rtcMetrics/index.d.ts +0 -61
- package/dist/rtcMetrics/index.js +0 -197
- package/dist/rtcMetrics/index.js.map +0 -1
- package/dist/statsAnalyzer/global.d.ts +0 -118
- package/dist/statsAnalyzer/global.js +0 -127
- package/dist/statsAnalyzer/global.js.map +0 -1
- package/dist/statsAnalyzer/index.d.ts +0 -193
- package/dist/statsAnalyzer/index.js +0 -1019
- package/dist/statsAnalyzer/index.js.map +0 -1
- package/dist/statsAnalyzer/mqaUtil.d.ts +0 -22
- package/dist/statsAnalyzer/mqaUtil.js +0 -181
- package/dist/statsAnalyzer/mqaUtil.js.map +0 -1
- package/dist/transcription/index.d.ts +0 -64
- package/dist/types/common/errors/reconnection-in-progress.d.ts +0 -9
- package/dist/types/mediaQualityMetrics/config.d.ts +0 -241
- package/dist/types/networkQualityMonitor/index.d.ts +0 -70
- package/dist/types/rtcMetrics/constants.d.ts +0 -4
- package/dist/types/rtcMetrics/index.d.ts +0 -71
- package/dist/types/statsAnalyzer/global.d.ts +0 -36
- package/dist/types/statsAnalyzer/index.d.ts +0 -217
- package/dist/types/statsAnalyzer/mqaUtil.d.ts +0 -48
- package/dist/webinar/collection.d.ts +0 -16
- package/dist/webinar/index.d.ts +0 -5
@@ -0,0 +1,152 @@
|
|
1
|
+
import HashTree from './hashTree';
|
2
|
+
import { Enum } from '../constants';
|
3
|
+
export interface DataSet {
|
4
|
+
url: string;
|
5
|
+
root: string;
|
6
|
+
version: number;
|
7
|
+
leafCount: number;
|
8
|
+
name: string;
|
9
|
+
idleMs: number;
|
10
|
+
backoff: {
|
11
|
+
maxMs: number;
|
12
|
+
exponent: number;
|
13
|
+
};
|
14
|
+
}
|
15
|
+
export declare const ObjectType: {
|
16
|
+
readonly participant: "participant";
|
17
|
+
readonly self: "self";
|
18
|
+
readonly locus: "locus";
|
19
|
+
};
|
20
|
+
export type ObjectType = Enum<typeof ObjectType>;
|
21
|
+
export interface HtMeta {
|
22
|
+
elementId: {
|
23
|
+
type: ObjectType;
|
24
|
+
id: number;
|
25
|
+
version: number;
|
26
|
+
};
|
27
|
+
dataSetNames: string[];
|
28
|
+
}
|
29
|
+
export interface HashTreeObject {
|
30
|
+
htMeta: HtMeta;
|
31
|
+
data: Record<string, any>;
|
32
|
+
}
|
33
|
+
export interface RootHashMessage {
|
34
|
+
dataSets: Array<DataSet>;
|
35
|
+
}
|
36
|
+
export interface HashTreeMessage {
|
37
|
+
dataSets: Array<DataSet>;
|
38
|
+
locusStateElements?: Array<HashTreeObject>;
|
39
|
+
locusSessionId?: string;
|
40
|
+
locusUrl?: string;
|
41
|
+
}
|
42
|
+
interface InternalDataSet extends DataSet {
|
43
|
+
hashTree: HashTree;
|
44
|
+
timer?: ReturnType<typeof setTimeout>;
|
45
|
+
}
|
46
|
+
type WebexRequestMethod = (options: Record<string, any>) => Promise<any>;
|
47
|
+
export declare const LocusInfoUpdateType: {
|
48
|
+
readonly OBJECTS_UPDATED: "OBJECTS_UPDATED";
|
49
|
+
readonly MEETING_ENDED: "MEETING_ENDED";
|
50
|
+
};
|
51
|
+
export type LocusInfoUpdateType = Enum<typeof LocusInfoUpdateType>;
|
52
|
+
export type LocusInfoUpdateCallback = (updateType: LocusInfoUpdateType, data?: {
|
53
|
+
updatedObjects: HashTreeObject[];
|
54
|
+
}) => void;
|
55
|
+
/**
|
56
|
+
* Parses hash tree eventing locus data
|
57
|
+
*/
|
58
|
+
declare class HashTreeParser {
|
59
|
+
dataSets: Record<string, InternalDataSet>;
|
60
|
+
webexRequest: WebexRequestMethod;
|
61
|
+
locusInfoUpdateCallback: LocusInfoUpdateCallback;
|
62
|
+
debugId: string;
|
63
|
+
/**
|
64
|
+
* Constructor for HashTreeParser
|
65
|
+
* @param {Object} options
|
66
|
+
* @param {Object} options.initialLocus The initial locus data containing the hash tree information
|
67
|
+
*/
|
68
|
+
constructor(options: {
|
69
|
+
initialLocus: {
|
70
|
+
dataSets: Array<DataSet>;
|
71
|
+
locus: any;
|
72
|
+
};
|
73
|
+
webexRequest: WebexRequestMethod;
|
74
|
+
locusInfoUpdateCallback: LocusInfoUpdateCallback;
|
75
|
+
debugId: string;
|
76
|
+
});
|
77
|
+
/**
|
78
|
+
* Each dataset exists at a different place in the dto
|
79
|
+
* iterate recursively over the locus and if it has a htMeta key,
|
80
|
+
* create an object with the type, id and version and add it to the appropriate leafData array
|
81
|
+
*
|
82
|
+
* @param {any} locus - The current part of the locus being processed
|
83
|
+
* @returns {any} - An object mapping dataset names to arrays of leaf data
|
84
|
+
*/
|
85
|
+
private analyzeLocusHtMeta;
|
86
|
+
/**
|
87
|
+
* Checks if the provided hash tree message indicates the end of the meeting and that there won't be any more updates.
|
88
|
+
*
|
89
|
+
* @param {HashTreeMessage} message - The hash tree message to check
|
90
|
+
* @returns {boolean} - Returns true if the message indicates the end of the meeting, false otherwise
|
91
|
+
*/
|
92
|
+
private isEndMessage;
|
93
|
+
/**
|
94
|
+
* Handles the root hash heartbeat message
|
95
|
+
*
|
96
|
+
* @param {RootHashMessage} message - The root hash heartbeat message
|
97
|
+
* @returns {void}
|
98
|
+
*/
|
99
|
+
handleRootHashHeartBeatMessage(message: RootHashMessage): void;
|
100
|
+
/**
|
101
|
+
* This method should be called when we receive a partial locus DTO that contains dataSets and htMeta information
|
102
|
+
* It updates the hash trees with the new leaf data based on the received Locus
|
103
|
+
*
|
104
|
+
* @param {Object} update - The locus update containing data sets and locus information
|
105
|
+
* @returns {void}
|
106
|
+
*/
|
107
|
+
handleLocusUpdate(update: {
|
108
|
+
dataSets?: Array<DataSet>;
|
109
|
+
locus: any;
|
110
|
+
}): void;
|
111
|
+
/**
|
112
|
+
* Handles incoming hash tree messages, updates the hash trees and calls locusInfoUpdateCallback
|
113
|
+
*
|
114
|
+
* @param {HashTreeMessage} message - The hash tree message containing data sets and objects to be processed
|
115
|
+
* @returns {void}
|
116
|
+
*/
|
117
|
+
handleMessage(message: HashTreeMessage): void;
|
118
|
+
/**
|
119
|
+
* Calculates a weighted backoff time that should be used for syncs
|
120
|
+
*
|
121
|
+
* @param {Object} backoff - The backoff configuration containing maxMs and exponent
|
122
|
+
* @returns {number} - A weighted backoff time based on the provided configuration, using algorithm supplied by Locus team
|
123
|
+
*/
|
124
|
+
private getWeightedBackoffTime;
|
125
|
+
/**
|
126
|
+
* Runs the sync algorithm for the given data set.
|
127
|
+
*
|
128
|
+
* @param {DataSet} receivedDataSet - The data set to run the sync algorithm for.
|
129
|
+
* @returns {void}
|
130
|
+
*/
|
131
|
+
private runSyncAlgorithm;
|
132
|
+
/**
|
133
|
+
* Stops all timers for the data sets to prevent any further sync attempts.
|
134
|
+
* @returns {void}
|
135
|
+
*/
|
136
|
+
stopAllTimers(): void;
|
137
|
+
/**
|
138
|
+
* Gets the current hashes from the locus for a specific data set.
|
139
|
+
* @param {string} dataSetName
|
140
|
+
* @returns {string[]}
|
141
|
+
*/
|
142
|
+
private getHashesFromLocus;
|
143
|
+
/**
|
144
|
+
* Sends a sync request to Locus for the specified data set.
|
145
|
+
*
|
146
|
+
* @param {InternalDataSet} dataSet The data set to sync.
|
147
|
+
* @param {Record<number, LeafDataItem[]>} mismatchedLeavesData The mismatched leaves data to include in the sync request.
|
148
|
+
* @returns {Promise<HashTreeObject[]>}
|
149
|
+
*/
|
150
|
+
private sendSyncRequestToLocus;
|
151
|
+
}
|
152
|
+
export default HashTreeParser;
|
@@ -1,4 +1,59 @@
|
|
1
1
|
import EventsScope from '../common/events/events-scope';
|
2
|
+
import HashTreeParser, { DataSet, HashTreeMessage, HashTreeObject, HtMeta } from '../hashTree/hashTreeParser';
|
3
|
+
export type LocusLLMEvent = {
|
4
|
+
data: {
|
5
|
+
eventType: 'locus.state_message';
|
6
|
+
stateElementsMessage: HashTreeMessage;
|
7
|
+
};
|
8
|
+
};
|
9
|
+
export type LocusDTO = {
|
10
|
+
controls?: any;
|
11
|
+
fullState?: {
|
12
|
+
active: boolean;
|
13
|
+
count: number;
|
14
|
+
lastActive: string;
|
15
|
+
locked: boolean;
|
16
|
+
sessionId: string;
|
17
|
+
seessionIds: string[];
|
18
|
+
startTime: number;
|
19
|
+
state: string;
|
20
|
+
type: string;
|
21
|
+
};
|
22
|
+
host?: {
|
23
|
+
id: string;
|
24
|
+
incomingCallProtocols: any[];
|
25
|
+
isExternal: boolean;
|
26
|
+
name: string;
|
27
|
+
orgId: string;
|
28
|
+
};
|
29
|
+
htMeta?: HtMeta;
|
30
|
+
info?: any;
|
31
|
+
jsSdkMeta?: {
|
32
|
+
removedParticipantIds: string[];
|
33
|
+
};
|
34
|
+
links?: any;
|
35
|
+
mediaShares?: any[];
|
36
|
+
meetings?: any[];
|
37
|
+
participants: any[];
|
38
|
+
replaces?: any[];
|
39
|
+
self?: any;
|
40
|
+
sequence?: {
|
41
|
+
dirtyParticipants: number;
|
42
|
+
entries: number[];
|
43
|
+
rangeEnd: number;
|
44
|
+
rangeStart: number;
|
45
|
+
sequenceHash: number;
|
46
|
+
sessionToken: string;
|
47
|
+
since: string;
|
48
|
+
totalParticipants: number;
|
49
|
+
};
|
50
|
+
syncUrl?: string;
|
51
|
+
url?: string;
|
52
|
+
};
|
53
|
+
export type LocusApiResponseBody = {
|
54
|
+
dataSets?: DataSet[];
|
55
|
+
locus: LocusDTO;
|
56
|
+
};
|
2
57
|
/**
|
3
58
|
* @description LocusInfo extends ChildEmitter to convert locusInfo info a private emitter to parent object
|
4
59
|
* @export
|
@@ -38,6 +93,8 @@ export default class LocusInfo extends EventsScope {
|
|
38
93
|
resources: any;
|
39
94
|
mainSessionLocusCache: any;
|
40
95
|
self: any;
|
96
|
+
hashTreeParser?: HashTreeParser;
|
97
|
+
hashTreeObjectId2ParticipantId: Map<number, string>;
|
41
98
|
/**
|
42
99
|
* Constructor
|
43
100
|
* @param {function} updateMeeting callback to update the meeting object from an object
|
@@ -78,10 +135,41 @@ export default class LocusInfo extends EventsScope {
|
|
78
135
|
init(locus?: any): void;
|
79
136
|
/**
|
80
137
|
* @param {Object} locus
|
138
|
+
* @param {DataSet[]} [dataSets=[]] - Array of data sets
|
81
139
|
* @returns {undefined}
|
82
140
|
* @memberof LocusInfo
|
83
141
|
*/
|
84
|
-
initialSetup(locus: object): void;
|
142
|
+
initialSetup(locus: object, dataSets?: DataSet[]): void;
|
143
|
+
/**
|
144
|
+
*
|
145
|
+
* @param {HashTreeObject} object data set object
|
146
|
+
* @param {any} locus
|
147
|
+
* @returns {void}
|
148
|
+
*/
|
149
|
+
updateHashTreeObjectInLocus(object: HashTreeObject, locus: LocusDTO): LocusDTO;
|
150
|
+
/**
|
151
|
+
* Handles HTTP response from Locus API call when hash tree update.
|
152
|
+
* @param {Meeting} meeting meeting object
|
153
|
+
* @param {LocusApiResponseBody} responseBody body of the http reponse from Locus API call
|
154
|
+
* @returns {void}
|
155
|
+
*/
|
156
|
+
handleLocusAPIResponse(meeting: any, responseBody: LocusApiResponseBody): void;
|
157
|
+
/**
|
158
|
+
* Handles a hash tree message received from Locus.
|
159
|
+
*
|
160
|
+
* @param {Meeting} meeting - The meeting object
|
161
|
+
* @param {HashTreeMessage} message incoming hash tree message
|
162
|
+
* @returns {void}
|
163
|
+
*/
|
164
|
+
private handleHashTreeMessage;
|
165
|
+
/**
|
166
|
+
* Updates our locus info based on the data parsed by the hash tree parser.
|
167
|
+
*
|
168
|
+
* @param {LocusInfoUpdateType} updateType - The type of update received.
|
169
|
+
* @param {Object} [data] - Additional data for the update, if applicable.
|
170
|
+
* @returns {void}
|
171
|
+
*/
|
172
|
+
private updateFromHashTree;
|
85
173
|
/**
|
86
174
|
* @param {Meeting} meeting
|
87
175
|
* @param {Object} data
|
@@ -101,10 +189,11 @@ export default class LocusInfo extends EventsScope {
|
|
101
189
|
* updates the locus with full locus object
|
102
190
|
* @param {object} locus locus object
|
103
191
|
* @param {string} eventType particulat locus event
|
192
|
+
* @param {DataSet[]} dataSets
|
104
193
|
* @returns {object} null
|
105
194
|
* @memberof LocusInfo
|
106
195
|
*/
|
107
|
-
onFullLocus(locus: any, eventType?: string): void;
|
196
|
+
onFullLocus(locus: any, eventType?: string, dataSets?: Array<DataSet>): void;
|
108
197
|
/**
|
109
198
|
* @param {String} eventType
|
110
199
|
* @returns {undefined}
|
@@ -159,11 +248,12 @@ export default class LocusInfo extends EventsScope {
|
|
159
248
|
/**
|
160
249
|
* update meeting's members
|
161
250
|
* @param {Object} participants new participants object
|
251
|
+
* @param {Array} removedParticipantIds list of removed participants
|
162
252
|
* @param {Boolean} isReplace is replace the whole members
|
163
253
|
* @returns {Array} updatedParticipants
|
164
254
|
* @memberof LocusInfo
|
165
255
|
*/
|
166
|
-
updateParticipants(participants: object, isReplace?: boolean): void;
|
256
|
+
updateParticipants(participants: object, removedParticipantIds: string[], isReplace?: boolean): void;
|
167
257
|
/**
|
168
258
|
* @param {Object} controls
|
169
259
|
* @param {Object} self
|
@@ -103,6 +103,8 @@ interface IInMeetingActions {
|
|
103
103
|
canEnableRemoteDesktopControl?: boolean;
|
104
104
|
canDisableRemoteDesktopControl?: boolean;
|
105
105
|
canMoveToLobby?: boolean;
|
106
|
+
canEnablePollingQA?: boolean;
|
107
|
+
canDisablePollingQA?: boolean;
|
106
108
|
}
|
107
109
|
/**
|
108
110
|
* @class InMeetingActions
|
@@ -206,6 +208,8 @@ export default class InMeetingActions implements IInMeetingActions {
|
|
206
208
|
canEnableRemoteDesktopControl: any;
|
207
209
|
canDisableRemoteDesktopControl: any;
|
208
210
|
canMoveToLobby: any;
|
211
|
+
canEnablePollingQA: any;
|
212
|
+
canDisablePollingQA: any;
|
209
213
|
/**
|
210
214
|
* Returns all meeting action options
|
211
215
|
* @returns {Object}
|
@@ -8,6 +8,7 @@ import Roap, { type TurnDiscoverySkipReason } from '../roap/index';
|
|
8
8
|
import { type TurnServerInfo } from '../roap/types';
|
9
9
|
import { type BundlePolicy } from '../media';
|
10
10
|
import MediaProperties from '../media/properties';
|
11
|
+
import { LocusDTO } from '../locus-info';
|
11
12
|
import ReconnectionManager from '../reconnection-manager';
|
12
13
|
import MeetingRequest from './request';
|
13
14
|
import Members from '../members/index';
|
@@ -21,6 +22,8 @@ import RecordingController from '../recording-controller';
|
|
21
22
|
import ControlsOptionsManager from '../controls-options-manager';
|
22
23
|
import { LocusMediaRequest } from './locusMediaRequest';
|
23
24
|
import { BrbState } from './brbState';
|
25
|
+
import { SetStageOptions } from './request.type';
|
26
|
+
import { DataSet } from '../hashTree/hashTreeParser';
|
24
27
|
export type CaptionData = {
|
25
28
|
id: string;
|
26
29
|
isFinal: boolean;
|
@@ -66,6 +69,13 @@ export type AddMediaOptions = {
|
|
66
69
|
remoteMediaManagerConfig?: RemoteMediaManagerConfiguration;
|
67
70
|
bundlePolicy?: BundlePolicy;
|
68
71
|
allowMediaInLobby?: boolean;
|
72
|
+
additionalMediaOptions?: AdditionalMediaOptions;
|
73
|
+
};
|
74
|
+
export type AdditionalMediaOptions = {
|
75
|
+
sendVideo?: boolean;
|
76
|
+
receiveVideo?: boolean;
|
77
|
+
sendAudio?: boolean;
|
78
|
+
receiveAudio?: boolean;
|
69
79
|
};
|
70
80
|
export type CallStateForMetrics = {
|
71
81
|
correlationId?: string;
|
@@ -881,15 +891,17 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
881
891
|
phoneNumber: string;
|
882
892
|
}): any;
|
883
893
|
/**
|
884
|
-
* Cancel an SIP call invitation made during a meeting
|
894
|
+
* Cancel an SIP/phone call invitation made during a meeting
|
885
895
|
* @param {Object} invitee
|
886
896
|
* @param {String} invitee.memberId
|
887
|
-
* @
|
897
|
+
* @param {Boolean} [invitee.isInternalNumber] - When cancel phone invitation, if the number is internal
|
898
|
+
* @returns {Promise} see #members.cancelInviteByMemberId
|
888
899
|
* @public
|
889
900
|
* @memberof Meeting
|
890
901
|
*/
|
891
|
-
|
902
|
+
cancelInviteByMemberId(invitee: {
|
892
903
|
memberId: string;
|
904
|
+
isInternalNumber?: boolean;
|
893
905
|
}): any;
|
894
906
|
/**
|
895
907
|
* Admit the guest(s) to the call once they are waiting.
|
@@ -1030,11 +1042,13 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
1030
1042
|
* @memberof Meeting
|
1031
1043
|
*/
|
1032
1044
|
setLocus(locus: {
|
1045
|
+
locus: LocusDTO;
|
1033
1046
|
mediaConnections: Array<any>;
|
1034
1047
|
locusUrl: string;
|
1035
1048
|
locusId: string;
|
1036
1049
|
mediaId: string;
|
1037
1050
|
host: object;
|
1051
|
+
dataSets: DataSet[];
|
1038
1052
|
} | any): void;
|
1039
1053
|
/**
|
1040
1054
|
* Upload logs for the current meeting
|
@@ -1252,6 +1266,12 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
1252
1266
|
startTranscription(options?: {
|
1253
1267
|
spokenLanguage?: string;
|
1254
1268
|
}): Promise<void>;
|
1269
|
+
/** Handles Locus LLM events
|
1270
|
+
*
|
1271
|
+
* @param {LocusLLMEvent} event - The Locus LLM event to process
|
1272
|
+
* @returns {void}
|
1273
|
+
*/
|
1274
|
+
private processLocusLLMEvent;
|
1255
1275
|
/**
|
1256
1276
|
* Callback called when a relay event is received from meeting LLM Connection
|
1257
1277
|
* @param {RelayEvent} e Event object coming from LLM Connection
|
@@ -1993,5 +2013,18 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
1993
2013
|
* @returns {Promise<MediaReachabilityMetrics>}
|
1994
2014
|
*/
|
1995
2015
|
private getMediaReachabilityMetricFields;
|
2016
|
+
/**
|
2017
|
+
* Set the stage for the meeting
|
2018
|
+
*
|
2019
|
+
* @param {SetStageOptions} options Options to use when setting the stage
|
2020
|
+
* @returns {Promise} The locus request
|
2021
|
+
*/
|
2022
|
+
setStage({ activeSpeakerProportion, customBackground, customLogo, customNameLabel, importantParticipants, lockAttendeeViewOnStage, showActiveSpeaker, }?: SetStageOptions): Promise<any>;
|
2023
|
+
/**
|
2024
|
+
* Unset the stage for the meeting
|
2025
|
+
*
|
2026
|
+
* @returns {Promise} The locus request
|
2027
|
+
*/
|
2028
|
+
unsetStage(): Promise<any>;
|
1996
2029
|
}
|
1997
2030
|
export {};
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import { StatelessWebexPlugin } from '@webex/webex-core';
|
2
|
-
import { SendReactionOptions, BrbOptions, ToggleReactionsOptions, PostMeetingDataConsentOptions } from './request.type';
|
2
|
+
import { SendReactionOptions, BrbOptions, ToggleReactionsOptions, PostMeetingDataConsentOptions, SynchronizeVideoLayout } from './request.type';
|
3
3
|
import { AnnotationInfo } from '../annotation/annotation.types';
|
4
4
|
import { ClientMediaPreferences } from '../reachability/reachability.types';
|
5
5
|
/**
|
@@ -314,4 +314,12 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
314
314
|
* @returns {Promise}
|
315
315
|
*/
|
316
316
|
setPostMeetingDataConsent({ postMeetingDataConsent, locusUrl, deviceUrl, selfId, }: PostMeetingDataConsentOptions): Promise<any>;
|
317
|
+
/**
|
318
|
+
* Synchronize the stage for a meeting
|
319
|
+
*
|
320
|
+
* @param {LocusUrl} locusUrl The locus URL
|
321
|
+
* @param {SetStageVideoLayout} videoLayout The video layout to synchronize
|
322
|
+
* @returns {Promise} The locus request
|
323
|
+
*/
|
324
|
+
synchronizeStage(locusUrl: string, videoLayout: SynchronizeVideoLayout): Promise<any>;
|
317
325
|
}
|
@@ -21,3 +21,77 @@ export type PostMeetingDataConsentOptions = {
|
|
21
21
|
deviceUrl: string;
|
22
22
|
selfId: string;
|
23
23
|
};
|
24
|
+
export type StageCustomLogoPositions = 'LowerLeft' | 'LowerMiddle' | 'LowerRight' | 'UpperLeft' | 'UpperMiddle' | 'UpperRight';
|
25
|
+
export type StageNameLabelType = 'Primary' | 'PrimaryInverted' | 'Secondary' | 'SecondaryInverted';
|
26
|
+
export type StageCustomBackground = {
|
27
|
+
url: string;
|
28
|
+
[others: string]: unknown;
|
29
|
+
};
|
30
|
+
export type StageCustomLogo = {
|
31
|
+
url: string;
|
32
|
+
position: StageCustomLogoPositions;
|
33
|
+
[others: string]: unknown;
|
34
|
+
};
|
35
|
+
export type StageCustomNameLabel = {
|
36
|
+
accentColor: string;
|
37
|
+
background: {
|
38
|
+
color: string;
|
39
|
+
};
|
40
|
+
border: {
|
41
|
+
color: string;
|
42
|
+
};
|
43
|
+
content: {
|
44
|
+
displayName: {
|
45
|
+
color: string;
|
46
|
+
};
|
47
|
+
subtitle: {
|
48
|
+
color: string;
|
49
|
+
};
|
50
|
+
};
|
51
|
+
decoration: {
|
52
|
+
color: string;
|
53
|
+
};
|
54
|
+
fadeOut?: {
|
55
|
+
delay: number;
|
56
|
+
};
|
57
|
+
type: StageNameLabelType;
|
58
|
+
[others: string]: unknown;
|
59
|
+
};
|
60
|
+
export type SetStageOptions = {
|
61
|
+
activeSpeakerProportion?: number;
|
62
|
+
customBackground?: StageCustomBackground;
|
63
|
+
customLogo?: StageCustomLogo;
|
64
|
+
customNameLabel?: StageCustomNameLabel;
|
65
|
+
importantParticipants?: {
|
66
|
+
mainCsi: number;
|
67
|
+
participantId: string;
|
68
|
+
}[];
|
69
|
+
lockAttendeeViewOnStage?: boolean;
|
70
|
+
showActiveSpeaker?: boolean;
|
71
|
+
};
|
72
|
+
export type SetStageVideoLayout = {
|
73
|
+
overrideDefault: true;
|
74
|
+
lockAttendeeViewOnStageOnly: boolean;
|
75
|
+
stageParameters: {
|
76
|
+
importantParticipants?: {
|
77
|
+
participantId: string;
|
78
|
+
mainCsi: number;
|
79
|
+
order: number;
|
80
|
+
}[];
|
81
|
+
showActiveSpeaker: {
|
82
|
+
show: boolean;
|
83
|
+
order: number;
|
84
|
+
};
|
85
|
+
activeSpeakerProportion: number;
|
86
|
+
stageManagerType: number;
|
87
|
+
};
|
88
|
+
customLayouts?: {
|
89
|
+
background?: StageCustomBackground;
|
90
|
+
logo?: StageCustomLogo;
|
91
|
+
};
|
92
|
+
nameLabelStyle?: StageCustomNameLabel;
|
93
|
+
};
|
94
|
+
export type UnsetStageVideoLayout = {
|
95
|
+
overrideDefault: false;
|
96
|
+
};
|
97
|
+
export type SynchronizeVideoLayout = SetStageVideoLayout | UnsetStageVideoLayout;
|
@@ -92,14 +92,14 @@ declare const MeetingUtil: {
|
|
92
92
|
*/
|
93
93
|
addSequence: (meeting: any, requestBody: any) => void;
|
94
94
|
/**
|
95
|
-
* Updates the locus info for the meeting with the
|
96
|
-
* returned from requests
|
95
|
+
* Updates the locus info for the meeting with the locus
|
96
|
+
* information returned from API requests made to Locus
|
97
97
|
* Returns the original response object
|
98
98
|
* @param {Object} meeting The meeting object
|
99
99
|
* @param {Object} response The response of the http request
|
100
100
|
* @returns {Object}
|
101
101
|
*/
|
102
|
-
|
102
|
+
updateLocusFromApiResponse: (meeting: any, response: any) => any;
|
103
103
|
generateBuildLocusDeltaRequestOptions: (originalMeeting: any) => (originalOptions: any) => any;
|
104
104
|
generateLocusDeltaRequest: (originalMeeting: any) => (originalOptions: any) => any;
|
105
105
|
selfSupportsFeature: (feature: SELF_POLICY, userPolicies: Record<SELF_POLICY, boolean>) => boolean;
|
@@ -22,6 +22,12 @@ export default class MembersCollection {
|
|
22
22
|
* @memberof MembersCollection
|
23
23
|
*/
|
24
24
|
getAll(): Record<string, Member>;
|
25
|
+
/**
|
26
|
+
* Removes a member from the collection
|
27
|
+
* @param {String} id
|
28
|
+
* @returns {void}
|
29
|
+
*/
|
30
|
+
remove(id: string): void;
|
25
31
|
/**
|
26
32
|
* @returns {void}
|
27
33
|
* reset members
|
@@ -84,6 +84,7 @@ export default class Members extends StatelessWebexPlugin {
|
|
84
84
|
locusParticipantsUpdate(payload: {
|
85
85
|
participants: object;
|
86
86
|
isReplace?: boolean;
|
87
|
+
removedParticipantIds?: Array<string>;
|
87
88
|
}): void;
|
88
89
|
/**
|
89
90
|
* Internal update the content id
|
@@ -126,6 +127,12 @@ export default class Members extends StatelessWebexPlugin {
|
|
126
127
|
* @memberof Members
|
127
128
|
*/
|
128
129
|
private handleMembersUpdate;
|
130
|
+
/**
|
131
|
+
* removes members from the collection
|
132
|
+
* @param {Array<string>} removedMembers removed members ids
|
133
|
+
* @returns {void}
|
134
|
+
*/
|
135
|
+
private removeMembers;
|
129
136
|
/**
|
130
137
|
* set members to the member collection from each updated/added lists as passed in
|
131
138
|
* @param {Array} list
|
@@ -226,12 +233,17 @@ export default class Members extends StatelessWebexPlugin {
|
|
226
233
|
*/
|
227
234
|
cancelPhoneInvite(invitee: any): any;
|
228
235
|
/**
|
229
|
-
* Cancels an SIP call to the associated meeting
|
230
|
-
* @param {
|
236
|
+
* Cancels an SIP/phone call to the associated meeting
|
237
|
+
* @param {Object} invitee
|
238
|
+
* @param {String} invitee.memberId - The memberId of the invitee
|
239
|
+
* @param {Boolean} [invitee.isInternalNumber] - When cancel phone invitation, if the number is internal
|
231
240
|
* @returns {Promise}
|
232
241
|
* @memberof Members
|
233
242
|
*/
|
234
|
-
|
243
|
+
cancelInviteByMemberId(invitee: {
|
244
|
+
memberId: string;
|
245
|
+
isInternalNumber?: boolean;
|
246
|
+
}): any;
|
235
247
|
/**
|
236
248
|
* Admits waiting members (invited guests to meeting)
|
237
249
|
* @param {Array} memberIds
|
@@ -136,5 +136,5 @@ export default class MembersRequest extends StatelessWebexPlugin {
|
|
136
136
|
* @throws {Error} if the options are not valid and complete, must have invitee with memberId AND locusUrl
|
137
137
|
* @memberof MembersRequest
|
138
138
|
*/
|
139
|
-
|
139
|
+
cancelInviteByMemberId(options: any): Promise<any>;
|
140
140
|
}
|
@@ -26,6 +26,7 @@ declare const MembersUtil: {
|
|
26
26
|
*/
|
27
27
|
getAddMemberBody: (options: any) => {
|
28
28
|
invitees: {
|
29
|
+
isInternalNumber?: any;
|
29
30
|
roles?: any;
|
30
31
|
address: any;
|
31
32
|
}[];
|
@@ -55,6 +56,7 @@ declare const MembersUtil: {
|
|
55
56
|
uri: any;
|
56
57
|
body: {
|
57
58
|
invitees: {
|
59
|
+
isInternalNumber?: any;
|
58
60
|
roles?: any;
|
59
61
|
address: any;
|
60
62
|
}[];
|
@@ -228,16 +230,17 @@ declare const MembersUtil: {
|
|
228
230
|
}[];
|
229
231
|
};
|
230
232
|
};
|
231
|
-
|
233
|
+
cancelInviteByMemberIdOptions: (invitee: any, locusUrl: any) => {
|
232
234
|
invitee: any;
|
233
235
|
locusUrl: any;
|
234
236
|
};
|
235
|
-
|
237
|
+
generateCancelInviteByMemberIdRequestParams: (options: any) => {
|
236
238
|
method: string;
|
237
239
|
uri: any;
|
238
240
|
body: {
|
239
241
|
actionType: string;
|
240
242
|
invitees: {
|
243
|
+
isInternalNumber?: any;
|
241
244
|
address: any;
|
242
245
|
}[];
|
243
246
|
};
|
@@ -69,6 +69,7 @@ declare const BEHAVIORAL_METRICS: {
|
|
69
69
|
MEETING_INFO_POLICY_ERROR: string;
|
70
70
|
LOCUS_DELTA_SYNC_FAILED: string;
|
71
71
|
LOCUS_DELTA_OUT_OF_ORDER: string;
|
72
|
+
LOCUS_SYNC_HANDLING_FAILED: string;
|
72
73
|
PERMISSION_TOKEN_REFRESH: string;
|
73
74
|
PERMISSION_TOKEN_REFRESH_ERROR: string;
|
74
75
|
TURN_DISCOVERY_LATENCY: string;
|
@@ -1,7 +1,17 @@
|
|
1
1
|
import { SendSlot, MediaType, LocalStream, MultistreamRoapMediaConnection, NamedMediaGroup, StreamState } from '@webex/internal-media-core';
|
2
|
+
/**
|
3
|
+
* This class is used to manage the sendSlots for the given media types.
|
4
|
+
*/
|
2
5
|
export default class SendSlotManager {
|
3
6
|
private readonly slots;
|
4
7
|
private readonly LoggerProxy;
|
8
|
+
private readonly sourceStateOverrides;
|
9
|
+
/**
|
10
|
+
* Constructor for SendSlotManager
|
11
|
+
*
|
12
|
+
* @param {any} LoggerProxy is used to log the messages
|
13
|
+
* @constructor
|
14
|
+
*/
|
5
15
|
constructor(LoggerProxy: any);
|
6
16
|
/**
|
7
17
|
* This method is used to create a sendSlot for the given mediaType and returns the created sendSlot
|
@@ -32,6 +42,12 @@ export default class SendSlotManager {
|
|
32
42
|
* @returns {void}
|
33
43
|
*/
|
34
44
|
setSourceStateOverride(mediaType: MediaType, state: StreamState | null): void;
|
45
|
+
/**
|
46
|
+
* Gets the source state override for the given media type.
|
47
|
+
* @param {MediaType} mediaType - The type of media to get the source state override for.
|
48
|
+
* @returns {StreamState | null} - The current source state override or null if not set.
|
49
|
+
*/
|
50
|
+
private getSourceStateOverride;
|
35
51
|
/**
|
36
52
|
* This method publishes the given stream to the sendSlot for the given mediaType
|
37
53
|
* @param {MediaType} mediaType MediaType of the sendSlot to which a stream needs to be published (AUDIO_MAIN/VIDEO_MAIN/AUDIO_SLIDES/VIDEO_SLIDES)
|