forked from boostorg/beast
Stream traits are in stream_traits.hpp (API Change):
These metafunctions are moved from type_traits.hpp to stream_traits.hpp: - has_get_executor - is_sync_stream - is_sync_read_stream - is_sync_write_stream - is_async_stream - is_async_read_stream - is_async_write_stream Actions Required: * Include the file stream_traits.hpp as needed
This commit is contained in:
@@ -12,7 +12,7 @@
|
||||
|
||||
#include <boost/beast/_experimental/unit_test/suite.hpp>
|
||||
#include <boost/beast/core/error.hpp>
|
||||
#include <boost/beast/core/type_traits.hpp>
|
||||
#include <boost/beast/core/stream_traits.hpp>
|
||||
#include <boost/asio/buffer.hpp>
|
||||
#include <boost/asio/spawn.hpp>
|
||||
#include <boost/asio/use_future.hpp>
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
#include <boost/beast/_experimental/unit_test/suite.hpp>
|
||||
#include <boost/beast/core/error.hpp>
|
||||
#include <boost/beast/core/type_traits.hpp>
|
||||
#include <boost/asio/io_context.hpp>
|
||||
|
||||
namespace boost {
|
||||
namespace beast {
|
||||
@@ -161,7 +162,7 @@ public:
|
||||
};
|
||||
|
||||
void
|
||||
testJavadoc()
|
||||
testGetLowestLayerJavadoc()
|
||||
{
|
||||
write_stream<without> s;
|
||||
BOOST_STATIC_ASSERT(
|
||||
@@ -178,11 +179,102 @@ public:
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
|
||||
void
|
||||
testExecutorType()
|
||||
{
|
||||
}
|
||||
|
||||
void
|
||||
testExecutorTypeJavadoc()
|
||||
{
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
|
||||
struct sync_read_stream
|
||||
{
|
||||
template<class MutableBufferSequence>
|
||||
std::size_t
|
||||
read_some(MutableBufferSequence const&);
|
||||
|
||||
template<class MutableBufferSequence>
|
||||
std::size_t
|
||||
read_some(MutableBufferSequence const&,
|
||||
error_code& ec);
|
||||
};
|
||||
|
||||
struct sync_write_stream
|
||||
{
|
||||
template<class ConstBufferSequence>
|
||||
std::size_t
|
||||
write_some(ConstBufferSequence const&);
|
||||
|
||||
template<class ConstBufferSequence>
|
||||
std::size_t
|
||||
write_some(
|
||||
ConstBufferSequence const&, error_code&);
|
||||
};
|
||||
|
||||
struct async_read_stream
|
||||
{
|
||||
net::io_context::executor_type
|
||||
get_executor();
|
||||
|
||||
template<class MutableBufferSequence, class ReadHandler>
|
||||
void
|
||||
async_read_some(
|
||||
MutableBufferSequence const&, ReadHandler&&);
|
||||
};
|
||||
|
||||
struct async_write_stream
|
||||
{
|
||||
net::io_context::executor_type
|
||||
get_executor();
|
||||
|
||||
template<class ConstBufferSequence, class WriteHandler>
|
||||
void
|
||||
async_write_some(
|
||||
ConstBufferSequence const&, WriteHandler&&);
|
||||
};
|
||||
|
||||
struct sync_stream : sync_read_stream, sync_write_stream
|
||||
{
|
||||
};
|
||||
|
||||
struct async_stream : async_read_stream, async_write_stream
|
||||
{
|
||||
using async_read_stream::get_executor;
|
||||
};
|
||||
|
||||
BOOST_STATIC_ASSERT(is_sync_read_stream<sync_read_stream>::value);
|
||||
BOOST_STATIC_ASSERT(is_sync_write_stream<sync_write_stream>::value);
|
||||
BOOST_STATIC_ASSERT(is_sync_read_stream<sync_stream>::value);
|
||||
BOOST_STATIC_ASSERT(is_sync_write_stream<sync_stream>::value);
|
||||
BOOST_STATIC_ASSERT(is_sync_stream<sync_stream>::value);
|
||||
|
||||
BOOST_STATIC_ASSERT(is_async_read_stream<async_read_stream>::value);
|
||||
BOOST_STATIC_ASSERT(is_async_write_stream<async_write_stream>::value);
|
||||
BOOST_STATIC_ASSERT(is_async_read_stream<async_stream>::value);
|
||||
BOOST_STATIC_ASSERT(is_async_write_stream<async_stream>::value);
|
||||
BOOST_STATIC_ASSERT(is_async_stream<async_stream>::value);
|
||||
|
||||
BOOST_STATIC_ASSERT(! is_sync_read_stream<sync_write_stream>::value);
|
||||
BOOST_STATIC_ASSERT(! is_sync_write_stream<sync_read_stream>::value);
|
||||
BOOST_STATIC_ASSERT(! is_async_read_stream<async_write_stream>::value);
|
||||
BOOST_STATIC_ASSERT(! is_async_write_stream<async_read_stream>::value);
|
||||
|
||||
BOOST_STATIC_ASSERT(! is_sync_stream<async_stream>::value);
|
||||
BOOST_STATIC_ASSERT(! is_async_stream<sync_stream>::value);
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
|
||||
void
|
||||
run() override
|
||||
{
|
||||
testGetLowestLayer();
|
||||
testJavadoc();
|
||||
testGetLowestLayerJavadoc();
|
||||
testExecutorType();
|
||||
testExecutorTypeJavadoc();
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -79,80 +79,5 @@ struct H
|
||||
BOOST_STATIC_ASSERT(is_completion_handler<H, void(int)>::value);
|
||||
BOOST_STATIC_ASSERT(! is_completion_handler<H, void(void)>::value);
|
||||
|
||||
//
|
||||
// stream concepts
|
||||
//
|
||||
|
||||
struct sync_write_stream
|
||||
{
|
||||
net::io_context&
|
||||
get_io_service();
|
||||
|
||||
template<class ConstBufferSequence>
|
||||
std::size_t
|
||||
write_some(ConstBufferSequence const& buffers);
|
||||
|
||||
template<class ConstBufferSequence>
|
||||
std::size_t
|
||||
write_some(
|
||||
ConstBufferSequence const& buffers, error_code& ec);
|
||||
};
|
||||
|
||||
struct sync_read_stream
|
||||
{
|
||||
template<class MutableBufferSequence>
|
||||
std::size_t
|
||||
read_some(MutableBufferSequence const& buffers);
|
||||
|
||||
template<class MutableBufferSequence>
|
||||
std::size_t
|
||||
read_some(MutableBufferSequence const& buffers,
|
||||
error_code& ec);
|
||||
};
|
||||
|
||||
struct sync_stream : sync_read_stream, sync_write_stream
|
||||
{
|
||||
};
|
||||
|
||||
BOOST_STATIC_ASSERT(! is_sync_read_stream<sync_write_stream>::value);
|
||||
BOOST_STATIC_ASSERT(! is_sync_write_stream<sync_read_stream>::value);
|
||||
|
||||
BOOST_STATIC_ASSERT(is_sync_read_stream<sync_read_stream>::value);
|
||||
BOOST_STATIC_ASSERT(is_sync_write_stream<sync_write_stream>::value);
|
||||
|
||||
BOOST_STATIC_ASSERT(is_sync_read_stream<sync_stream>::value);
|
||||
BOOST_STATIC_ASSERT(is_sync_write_stream<sync_stream>::value);
|
||||
|
||||
namespace {
|
||||
|
||||
using stream_type = net::ip::tcp::socket;
|
||||
|
||||
struct not_a_stream
|
||||
{
|
||||
void
|
||||
get_io_service();
|
||||
};
|
||||
|
||||
BOOST_STATIC_ASSERT(has_get_executor<stream_type>::value);
|
||||
BOOST_STATIC_ASSERT(is_async_read_stream<stream_type>::value);
|
||||
BOOST_STATIC_ASSERT(is_async_write_stream<stream_type>::value);
|
||||
BOOST_STATIC_ASSERT(is_async_stream<stream_type>::value);
|
||||
BOOST_STATIC_ASSERT(is_sync_read_stream<stream_type>::value);
|
||||
BOOST_STATIC_ASSERT(is_sync_write_stream<stream_type>::value);
|
||||
BOOST_STATIC_ASSERT(is_sync_stream<stream_type>::value);
|
||||
|
||||
BOOST_STATIC_ASSERT(! has_get_executor<not_a_stream>::value);
|
||||
BOOST_STATIC_ASSERT(! is_async_read_stream<not_a_stream>::value);
|
||||
BOOST_STATIC_ASSERT(! is_async_write_stream<not_a_stream>::value);
|
||||
BOOST_STATIC_ASSERT(! is_sync_read_stream<not_a_stream>::value);
|
||||
BOOST_STATIC_ASSERT(! is_sync_write_stream<not_a_stream>::value);
|
||||
|
||||
BOOST_STATIC_ASSERT(is_sync_read_stream<test::stream>::value);
|
||||
BOOST_STATIC_ASSERT(is_sync_write_stream<test::stream>::value);
|
||||
BOOST_STATIC_ASSERT(is_async_read_stream<test::stream>::value);
|
||||
BOOST_STATIC_ASSERT(is_async_write_stream<test::stream>::value);
|
||||
|
||||
} // (anonymous)
|
||||
|
||||
} // beast
|
||||
} // boost
|
||||
|
||||
Reference in New Issue
Block a user