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