// // Copyright (c) 2023-2025 Ivica Siladic, Bruno Iljazovic, Korina Simicevic // // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE or copy at http://www.boost.org/LICENSE_1_0.txt) // #ifndef BOOST_MQTT5_LOGGER_TRAITS_HPP #define BOOST_MQTT5_LOGGER_TRAITS_HPP #include #include #include #include #include #include #include #include #include namespace boost::mqtt5 { namespace asio = boost::asio; using boost::system::error_code; // NOOP Logger class noop_logger {}; // at_resolve template using at_resolve_sig = decltype( std::declval().at_resolve( std::declval(), std::declval(), std::declval(), std::declval() ) ); template constexpr bool has_at_resolve = boost::is_detected::value; // at_tcp_connect template using at_tcp_connect_sig = decltype( std::declval().at_tcp_connect( std::declval(), std::declval() ) ); template constexpr bool has_at_tcp_connect = boost::is_detected::value; // at_tls_handshake template using at_tls_handshake_sig = decltype( std::declval().at_tls_handshake( std::declval(), std::declval() ) ); template constexpr bool has_at_tls_handshake = boost::is_detected::value; // at_ws_handshake template using at_ws_handshake_sig = decltype( std::declval().at_ws_handshake( std::declval(), std::declval() ) ); template constexpr bool has_at_ws_handshake = boost::is_detected::value; // at_connack template using at_connack_sig = decltype( std::declval().at_connack( std::declval(), std::declval(), std::declval() ) ); template constexpr bool has_at_connack = boost::is_detected::value; // at_disconnect template using at_disconnect_sig = decltype( std::declval().at_disconnect( std::declval(), std::declval() ) ); template constexpr bool has_at_disconnect = boost::is_detected::value; // at_transport_error template using at_transport_error = decltype( std::declval().at_transport_error(std::declval()) ); template constexpr bool has_at_transport_error = boost::is_detected::value; } // end namespace boost::mqtt5 #endif // !BOOST_MQTT5_LOGGER_TRAITS_HPP