/* * Copyright (c) 2017-2023 zhllxt * * author : zhllxt * email : 37792738@qq.com * * Distributed under the Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) */ #if defined(ASIO2_ENABLE_SSL) || defined(ASIO2_USE_SSL) #ifndef __ASIO2_RPCS_SESSION_HPP__ #define __ASIO2_RPCS_SESSION_HPP__ #if defined(_MSC_VER) && (_MSC_VER >= 1200) #pragma once #endif // defined(_MSC_VER) && (_MSC_VER >= 1200) #if __has_include() #include namespace asio2 { namespace detail { template struct template_args_rpcs_session; template<> struct template_args_rpcs_session : public template_args_tcp_session { static constexpr asio2::net_protocol net_protocol = asio2::net_protocol::tcps; static constexpr bool rdc_call_cp_enabled = false; static constexpr std::size_t function_storage_size = 72; }; template<> struct template_args_rpcs_session : public template_args_wss_session { static constexpr asio2::net_protocol net_protocol = asio2::net_protocol::wss; static constexpr bool rdc_call_cp_enabled = false; static constexpr std::size_t function_storage_size = 72; }; } using rpcs_session_args_tcp = detail::template_args_rpcs_session; using rpcs_session_args_ws = detail::template_args_rpcs_session; template class rpcs_session_t; template class rpcs_session_t : public detail::rpc_session_impl_t>> { public: using detail::rpc_session_impl_t>>::rpc_session_impl_t; }; template class rpcs_session_t : public detail::rpc_session_impl_t>> { public: using detail::rpc_session_impl_t>>::rpc_session_impl_t; }; template class rpcs_session_use : public rpcs_session_t, np> { public: using rpcs_session_t, np>::rpcs_session_t; }; #if !defined(ASIO2_USE_WEBSOCKET_RPC) /// Using tcp dgram mode as the underlying communication support using rpcs_session = rpcs_session_use; #else /// Using websocket as the underlying communication support using rpcs_session = rpcs_session_use; #endif } #if defined(ASIO2_INCLUDE_RATE_LIMIT) #include namespace asio2 { struct rpcs_rate_session_args_tcp : public rpcs_session_args_tcp { using socket_t = asio2::tcp_stream; }; struct rpcs_rate_session_args_ws : public rpcs_session_args_ws { using socket_t = asio2::tcp_stream; using stream_t = websocket::stream&>; }; template class rpcs_rate_session_t; template class rpcs_rate_session_t : public detail::rpc_session_impl_t> { public: using detail::rpc_session_impl_t>::rpc_session_impl_t; }; template class rpcs_rate_session_t : public detail::rpc_session_impl_t> { public: using detail::rpc_session_impl_t>::rpc_session_impl_t; }; template class rpcs_rate_session_use : public rpcs_rate_session_t, np> { public: using rpcs_rate_session_t, np>::rpcs_rate_session_t; }; #if !defined(ASIO2_USE_WEBSOCKET_RPC) /// Using tcp dgram mode as the underlying communication support using rpcs_rate_session = rpcs_rate_session_use; #else /// Using websocket as the underlying communication support using rpcs_rate_session = rpcs_rate_session_use; #endif } #endif #endif #endif // !__ASIO2_RPCS_SESSION_HPP__ #endif