53 lines
1.2 KiB
C++
53 lines
1.2 KiB
C++
//
|
|
// Copyright (c) 2019-2024 Ruben Perez Hidalgo (rubenperez038 at gmail dot 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 BOOST_MYSQL_DETAIL_SOCKET_STREAM_HPP
|
|
#define BOOST_MYSQL_DETAIL_SOCKET_STREAM_HPP
|
|
|
|
#include <boost/asio/basic_socket.hpp>
|
|
#include <boost/asio/basic_stream_socket.hpp>
|
|
|
|
#include <type_traits>
|
|
|
|
namespace boost {
|
|
namespace mysql {
|
|
namespace detail {
|
|
|
|
template <class T>
|
|
struct is_socket : std::false_type
|
|
{
|
|
};
|
|
|
|
// typename basic_stream_socket::lowest_layer_type is basic_socket, so we accept basic_socket and
|
|
// basic_stream_socket here
|
|
template <class Protocol, class Executor>
|
|
struct is_socket<asio::basic_socket<Protocol, Executor>> : std::true_type
|
|
{
|
|
};
|
|
|
|
template <class Protocol, class Executor>
|
|
struct is_socket<asio::basic_stream_socket<Protocol, Executor>> : std::true_type
|
|
{
|
|
};
|
|
|
|
template <class T, class = void>
|
|
struct is_socket_stream : std::false_type
|
|
{
|
|
};
|
|
|
|
template <class T>
|
|
struct is_socket_stream<T, typename std::enable_if<is_socket<typename T::lowest_layer_type>::value>::type>
|
|
: std::true_type
|
|
{
|
|
};
|
|
|
|
} // namespace detail
|
|
} // namespace mysql
|
|
} // namespace boost
|
|
|
|
#endif
|