diff options
| author | Joel Klinghed <the_jk@spawned.biz> | 2025-10-21 23:14:25 +0200 |
|---|---|---|
| committer | Joel Klinghed <the_jk@spawned.biz> | 2025-10-22 23:47:20 +0200 |
| commit | 00dc057ea5d9244f1df9457a316fd193c54dbfb0 (patch) | |
| tree | 9d4d517a2951c0ac315bba85b8bb19815d9a3956 /src/server.hh | |
| parent | 8377be960d5d0e65227cc179aded1f5edbf8de79 (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.hh | 50 |
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 |
