mirror of
https://github.com/deneraraujo/OpenVPNAdapter.git
synced 2026-04-24 00:00:05 +08:00
Merge commit '1dd2f4645226bd269f2407d5ed431acc3f66e7a6' as 'Sources/ASIO'
This commit is contained in:
@@ -0,0 +1,129 @@
|
||||
//
|
||||
// is_read_buffered.cpp
|
||||
// ~~~~~~~~~~~~~~~~~~~~
|
||||
//
|
||||
// Copyright (c) 2003-2019 Christopher M. Kohlhoff (chris at kohlhoff 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)
|
||||
//
|
||||
|
||||
// Disable autolinking for unit tests.
|
||||
#if !defined(BOOST_ALL_NO_LIB)
|
||||
#define BOOST_ALL_NO_LIB 1
|
||||
#endif // !defined(BOOST_ALL_NO_LIB)
|
||||
|
||||
// Test that header file is self-contained.
|
||||
#include "asio/is_read_buffered.hpp"
|
||||
|
||||
#include "asio/buffered_read_stream.hpp"
|
||||
#include "asio/buffered_write_stream.hpp"
|
||||
#include "asio/io_context.hpp"
|
||||
#include "asio/ip/tcp.hpp"
|
||||
#include "unit_test.hpp"
|
||||
|
||||
using namespace std; // For memcmp, memcpy and memset.
|
||||
|
||||
class test_stream
|
||||
{
|
||||
public:
|
||||
typedef asio::io_context io_context_type;
|
||||
|
||||
typedef test_stream lowest_layer_type;
|
||||
|
||||
typedef io_context_type::executor_type executor_type;
|
||||
|
||||
test_stream(asio::io_context& io_context)
|
||||
: io_context_(io_context)
|
||||
{
|
||||
}
|
||||
|
||||
io_context_type& io_context()
|
||||
{
|
||||
return io_context_;
|
||||
}
|
||||
|
||||
lowest_layer_type& lowest_layer()
|
||||
{
|
||||
return *this;
|
||||
}
|
||||
|
||||
template <typename Const_Buffers>
|
||||
size_t write(const Const_Buffers&)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
template <typename Const_Buffers>
|
||||
size_t write(const Const_Buffers&, asio::error_code& ec)
|
||||
{
|
||||
ec = asio::error_code();
|
||||
return 0;
|
||||
}
|
||||
|
||||
template <typename Const_Buffers, typename Handler>
|
||||
void async_write(const Const_Buffers&, Handler handler)
|
||||
{
|
||||
asio::error_code error;
|
||||
asio::post(io_context_,
|
||||
asio::detail::bind_handler(handler, error, 0));
|
||||
}
|
||||
|
||||
template <typename Mutable_Buffers>
|
||||
size_t read(const Mutable_Buffers&)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
template <typename Mutable_Buffers>
|
||||
size_t read(const Mutable_Buffers&, asio::error_code& ec)
|
||||
{
|
||||
ec = asio::error_code();
|
||||
return 0;
|
||||
}
|
||||
|
||||
template <typename Mutable_Buffers, typename Handler>
|
||||
void async_read(const Mutable_Buffers&, Handler handler)
|
||||
{
|
||||
asio::error_code error;
|
||||
asio::post(io_context_,
|
||||
asio::detail::bind_handler(handler, error, 0));
|
||||
}
|
||||
|
||||
private:
|
||||
io_context_type& io_context_;
|
||||
};
|
||||
|
||||
void is_read_buffered_test()
|
||||
{
|
||||
ASIO_CHECK(!asio::is_read_buffered<
|
||||
asio::ip::tcp::socket>::value);
|
||||
|
||||
ASIO_CHECK(!!asio::is_read_buffered<
|
||||
asio::buffered_read_stream<
|
||||
asio::ip::tcp::socket> >::value);
|
||||
|
||||
ASIO_CHECK(!asio::is_read_buffered<
|
||||
asio::buffered_write_stream<
|
||||
asio::ip::tcp::socket> >::value);
|
||||
|
||||
ASIO_CHECK(!!asio::is_read_buffered<
|
||||
asio::buffered_stream<asio::ip::tcp::socket> >::value);
|
||||
|
||||
ASIO_CHECK(!asio::is_read_buffered<test_stream>::value);
|
||||
|
||||
ASIO_CHECK(!!asio::is_read_buffered<
|
||||
asio::buffered_read_stream<test_stream> >::value);
|
||||
|
||||
ASIO_CHECK(!asio::is_read_buffered<
|
||||
asio::buffered_write_stream<test_stream> >::value);
|
||||
|
||||
ASIO_CHECK(!!asio::is_read_buffered<
|
||||
asio::buffered_stream<test_stream> >::value);
|
||||
}
|
||||
|
||||
ASIO_TEST_SUITE
|
||||
(
|
||||
"is_read_buffered",
|
||||
ASIO_TEST_CASE(is_read_buffered_test)
|
||||
)
|
||||
Reference in New Issue
Block a user