2
0
mirror of https://github.com/boostorg/asio.git synced 2026-02-22 01:32:08 +00:00

Support immediate completion with reactor-based sockets and descriptors.

This commit is contained in:
Christopher Kohlhoff
2023-03-01 23:07:02 +11:00
parent 1f2f4bc862
commit 6550b831d3
39 changed files with 1121 additions and 120 deletions

View File

@@ -12,9 +12,14 @@
#define ARCHETYPES_ASYNC_RESULT_HPP
#include <boost/asio/async_result.hpp>
#include <boost/asio/system_executor.hpp>
namespace archetypes {
struct immediate_handler
{
};
struct lazy_handler
{
};
@@ -25,7 +30,7 @@ struct concrete_handler;
template <typename R, typename Arg1>
struct concrete_handler<R(Arg1)>
{
concrete_handler(lazy_handler)
concrete_handler()
{
}
@@ -43,18 +48,48 @@ private:
template <typename R, typename Arg1, typename Arg2>
struct concrete_handler<R(Arg1, Arg2)>
{
concrete_handler(lazy_handler)
concrete_handler()
{
}
void operator()(typename boost::asio::decay<Arg1>::type, typename boost::asio::decay<Arg2>::type)
void operator()(typename boost::asio::decay<Arg1>::type,
typename boost::asio::decay<Arg2>::type)
{
}
};
template <typename Signature>
struct immediate_concrete_handler : concrete_handler<Signature>
{
typedef boost::asio::system_executor immediate_executor_type;
immediate_concrete_handler(immediate_handler)
{
}
immediate_executor_type get_immediate_executor() const BOOST_ASIO_NOEXCEPT
{
return immediate_executor_type();
}
#if defined(BOOST_ASIO_HAS_MOVE)
immediate_concrete_handler(immediate_concrete_handler&&) {}
private:
immediate_concrete_handler(const immediate_concrete_handler&);
#endif // defined(BOOST_ASIO_HAS_MOVE)
};
template <typename Signature>
struct lazy_concrete_handler : concrete_handler<Signature>
{
lazy_concrete_handler(lazy_handler)
{
}
#if defined(BOOST_ASIO_HAS_MOVE)
concrete_handler(concrete_handler&&) {}
lazy_concrete_handler(lazy_concrete_handler&&) {}
private:
concrete_handler(const concrete_handler&);
lazy_concrete_handler(const lazy_concrete_handler&);
#endif // defined(BOOST_ASIO_HAS_MOVE)
};
@@ -63,12 +98,39 @@ private:
namespace boost {
namespace asio {
template <typename Signature>
class async_result<archetypes::immediate_handler, Signature>
{
public:
// The concrete completion handler type.
typedef archetypes::immediate_concrete_handler<Signature>
completion_handler_type;
// The return type of the initiating function.
typedef void return_type;
// Construct an async_result from a given handler.
explicit async_result(completion_handler_type&)
{
}
// Obtain the value to be returned from the initiating function.
void get()
{
}
private:
// Disallow copying and assignment.
async_result(const async_result&) BOOST_ASIO_DELETED;
async_result& operator=(const async_result&) BOOST_ASIO_DELETED;
};
template <typename Signature>
class async_result<archetypes::lazy_handler, Signature>
{
public:
// The concrete completion handler type.
typedef archetypes::concrete_handler<Signature> completion_handler_type;
typedef archetypes::lazy_concrete_handler<Signature> completion_handler_type;
// The return type of the initiating function.
typedef int return_type;

View File

@@ -20,6 +20,7 @@
#include <boost/asio/io_context.hpp>
#include <boost/asio/ip/udp.hpp>
#include "../unit_test.hpp"
#include "../archetypes/async_result.hpp"
#if defined(__cplusplus_cli) || defined(__cplusplus_winrt)
# define generic cpp_generic
@@ -65,6 +66,7 @@ void test()
socket_base::message_flags in_flags = 0;
socket_base::send_buffer_size socket_option;
socket_base::bytes_readable io_control_command;
archetypes::immediate_handler immediate;
boost::system::error_code ec;
// basic_datagram_socket constructors.
@@ -143,6 +145,7 @@ void test()
socket1.connect(dp::endpoint(), ec);
socket1.async_connect(dp::endpoint(), connect_handler);
socket1.async_connect(dp::endpoint(), immediate);
socket1.set_option(socket_option);
socket1.set_option(socket_option, ec);
@@ -184,6 +187,12 @@ void test()
socket1.async_send(buffer(mutable_char_buffer), in_flags, send_handler);
socket1.async_send(buffer(const_char_buffer), in_flags, send_handler);
socket1.async_send(null_buffers(), in_flags, send_handler);
socket1.async_send(buffer(mutable_char_buffer), immediate);
socket1.async_send(buffer(const_char_buffer), immediate);
socket1.async_send(null_buffers(), immediate);
socket1.async_send(buffer(mutable_char_buffer), in_flags, immediate);
socket1.async_send(buffer(const_char_buffer), in_flags, immediate);
socket1.async_send(null_buffers(), in_flags, immediate);
socket1.send_to(buffer(mutable_char_buffer),
dp::endpoint());
@@ -216,6 +225,18 @@ void test()
dp::endpoint(), in_flags, send_handler);
socket1.async_send_to(null_buffers(),
dp::endpoint(), in_flags, send_handler);
socket1.async_send_to(buffer(mutable_char_buffer),
dp::endpoint(), immediate);
socket1.async_send_to(buffer(const_char_buffer),
dp::endpoint(), immediate);
socket1.async_send_to(null_buffers(),
dp::endpoint(), immediate);
socket1.async_send_to(buffer(mutable_char_buffer),
dp::endpoint(), in_flags, immediate);
socket1.async_send_to(buffer(const_char_buffer),
dp::endpoint(), in_flags, immediate);
socket1.async_send_to(null_buffers(),
dp::endpoint(), in_flags, immediate);
socket1.receive(buffer(mutable_char_buffer));
socket1.receive(null_buffers());
@@ -229,6 +250,10 @@ void test()
socket1.async_receive(buffer(mutable_char_buffer), in_flags,
receive_handler);
socket1.async_receive(null_buffers(), in_flags, receive_handler);
socket1.async_receive(buffer(mutable_char_buffer), immediate);
socket1.async_receive(null_buffers(), immediate);
socket1.async_receive(buffer(mutable_char_buffer), in_flags, immediate);
socket1.async_receive(null_buffers(), in_flags, immediate);
dp::endpoint endpoint;
socket1.receive_from(buffer(mutable_char_buffer), endpoint);
@@ -246,6 +271,14 @@ void test()
endpoint, in_flags, receive_handler);
socket1.async_receive_from(null_buffers(),
endpoint, in_flags, receive_handler);
socket1.async_receive_from(buffer(mutable_char_buffer),
endpoint, immediate);
socket1.async_receive_from(null_buffers(),
endpoint, immediate);
socket1.async_receive_from(buffer(mutable_char_buffer),
endpoint, in_flags, immediate);
socket1.async_receive_from(null_buffers(),
endpoint, in_flags, immediate);
}
catch (std::exception&)
{

View File

@@ -20,6 +20,7 @@
#include <boost/asio/io_context.hpp>
#include <boost/asio/ip/icmp.hpp>
#include "../unit_test.hpp"
#include "../archetypes/async_result.hpp"
#if defined(__cplusplus_cli) || defined(__cplusplus_winrt)
# define generic cpp_generic
@@ -65,6 +66,7 @@ void test()
socket_base::message_flags in_flags = 0;
socket_base::send_buffer_size socket_option;
socket_base::bytes_readable io_control_command;
archetypes::immediate_handler immediate;
boost::system::error_code ec;
// basic_raw_socket constructors.
@@ -143,6 +145,7 @@ void test()
socket1.connect(rp::endpoint(), ec);
socket1.async_connect(rp::endpoint(), connect_handler);
socket1.async_connect(rp::endpoint(), immediate);
socket1.set_option(socket_option);
socket1.set_option(socket_option, ec);
@@ -184,6 +187,12 @@ void test()
socket1.async_send(buffer(mutable_char_buffer), in_flags, send_handler);
socket1.async_send(buffer(const_char_buffer), in_flags, send_handler);
socket1.async_send(null_buffers(), in_flags, send_handler);
socket1.async_send(buffer(mutable_char_buffer), immediate);
socket1.async_send(buffer(const_char_buffer), immediate);
socket1.async_send(null_buffers(), immediate);
socket1.async_send(buffer(mutable_char_buffer), in_flags, immediate);
socket1.async_send(buffer(const_char_buffer), in_flags, immediate);
socket1.async_send(null_buffers(), in_flags, immediate);
socket1.send_to(buffer(mutable_char_buffer),
rp::endpoint());
@@ -216,6 +225,18 @@ void test()
rp::endpoint(), in_flags, send_handler);
socket1.async_send_to(null_buffers(),
rp::endpoint(), in_flags, send_handler);
socket1.async_send_to(buffer(mutable_char_buffer),
rp::endpoint(), immediate);
socket1.async_send_to(buffer(const_char_buffer),
rp::endpoint(), immediate);
socket1.async_send_to(null_buffers(),
rp::endpoint(), immediate);
socket1.async_send_to(buffer(mutable_char_buffer),
rp::endpoint(), in_flags, immediate);
socket1.async_send_to(buffer(const_char_buffer),
rp::endpoint(), in_flags, immediate);
socket1.async_send_to(null_buffers(),
rp::endpoint(), in_flags, immediate);
socket1.receive(buffer(mutable_char_buffer));
socket1.receive(null_buffers());
@@ -229,6 +250,11 @@ void test()
socket1.async_receive(buffer(mutable_char_buffer), in_flags,
receive_handler);
socket1.async_receive(null_buffers(), in_flags, receive_handler);
socket1.async_receive(buffer(mutable_char_buffer), immediate);
socket1.async_receive(null_buffers(), immediate);
socket1.async_receive(buffer(mutable_char_buffer), in_flags,
immediate);
socket1.async_receive(null_buffers(), in_flags, immediate);
rp::endpoint endpoint;
socket1.receive_from(buffer(mutable_char_buffer), endpoint);
@@ -246,6 +272,14 @@ void test()
endpoint, in_flags, receive_handler);
socket1.async_receive_from(null_buffers(),
endpoint, in_flags, receive_handler);
socket1.async_receive_from(buffer(mutable_char_buffer),
endpoint, immediate);
socket1.async_receive_from(null_buffers(),
endpoint, immediate);
socket1.async_receive_from(buffer(mutable_char_buffer),
endpoint, in_flags, immediate);
socket1.async_receive_from(null_buffers(),
endpoint, in_flags, immediate);
}
catch (std::exception&)
{

View File

@@ -19,6 +19,7 @@
#include <cstring>
#include <boost/asio/io_context.hpp>
#include "../unit_test.hpp"
#include "../archetypes/async_result.hpp"
#if defined(__cplusplus_cli) || defined(__cplusplus_winrt)
# define generic cpp_generic
@@ -64,6 +65,7 @@ void test()
socket_base::message_flags out_flags = 0;
socket_base::send_buffer_size socket_option;
socket_base::bytes_readable io_control_command;
archetypes::immediate_handler immediate;
boost::system::error_code ec;
// basic_seq_packet_socket constructors.
@@ -139,6 +141,7 @@ void test()
socket1.connect(spp::endpoint(), ec);
socket1.async_connect(spp::endpoint(), connect_handler);
socket1.async_connect(spp::endpoint(), immediate);
socket1.set_option(socket_option);
socket1.set_option(socket_option, ec);
@@ -174,6 +177,9 @@ void test()
socket1.async_send(buffer(mutable_char_buffer), in_flags, send_handler);
socket1.async_send(buffer(const_char_buffer), in_flags, send_handler);
socket1.async_send(null_buffers(), in_flags, send_handler);
socket1.async_send(buffer(mutable_char_buffer), in_flags, immediate);
socket1.async_send(buffer(const_char_buffer), in_flags, immediate);
socket1.async_send(null_buffers(), in_flags, immediate);
socket1.receive(buffer(mutable_char_buffer), out_flags);
socket1.receive(null_buffers(), out_flags);
@@ -188,6 +194,11 @@ void test()
socket1.async_receive(buffer(mutable_char_buffer), in_flags,
out_flags, receive_handler);
socket1.async_receive(null_buffers(), in_flags, out_flags, receive_handler);
socket1.async_receive(buffer(mutable_char_buffer), out_flags, immediate);
socket1.async_receive(null_buffers(), out_flags, immediate);
socket1.async_receive(buffer(mutable_char_buffer), in_flags,
out_flags, immediate);
socket1.async_receive(null_buffers(), in_flags, out_flags, immediate);
}
catch (std::exception&)
{

View File

@@ -20,6 +20,7 @@
#include <boost/asio/io_context.hpp>
#include <boost/asio/ip/tcp.hpp>
#include "../unit_test.hpp"
#include "../archetypes/async_result.hpp"
#if defined(__cplusplus_cli) || defined(__cplusplus_winrt)
# define generic cpp_generic
@@ -73,6 +74,7 @@ void test()
socket_base::message_flags in_flags = 0;
socket_base::keep_alive socket_option;
socket_base::bytes_readable io_control_command;
archetypes::immediate_handler immediate;
boost::system::error_code ec;
// basic_stream_socket constructors.
@@ -159,6 +161,7 @@ void test()
socket1.connect(sp::endpoint(), ec);
socket1.async_connect(sp::endpoint(), connect_handler);
socket1.async_connect(sp::endpoint(), immediate);
socket1.set_option(socket_option);
socket1.set_option(socket_option, ec);
@@ -200,6 +203,12 @@ void test()
socket1.async_send(buffer(mutable_char_buffer), in_flags, send_handler);
socket1.async_send(buffer(const_char_buffer), in_flags, send_handler);
socket1.async_send(null_buffers(), in_flags, send_handler);
socket1.async_send(buffer(mutable_char_buffer), immediate);
socket1.async_send(buffer(const_char_buffer), immediate);
socket1.async_send(null_buffers(), immediate);
socket1.async_send(buffer(mutable_char_buffer), in_flags, immediate);
socket1.async_send(buffer(const_char_buffer), in_flags, immediate);
socket1.async_send(null_buffers(), in_flags, immediate);
socket1.receive(buffer(mutable_char_buffer));
socket1.receive(null_buffers());
@@ -213,6 +222,11 @@ void test()
socket1.async_receive(buffer(mutable_char_buffer), in_flags,
receive_handler);
socket1.async_receive(null_buffers(), in_flags, receive_handler);
socket1.async_receive(buffer(mutable_char_buffer), immediate);
socket1.async_receive(null_buffers(), immediate);
socket1.async_receive(buffer(mutable_char_buffer), in_flags,
immediate);
socket1.async_receive(null_buffers(), in_flags, immediate);
socket1.write_some(buffer(mutable_char_buffer));
socket1.write_some(buffer(const_char_buffer));
@@ -224,6 +238,9 @@ void test()
socket1.async_write_some(buffer(mutable_char_buffer), write_some_handler);
socket1.async_write_some(buffer(const_char_buffer), write_some_handler);
socket1.async_write_some(null_buffers(), write_some_handler);
socket1.async_write_some(buffer(mutable_char_buffer), immediate);
socket1.async_write_some(buffer(const_char_buffer), immediate);
socket1.async_write_some(null_buffers(), immediate);
socket1.read_some(buffer(mutable_char_buffer));
socket1.read_some(buffer(mutable_char_buffer), ec);
@@ -231,6 +248,8 @@ void test()
socket1.async_read_some(buffer(mutable_char_buffer), read_some_handler);
socket1.async_read_some(null_buffers(), read_some_handler);
socket1.async_read_some(buffer(mutable_char_buffer), immediate);
socket1.async_read_some(null_buffers(), immediate);
}
catch (std::exception&)
{

View File

@@ -86,6 +86,7 @@ void test()
archetypes::gettable_socket_option<int> gettable_socket_option2;
archetypes::gettable_socket_option<double> gettable_socket_option3;
archetypes::io_control_command io_control_command;
archetypes::immediate_handler immediate;
archetypes::lazy_handler lazy;
boost::system::error_code ec;
@@ -193,6 +194,8 @@ void test()
connect_handler());
socket1.async_connect(ip::icmp::endpoint(ip::icmp::v6(), 0),
connect_handler());
socket1.async_connect(ip::icmp::endpoint(ip::icmp::v4(), 0), immediate);
socket1.async_connect(ip::icmp::endpoint(ip::icmp::v6(), 0), immediate);
int i1 = socket1.async_connect(ip::icmp::endpoint(ip::icmp::v4(), 0), lazy);
(void)i1;
int i2 = socket1.async_connect(ip::icmp::endpoint(ip::icmp::v6(), 0), lazy);
@@ -256,6 +259,12 @@ void test()
socket1.async_send(buffer(mutable_char_buffer), in_flags, send_handler());
socket1.async_send(buffer(const_char_buffer), in_flags, send_handler());
socket1.async_send(null_buffers(), in_flags, send_handler());
socket1.async_send(buffer(mutable_char_buffer), immediate);
socket1.async_send(buffer(const_char_buffer), immediate);
socket1.async_send(null_buffers(), immediate);
socket1.async_send(buffer(mutable_char_buffer), in_flags, immediate);
socket1.async_send(buffer(const_char_buffer), in_flags, immediate);
socket1.async_send(null_buffers(), in_flags, immediate);
int i3 = socket1.async_send(buffer(mutable_char_buffer), lazy);
(void)i3;
int i4 = socket1.async_send(buffer(const_char_buffer), lazy);
@@ -330,6 +339,30 @@ void test()
ip::icmp::endpoint(ip::icmp::v4(), 0), in_flags, send_handler());
socket1.async_send_to(null_buffers(),
ip::icmp::endpoint(ip::icmp::v6(), 0), in_flags, send_handler());
socket1.async_send_to(buffer(mutable_char_buffer),
ip::icmp::endpoint(ip::icmp::v4(), 0), immediate);
socket1.async_send_to(buffer(mutable_char_buffer),
ip::icmp::endpoint(ip::icmp::v6(), 0), immediate);
socket1.async_send_to(buffer(const_char_buffer),
ip::icmp::endpoint(ip::icmp::v4(), 0), immediate);
socket1.async_send_to(buffer(const_char_buffer),
ip::icmp::endpoint(ip::icmp::v6(), 0), immediate);
socket1.async_send_to(null_buffers(),
ip::icmp::endpoint(ip::icmp::v4(), 0), immediate);
socket1.async_send_to(null_buffers(),
ip::icmp::endpoint(ip::icmp::v6(), 0), immediate);
socket1.async_send_to(buffer(mutable_char_buffer),
ip::icmp::endpoint(ip::icmp::v4(), 0), in_flags, immediate);
socket1.async_send_to(buffer(mutable_char_buffer),
ip::icmp::endpoint(ip::icmp::v6(), 0), in_flags, immediate);
socket1.async_send_to(buffer(const_char_buffer),
ip::icmp::endpoint(ip::icmp::v4(), 0), in_flags, immediate);
socket1.async_send_to(buffer(const_char_buffer),
ip::icmp::endpoint(ip::icmp::v6(), 0), in_flags, immediate);
socket1.async_send_to(null_buffers(),
ip::icmp::endpoint(ip::icmp::v4(), 0), in_flags, immediate);
socket1.async_send_to(null_buffers(),
ip::icmp::endpoint(ip::icmp::v6(), 0), in_flags, immediate);
int i9 = socket1.async_send_to(buffer(mutable_char_buffer),
ip::icmp::endpoint(ip::icmp::v4(), 0), lazy);
(void)i9;
@@ -379,6 +412,10 @@ void test()
socket1.async_receive(buffer(mutable_char_buffer), in_flags,
receive_handler());
socket1.async_receive(null_buffers(), in_flags, receive_handler());
socket1.async_receive(buffer(mutable_char_buffer), immediate);
socket1.async_receive(null_buffers(), immediate);
socket1.async_receive(buffer(mutable_char_buffer), in_flags, immediate);
socket1.async_receive(null_buffers(), in_flags, immediate);
int i21 = socket1.async_receive(buffer(mutable_char_buffer), lazy);
(void)i21;
int i22 = socket1.async_receive(null_buffers(), lazy);
@@ -405,6 +442,14 @@ void test()
endpoint, in_flags, receive_handler());
socket1.async_receive_from(null_buffers(),
endpoint, in_flags, receive_handler());
socket1.async_receive_from(buffer(mutable_char_buffer),
endpoint, immediate);
socket1.async_receive_from(null_buffers(),
endpoint, immediate);
socket1.async_receive_from(buffer(mutable_char_buffer),
endpoint, in_flags, immediate);
socket1.async_receive_from(null_buffers(),
endpoint, in_flags, immediate);
int i25 = socket1.async_receive_from(buffer(mutable_char_buffer),
endpoint, lazy);
(void)i25;

