blob: b8925036469af55a79f0d9dea1f56246ee1d3748 [file] [log] [blame]
#include "app.hpp"
#include "http_server.hpp"
#include "logging.hpp"
namespace crow
{
#ifdef BMCWEB_ENABLE_SSL
using ssl_context_t = boost::asio::ssl::context;
using ssl_socket_t = boost::beast::ssl_stream<boost::asio::ip::tcp::socket>;
using ssl_server_t = Server<App, ssl_socket_t>;
#else
using socket_t = boost::asio::ip::tcp::socket;
using server_t = Server<App, socket_t>;
#endif
#ifdef BMCWEB_ENABLE_SSL
std::unique_ptr<ssl_server_t> sslServer; // NOLINT
#else
std::unique_ptr<server_t> server; // NOLINT
#endif
void App::run()
{
#ifdef BMCWEB_ENABLE_SSL
if (-1 == socketFd)
{
sslServer = std::make_unique<ssl_server_t>(this, bindaddrStr, portUint,
sslContext, io);
}
else
{
sslServer =
std::make_unique<ssl_server_t>(this, socketFd, sslContext, io);
}
sslServer->run();
#else
if (-1 == socketFd)
{
server = std::make_unique<server_t>(this, bindaddrStr, portUint,
nullptr, io);
}
else
{
server = std::make_unique<server_t>(this, socketFd, nullptr, io);
}
server->run();
#endif
}
void App::debugPrint()
{
BMCWEB_LOG_DEBUG << "Routing:";
router.DebugPrint();
}
void App::handle(Request& req,
const std::shared_ptr<bmcweb::AsyncResp>& asyncResp)
{
// allocate a requestStatsContext to track this request:
asyncResp->requestStatsContext =
std::make_shared<managedStore::RequestStatsContext>(
managedStore::RequestStatsContext::queryURLKeyFor(req.method(),
req.url()));
BMCWEB_LOG_INFO << "App: handle: "
<< asyncResp->requestStatsContext->toJson();
router.Handle(req, asyncResp);
}
} // namespace crow