Merge changes from topic "rust_caching" into main am: 05585a9fa3

Original change: https://android-review.googlesource.com/c/platform/build/+/2822932

Change-Id: If280764951df0194be06e78e346fb526fbce32b9
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Dennis Shen
2023-11-09 20:49:45 +00:00
committed by Automerger Merge Worker
2 changed files with 34 additions and 12 deletions

View File

@@ -32,10 +32,12 @@ where
{
let template_flags: Vec<TemplateParsedFlag> =
parsed_flags_iter.map(|pf| TemplateParsedFlag::new(package, pf)).collect();
let has_readwrite = template_flags.iter().any(|item| item.readwrite);
let context = TemplateContext {
package: package.to_string(),
template_flags,
modules: package.split('.').map(|s| s.to_string()).collect::<Vec<_>>(),
has_readwrite,
};
let mut template = TinyTemplate::new();
template.add_template(
@@ -55,6 +57,7 @@ struct TemplateContext {
pub package: String,
pub template_flags: Vec<TemplateParsedFlag>,
pub modules: Vec<String>,
pub has_readwrite: bool,
}
#[derive(Serialize)]
@@ -94,6 +97,20 @@ mod tests {
/// flag provider
pub struct FlagProvider;
lazy_static::lazy_static! {
/// flag value cache for disabled_rw
static ref CACHED_disabled_rw: bool = flags_rust::GetServerConfigurableFlag(
"aconfig_flags.aconfig_test",
"com.android.aconfig.test.disabled_rw",
"false") == "true";
/// flag value cache for enabled_rw
static ref CACHED_enabled_rw: bool = flags_rust::GetServerConfigurableFlag(
"aconfig_flags.aconfig_test",
"com.android.aconfig.test.enabled_rw",
"true") == "true";
}
impl FlagProvider {
/// query flag disabled_ro
pub fn disabled_ro(&self) -> bool {
@@ -102,10 +119,7 @@ impl FlagProvider {
/// query flag disabled_rw
pub fn disabled_rw(&self) -> bool {
flags_rust::GetServerConfigurableFlag(
"aconfig_flags.aconfig_test",
"com.android.aconfig.test.disabled_rw",
"false") == "true"
*CACHED_disabled_rw
}
/// query flag enabled_fixed_ro
@@ -120,10 +134,7 @@ impl FlagProvider {
/// query flag enabled_rw
pub fn enabled_rw(&self) -> bool {
flags_rust::GetServerConfigurableFlag(
"aconfig_flags.aconfig_test",
"com.android.aconfig.test.enabled_rw",
"true") == "true"
*CACHED_enabled_rw
}
}

View File

@@ -3,16 +3,27 @@
/// flag provider
pub struct FlagProvider;
{{ if has_readwrite - }}
lazy_static::lazy_static! \{
{{ for flag in template_flags }}
{{ if flag.readwrite -}}
/// flag value cache for {flag.name}
static ref CACHED_{flag.name}: bool = flags_rust::GetServerConfigurableFlag(
"aconfig_flags.{flag.device_config_namespace}",
"{flag.device_config_flag}",
"{flag.default_value}") == "true";
{{ -endif }}
{{ endfor }}
}
{{ -endif }}
impl FlagProvider \{
{{ for flag in template_flags }}
/// query flag {flag.name}
pub fn {flag.name}(&self) -> bool \{
{{ if flag.readwrite -}}
flags_rust::GetServerConfigurableFlag(
"aconfig_flags.{flag.device_config_namespace}",
"{flag.device_config_flag}",
"{flag.default_value}") == "true"
*CACHED_{flag.name}
{{ -else- }}
{flag.default_value}
{{ -endif }}