#pragma once #include "util/requests/impl/SslContext.hpp" #include #include #include #include #include #include #include #include #include namespace util::requests::impl { template struct PlainStreamData { static constexpr bool kSslEnabled = false; explicit PlainStreamData(boost::asio::yield_context yield) : stream(boost::asio::get_associated_executor(yield)) { } StreamType stream; }; using TcpStreamData = PlainStreamData; using WsStreamData = PlainStreamData>; template struct SslStreamData { static constexpr bool kSslEnabled = true; StreamType stream; static SslStreamData create(boost::asio::yield_context yield) { return SslStreamData{getClientSslContext(), yield}; } private: SslStreamData(boost::asio::ssl::context& sslContext, boost::asio::yield_context yield) : stream(boost::asio::get_associated_executor(yield), sslContext) { } }; using SslTcpStreamData = SslStreamData>; using SslWsStreamData = SslStreamData< boost::beast::websocket::stream>>; } // namespace util::requests::impl