Explorar o código

LibConfig: Add list methods for groups and keys

Use the methods exposed by ConfigServer to list groups and keys.
faxe1008 %!s(int64=3) %!d(string=hai) anos
pai
achega
f10036b7c5

+ 10 - 0
Userland/Libraries/LibConfig/Client.cpp

@@ -30,6 +30,16 @@ void Client::monitor_domain(String const& domain)
     async_monitor_domain(domain);
 }
 
+Vector<String> Client::list_keys(StringView domain, StringView group)
+{
+    return list_config_keys(domain, group);
+}
+
+Vector<String> Client::list_groups(StringView domain)
+{
+    return list_config_groups(domain);
+}
+
 String Client::read_string(StringView domain, StringView group, StringView key, StringView fallback)
 {
     return read_string_value(domain, group, key).value_or(fallback);

+ 13 - 0
Userland/Libraries/LibConfig/Client.h

@@ -24,6 +24,9 @@ public:
     void pledge_domains(Vector<String> const&);
     void monitor_domain(String const&);
 
+    Vector<String> list_groups(StringView domain);
+    Vector<String> list_keys(StringView domain, StringView group);
+
     String read_string(StringView domain, StringView group, StringView key, StringView fallback);
     i32 read_i32(StringView domain, StringView group, StringView key, i32 fallback);
     bool read_bool(StringView domain, StringView group, StringView key, bool fallback);
@@ -47,6 +50,16 @@ private:
     void notify_removed_key(String const& domain, String const& group, String const& key) override;
 };
 
+inline Vector<String> list_groups(StringView domain)
+{
+    return Client::the().list_groups(domain);
+}
+
+inline Vector<String> list_keys(StringView domain, StringView group)
+{
+    return Client::the().list_keys(domain, group);
+}
+
 inline String read_string(StringView domain, StringView group, StringView key, StringView fallback = {})
 {
     return Client::the().read_string(domain, group, key, fallback);