/* * 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) */ #ifndef __ASIO2_TCP_KEEPALIVE_COMPONENT_HPP__ #define __ASIO2_TCP_KEEPALIVE_COMPONENT_HPP__ #if defined(_MSC_VER) && (_MSC_VER >= 1200) #pragma once #endif // defined(_MSC_VER) && (_MSC_VER >= 1200) #include namespace asio2::detail { template class tcp_keepalive_cp { public: tcp_keepalive_cp() noexcept {} ~tcp_keepalive_cp() noexcept {} /** * @brief set tcp socket keep alive options * @param onoff - Turn keepalive on or off. * @param idle - How many seconds after the connection is idle, start sending keepalives. * @param interval - How many seconds later to send again when no reply is received. * @param count - How many times to resend when no reply is received. * @li on macOS Catalina 10.15.5 (19F101), the default value is: * onoff - false, idle - 7200, interval - 75, count - 8 */ bool set_keep_alive_options( bool onoff = true, unsigned int idle = 60, unsigned int interval = 3, unsigned int count = 3 ) noexcept { derived_t& derive = static_cast(*this); return detail::set_keepalive_options(derive.socket(), onoff, idle, interval, count); } }; } #endif // !__ASIO2_TCP_KEEPALIVE_COMPONENT_HPP__