Client.h 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. /*
  2. * Copyright (c) 2021, Andreas Kling <kling@serenityos.org>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #pragma once
  7. #include <ConfigServer/ConfigClientEndpoint.h>
  8. #include <ConfigServer/ConfigServerEndpoint.h>
  9. #include <LibCore/File.h>
  10. #include <LibCore/Promise.h>
  11. #include <LibCore/StandardPaths.h>
  12. #include <LibIPC/ServerConnection.h>
  13. namespace Config {
  14. class Client final
  15. : public IPC::ServerConnection<ConfigClientEndpoint, ConfigServerEndpoint>
  16. , public ConfigClientEndpoint {
  17. C_OBJECT(Client);
  18. public:
  19. void pledge_domains(Vector<String> const&);
  20. void monitor_domain(String const&);
  21. String read_string(StringView domain, StringView group, StringView key, StringView fallback);
  22. i32 read_i32(StringView domain, StringView group, StringView key, i32 fallback);
  23. bool read_bool(StringView domain, StringView group, StringView key, bool fallback);
  24. void write_string(StringView domain, StringView group, StringView key, StringView value);
  25. void write_i32(StringView domain, StringView group, StringView key, i32 value);
  26. void write_bool(StringView domain, StringView group, StringView key, bool value);
  27. void remove_key(StringView domain, StringView group, StringView key);
  28. static Client& the();
  29. private:
  30. explicit Client()
  31. : IPC::ServerConnection<ConfigClientEndpoint, ConfigServerEndpoint>(*this, "/tmp/portal/config")
  32. {
  33. }
  34. void notify_changed_string_value(String const& domain, String const& group, String const& key, String const& value) override;
  35. void notify_changed_i32_value(String const& domain, String const& group, String const& key, i32 value) override;
  36. void notify_changed_bool_value(String const& domain, String const& group, String const& key, bool value) override;
  37. void notify_removed_key(String const& domain, String const& group, String const& key) override;
  38. };
  39. inline String read_string(StringView domain, StringView group, StringView key, StringView fallback = {})
  40. {
  41. return Client::the().read_string(domain, group, key, fallback);
  42. }
  43. inline i32 read_i32(StringView domain, StringView group, StringView key, i32 fallback = 0)
  44. {
  45. return Client::the().read_i32(domain, group, key, fallback);
  46. }
  47. inline bool read_bool(StringView domain, StringView group, StringView key, bool fallback = false)
  48. {
  49. return Client::the().read_bool(domain, group, key, fallback);
  50. }
  51. inline void write_string(StringView domain, StringView group, StringView key, StringView value)
  52. {
  53. Client::the().write_string(domain, group, key, value);
  54. }
  55. inline void write_i32(StringView domain, StringView group, StringView key, i32 value)
  56. {
  57. Client::the().write_i32(domain, group, key, value);
  58. }
  59. inline void write_bool(StringView domain, StringView group, StringView key, bool value)
  60. {
  61. Client::the().write_bool(domain, group, key, value);
  62. }
  63. inline void remove_key(StringView domain, StringView group, StringView key)
  64. {
  65. Client::the().remove_key(domain, group, key);
  66. }
  67. inline void pledge_domains(Vector<String> const& domains)
  68. {
  69. Client::the().pledge_domains(domains);
  70. }
  71. inline void pledge_domains(String const& domains)
  72. {
  73. Client::the().pledge_domains({ domains });
  74. }
  75. inline void monitor_domain(String const& domain)
  76. {
  77. Client::the().monitor_domain(domain);
  78. }
  79. }