blob: d01f40aab7b4de09245a56089d99f606811085b3 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
//! codegenerated rust flag lib
use std::collections::BTreeMap;
use std::sync::Mutex;
/// flag provider
pub struct FlagProvider \{
overrides: BTreeMap<&'static str, bool>,
}
impl FlagProvider \{
{{ for flag in template_flags }}
/// query flag {flag.name}
pub fn {flag.name}(&self) -> bool \{
self.overrides.get("{flag.name}").copied().unwrap_or(
{{ if flag.readwrite -}}
flags_rust::GetServerConfigurableFlag(
"aconfig_flags.{flag.device_config_namespace}",
"{flag.device_config_flag}",
"{flag.default_value}") == "true"
{{ -else- }}
{flag.default_value}
{{ -endif }}
)
}
/// set flag {flag.name}
pub fn set_{flag.name}(&mut self, val: bool) \{
self.overrides.insert("{flag.name}", val);
}
{{ endfor }}
/// clear all flag overrides
pub fn reset_flags(&mut self) \{
self.overrides.clear();
}
}
/// flag provider
pub static PROVIDER: Mutex<FlagProvider> = Mutex::new(
FlagProvider \{overrides: BTreeMap::new()}
);
{{ for flag in template_flags }}
/// query flag {flag.name}
#[inline(always)]
pub fn {flag.name}() -> bool \{
PROVIDER.lock().unwrap().{flag.name}()
}
/// set flag {flag.name}
#[inline(always)]
pub fn set_{flag.name}(val: bool) \{
PROVIDER.lock().unwrap().set_{flag.name}(val);
}
{{ endfor }}
/// clear all flag override
pub fn reset_flags() \{
PROVIDER.lock().unwrap().reset_flags()
}
|