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