View File

@@ -239,6 +239,7 @@ void test()
archetypes::gettable_socket_option<int> gettable_socket_option2;
archetypes::gettable_socket_option<double> gettable_socket_option3;
archetypes::io_control_command io_control_command;
archetypes::immediate_handler immediate;
archetypes::lazy_handler lazy;
boost::system::error_code ec;
@@ -346,6 +347,8 @@ void test()
connect_handler());
socket1.async_connect(ip::tcp::endpoint(ip::tcp::v6(), 0),
connect_handler());
socket1.async_connect(ip::tcp::endpoint(ip::tcp::v4(), 0), immediate);
socket1.async_connect(ip::tcp::endpoint(ip::tcp::v6(), 0), immediate);
int i1 = socket1.async_connect(ip::tcp::endpoint(ip::tcp::v4(), 0), lazy);
(void)i1;
int i2 = socket1.async_connect(ip::tcp::endpoint(ip::tcp::v6(), 0), lazy);
@@ -395,6 +398,7 @@ void test()
socket1.wait(socket_base::wait_write, ec);
socket1.async_wait(socket_base::wait_read, wait_handler());
socket1.async_wait(socket_base::wait_read, immediate);
int i3 = socket1.async_wait(socket_base::wait_write, lazy);
(void)i3;
@@ -426,6 +430,16 @@ void test()
socket1.async_send(mutable_buffers, in_flags, send_handler());
socket1.async_send(const_buffers, in_flags, send_handler());
socket1.async_send(null_buffers(), in_flags, send_handler());
socket1.async_send(buffer(mutable_char_buffer), immediate);
socket1.async_send(buffer(const_char_buffer), immediate);
socket1.async_send(mutable_buffers, immediate);
socket1.async_send(const_buffers, immediate);
socket1.async_send(null_buffers(), immediate);
socket1.async_send(buffer(mutable_char_buffer), in_flags, immediate);
socket1.async_send(buffer(const_char_buffer), in_flags, immediate);
socket1.async_send(mutable_buffers, in_flags, immediate);
socket1.async_send(const_buffers, in_flags, immediate);
socket1.async_send(null_buffers(), in_flags, immediate);
int i4 = socket1.async_send(buffer(mutable_char_buffer), lazy);
(void)i4;
int i5 = socket1.async_send(buffer(const_char_buffer), lazy);
@@ -464,6 +478,12 @@ void test()
receive_handler());
socket1.async_receive(mutable_buffers, in_flags, receive_handler());
socket1.async_receive(null_buffers(), in_flags, receive_handler());
socket1.async_receive(buffer(mutable_char_buffer), immediate);
socket1.async_receive(mutable_buffers, immediate);
socket1.async_receive(null_buffers(), immediate);
socket1.async_receive(buffer(mutable_char_buffer), in_flags, immediate);
socket1.async_receive(mutable_buffers, in_flags, immediate);
socket1.async_receive(null_buffers(), in_flags, immediate);
int i14 = socket1.async_receive(buffer(mutable_char_buffer), lazy);
(void)i14;
int i15 = socket1.async_receive(mutable_buffers, lazy);
@@ -494,6 +514,11 @@ void test()
socket1.async_write_some(mutable_buffers, write_some_handler());
socket1.async_write_some(const_buffers, write_some_handler());
socket1.async_write_some(null_buffers(), write_some_handler());
socket1.async_write_some(buffer(mutable_char_buffer), immediate);
socket1.async_write_some(buffer(const_char_buffer), immediate);
socket1.async_write_some(mutable_buffers, immediate);
socket1.async_write_some(const_buffers, immediate);
socket1.async_write_some(null_buffers(), immediate);
int i20 = socket1.async_write_some(buffer(mutable_char_buffer), lazy);
(void)i20;
int i21 = socket1.async_write_some(buffer(const_char_buffer), lazy);
@@ -515,6 +540,9 @@ void test()
socket1.async_read_some(buffer(mutable_char_buffer), read_some_handler());
socket1.async_read_some(mutable_buffers, read_some_handler());
socket1.async_read_some(null_buffers(), read_some_handler());
socket1.async_read_some(buffer(mutable_char_buffer), immediate);
socket1.async_read_some(mutable_buffers, immediate);
socket1.async_read_some(null_buffers(), immediate);
int i25 = socket1.async_read_some(buffer(mutable_char_buffer), lazy);
(void)i25;
int i26 = socket1.async_read_some(mutable_buffers, lazy);
@@ -767,6 +795,7 @@ void test()
archetypes::gettable_socket_option<int> gettable_socket_option2;
archetypes::gettable_socket_option<double> gettable_socket_option3;
archetypes::io_control_command io_control_command;
archetypes::immediate_handler immediate;
archetypes::lazy_handler lazy;
boost::system::error_code ec;
@@ -883,6 +912,7 @@ void test()
acceptor1.wait(socket_base::wait_write, ec);
acceptor1.async_wait(socket_base::wait_read, wait_handler());
acceptor1.async_wait(socket_base::wait_read, immediate);
int i1 = acceptor1.async_wait(socket_base::wait_write, lazy);
(void)i1;
@@ -914,6 +944,8 @@ void test()
acceptor1.async_accept(peer_socket1, accept_handler());
acceptor1.async_accept(peer_socket1, peer_endpoint, accept_handler());
acceptor1.async_accept(peer_socket1, immediate);
acceptor1.async_accept(peer_socket1, peer_endpoint, immediate);
int i2 = acceptor1.async_accept(peer_socket1, lazy);
(void)i2;
int i3 = acceptor1.async_accept(peer_socket1, peer_endpoint, lazy);
@@ -921,6 +953,8 @@ void test()
acceptor1.async_accept(peer_socket2, accept_handler());
acceptor1.async_accept(peer_socket2, peer_endpoint, accept_handler());
acceptor1.async_accept(peer_socket2, immediate);
acceptor1.async_accept(peer_socket2, peer_endpoint, immediate);
int i4 = acceptor1.async_accept(peer_socket2, lazy);
(void)i4;
int i5 = acceptor1.async_accept(peer_socket2, peer_endpoint, lazy);
@@ -935,6 +969,12 @@ void test()
acceptor1.async_accept(ioc, peer_endpoint, move_accept_handler());
acceptor1.async_accept(ioc_ex, peer_endpoint, move_accept_handler());
acceptor1.async_accept(ioc_ex, peer_endpoint, move_accept_ioc_handler());
acceptor1.async_accept(immediate);
acceptor1.async_accept(ioc, immediate);
acceptor1.async_accept(ioc_ex, immediate);
acceptor1.async_accept(peer_endpoint, immediate);
acceptor1.async_accept(ioc, peer_endpoint, immediate);
acceptor1.async_accept(ioc_ex, peer_endpoint, immediate);
#endif // defined(BOOST_ASIO_HAS_MOVE)
}
catch (std::exception&)

