Serenity Operating System
at master 139 lines 5.1 kB view raw
1/* 2 * Copyright (c) 2021, Andreas Kling <kling@serenityos.org> 3 * 4 * SPDX-License-Identifier: BSD-2-Clause 5 */ 6 7#pragma once 8 9#include <ConfigServer/ConfigClientEndpoint.h> 10#include <ConfigServer/ConfigServerEndpoint.h> 11#include <LibCore/Promise.h> 12#include <LibCore/StandardPaths.h> 13#include <LibIPC/ConnectionToServer.h> 14 15namespace Config { 16 17class Client final 18 : public IPC::ConnectionToServer<ConfigClientEndpoint, ConfigServerEndpoint> 19 , public ConfigClientEndpoint { 20 IPC_CLIENT_CONNECTION(Client, "/tmp/session/%sid/portal/config"sv) 21 22public: 23 void pledge_domains(Vector<DeprecatedString> const&); 24 void monitor_domain(DeprecatedString const&); 25 26 Vector<DeprecatedString> list_groups(StringView domain); 27 Vector<DeprecatedString> list_keys(StringView domain, StringView group); 28 29 DeprecatedString read_string(StringView domain, StringView group, StringView key, StringView fallback); 30 i32 read_i32(StringView domain, StringView group, StringView key, i32 fallback); 31 u32 read_u32(StringView domain, StringView group, StringView key, u32 fallback); 32 bool read_bool(StringView domain, StringView group, StringView key, bool fallback); 33 34 void write_string(StringView domain, StringView group, StringView key, StringView value); 35 void write_i32(StringView domain, StringView group, StringView key, i32 value); 36 void write_u32(StringView domain, StringView group, StringView key, u32 value); 37 void write_bool(StringView domain, StringView group, StringView key, bool value); 38 void remove_key(StringView domain, StringView group, StringView key); 39 void remove_group(StringView domain, StringView group); 40 void add_group(StringView domain, StringView group); 41 42 static Client& the(); 43 44private: 45 explicit Client(NonnullOwnPtr<Core::LocalSocket> socket) 46 : IPC::ConnectionToServer<ConfigClientEndpoint, ConfigServerEndpoint>(*this, move(socket)) 47 { 48 } 49 50 void notify_changed_string_value(DeprecatedString const& domain, DeprecatedString const& group, DeprecatedString const& key, DeprecatedString const& value) override; 51 void notify_changed_i32_value(DeprecatedString const& domain, DeprecatedString const& group, DeprecatedString const& key, i32 value) override; 52 void notify_changed_u32_value(DeprecatedString const& domain, DeprecatedString const& group, DeprecatedString const& key, u32 value) override; 53 void notify_changed_bool_value(DeprecatedString const& domain, DeprecatedString const& group, DeprecatedString const& key, bool value) override; 54 void notify_removed_key(DeprecatedString const& domain, DeprecatedString const& group, DeprecatedString const& key) override; 55 void notify_removed_group(DeprecatedString const& domain, DeprecatedString const& group) override; 56 void notify_added_group(DeprecatedString const& domain, DeprecatedString const& group) override; 57}; 58 59inline Vector<DeprecatedString> list_groups(StringView domain) 60{ 61 return Client::the().list_groups(domain); 62} 63 64inline Vector<DeprecatedString> list_keys(StringView domain, StringView group) 65{ 66 return Client::the().list_keys(domain, group); 67} 68 69inline DeprecatedString read_string(StringView domain, StringView group, StringView key, StringView fallback = {}) 70{ 71 return Client::the().read_string(domain, group, key, fallback); 72} 73 74inline i32 read_i32(StringView domain, StringView group, StringView key, i32 fallback = 0) 75{ 76 return Client::the().read_i32(domain, group, key, fallback); 77} 78 79inline u32 read_u32(StringView domain, StringView group, StringView key, u32 fallback = 0) 80{ 81 return Client::the().read_u32(domain, group, key, fallback); 82} 83 84inline bool read_bool(StringView domain, StringView group, StringView key, bool fallback = false) 85{ 86 return Client::the().read_bool(domain, group, key, fallback); 87} 88 89inline void write_string(StringView domain, StringView group, StringView key, StringView value) 90{ 91 Client::the().write_string(domain, group, key, value); 92} 93 94inline void write_i32(StringView domain, StringView group, StringView key, i32 value) 95{ 96 Client::the().write_i32(domain, group, key, value); 97} 98 99inline void write_u32(StringView domain, StringView group, StringView key, u32 value) 100{ 101 Client::the().write_u32(domain, group, key, value); 102} 103 104inline void write_bool(StringView domain, StringView group, StringView key, bool value) 105{ 106 Client::the().write_bool(domain, group, key, value); 107} 108 109inline void remove_key(StringView domain, StringView group, StringView key) 110{ 111 Client::the().remove_key(domain, group, key); 112} 113 114inline void remove_group(StringView domain, StringView group) 115{ 116 Client::the().remove_group(domain, group); 117} 118 119inline void add_group(StringView domain, StringView group) 120{ 121 Client::the().add_group(domain, group); 122} 123 124inline void pledge_domains(Vector<DeprecatedString> const& domains) 125{ 126 Client::the().pledge_domains(domains); 127} 128 129inline void pledge_domain(DeprecatedString const& domain) 130{ 131 Client::the().pledge_domains({ domain }); 132} 133 134inline void monitor_domain(DeprecatedString const& domain) 135{ 136 Client::the().monitor_domain(domain); 137} 138 139}