Agora C++ API Reference for All Platforms
config_engine_i.h
1 //
2 // Agora Media SDK
3 //
4 // Copyright (c) 2020 Agora IO. All rights reserved.
5 //
6 #pragma once
7 
8 #include <cstdint>
9 #include <functional>
10 #include <string>
11 #include <unordered_set>
12 #include <utility>
13 
14 // internal key
15 #define INTERNAL_KEY_NT_ET_AP_PORT "nt.et.ap_port"
16 #define INTERNAL_KEY_NT_ET_ET_PORT_LIST "nt.et.et_port_list"
17 #define INTERNAL_KEY_NT_ET_AP_LIST "nt.et.ap_list"
18 #define INTERNAL_KEY_NT_ET_ET_LIST "nt.et.et_list"
19 #define INTERNAL_KEY_NT_PT_PUBLIC_DOMAIN_LIST "nt.pt.public_domain_list"
20 #define INTERNAL_KEY_RTC_AUDIO_MUTE_ME "rtc.audio.mute_me"
21 #define INTERNAL_KEY_RTC_AUDIO_MUTE_PEERS "rtc.audio.mute_peers"
22 #define INTERNAL_KEY_RTC_AUDIO_SET_DEFAULT_MUTE_PEERS "rtc.audio.set_default_mute_peers"
23 #define INTERNAL_KEY_RTC_AUDIO_MUTE_PEER "rtc.audio.mute_peer"
24 #define INTERNAL_KEY_RTC_AUDIO_UPLINK_MAX_RETRY_TIMES "rtc.audio.uplink_max_retry_times"
25 #define INTERNAL_KEY_RTC_AUDIO_DOWNLINK_MAX_RETRY_TIMES "rtc.audio.downlink_max_retry_times"
26 #define INTERNAL_KEY_RTC_AUDIO_ENABLED "rtc.audio.enabled"
27 #define INTERNAL_KEY_RTC_AUDIO_PAUSED "rtc.audio.paused"
28 #define INTERNAL_KEY_RTC_AUDIO_CODEC "rtc.audio.codec"
29 #define INTERNAL_KEY_RTC_AUDIO_DTX "rtc.audio.dtx"
30 #define INTERNAL_KEY_RTC_AUDIO_OPTIONS "rtc.audio.options"
31 #define INTERNAL_KEY_RTC_AUDIO_FRAMES_PER_PACKET "rtc.audio.frames_per_packet"
32 #define INTERNAL_KEY_RTC_AUDIO_INTERLEAVES_PER_PACKET "rtc.audio.interleaves_per_packet"
33 #define INTERNAL_KEY_RTC_AUDIO_HIGH_QUALITY_MODE "rtc.audio.high.quality.mode"
34 #define INTERNAL_KEY_RTC_AUDIO_NETWORK_OPTIMIZED "rtc.audio.network_optimized"
35 #define INTERNAL_KEY_RTC_AUDIO_INSTANT_JOIN_OPTIMIZED "rtc.audio.instant_join_optimized"
36 #define INTERNAL_KEY_RTC_AUDIO_START_CALL "rtc.audio.start_call"
37 #define INTERNAL_KEY_RTC_AUDIO_APM_DUMP "rtc.audio.apm_dump"
38 #define INTERNAL_KEY_RTC_AUDIO_FRAME_DUMP "rtc.audio.frame_dump"
39 #define INTERNAL_KEY_RTC_AUDIO_ACM_PTIME "rtc.audio.acm_ptime"
40 #define INTERNAL_KEY_RTC_VIDEO_MUTE_ME "rtc.video.mute_me"
41 #define INTERNAL_KEY_RTC_VIDEO_MUTE_PEERS "rtc.video.mute_peers"
42 #define INTERNAL_KEY_RTC_VIDEO_SET_DEFAULT_MUTE_PEERS "rtc.video.set_default_mute_peers"
43 #define INTERNAL_KEY_RTC_VIDEO_MUTE_PEER "rtc.video.mute_peer"
44 #define INTERNAL_KEY_RTC_VIDEO_SET_REMOTE_VIDEO_STREAM "rtc.video.set_remote_video_stream"
45 #define INTERNAL_KEY_RTC_VIDEO_SET_REMOTE_DEFAULT_VIDEO_STREAM_TYPE "rtc.video.set_remote_default_video_stream_type"
46 #define INTERNAL_KEY_RTC_VIDEO_CAPTURE "rtc.video.capture"
47 #define INTERNAL_KEY_RTC_VIDEO_ENABLED "rtc.video.enabled"
48 #define INTERNAL_KEY_RTC_VIDEO_PREVIEW "rtc.video.preview"
49 #define INTERNAL_KEY_RTC_VIDEO_AUDIENCE_PREVIEW "rtc.video.audience_preview"
50 #define INTERNAL_KEY_RTC_VIDEO_LOCAL_MIRRORED "rtc.video.local_mirrored"
51 #define INTERNAL_KEY_RTC_VIDEO_BITRATE_LIMIT "rtc.video.bitrate_limit"
52 #define INTERNAL_KEY_RTC_VIDEO_PROFILE "rtc.video.profile"
53 #define INTERNAL_KEY_RTC_VIDEO_ENGINE_PROFILE "rtc.video.engine_profile"
54 #define INTERNAL_KEY_RTC_VIDEO_CACHE "rtc.video.cache"
55 #define INTERNAL_KEY_RTC_VIDEO_CODEC "rtc.video.codec"
56 #define INTERNAL_KEY_RTC_VIDEO_PREFER_FRAME_RATE "rtc.video.prefer_frame_rate"
57 #define INTERNAL_KEY_RTC_VIDEO_WEB_H264_INTEROP_ENABLE "rtc.video.web_h264_interop_enable"
58 #define INTERNAL_KEY_RTC_VIDEO_CUSTOM_PROFILE "rtc.video.custom_profile"
59 #define INTERNAL_KEY_RTC_VIDEO_UPLINK_MAX_RETRY_TIMES "rtc.video.uplink_max_retry_times"
60 #define INTERNAL_KEY_RTC_VIDEO_DOWNLINK_MAX_RETRY_TIMES "rtc.video.downlink_max_retry_times"
61 #define INTERNAL_KEY_RTC_VIDEO_RSFEC_MIN_LEVEL "rtc.video.rsfec_min_level"
62 #define INTERNAL_KEY_RTC_PEER_OFFLINE_PERIOD "rtc.peer.offline_period"
63 #define INTERNAL_KEY_RTC_CONNECTION_TIMEOUT_PERIOD "rtc.connection_timeout_period"
64 #define INTERNAL_KEY_RTC_CHANNEL_MODE "rtc.channel_mode"
65 #define INTERNAL_KEY_RTC_AP_PORT "rtc.ap_port"
66 #define INTERNAL_KEY_RTC_VOCS_PORT "rtc.vocs_port"
67 #define INTERNAL_KEY_RTC_STUN_PORT "rtc.stun_port"
68 #define INTERNAL_KEY_RTC_LASTMILE_PROBE_TEST "rtc.lastmile_probe_test"
69 #define INTERNAL_KEY_RTC_AP_LIST "rtc.ap_list"
70 #define INTERNAL_KEY_RTC_VOCS_LIST "rtc.vocs_list"
71 #define INTERNAL_KEY_RTC_VOS_IP_PORT_LIST "rtc.vos_list"
72 #define INTERNAL_KEY_RTC_PRIORITY_VOS_IP_PORT_LIST "rtc.priority_vos_list"
73 #define INTERNAL_KEY_RTC_STUN_PORT "rtc.stun_port"
74 #define INTERNAL_KEY_RTC_ICE_LIST "rtc.ice_list"
75 #define INTERNAL_KEY_RTC_STUN_LIST "rtc.stun_list"
76 #define INTERNAL_KEY_RTC_ICE_LIST2 "rtc.ice_list2"
77 #define INTERNAL_KEY_RTC_RENEW_TOKEN "rtc.renew_token"
78 #define INTERNAL_KEY_RTC_NETOB "rtc.netob"
79 #define INTERNAL_KEY_RTC_PROXY_SERVER "rtc.proxy_server"
80 #define INTERNAL_KEY_RTC_ENABLE_PROXY_SERVER "rtc.enable_proxy"
81 #define INTERNAL_KEY_RTC_CROSS_CHANNEL_PARAM "rtc.cross_channel_param"
82 #define INTERNAL_KEY_RTC_CROSS_CHANNEL_ENABLED "rtc.cross_channel_enabled"
83 #define INTERNAL_KEY_RTC_ACTIVE_VOS_LIST "rtc.active_vos_list"
84 #define INTERNAL_KEY_RTC_JOINED_VOS "rtc.joined.vos"
85 #define INTERNAL_KEY_RTC_LOCAL_PUBLISH_FALLBACK_OPTION "rtc.local_publish_fallback_option"
86 #define INTERNAL_KEY_RTC_REMOTE_SUBSCRIBE_FALLBACK_OPTION "rtc.remote_subscribe_fallback_option"
87 #define INTERNAL_KEY_RTC_PUBLIC_DOMAIN_LIST "rtc.public_domain_list"
88 #define INTERNAL_KEY_RTC_VOET_LIST "rtc.voet_list"
89 #define INTERNAL_KEY_RTC_VOET_PORT_LIST "rtc.voet_port_list"
90 #define INTERNAL_KEY_RTC_SIGNAL_DEBUG "rtc.signal_debug"
91 #define INTERNAL_KEY_RTC_AUDIO_QUALITY_INDICATION "rtc.audio_quality_indication"
92 #define INTERNAL_KEY_RTC_TRANSPORT_QUALITY_INDICATION "rtc.transport_quality_indication"
93 #define INTERNAL_KEY_RTC_COMPATIBLE_MODE "rtc.compatible_mode"
94 #define INTERNAL_KEY_RTC_CLIENT_TYPE "rtc.client_type"
95 #define INTERNAL_KEY_RTC_EXTENSIONID "rtc.extension_id"
96 #define INTERNAL_KEY_RTC_REPORT_LEVEL "rtc.report_level"
97 #define INTERNAL_KEY_RTC_CHANNEL_PROFILE "rtc.channel_profile"
98 #define INTERNAL_KEY_RTC_CLIENT_ROLE "rtc.client_role"
99 #define INTERNAL_KEY_RTC_DUAL_STREAM_MODE "rtc.dual_stream_mode"
100 #define INTERNAL_KEY_RTC_ENCRYPTION_MASTER_KEY "rtc.encryption.master_key"
101 #define INTERNAL_KEY_RTC_ENCRYPTION_MODE "rtc.encryption.mode"
102 #define INTERNAL_KEY_RTC_FORCE_UNIFIED_COMMUNICATION_MODE "rtc.force_unified_communication_mode"
103 #define INTERNAL_KEY_RTC_TRY_P2P_ONLY_ONCE "rtc.try_p2p_only_once"
104 #define INTERNAL_KEY_RTC_APPLY_DEFAULT_CONFIG "rtc.apply_default_config"
105 #define INTERNAL_KEY_RTC_CACHE_CONFIG "rtc.cache_config"
106 #define INTERNAL_KEY_RTC_DUAL_SIGNALING_MODE "rtc.dual_signaling_mode"
107 #define INTERNAL_KEY_RTC_LIVE_DUAL_LBS_MODE "rtc.live_dual_lbs_mode"
108 #define INTERNAL_KEY_RTC_GEN_NOTIFICATION_WITH_ID "rtc.gen_notification_with_id"
109 #define INTERNAL_KEY_RTC_UPLOAD_LOG "rtc.upload_log"
110 #define INTERNAL_KEY_RTC_EXTENSION_LIST "rtc.extension_list"
111 #define INTERNAL_KEY_RTC_REQ_JOIN_PUBLISHER "rtc.req.join_publisher"
112 #define INTERNAL_KEY_RTC_RES_JOIN_PUBLISHER "rtc.res.join_publisher"
113 #define INTERNAL_KEY_RTC_REQ_REMOVE_PUBLISHER "rtc.req.remove_publisher"
114 #define INTERNAL_KEY_RTC_ENABLE_API_TRACER "rtc.enable_api_tracer"
115 #define INTERNAL_KEY_RTC_RECORDING_CONFIG "rtc.recording.config"
116 #define INTERNAL_KEY_RTC_AUDIO_FEC "rtc.audio_fec"
117 #define INTERNAL_KEY_RTC_CAPABILITIES "rtc.capabilities"
118 #define INTERNAL_KEY_RTC_USER_ACCOUNT_SERVER_LIST "rtc.user_account_server_list"
119 #define INTERNAL_KEY_RTC_WORK_MANAGER_ACCOUNT_LIST "rtc.work_manager_account_list"
120 #define INTERNAL_KEY_RTC_WORK_MANAGER_ADDR_LIST "rtc.work_manager_addr_list"
121 #define INTERNAL_KEY_RTC_REPORT_TYPE "rtc.report_type"
122 #define INTERNAL_KEY_RTC_AUDIO_FROZEN_TYPE_IN_API "rtc.audio.frozen_type_in_api"
123 #define CONFIGURABLE_KEY_RTC_VIDEO_PLAYOUT_DELAY_MAX "rtc.video.playout_delay_max"
124 #define CONFIGURABLE_KEY_RTC_VIDEO_PLAYOUT_DELAY_MIN "rtc.video.playout_delay_min"
125 
126 #define CONFIGURABLE_KEY_RTC_E2E_DELAY_MAX "rtc.video.e2e_delay_max"
127 #define CONFIGURABLE_KEY_RTC_DECODE_RENDER_DELAY "rtc.video.decoder_render_delay"
128 #define CONFIGURABLE_KEY_RTC_BUFFER_MODIFY_PACER "rtc.video.buffer_modify_pacer"
129 #define CONFIGURABLE_KEY_RTC_BUFFER_DELAY_MIN "rtc.video.buffer_delay_min"
130 #define CONFIGURABLE_KEY_RTC_ENABLE_SYNC_RENDER "rtc.video.enable_sync_render"
131 
132 #define INTERNAL_KEY_RTC_DISABLE_INTRA_REQUEST "rtc.disable_intra_request"
133 #define CONFIGURABLE_KEY_RTC_UPLOAD_LOG_REQUEST "rtc.upload_log_request"
134 #define CONFIGURABLE_KEY_RTC_WIN_ALLOW_MAGNIFICATION "rtc.win_allow_magnification"
135 #define CONFIGURABLE_KEY_RTC_WIN_ALLOW_DIRECTX "rtc.win_allow_directx"
136 #define CONFIGURABLE_KEY_SDK_DEBUG_ENABLE "rtc.debug.enable"
137 #define INTERNAL_KEY_SDK_DEBUG_COMMAND "rtc.debug.command"
138 #define INTERNAL_KEY_RTC_TEST_CONFIG_SERVICE "rtc.test_config_service"
139 #define CONFIGURABLE_KEY_RTC_AEC3_ENABLE "rtc.aec3.enable"
140 #define CONFIGURABLE_KEY_RTC_AUDIO_ENABLE_OPENSL "rtc.audio.opensl"
141 #define CONFIGURABLE_KEY_RTC_AUDIO_BANNED_SL_LEVEL "rtc.audio.banned_sl_level"
142 #define CONFIGURABLE_KEY_RTC_AUDIO_HIGH_QUALITY_ENABLE_OPENSL_WITH_HEADSET "rtc.audio.highQuality.enableOpenSL.withHeadset"
143 #define CONFIGURABLE_KEY_RTC_AUDIO_IO_BUFFER_PERIOD_WITH_OPENSL "rtc.audio.io_buffer_period.withOpenSL"
144 #define CONFIGURABLE_KEY_RTC_AUDIO_ADM_LAYER "rtc.audio.admlayer"
145 #define CONFIGURABLE_KEY_RTC_REPORT_CONFIG "rtc.report_config"
146 #define CONFIGURABLE_KEY_RTC_AUDIO_PLAYBUFSIZE_FACTOR "rtc.audio.playbufsize_factor"
147 #define INTERNAL_KEY_CHE_AUDIO_PROFILE "che.audio.profile"
148 #define INTERNAL_KEY_CHE_AUDIO_USE_MEDIA_VOLUME_IN_HEADSET "che.audio.use_media_volume_in_headset"
149 #define INTERNAL_KEY_CHE_AUDIO_USE_MEDIA_VOLUME_IN_AUDIENCE "che.audio.use_media_volume_in_audience"
150 #define INTERNAL_KEY_CHE_AUDIO_USE_MEDIA_VOLUME_IN_SOLO "che.audio.use_media_volume_in_solo"
151 #define INTERNAL_KEY_CHE_AUDIO_UPLINK_MAX_FEC_FRAME "che.audio.uplink.max_fec_frame"
152 #define CONFIGURABLE_KEY_RTC_IP_AREACODE "rtc.ip_area_code"
153 #define CONFIGURABLE_KEY_RTC_IP_AREACODE_CN "rtc.ip_cn_area"
154 #define CONFIGURABLE_KEY_RTC_IP_AREACODE_NA "rtc.ip_na_area"
155 #define CONFIGURABLE_KEY_RTC_IP_AREACODE_EUR "rtc.ip_eur_area"
156 #define CONFIGURABLE_KEY_RTC_IP_AREACODE_AS "rtc.ip_as_area"
157 #define CONFIGURABLE_KEY_RTC_IP_AREACODE_JP "rtc.ip_jp_area"
158 #define CONFIGURABLE_KEY_RTC_IP_AREACODE_IN "rtc.ip_india_area"
159 #define CONFIGURABLE_KEY_RTC_IP_AREACODE_OCEANIA "rtc.ip_oceania_area"
160 #define CONFIGURABLE_KEY_RTC_IP_AREACODE_SA "rtc.ip_south_america_area"
161 #define CONFIGURABLE_KEY_RTC_IP_AREACODE_AFRICA "rtc.ip_africa_area"
162 #define CONFIGURABLE_KEY_RTC_IP_AREACODE_OVS "rtc.ip_oversea_area"
163 #define CONFIGURABLE_KEY_RTC_IP_TLS_AREACODE_CN "rtc.ip_tls_cn_area"
164 #define CONFIGURABLE_KEY_RTC_IP_TLS_AREACODE_NA "rtc.ip_tls_na_area"
165 #define CONFIGURABLE_KEY_RTC_IP_TLS_AREACODE_EUR "rtc.ip_tls_eur_area"
166 #define CONFIGURABLE_KEY_RTC_IP_TLS_AREACODE_AS "rtc.ip_tls_as_area"
167 #define CONFIGURABLE_KEY_RTC_IP_TLS_AREACODE_JP "rtc.ip_tls_jp_area"
168 #define CONFIGURABLE_KEY_RTC_IP_TLS_AREACODE_IN "rtc.ip_tls_indian_area"
169 #define CONFIGURABLE_KEY_RTC_IP_TLS_AREACODE_OC "rtc.ip_tls_oceania_area"
170 #define CONFIGURABLE_KEY_RTC_IP_TLS_AREACODE_SA "rtc.ip_tls_south_america_area"
171 #define CONFIGURABLE_KEY_RTC_IP_TLS_AREACODE_AF "rtc.ip_tls_africa_area"
172 #define CONFIGURABLE_KEY_RTC_IP_TLS_AREACODE_OVS "rtc.ip_tls_oversea_area"
173 #define CONFIGURABLE_KEY_RTC_PROXY_IP_AREACODE_CN "rtc.proxy.ip_cn_area"
174 #define CONFIGURABLE_KEY_RTC_PROXY_IP_AREACODE_NA "rtc.proxy.ip_na_area"
175 #define CONFIGURABLE_KEY_RTC_PROXY_IP_AREACODE_EUR "rtc.proxy.ip_eur_area"
176 #define CONFIGURABLE_KEY_RTC_PROXY_IP_AREACODE_AS "rtc.proxy.ip_as_area"
177 #define CONFIGURABLE_KEY_RTC_PROXY_IP_TLS_AREACODE_CN "rtc.proxy.ip_tls_cn_area"
178 #define CONFIGURABLE_KEY_RTC_PROXY_IP_TLS_AREACODE_NA "rtc.proxy.ip_tls_na_area"
179 #define CONFIGURABLE_KEY_RTC_PROXY_IP_TLS_AREACODE_EUR "rtc.proxy.ip_tls_eur_area"
180 #define CONFIGURABLE_KEY_RTC_PROXY_IP_TLS_AREACODE_AS "rtc.proxy.ip_tls_as_area"
181 #define CONFIGURABLE_KEY_RTC_ENABLE_DNS "rtc.enable_dns"
182 #define INTERNAL_KEY_RTC_PROXY_AP_PORTS "rtc.proxy.ap_ports"
183 #define INTERNAL_KEY_RTC_PROXY_AP_AUT_PORTS "rtc.proxy.ap_aut_ports"
184 #define INTERNAL_KEY_RTC_PROXY_AP_TLS_PORTS "rtc.proxy.ap_tls_ports"
185 #define INTERNAL_KEY_RTC_PROXY_AP_TLS_443_PORTS "rtc.proxy.tls_443_ports"
186 #define INTERNAL_KEY_RTC_JOIN_CHANNEL_TIMEOUT "rtc.join_channel_timeout"
187 #define CONFIGURABLE_KEY_RTC_FIRST_FRAME_DECODED_TIMEOUT "rtc.first_frame_decoded_timeout"
188 #define CONFIGURABLE_KEY_RTC_JOIN_TO_FIRST_DECODED_TIMEOUT "rtc.join_to_first_decoded_timeout"
189 #define CONFIGURABLE_KEY_RTC_VIDEO_ENABLED_HW_ENCODER KEY_RTC_VIDEO_ENABLED_HW_ENCODER
190 #define CONFIGURABLE_KEY_RTC_VIDEO_ENABLE_HW_DECODER KEY_RTC_VIDEO_ENABLED_HW_DECODER
191 #define INTERNAL_KEY_RTC_ENABLE_DEBUG_LOG "rtc.enable_debug_log"
192 #define CONFIGURABLE_VIDEO_QUICK_INTRA_HIGH_FEC "rtc.video.quickIntraHighFec"
193 #define CONFIGURABLE_VIDEO_LARGEST_REF_DISTANCE "rtc.video.largest_ref_distance"
194 #define CONFIGURABLE_ENABLE_NEW_RTO "rtc.enable_new_rto"
195 #define CONFIGURABLE_QUICK_REXFER_KEYFRAME "rtc.enable_quick_rexfer_keyframe"
196 #define CONFIGURABLE_KEY_RTC_P2P_SWITCH "rtc.enable_p2p"
197 #define INTERNAL_KEY_RTC_ENABLE_TWO_BYTE_RTP_EXTENSION "rtc.enable_two_byte_rtp_extension"
198 #define CONFIGURABLE_KEY_RTC_ENABLE_DUMP "rtc.enable_xdump"
199 #define CONFIGURABLE_KEY_RTC_ENABLE_DUMP_FILE "rtc.enable_xdump_file"
200 #define CONFIGURABLE_KEY_RTC_ENABLE_DUMP_UPLOAD "rtc.enable_xdump_upload"
201 #define INTERNAL_KEY_RTC_CRASH_FOR_TEST_PURPOSE "rtc.crash_for_test_purpose"
202 #define INTERNAL_KEY_RTC_THREAD_HANG_FOR_TEST_PURPOSE "rtc.thread_hang_for_test_purpose"
203 #define CONFIGURABLE_KEY_BITRATE_ADJUST_RATIO KEY_RTC_VIDEO_BITRATE_ADJUST_RATIO
204 #define CONFIGURABLE_KEY_MINBITRATE_RATIO KEY_RTC_VIDEO_MINBITRATE_RATIO
205 #define CONFIGURABLE_KEY_RTC_ENABLE_CAMERA_CAPTURE_YUV "rtc.enable_camera_capture_yuv"
206 #define CONFIGURABLE_KEY_CAMERA_OUTPUT_TYPE "che.video.android_camera_output_type"
207 #define CONFIGURABLE_KEY_RTC_CAMERA_ROTATION "rtc.camera_rotation"
208 #define CONFIGURABLE_KEY_RTC_SECONDARY_CAMERA_ROTATION "rtc.secondary_camera_rotation"
209 #define CONFIGURABLE_KEY_ENABLE_WEBRTC_PACER "rtc.enable_webrtc_pacer"
210 #define INTERNAL_KEY_RTC_GATEWAY_RTT "rtc.gateway_rtt"
211 #define INTERNAL_KEY_RTC_ENABLE_USERINFO_HIDDEN "rtc.enable_userinfo_hidden"
212 #define CONFIGURABLE_KEY_VIDEO_DEGRADATION_PREFERENCE KEY_RTC_VIDEO_DEGRADATION_PREFERENCE
213 #define CONFIGURABLE_KEY_VIDEO_DEGRADATION_FPS_DOWN_STEP KEY_RTC_VIDEO_DEGRADATION_FPS_DOWN_STEP
214 #define CONFIGURABLE_KEY_VIDEO_DEGRADATION_FPS_UP_STEP KEY_RTC_VIDEO_DEGRADATION_FPS_UP_STEP
215 #define CONFIGURABLE_KEY_RTC_VIDEO_CODEC_TYPE KEY_RTC_VIDEO_CODEC_TYPE
216 #define CONFIGURABLE_KEY_VIDEO_VQC_VERSION "rtc.video.vqc_version"
217 //TODO(kefan) these vqc parameters should placed in MediaEngineParameterCollection
218 #define CONFIGURABLE_KEY_VIDEO_VQC_QUICK_ADAPT_NETWORK "che.video.quick_adapt_network"
219 #define CONFIGURABLE_KEY_VIDEO_VQC_MIN_HOLDTIME_AUTO_RESIZE_ZOOMIN "che.video.min_holdtime_auto_resize_zoomin"
220 #define CONFIGURABLE_KEY_VIDEO_VQC_MIN_HOLDTIME_AUTO_RESIZE_ZOOMOUT "che.video.min_holdtime_auto_resize_zoomout"
221 #define CONFIGURABLE_KEY_VIDEO_VQC_MIN_FRAMERATE "che.video.video_min_framerate"
222 #define CONFIGURABLE_KEY_VIDEO_VQC_QP_ADJUST "che.video.qpAdjust"
223 #define CONFIGURABLE_KEY_VIDEO_VQC_IOS_H265_QPADJUST "che.video.ios_h265_qpAdjust"
224 #define CONFIGURABLE_KEY_FEC_METHOD "rtc.fec_method"
225 #define CONFIGURABLE_KEY_DM_FEC_WSIZE "rtc.dm_wsize"
226 #define CONFIGURABLE_KEY_DM_FEC_MIN_LEVEL "rtc.video.dmfec_min_level"
227 #define CONFIGURABLE_KEY_RTC_PACKET_BUFFER_SIZE "rtc.video.packet_buffer_size"
228 #define CONFIGURABLE_KEY_RTC_REXFER_MAX_ADVANCE "rtc.net.rexfer_max_advance"
229 
230 #define INTERNAL_KEY_RTC_NEW_VOS "rtc.new_vos"
231 #define CONFIGURABLE_KEY_AUDIO_PROCESS_BLACK_LIST "rtc.audio.process.black_list"
232 #define INTERNAL_KEY_RTC_AUDIO_CUSTOM_BITRATE "rtc.audio.custom_bitrate"
233 #define CONFIGURABLE_KEY_VIDEO_HAS_INTRA_REQUEST "che.video.has_intra_request"
234 #define CONFIGURABLE_KEY_ENABLE_VIDEO_SENDER_FRAME_DROPPER "che.video.enable_video_sender_frame_dropper"
235 #define CONFIGURABLE_KEY_RTC_VIDEO_QUALITY_SCALE_ONLY_ON_AVERAGE_QP KEY_RTC_VIDEO_QUALITY_SCALE_ONLY_ON_AVERAGE_QP
236 #define CONFIGURABLE_KEY_RTC_VIDEO_H264_QP_THRESHOLD_LOW KEY_RTC_VIDEO_H264_QP_THRESHOLD_LOW
237 #define CONFIGURABLE_KEY_RTC_VIDEO_H264_QP_THRESHOLD_HIGH KEY_RTC_VIDEO_H264_QP_THRESHOLD_HIGH
238 #define KEY_RTC_VIDEO_RATE_CONTROL_MODE "che.video.rate_control_mode"
239 #define INTERNAL_KEY_RTC_PRIMARY_FORCED_USING_SCREEN_CAPTURE "rtc.primary_screen.forced_using_screen_capture"
240 #define INTERNAL_KEY_RTC_SECONDARY_FORCED_USING_SCREEN_CAPTURE "rtc.secondary_screen.forced_using_screen_capture"
241 #define INTERNAL_KEY_RTC_DESENSITISE_IP "rtc.desensitize.Ip"
242 #define INTERNAL_KEY_RTC_AUDIO_CUSTOM_PAYLOAD_TYPE "rtc.audio.custom_payload_type"
243 #define INTERNAL_KEY_RTC_JOIN_VOS_TIMEOUT "rtc.join_vos_timeout"
244 
245 #define CONFIGURABLE_VIDEO_FEC_PROTECTION_FACTOR "rtc.video.fec_protection_factor"
246 #define CONFIGURABLE_VIDEO_ENABLE_FEC_REXFER "rtc.enable_fec_rexfer"
247 #define CONFIGURABLE_VIDEO_FEC_PROTECTION_RATIO_LEVEL "rtc.video.fec_protection_ratio_level"
248 #define CONFIGURABLE_VIDEO_FEC_RATIO_LEVEL_RTT_THRESHOLD "rtc.video.fec_ratio_level_rtt_threshold"
249 #define CONFIGURABLE_VIDEO_ENABLE_PEC "che.video.enable_pec"
250 #define CONFIGURABLE_VIDEO_ANDROID_CAMERA_SELECT "che.video.android_camera_select"
251 #define CONFIGURABLE_VIDEO_ANDROID_YUVCONVERTER_ENABLE_PBO "rtc.video.yuvconverter_enable_pbo"
252 #define CONFIGURABLE_VIDEO_ANDROID_YUVCONVERTER_ENABLE_PERF "rtc.video.yuvconverter_enable_perf"
253 #define CONFIGURABLE_VIDEO_FREEZE_DIAGNOSE "rtc.video.freeze_diagnose"
254 #define INTERNAL_KEY_AUDIO_AQM_THRESHOLD "che.audio.aqm.threshold"
255 #define INTERNAL_KEY_CHE_AUDIO_BITRATE_LEVEL "che.audio.bitrate.level"
256 #define CONFIGURABLE_VIDEO_ANDROID_CAMERA_PQ_FIRST "che.video.android_camera_PQ_First"
257 #define INTERNAL_KEY_RTC_AUDIO_DWLINK_MAX_ARQ "rtc.audio.dwlink.max_arq"
258 
259 #define CONFIGURABLE_KEY_VIDEO_H264_HW_MIN_RES_LEVEL "rtc.video.h264_hw_min_res_level"
260 #define CONFIGURABLE_KEY_VIDEO_ENC_MAX_SLICES "rtc.video.max_slices"
261 #define CONFIGURABLE_KEY_VIDEO_H264_PROFILE "rtc.video.h264_profile"
262 #define CONFIGURABLE_KEY_VIDEO_ENC_USR_A264 "che.video.a264_encode"
263 #define CONFIGURABLE_KEY_VIDEO_ENC_VMAF_CALC "che.video.vmafreport"
264 #define CONFIGURABLE_KEY_VIDEO_USE_SINGLE_SLICE "che.video.useSingleSliceParser"
265 
266 #define CONFIGURABLE_KEY_RTC_NEW_VOS INTERNAL_KEY_RTC_NEW_VOS
267 
268 #define CONFIGURABLE_KEY_RTC_PREFER_IPV6 "rtc.prefer_ipv6"
269 #define CONFIGURABLE_KEY_RTC_DISABLE_IPV6 "rtc.disable_ipv6"
270 #define CONFIGURABLE_KEY_RTC_ENABLE_AUDIO_RSFEC "rtc.enable_audio_rsfec"
271 
272 #define CONFIGURABLE_KEY_VIDEO_VPR_ENABLE "che.video.vpr.enable"
273 #define CONFIGURABLE_KEY_VIDEO_VPR_INIT_SIZE "che.video.vpr.init_size"
274 #define CONFIGURABLE_KEY_VIDEO_VPR_MAX_SIZE "che.video.vpr.max_size"
275 #define CONFIGURABLE_KEY_VIDEO_VPR_FROZEN_MS_THRES "che.video.vpr.frozen_ms_thres"
276 #define CONFIGURABLE_KEY_VIDEO_VPR_FROZEN_RATE_THRES "che.video.vpr.frozen_rate_thres"
277 
278 #define CONFIGURABLE_KEY_VIDEO_RETRANS_DETECT_ENABLE "che.video.retrans_detect_enable"
279 #define CONFIGURABLE_KEY_VIDEO_REXFER_DELAY_ENABLED "rtc.video.rexfer_delay_enabled"
280 #define CONFIGURABLE_KEY_VIDEO_AUDIENCE_REXFER_DALAY_MAX "rtc.video.audience_rexfer_delay_max_value"
281 #define CONFIGURABLE_KEY_VIDEO_BROADCASTER_REXFER_DALAY_MAX "rtc.video.broadcaster_rexfer_delay_max_value"
282 #define CONFIGURABLE_KEY_VIDEO_DOWN_MAX_RETRY_TIMES "rtc.video.downMaxRetryTimes"
283 #define CONFIGURABLE_KEY_VIDEO_HIGH_LOSS_THRESHOLD "rtc.video.high_loss_threshold"
284 #define CONFIGURABLE_KEY_VIDEO_MULTI_REXFER_MODE "rtc.video.multi_rexfer_mode"
285 #define CONFIGURABLE_KEY_RTC_VIDEO_ROTATION "rtc.video.rotation"
286 #define CONFIGURABLE_KEY_RTC_AUDIO_EXTRA_DELAY "rtc.audio.extra_delay"
287 #define CONFIGURABLE_KEY_RTC_VIDEO_CAPTURE_DELAY_TABLE "rtc.video.capture_delay_table"
288 
289 #define CONFIGURABLE_KEY_VIDEO_ENABLE_NEWCC "che.video.enableNewCC"
290 
291 #define CONFIGURABLE_KEY_VIDEO_FEC_CODEC "rtc.video.fec_codec"
292 #define CONFIGURABLE_DYNAMIC_AUDIO_MAX_BITRATE "rtc.audio.dynamic_audio_max_bitrate"
293 #define INTERNAL_KEY_RTC_VIDEO_ENCODER_WIDTH_ALIGNMENT "rtc.video.encoder_width_alignment"
294 #define INTERNAL_KEY_RTC_VIDEO_ENCODER_HEIGHT_ALIGNMENT "rtc.video.encoder_height_alignment"
295 #define INTERNAL_KEY_RTC_VIDEO_ENCODER_FORCE_ALIGNMENT "rtc.video.encoder_force_alignment"
296 #define CONFIGURABLE_KEY_RTC_VIDEO_DECODER_OUT_BYTE_FRAME "rtc.video.decoder_out_byte_frame"
297 
298 namespace agora {
299 namespace config {
300 
301 struct AnyValue {
302  enum Type {
303  UNSPEC = -1,
304  INTEGER = 0,
306  BOOLEAN = 2,
307  DOUBLE = 3,
308  CSTR = 4,
309  JSON = 5,
310  } type;
311  union {
312  int val_int;
313  unsigned int val_uint;
314  bool val_bool;
315  double val_double;
316  const char* val_cstr;
317  const void* val_cjson;
318  };
319 };
320 
321 template <class T>
324 };
325 template <>
328  static int getValue(const AnyValue& value) { return value.val_int; }
329  static void setValue(int from, AnyValue& to) {
330  to.type = AnyValueType;
331  to.val_int = from;
332  }
333 };
334 template <>
335 struct ExternalParameterHelperTypeTraits<unsigned int> {
338  static unsigned int getValue(const AnyValue& value) { return value.val_uint; }
339  static void setValue(unsigned int from, AnyValue& to) {
340  to.type = AnyValueType;
341  to.val_uint = from;
342  }
343 };
344 template <>
348  static uint16_t getValue(const AnyValue& value) { return value.val_uint; }
349  static void setValue(uint16_t from, AnyValue& to) {
350  to.type = AnyValueType;
351  to.val_uint = from;
352  }
353 };
354 template <>
357  static double getValue(const AnyValue& value) { return value.val_double; }
358  static void setValue(double from, AnyValue& to) {
359  to.type = AnyValueType;
360  to.val_double = from;
361  }
362 };
363 template <>
366  static bool getValue(const AnyValue& value) { return value.val_bool; }
367  static void setValue(bool from, AnyValue& to) {
368  to.type = AnyValueType;
369  to.val_bool = from;
370  }
371 };
372 template <>
375  static std::string getValue(const AnyValue& value) { return value.val_cstr; }
376  static void setValue(const std::string& from, AnyValue& to) {
377  to.type = AnyValueType;
378  to.val_cstr = from.c_str();
379  }
380 };
381 template <>
383  static const config::AnyValue::Type AnyValueType = config::AnyValue::CSTR;
384  static const char* getValue(const AnyValue& value) { return value.val_cstr; }
385  static void setValue(const char* from, AnyValue& to) {
386  to.type = AnyValueType;
387  to.val_cstr = from;
388  }
389 };
390 
391 template <>
393  static const config::AnyValue::Type AnyValueType = config::AnyValue::JSON;
394  static const void* getValue(const AnyValue& value) { return value.val_cjson; }
395  static void setValue(const void* from, AnyValue& to) {
396  to.type = AnyValueType;
397  to.val_cjson = from;
398  }
399 };
400 
402  public:
403  virtual bool toUserId(unsigned int uid, std::string& userId) const = 0;
404  virtual bool toInternalUid(const char* userId, unsigned int& uid) const = 0;
405  virtual bool hasUser(unsigned int uid) const = 0;
406  virtual bool hasUser(const char* userId) const = 0;
407  virtual ~IUserIdManager() {}
408 };
409 
410 class IObserver {
411  public:
412  virtual bool onSetValue(const AnyValue& value) = 0;
413  virtual bool onGetValue(AnyValue& value) { return false; }
414  virtual ~IObserver() {}
415 };
416 class IFilter {
417  public:
418  virtual bool onSetValue(const AnyValue& value) = 0;
419  virtual bool onGetValue(AnyValue& value) { return false; }
420  virtual ~IFilter() {}
421 };
422 
423 class IParameter {
424  public:
425  virtual void release() = 0;
426  virtual bool getValue(AnyValue& value) const = 0;
427  virtual bool setValue(
428  const AnyValue& value,
429  bool storeOnly) = 0; // specify storeOnly to true to
430  // skip trigger observer and filter
431  virtual bool getOriginalValue(AnyValue& value) const = 0;
432  virtual bool setOriginalValue(const AnyValue& value) = 0;
433  virtual bool connectExternalObserver(IObserver* observer,
434  bool triggerOnConnect) = 0;
435  virtual bool disconnectExternalObserver() = 0;
436  virtual bool connectExternalFilter(IFilter* filter,
437  bool triggerOnConnect) = 0;
438  virtual bool disconnectExternalFilter() = 0;
439  virtual ~IParameter() {}
440 };
441 
443  public:
444  virtual void release() = 0;
446 };
447 
449  public:
456  };
457  virtual IParameter* createParameter(const char* key, AnyValue::Type valueType,
458  PARAMETER_TYPE paramType) = 0;
459  virtual IParameter* getParameter(const char* key) = 0;
460  virtual int setParameters(const char* parameters) = 0;
461  virtual ~IConfigEngine() {}
462 };
463 
464 template <class T>
466  public:
467  InternalParameterHelper(const T& defValue) : value_(defValue) {}
468  const T& value() const { return value_; }
469  bool setValue(const T& value) {
470  value_ = value;
471  return true;
472  }
473 
474  protected:
476 };
477 
479  public:
480  /*ExternalTriggerParameterHelper(IConfigEngine& engine, const char* key)
481  :parameter_(engine.getParameter(key))
482  {
483  }*/
485  AnyValue::Type valueType,
487  : parameter_(engine.createParameter(key, valueType, paramType)) {}
489  if (parameter_) parameter_->release();
490  }
491  operator bool() { return parameter_ != nullptr; }
492 
493  protected:
495 };
496 
497 template <class T>
499  public:
501  IConfigEngine& engine, const char* key, const T& defValue,
502  AnyValue::Type valueType =
505  : ExternalTriggerParameterHelper(engine, key, valueType, paramType) {
506  setValue(defValue, true);
507  }
508  T value() const {
509  AnyValue val;
510  if (parameter_ && parameter_->getValue(val)) {
512  }
513  return T();
514  }
515  bool setValue(const AnyValue& value, bool storeValue = true) {
516  if (parameter_) {
517  return parameter_->setValue(value, storeValue);
518  }
519  return false;
520  }
521  bool setValue(T value, bool storeValue = true) {
522  AnyValue v;
524  return setValue(v, storeValue);
525  }
526 };
527 
528 template <class T>
530  : public ExternalParameterHelper<T> {
531  public:
533  IConfigEngine& engine, const char* key, const T& defValue,
534  AnyValue::Type valueType =
537  : ExternalParameterHelper<T>(engine, key, defValue, valueType,
538  paramType) {
539  setOriginalValue(defValue);
540  }
541  bool getOriginalValue(T& v) const {
542  AnyValue val;
543  if (this->parameter_ && this->parameter_->getOriginalValue(val)) {
545  return true;
546  }
547  return false;
548  }
549 
550  protected:
551  bool setOriginalValue(const T& value) {
552  if (this->parameter_) {
553  AnyValue v;
555  return this->parameter_->setOriginalValue(v);
556  }
557  return false;
558  }
559 };
560 
562  public:
564  void disconnectAll() {
565  for (auto& param : parameters_) {
566  param->disconnectExternalObserver();
567  param->disconnectExternalFilter();
568  }
569  parameters_.clear();
570  }
571  void addParameter(IParameter* param) {
572  if (param) parameters_.insert(param);
573  }
574 
575  private:
576  std::unordered_set<IParameter*> parameters_;
577 };
578 
579 template <class T>
581  public IObserver {
582  typedef std::function<int(const T&)> setter_type;
583  typedef std::function<int(T&)> getter_type;
584 
585  public:
587  IConfigEngine& engine, const char* key, const T& defValue,
588  AnyValue::Type valueType =
590  : ExternalParameterHelper<T>(engine, key, defValue, valueType,
591  IConfigEngine::HAS_EXTERNAL_OBSERVER) {}
592  bool connect(ExternalParameterHasSlots* om, setter_type&& setter,
593  getter_type&& getter = nullptr, bool triggerOnConnect = false) {
594  if (this->parameter_) {
595  this->setter_ = std::move(setter);
596  this->getter_ = std::move(getter);
597  if (om) om->addParameter(this->parameter_);
598  return this->parameter_->connectExternalObserver(this, triggerOnConnect);
599  }
600  return false;
601  }
602  virtual bool onSetValue(const AnyValue& value) override {
603  if (this->setter_) {
604  return this->setter_(
606  }
607  return false;
608  }
609  virtual bool onGetValue(AnyValue& value) override {
610  if (this->getter_) {
611  T tmp;
612  if (this->getter_(tmp) == 0) {
614  return true;
615  }
616  }
617  return false;
618  }
619 
620  private:
621  setter_type setter_;
622  getter_type getter_;
623 };
624 
625 template <class T>
627  public IFilter {
628  typedef std::function<int(const T&)> setter_type;
629  typedef std::function<int(T&)> getter_type;
630 
631  public:
633  IConfigEngine& engine, const char* key, const T& defValue,
634  AnyValue::Type valueType =
636  : ExternalParameterHelper<T>(engine, key, defValue, valueType,
637  IConfigEngine::HAS_EXTERNAL_FILTER) {}
638  bool connect(ExternalParameterHasSlots* om, setter_type&& setter,
639  getter_type&& getter = nullptr, bool triggerOnConnect = false) {
640  if (this->parameter_) {
641  this->setter_ = std::move(setter);
642  this->getter_ = std::move(getter);
643  if (om) om->addParameter(this->parameter_);
644  return this->parameter_->connectExternalFilter(this, triggerOnConnect);
645  }
646  return false;
647  }
648  virtual bool onSetValue(const AnyValue& value) override {
649  return this->setter_ &&
650  this->setter_(
652  }
653  virtual bool onGetValue(AnyValue& value) override {
654  if (this->getter_) {
655  T tmp;
656  if (this->getter_(tmp) == 0) {
658  return true;
659  }
660  }
661  return false;
662  }
663 
664  private:
665  setter_type setter_;
666  getter_type getter_;
667 };
668 
669 template <class T>
672  public IObserver {
673  typedef std::function<int(const T&)> setter_type;
674  typedef std::function<int(T&)> getter_type;
675 
676  public:
678  IConfigEngine& engine, const char* key,
679  AnyValue::Type valueType =
681  : ExternalTriggerParameterHelper(engine, key, valueType,
682  IConfigEngine::HAS_EXTERNAL_TRIGGER) {}
683  bool connect(ExternalParameterHasSlots* om, setter_type&& setter,
684  getter_type&& getter = nullptr, bool triggerOnConnect = false) {
685  if (this->parameter_) {
686  this->setter_ = std::move(setter);
687  this->getter_ = std::move(getter);
688  if (om) om->addParameter(this->parameter_);
689  return this->parameter_->connectExternalObserver(this, triggerOnConnect);
690  }
691  return false;
692  }
693  virtual bool onSetValue(const AnyValue& value) override {
694  if (this->setter_) {
695  return this->setter_(
697  }
698  return false;
699  }
700  virtual bool onGetValue(AnyValue& value) override {
701  if (this->getter_) {
702  T tmp;
703  if (this->getter_(tmp) == 0) {
705  return true;
706  }
707  }
708  return false;
709  }
710 
711  private:
712  setter_type setter_;
713  getter_type getter_;
714 };
715 
720 };
721 
722 } // namespace config
723 } // namespace agora
agora::config::ExternalParameterHelperTypeTraits< bool >::getValue
static bool getValue(const AnyValue &value)
Definition: config_engine_i.h:366
agora::config::ExternalTriggerParameterHelperWithObserver
Definition: config_engine_i.h:672
agora::config::ExternalTriggerParameterHelper
Definition: config_engine_i.h:478
agora::config::IParameterCollection::~IParameterCollection
virtual ~IParameterCollection()
Definition: config_engine_i.h:445
agora::config::IParameterCollection::release
virtual void release()=0
agora::config::ExternalParameterHelperTypeTraits< int >::setValue
static void setValue(int from, AnyValue &to)
Definition: config_engine_i.h:329
agora::config::IParameter::setValue
virtual bool setValue(const AnyValue &value, bool storeOnly)=0
agora::config::ExternalTriggerParameterHelper::parameter_
IParameter * parameter_
Definition: config_engine_i.h:494
agora::config::ExternalParameterHelper::setValue
bool setValue(T value, bool storeValue=true)
Definition: config_engine_i.h:521
agora::config::ExternalParameterHelperWithObserver
Definition: config_engine_i.h:581
agora::config::IObserver
Definition: config_engine_i.h:410
agora::config::ExternalParameterHelperWithObserver::connect
bool connect(ExternalParameterHasSlots *om, setter_type &&setter, getter_type &&getter=nullptr, bool triggerOnConnect=false)
Definition: config_engine_i.h:592
agora::config::ExternalParameterHelperTypeTraits< unsigned int >::setValue
static void setValue(unsigned int from, AnyValue &to)
Definition: config_engine_i.h:339
agora::config::AnyValue::val_cstr
const char * val_cstr
Definition: config_engine_i.h:316
agora::config::ExternalParameterHelperTypeTraits< std::string >::getValue
static std::string getValue(const AnyValue &value)
Definition: config_engine_i.h:375
agora::config::IConfigEngine
Definition: config_engine_i.h:448
agora::config::ExternalParameterHelperWithFilter::connect
bool connect(ExternalParameterHasSlots *om, setter_type &&setter, getter_type &&getter=nullptr, bool triggerOnConnect=false)
Definition: config_engine_i.h:638
agora::config::IParameter::disconnectExternalObserver
virtual bool disconnectExternalObserver()=0
agora::config::AnyValue::BOOLEAN
@ BOOLEAN
Definition: config_engine_i.h:306
agora::config::ExternalParameterHelperWithObserver::onSetValue
virtual bool onSetValue(const AnyValue &value) override
Definition: config_engine_i.h:602
agora::config::AnyValue::val_bool
bool val_bool
Definition: config_engine_i.h:314
agora::config::IFilter::onSetValue
virtual bool onSetValue(const AnyValue &value)=0
agora::config::IConfigEngine::getParameter
virtual IParameter * getParameter(const char *key)=0
agora::config::IConfigEngine::HAS_EXTERNAL_OBSERVER
@ HAS_EXTERNAL_OBSERVER
Definition: config_engine_i.h:453
agora::config::AnyValue::val_int
int val_int
Definition: config_engine_i.h:312
agora::config::AnyValue::INTEGER
@ INTEGER
Definition: config_engine_i.h:304
agora::config::IParameter::connectExternalFilter
virtual bool connectExternalFilter(IFilter *filter, bool triggerOnConnect)=0
agora::config::ExternalParameterHelper::setValue
bool setValue(const AnyValue &value, bool storeValue=true)
Definition: config_engine_i.h:515
agora::config::AnyValue::val_double
double val_double
Definition: config_engine_i.h:315
agora::config::AnyValue::JSON
@ JSON
Definition: config_engine_i.h:309
agora::config::IParameter::~IParameter
virtual ~IParameter()
Definition: config_engine_i.h:439
agora::config::IUserIdManager::toInternalUid
virtual bool toInternalUid(const char *userId, unsigned int &uid) const =0
agora::config::ExternalParameterHelperTypeTraits< bool >::setValue
static void setValue(bool from, AnyValue &to)
Definition: config_engine_i.h:367
agora::config::ExternalTriggerParameterHelperWithObserver::connect
bool connect(ExternalParameterHasSlots *om, setter_type &&setter, getter_type &&getter=nullptr, bool triggerOnConnect=false)
Definition: config_engine_i.h:683
agora::config::ExternalParameterHelper::value
T value() const
Definition: config_engine_i.h:508
agora::config::AnyValue::UNSPEC
@ UNSPEC
Definition: config_engine_i.h:303
agora::config::ExternalParameterHelperWithFilter::onSetValue
virtual bool onSetValue(const AnyValue &value) override
Definition: config_engine_i.h:648
agora::config::IParameter
Definition: config_engine_i.h:423
agora::config::IFilter
Definition: config_engine_i.h:416
agora::config::ExternalParameterHelperTypeTraits< unsigned int >::getValue
static unsigned int getValue(const AnyValue &value)
Definition: config_engine_i.h:338
agora::config::IObserver::~IObserver
virtual ~IObserver()
Definition: config_engine_i.h:414
agora
Definition: AgoraAtomicOps.h:21
agora::config::ExternalParameterHelperTypeTraits< const char * >::getValue
static const char * getValue(const AnyValue &value)
Definition: config_engine_i.h:384
agora::config::IParameter::disconnectExternalFilter
virtual bool disconnectExternalFilter()=0
agora::config::IUserIdManager::hasUser
virtual bool hasUser(unsigned int uid) const =0
agora::config::ExternalTriggerParameterHelperWithObserver::onGetValue
virtual bool onGetValue(AnyValue &value) override
Definition: config_engine_i.h:700
agora::config::IConfigEngine::~IConfigEngine
virtual ~IConfigEngine()
Definition: config_engine_i.h:461
agora::config::ExternalParameterHelperTypeTraits::AnyValueType
static const config::AnyValue::Type AnyValueType
Definition: config_engine_i.h:323
agora::config::ExternalParameterHelperTypeTraits< const void * >::getValue
static const void * getValue(const AnyValue &value)
Definition: config_engine_i.h:394
agora::config::InternalParameterHelper::value
const T & value() const
Definition: config_engine_i.h:468
agora::config::ExternalParameterHelperTypeTraits
Definition: config_engine_i.h:322
agora::config::IUserIdManager::~IUserIdManager
virtual ~IUserIdManager()
Definition: config_engine_i.h:407
agora::config::ExternalParameterHelperWithObserver::ExternalParameterHelperWithObserver
ExternalParameterHelperWithObserver(IConfigEngine &engine, const char *key, const T &defValue, AnyValue::Type valueType=ExternalParameterHelperTypeTraits< T >::AnyValueType)
Definition: config_engine_i.h:586
agora::config::CONFIG_POLICY_ALL
@ CONFIG_POLICY_ALL
Definition: config_engine_i.h:719
agora::config::ExternalParameterHasSlots::~ExternalParameterHasSlots
virtual ~ExternalParameterHasSlots()
Definition: config_engine_i.h:563
agora::config::CONFIG_POLICY_TYPE
CONFIG_POLICY_TYPE
Definition: config_engine_i.h:716
agora::config::CONFIG_POLICY_CDS
@ CONFIG_POLICY_CDS
Definition: config_engine_i.h:717
agora::config::ExternalParameterHasSlots::addParameter
void addParameter(IParameter *param)
Definition: config_engine_i.h:571
agora::config::ExternalParameterHelperWithFilter::ExternalParameterHelperWithFilter
ExternalParameterHelperWithFilter(IConfigEngine &engine, const char *key, const T &defValue, AnyValue::Type valueType=ExternalParameterHelperTypeTraits< T >::AnyValueType)
Definition: config_engine_i.h:632
agora::config::InternalParameterHelper::InternalParameterHelper
InternalParameterHelper(const T &defValue)
Definition: config_engine_i.h:467
agora::config::IConfigEngine::HAS_EXTERNAL_FILTER
@ HAS_EXTERNAL_FILTER
Definition: config_engine_i.h:452
agora::config::IFilter::onGetValue
virtual bool onGetValue(AnyValue &value)
Definition: config_engine_i.h:419
agora::config::IConfigEngine::createParameter
virtual IParameter * createParameter(const char *key, AnyValue::Type valueType, PARAMETER_TYPE paramType)=0
agora::config::IParameter::connectExternalObserver
virtual bool connectExternalObserver(IObserver *observer, bool triggerOnConnect)=0
agora::config::ExternalParameterHasSlots::disconnectAll
void disconnectAll()
Definition: config_engine_i.h:564
agora::config::IParameter::setOriginalValue
virtual bool setOriginalValue(const AnyValue &value)=0
agora::config::ExternalTriggerParameterHelper::ExternalTriggerParameterHelper
ExternalTriggerParameterHelper(IConfigEngine &engine, const char *key, AnyValue::Type valueType, IConfigEngine::PARAMETER_TYPE paramType)
Definition: config_engine_i.h:484
agora::config::AnyValue::type
enum agora::config::AnyValue::Type type
agora::config::IConfigEngine::HAS_ORIGINAL_VALUE
@ HAS_ORIGINAL_VALUE
Definition: config_engine_i.h:455
agora::config::InternalParameterHelper
Definition: config_engine_i.h:465
agora::config::CONFIG_POLICY_TDS
@ CONFIG_POLICY_TDS
Definition: config_engine_i.h:718
agora::config::InternalParameterHelper::setValue
bool setValue(const T &value)
Definition: config_engine_i.h:469
agora::config::IParameterCollection
Definition: config_engine_i.h:442
agora::config::IUserIdManager::toUserId
virtual bool toUserId(unsigned int uid, std::string &userId) const =0
agora::config::IParameter::release
virtual void release()=0
agora::config::IConfigEngine::HAS_EXTERNAL_TRIGGER
@ HAS_EXTERNAL_TRIGGER
Definition: config_engine_i.h:454
agora::config::ExternalParameterHelperWithOriginalValue::ExternalParameterHelperWithOriginalValue
ExternalParameterHelperWithOriginalValue(IConfigEngine &engine, const char *key, const T &defValue, AnyValue::Type valueType=ExternalParameterHelperTypeTraits< T >::AnyValueType, IConfigEngine::PARAMETER_TYPE paramType=IConfigEngine::VALUE_ONLY)
Definition: config_engine_i.h:532
agora::config::ExternalParameterHelperWithFilter::onGetValue
virtual bool onGetValue(AnyValue &value) override
Definition: config_engine_i.h:653
agora::config::IUserIdManager::hasUser
virtual bool hasUser(const char *userId) const =0
agora::config::ExternalParameterHelperTypeTraits< double >::setValue
static void setValue(double from, AnyValue &to)
Definition: config_engine_i.h:358
agora::config::ExternalParameterHelperWithFilter
Definition: config_engine_i.h:627
agora::config::ExternalParameterHelperTypeTraits< uint16_t >::setValue
static void setValue(uint16_t from, AnyValue &to)
Definition: config_engine_i.h:349
agora::config::InternalParameterHelper::value_
T value_
Definition: config_engine_i.h:475
agora::config::IObserver::onSetValue
virtual bool onSetValue(const AnyValue &value)=0
agora::config::ExternalParameterHelperTypeTraits< std::string >::setValue
static void setValue(const std::string &from, AnyValue &to)
Definition: config_engine_i.h:376
agora::config::ExternalParameterHelperTypeTraits< const char * >::setValue
static void setValue(const char *from, AnyValue &to)
Definition: config_engine_i.h:385
agora::config::ExternalParameterHelperTypeTraits< uint16_t >::getValue
static uint16_t getValue(const AnyValue &value)
Definition: config_engine_i.h:348
agora::config::IFilter::~IFilter
virtual ~IFilter()
Definition: config_engine_i.h:420
agora::config::ExternalParameterHelperWithOriginalValue::setOriginalValue
bool setOriginalValue(const T &value)
Definition: config_engine_i.h:551
agora::config::AnyValue::UNSIGNED_INTEGER
@ UNSIGNED_INTEGER
Definition: config_engine_i.h:305
agora::config::IParameter::getOriginalValue
virtual bool getOriginalValue(AnyValue &value) const =0
agora::config::IObserver::onGetValue
virtual bool onGetValue(AnyValue &value)
Definition: config_engine_i.h:413
std
Definition: AgoraOptional.h:881
agora::config::ExternalParameterHelperTypeTraits< int >::getValue
static int getValue(const AnyValue &value)
Definition: config_engine_i.h:328
agora::config::ExternalParameterHasSlots
Definition: config_engine_i.h:561
agora::config::IUserIdManager
Definition: config_engine_i.h:401
agora::config::ExternalTriggerParameterHelperWithObserver::onSetValue
virtual bool onSetValue(const AnyValue &value) override
Definition: config_engine_i.h:693
agora::config::AnyValue::val_uint
unsigned int val_uint
Definition: config_engine_i.h:313
agora::config::ExternalParameterHelper::ExternalParameterHelper
ExternalParameterHelper(IConfigEngine &engine, const char *key, const T &defValue, AnyValue::Type valueType=ExternalParameterHelperTypeTraits< T >::AnyValueType, IConfigEngine::PARAMETER_TYPE paramType=IConfigEngine::VALUE_ONLY)
Definition: config_engine_i.h:500
agora::config::IParameter::getValue
virtual bool getValue(AnyValue &value) const =0
agora::config::ExternalParameterHelperWithOriginalValue
Definition: config_engine_i.h:530
agora::config::ExternalParameterHelper
Definition: config_engine_i.h:498
agora::config::AnyValue::CSTR
@ CSTR
Definition: config_engine_i.h:308
agora::config::AnyValue::val_cjson
const void * val_cjson
Definition: config_engine_i.h:317
agora::config::ExternalParameterHelperWithOriginalValue::getOriginalValue
bool getOriginalValue(T &v) const
Definition: config_engine_i.h:541
agora::config::ExternalTriggerParameterHelperWithObserver::ExternalTriggerParameterHelperWithObserver
ExternalTriggerParameterHelperWithObserver(IConfigEngine &engine, const char *key, AnyValue::Type valueType=ExternalParameterHelperTypeTraits< T >::AnyValueType)
Definition: config_engine_i.h:677
agora::config::IConfigEngine::VALUE_ONLY
@ VALUE_ONLY
Definition: config_engine_i.h:451
agora::config::IConfigEngine::setParameters
virtual int setParameters(const char *parameters)=0
agora::config::ExternalParameterHelperTypeTraits< double >::getValue
static double getValue(const AnyValue &value)
Definition: config_engine_i.h:357
agora::config::AnyValue
Definition: config_engine_i.h:301
agora::config::ExternalParameterHelperWithObserver::onGetValue
virtual bool onGetValue(AnyValue &value) override
Definition: config_engine_i.h:609
agora::config::AnyValue::Type
Type
Definition: config_engine_i.h:302
agora::config::AnyValue::DOUBLE
@ DOUBLE
Definition: config_engine_i.h:307
agora::config::ExternalParameterHelperTypeTraits< const void * >::setValue
static void setValue(const void *from, AnyValue &to)
Definition: config_engine_i.h:395
agora::config::ExternalTriggerParameterHelper::~ExternalTriggerParameterHelper
~ExternalTriggerParameterHelper()
Definition: config_engine_i.h:488
agora::config::IConfigEngine::PARAMETER_TYPE
PARAMETER_TYPE
Definition: config_engine_i.h:450