xref: /openbmc/bmcweb/http/routing/websocketrule.cpp (revision beb96b0b7b1c4d9630dc329d86db119ed3ead086)
1 // SPDX-License-Identifier: Apache-2.0
2 // SPDX-FileCopyrightText: Copyright OpenBMC Authors
3 
4 #include "websocketrule.hpp"
5 
6 #include "async_resp.hpp"
7 #include "http_request.hpp"
8 #include "logging.hpp"
9 #include "websocket_impl.hpp"
10 
11 #include <boost/asio/ip/tcp.hpp>
12 #include <boost/asio/ssl/stream.hpp>
13 
14 #include <memory>
15 #include <utility>
16 
17 namespace crow
18 {
handleUpgrade(const Request & req,const std::shared_ptr<bmcweb::AsyncResp> &,boost::asio::ip::tcp::socket && adaptor)19 void WebSocketRule::handleUpgrade(
20     const Request& req, const std::shared_ptr<bmcweb::AsyncResp>& /*asyncResp*/,
21     boost::asio::ip::tcp::socket&& adaptor)
22 {
23     BMCWEB_LOG_DEBUG("Websocket handles upgrade");
24     std::shared_ptr<
25         crow::websocket::ConnectionImpl<boost::asio::ip::tcp::socket>>
26         myConnection = std::make_shared<
27             crow::websocket::ConnectionImpl<boost::asio::ip::tcp::socket>>(
28             req.url(), req.session, std::move(adaptor), openHandler,
29             messageHandler, messageExHandler, closeHandler, errorHandler);
30     myConnection->start(req);
31 }
32 
handleUpgrade(const Request & req,const std::shared_ptr<bmcweb::AsyncResp> &,boost::asio::ssl::stream<boost::asio::ip::tcp::socket> && adaptor)33 void WebSocketRule::handleUpgrade(
34     const Request& req, const std::shared_ptr<bmcweb::AsyncResp>& /*asyncResp*/,
35     boost::asio::ssl::stream<boost::asio::ip::tcp::socket>&& adaptor)
36 {
37     BMCWEB_LOG_DEBUG("Websocket handles upgrade");
38     std::shared_ptr<crow::websocket::ConnectionImpl<
39         boost::asio::ssl::stream<boost::asio::ip::tcp::socket>>>
40         myConnection = std::make_shared<crow::websocket::ConnectionImpl<
41             boost::asio::ssl::stream<boost::asio::ip::tcp::socket>>>(
42             req.url(), req.session, std::move(adaptor), openHandler,
43             messageHandler, messageExHandler, closeHandler, errorHandler);
44     myConnection->start(req);
45 }
46 } // namespace crow
47