summaryrefslogtreecommitdiff
path: root/src/server.hh
diff options
context:
space:
mode:
authorJoel Klinghed <the_jk@spawned.biz>2025-10-21 23:14:25 +0200
committerJoel Klinghed <the_jk@spawned.biz>2025-10-22 23:47:20 +0200
commit00dc057ea5d9244f1df9457a316fd193c54dbfb0 (patch)
tree9d4d517a2951c0ac315bba85b8bb19815d9a3956 /src/server.hh
parent8377be960d5d0e65227cc179aded1f5edbf8de79 (diff)
main: Split out main api/server part from main
Add fake-api, sharing api/server implementation with main but fakes bluetooth events, to simplify working on the UI.
Diffstat (limited to 'src/server.hh')
-rw-r--r--src/server.hh50
1 files changed, 50 insertions, 0 deletions
diff --git a/src/server.hh b/src/server.hh
new file mode 100644
index 0000000..0601ba8
--- /dev/null
+++ b/src/server.hh
@@ -0,0 +1,50 @@
+#ifndef SERVER_HH
+#define SERVER_HH
+
+#include "bt.hh"
+#include "cfg.hh"
+#include "http.hh"
+#include "logger.hh"
+#include "looper.hh"
+
+#include <memory>
+#include <string_view>
+
+namespace server {
+
+class Api : public bt::Manager::Delegate {
+ public:
+ virtual ~Api() = default;
+
+ [[nodiscard]]
+ virtual bt::Adapter* adapter() const = 0;
+
+ protected:
+ Api() = default;
+};
+
+class Signaler {
+ public:
+ virtual ~Signaler() = default;
+
+ virtual void send(std::string_view signal) = 0;
+ virtual std::unique_ptr<http::Response> handle(
+ http::Request const& request) = 0;
+
+ protected:
+ Signaler() = default;
+};
+
+std::unique_ptr<Signaler> create_signaler(logger::Logger& logger,
+ cfg::Config const& cfg,
+ looper::Looper& looper);
+
+std::unique_ptr<Api> create_bt_delegate(logger::Logger& logger,
+ Signaler& signaler);
+
+std::unique_ptr<http::Server::Delegate> create_http_delegate(
+ Api& api, Signaler& signaler);
+
+} // namespace server
+
+#endif // SERVER_HH