View File

@@ -102,6 +102,7 @@ void test()
archetypes::gettable_socket_option<int> gettable_socket_option2;
archetypes::gettable_socket_option<double> gettable_socket_option3;
archetypes::io_control_command io_control_command;
archetypes::immediate_handler immediate;
archetypes::lazy_handler lazy;
boost::system::error_code ec;
@@ -209,6 +210,8 @@ void test()
connect_handler());
socket1.async_connect(ip::udp::endpoint(ip::udp::v6(), 0),
connect_handler());
socket1.async_connect(ip::udp::endpoint(ip::udp::v4(), 0), immediate);
socket1.async_connect(ip::udp::endpoint(ip::udp::v6(), 0), immediate);
int i1 = socket1.async_connect(ip::udp::endpoint(ip::udp::v4(), 0), lazy);
(void)i1;
int i2 = socket1.async_connect(ip::udp::endpoint(ip::udp::v6(), 0), lazy);
@@ -258,6 +261,7 @@ void test()
socket1.wait(socket_base::wait_write, ec);
socket1.async_wait(socket_base::wait_read, wait_handler());
socket1.async_wait(socket_base::wait_read, immediate);
int i3 = socket1.async_wait(socket_base::wait_write, lazy);
(void)i3;
@@ -279,6 +283,12 @@ void test()
socket1.async_send(buffer(mutable_char_buffer), in_flags, send_handler());
socket1.async_send(buffer(const_char_buffer), in_flags, send_handler());
socket1.async_send(null_buffers(), in_flags, send_handler());
socket1.async_send(buffer(mutable_char_buffer), immediate);
socket1.async_send(buffer(const_char_buffer), immediate);
socket1.async_send(null_buffers(), immediate);
socket1.async_send(buffer(mutable_char_buffer), in_flags, immediate);
socket1.async_send(buffer(const_char_buffer), in_flags, immediate);
socket1.async_send(null_buffers(), in_flags, immediate);
int i4 = socket1.async_send(buffer(mutable_char_buffer), lazy);
(void)i4;
int i5 = socket1.async_send(buffer(const_char_buffer), lazy);
@@ -353,6 +363,30 @@ void test()
ip::udp::endpoint(ip::udp::v4(), 0), in_flags, send_handler());
socket1.async_send_to(null_buffers(),
ip::udp::endpoint(ip::udp::v6(), 0), in_flags, send_handler());
socket1.async_send_to(buffer(mutable_char_buffer),
ip::udp::endpoint(ip::udp::v4(), 0), immediate);
socket1.async_send_to(buffer(mutable_char_buffer),
ip::udp::endpoint(ip::udp::v6(), 0), immediate);
socket1.async_send_to(buffer(const_char_buffer),
ip::udp::endpoint(ip::udp::v4(), 0), immediate);
socket1.async_send_to(buffer(const_char_buffer),
ip::udp::endpoint(ip::udp::v6(), 0), immediate);
socket1.async_send_to(null_buffers(),
ip::udp::endpoint(ip::udp::v4(), 0), immediate);
socket1.async_send_to(null_buffers(),
ip::udp::endpoint(ip::udp::v6(), 0), immediate);
socket1.async_send_to(buffer(mutable_char_buffer),
ip::udp::endpoint(ip::udp::v4(), 0), in_flags, immediate);
socket1.async_send_to(buffer(mutable_char_buffer),
ip::udp::endpoint(ip::udp::v6(), 0), in_flags, immediate);
socket1.async_send_to(buffer(const_char_buffer),
ip::udp::endpoint(ip::udp::v4(), 0), in_flags, immediate);
socket1.async_send_to(buffer(const_char_buffer),
ip::udp::endpoint(ip::udp::v6(), 0), in_flags, immediate);
socket1.async_send_to(null_buffers(),
ip::udp::endpoint(ip::udp::v4(), 0), in_flags, immediate);
socket1.async_send_to(null_buffers(),
ip::udp::endpoint(ip::udp::v6(), 0), in_flags, immediate);
int i10 = socket1.async_send_to(buffer(mutable_char_buffer),
ip::udp::endpoint(ip::udp::v4(), 0), lazy);
(void)i10;
@@ -402,6 +436,10 @@ void test()
socket1.async_receive(buffer(mutable_char_buffer), in_flags,
receive_handler());
socket1.async_receive(null_buffers(), in_flags, receive_handler());
socket1.async_receive(buffer(mutable_char_buffer), immediate);
socket1.async_receive(null_buffers(), immediate);
socket1.async_receive(buffer(mutable_char_buffer), in_flags, immediate);
socket1.async_receive(null_buffers(), in_flags, immediate);
int i22 = socket1.async_receive(buffer(mutable_char_buffer), lazy);
(void)i22;
int i23 = socket1.async_receive(null_buffers(), lazy);
@@ -428,6 +466,14 @@ void test()
endpoint, in_flags, receive_handler());
socket1.async_receive_from(null_buffers(),
endpoint, in_flags, receive_handler());
socket1.async_receive_from(buffer(mutable_char_buffer),
endpoint, immediate);
socket1.async_receive_from(null_buffers(),
endpoint, immediate);
socket1.async_receive_from(buffer(mutable_char_buffer),
endpoint, in_flags, immediate);
socket1.async_receive_from(null_buffers(),
endpoint, in_flags, immediate);
int i26 = socket1.async_receive_from(buffer(mutable_char_buffer),
endpoint, lazy);
(void)i26;

