// SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: Copyright OpenBMC Authors #pragma once #include "async_resp.hpp" #include "baserule.hpp" #include "http_request.hpp" #include "server_sent_event.hpp" #include #include #include #include #include #include namespace crow { class SseSocketRule : public BaseRule { using self_t = SseSocketRule; public: explicit SseSocketRule(const std::string& ruleIn); void validate() override; void handle(const Request& /*req*/, const std::shared_ptr& asyncResp, const std::vector& /*params*/) override; void handleUpgrade(const Request& req, const std::shared_ptr& /*asyncResp*/, boost::asio::ip::tcp::socket&& adaptor) override; void handleUpgrade(const Request& req, const std::shared_ptr& /*asyncResp*/, boost::asio::ssl::stream&& adaptor) override; template self_t& onopen(Func f) { openHandler = f; return *this; } template self_t& onclose(Func f) { closeHandler = f; return *this; } private: std::function openHandler; std::function closeHandler; }; } // namespace crow