Break out sse into a compile unit
Verify similar to beb96b0 Break out websockets
Break out the SSE functions into a separate compile unit. This allows
the SSE sockets in beast to be compiled separately, which significantly
reduces the overall compile time by a few seconds. Code is identical
with the exceptions of minor header definitions to convert header-only
to compile unit.
Change-Id: I5aae4f17cbd2badf75b3e0bb644a2309f6300663
Signed-off-by: Ed Tanous <etanous@nvidia.com>
diff --git a/http/routing/sserule.hpp b/http/routing/sserule.hpp
index e32af57..9fb6ba3 100644
--- a/http/routing/sserule.hpp
+++ b/http/routing/sserule.hpp
@@ -5,18 +5,14 @@
#include "async_resp.hpp"
#include "baserule.hpp"
#include "http_request.hpp"
-#include "http_response.hpp"
-#include "logging.hpp"
#include "server_sent_event.hpp"
#include <boost/asio/ip/tcp.hpp>
#include <boost/asio/ssl/stream.hpp>
-#include <boost/beast/http/status.hpp>
#include <functional>
#include <memory>
#include <string>
-#include <utility>
#include <vector>
namespace crow
@@ -27,48 +23,21 @@
using self_t = SseSocketRule;
public:
- explicit SseSocketRule(const std::string& ruleIn) : BaseRule(ruleIn)
- {
- isUpgrade = true;
- // Clear GET handler
- methodsBitfield = 0;
- }
+ explicit SseSocketRule(const std::string& ruleIn);
- void validate() override {}
+ void validate() override;
void handle(const Request& /*req*/,
const std::shared_ptr<bmcweb::AsyncResp>& asyncResp,
- const std::vector<std::string>& /*params*/) override
- {
- BMCWEB_LOG_ERROR(
- "Handle called on websocket rule. This should never happen");
- asyncResp->res.result(
- boost::beast::http::status::internal_server_error);
- }
+ const std::vector<std::string>& /*params*/) override;
void handleUpgrade(const Request& req,
const std::shared_ptr<bmcweb::AsyncResp>& /*asyncResp*/,
- boost::asio::ip::tcp::socket&& adaptor) override
- {
- std::shared_ptr<
- crow::sse_socket::ConnectionImpl<boost::asio::ip::tcp::socket>>
- myConnection = std::make_shared<
- crow::sse_socket::ConnectionImpl<boost::asio::ip::tcp::socket>>(
- std::move(adaptor), openHandler, closeHandler);
- myConnection->start(req);
- }
+ boost::asio::ip::tcp::socket&& adaptor) override;
void handleUpgrade(const Request& req,
const std::shared_ptr<bmcweb::AsyncResp>& /*asyncResp*/,
boost::asio::ssl::stream<boost::asio::ip::tcp::socket>&&
- adaptor) override
- {
- std::shared_ptr<crow::sse_socket::ConnectionImpl<
- boost::asio::ssl::stream<boost::asio::ip::tcp::socket>>>
- myConnection = std::make_shared<crow::sse_socket::ConnectionImpl<
- boost::asio::ssl::stream<boost::asio::ip::tcp::socket>>>(
- std::move(adaptor), openHandler, closeHandler);
- myConnection->start(req);
- }
+ adaptor) override;
template <typename Func>
self_t& onopen(Func f)