View File

@@ -55,6 +55,7 @@ void test()
char mutable_char_buffer[128] = "";
const char const_char_buffer[128] = "";
posix::descriptor_base::bytes_readable io_control_command;
archetypes::immediate_handler immediate;
archetypes::lazy_handler lazy;
boost::system::error_code ec;
@@ -134,6 +135,7 @@ void test()
descriptor1.wait(posix::descriptor_base::wait_write, ec);
descriptor1.async_wait(posix::descriptor_base::wait_read, &wait_handler);
descriptor1.async_wait(posix::descriptor_base::wait_read, immediate);
int i1 = descriptor1.async_wait(posix::descriptor_base::wait_write, lazy);
(void)i1;
@@ -152,6 +154,9 @@ void test()
write_some_handler);
descriptor1.async_write_some(null_buffers(),
write_some_handler);
descriptor1.async_write_some(buffer(mutable_char_buffer), immediate);
descriptor1.async_write_some(buffer(const_char_buffer), immediate);
descriptor1.async_write_some(null_buffers(), immediate);
int i2 = descriptor1.async_write_some(buffer(mutable_char_buffer), lazy);
(void)i2;
int i3 = descriptor1.async_write_some(buffer(const_char_buffer), lazy);
@@ -165,6 +170,8 @@ void test()
descriptor1.async_read_some(buffer(mutable_char_buffer), read_some_handler);
descriptor1.async_read_some(null_buffers(), read_some_handler);
descriptor1.async_read_some(buffer(mutable_char_buffer), immediate);
descriptor1.async_read_some(null_buffers(), immediate);
int i5 = descriptor1.async_read_some(buffer(mutable_char_buffer), lazy);
(void)i5;
int i6 = descriptor1.async_read_some(null_buffers(), lazy);