#ifndef SERVER_HH #define SERVER_HH #include "bt.hh" #include "cfg.hh" #include "http.hh" #include "logger.hh" #include "looper.hh" #include #include 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 handle( http::Request const& request) = 0; protected: Signaler() = default; }; std::unique_ptr create_signaler(logger::Logger& logger, cfg::Config const& cfg, looper::Looper& looper); std::unique_ptr create_bt_delegate(logger::Logger& logger, Signaler& signaler); std::unique_ptr create_http_delegate( Api& api, Signaler& signaler); } // namespace server #endif // SERVER_HH