• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #include "rust/cxx.h"
2 #include "aconfig_storage/lib.rs.h"
3 
4 #include "aconfig_storage/aconfig_storage_file.hpp"
5 
6 using namespace android::base;
7 
8 namespace aconfig_storage {
9 
list_flags(const std::string & package_map,const std::string & flag_map,const std::string & flag_val)10 Result<std::vector<FlagValueSummary>> list_flags(
11     const std::string& package_map,
12     const std::string& flag_map,
13     const std::string& flag_val) {
14   auto flag_list_cxx = list_flags_cxx(rust::Str(package_map.c_str()),
15                                       rust::Str(flag_map.c_str()),
16                                       rust::Str(flag_val.c_str()));
17   if (flag_list_cxx.query_success) {
18     auto flag_list = std::vector<FlagValueSummary>();
19     for (const auto& flag_cxx : flag_list_cxx.flags) {
20       auto flag = FlagValueSummary();
21       flag.package_name = std::string(flag_cxx.package_name);
22       flag.flag_name = std::string(flag_cxx.flag_name);
23       flag.flag_value = std::string(flag_cxx.flag_value);
24       flag.value_type = std::string(flag_cxx.value_type);
25       flag_list.push_back(flag);
26     }
27     return flag_list;
28   } else {
29     return Error() << flag_list_cxx.error_message;
30   }
31 }
32 
list_flags_with_info(const std::string & package_map,const std::string & flag_map,const std::string & flag_val,const std::string & flag_info)33 Result<std::vector<FlagValueAndInfoSummary>> list_flags_with_info(
34     const std::string& package_map,
35     const std::string& flag_map,
36     const std::string& flag_val,
37     const std::string& flag_info) {
38   auto flag_list_cxx = list_flags_with_info_cxx(rust::Str(package_map.c_str()),
39                                                 rust::Str(flag_map.c_str()),
40                                                 rust::Str(flag_val.c_str()),
41                                                 rust::Str(flag_info.c_str()));
42   if (flag_list_cxx.query_success) {
43     auto flag_list = std::vector<FlagValueAndInfoSummary>();
44     for (const auto& flag_cxx : flag_list_cxx.flags) {
45       auto flag = FlagValueAndInfoSummary();
46       flag.package_name = std::string(flag_cxx.package_name);
47       flag.flag_name = std::string(flag_cxx.flag_name);
48       flag.flag_value = std::string(flag_cxx.flag_value);
49       flag.value_type = std::string(flag_cxx.value_type);
50       flag.is_readwrite = flag_cxx.is_readwrite;
51       flag.has_server_override = flag_cxx.has_server_override;
52       flag.has_local_override = flag_cxx.has_local_override;
53       flag_list.push_back(flag);
54     }
55     return flag_list;
56   } else {
57     return Error() << flag_list_cxx.error_message;
58   }
59 }
60 
61 } // namespace aconfig_storage
62