Support Concepts for completion token params

This commit is contained in:
Vinnie Falco
2019-10-31 05:15:01 -07:00
parent 9f468ec1c1
commit 32bbd38387
11 changed files with 69 additions and 44 deletions

View File

@@ -3,6 +3,7 @@ Version 275:
* Async init-fns use the executor's default token * Async init-fns use the executor's default token
* Add basic_stream::rebind_executor * Add basic_stream::rebind_executor
* Use automatically deduced return types for all async operations * Use automatically deduced return types for all async operations
* Support Concepts for completion token params
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------

View File

@@ -49,9 +49,13 @@ PREDEFINED = \
BOOST_BEAST_SPLIT_COMPILATION=1 \ BOOST_BEAST_SPLIT_COMPILATION=1 \
"BOOST_BEAST_ASYNC_RESULT1(t)=__deduced__" \ "BOOST_BEAST_ASYNC_RESULT1(t)=__deduced__" \
"BOOST_BEAST_ASYNC_RESULT2(t)=__deduced__" \ "BOOST_BEAST_ASYNC_RESULT2(t)=__deduced__" \
"BOOST_BEAST_ASYNC_TPARAM1=class" \
"BOOST_BEAST_ASYNC_TPARAM2=class" \
"BOOST_ASIO_INITFN_RESULT_TYPE(t,a)=__deduced__" \ "BOOST_ASIO_INITFN_RESULT_TYPE(t,a)=__deduced__" \
"BOOST_ASIO_COMPLETION_TOKEN_FOR(sig)=class" \
GENERATING_DOCUMENTATION \ GENERATING_DOCUMENTATION \
BOOST_BEAST_DECL BOOST_BEAST_DECL
EXPAND_AS_DEFINED = EXPAND_AS_DEFINED =
SKIP_FUNCTION_MACROS = YES SKIP_FUNCTION_MACROS = YES

View File

@@ -224,7 +224,7 @@ public:
*/ */
template< template<
class MutableBufferSequence, class MutableBufferSequence,
class ReadHandler = BOOST_BEAST_ASYNC_TPARAM2 ReadHandler =
net::default_completion_token_t<executor_type> net::default_completion_token_t<executor_type>
> >
BOOST_BEAST_ASYNC_RESULT2(ReadHandler) BOOST_BEAST_ASYNC_RESULT2(ReadHandler)
@@ -306,7 +306,7 @@ public:
*/ */
template< template<
class ConstBufferSequence, class ConstBufferSequence,
class WriteHandler = BOOST_BEAST_ASYNC_TPARAM2 WriteHandler =
net::default_completion_token_t<executor_type> net::default_completion_token_t<executor_type>
> >
BOOST_BEAST_ASYNC_RESULT2(WriteHandler) BOOST_BEAST_ASYNC_RESULT2(WriteHandler)

View File

@@ -477,7 +477,7 @@ public:
*/ */
template< template<
class MutableBufferSequence, class MutableBufferSequence,
class ReadHandler> BOOST_BEAST_ASYNC_TPARAM2 ReadHandler>
BOOST_BEAST_ASYNC_RESULT2(ReadHandler) BOOST_BEAST_ASYNC_RESULT2(ReadHandler)
async_read_some( async_read_some(
MutableBufferSequence const& buffers, MutableBufferSequence const& buffers,
@@ -555,7 +555,7 @@ public:
*/ */
template< template<
class ConstBufferSequence, class ConstBufferSequence,
class WriteHandler> BOOST_BEAST_ASYNC_TPARAM2 WriteHandler>
BOOST_BEAST_ASYNC_RESULT2(WriteHandler) BOOST_BEAST_ASYNC_RESULT2(WriteHandler)
async_write_some( async_write_some(
ConstBufferSequence const& buffers, ConstBufferSequence const& buffers,

View File

@@ -921,7 +921,7 @@ public:
@see async_connect @see async_connect
*/ */
template< template<
class ConnectHandler = BOOST_BEAST_ASYNC_TPARAM1 ConnectHandler =
net::default_completion_token_t<executor_type> net::default_completion_token_t<executor_type>
> >
BOOST_BEAST_ASYNC_RESULT1(ConnectHandler) BOOST_BEAST_ASYNC_RESULT1(ConnectHandler)
@@ -974,7 +974,9 @@ public:
*/ */
template< template<
class EndpointSequence, class EndpointSequence,
class RangeConnectHandler = BOOST_ASIO_COMPLETION_TOKEN_FOR(
void(error_code, typename Protocol::endpoint))
RangeConnectHandler =
net::default_completion_token_t<executor_type> net::default_completion_token_t<executor_type>
#if ! BOOST_BEAST_DOXYGEN #if ! BOOST_BEAST_DOXYGEN
,class = typename std::enable_if< ,class = typename std::enable_if<
@@ -982,7 +984,9 @@ public:
EndpointSequence>::value>::type EndpointSequence>::value>::type
#endif #endif
> >
BOOST_ASIO_INITFN_RESULT_TYPE(RangeConnectHandler,void (error_code, typename Protocol::endpoint)) BOOST_ASIO_INITFN_RESULT_TYPE(
RangeConnectHandler,
void(error_code, typename Protocol::endpoint))
async_connect( async_connect(
EndpointSequence const& endpoints, EndpointSequence const& endpoints,
RangeConnectHandler&& handler = RangeConnectHandler&& handler =
@@ -1063,7 +1067,9 @@ public:
template< template<
class EndpointSequence, class EndpointSequence,
class ConnectCondition, class ConnectCondition,
class RangeConnectHandler = BOOST_ASIO_COMPLETION_TOKEN_FOR(
void(error_code, typename Protocol::endpoint))
RangeConnectHandler =
net::default_completion_token_t<executor_type> net::default_completion_token_t<executor_type>
#if ! BOOST_BEAST_DOXYGEN #if ! BOOST_BEAST_DOXYGEN
,class = typename std::enable_if< ,class = typename std::enable_if<
@@ -1071,7 +1077,9 @@ public:
EndpointSequence>::value>::type EndpointSequence>::value>::type
#endif #endif
> >
BOOST_ASIO_INITFN_RESULT_TYPE(RangeConnectHandler,void (error_code, typename Protocol::endpoint)) BOOST_ASIO_INITFN_RESULT_TYPE(
RangeConnectHandler,
void(error_code, typename Protocol::endpoint))
async_connect( async_connect(
EndpointSequence const& endpoints, EndpointSequence const& endpoints,
ConnectCondition connect_condition, ConnectCondition connect_condition,
@@ -1123,7 +1131,9 @@ public:
*/ */
template< template<
class Iterator, class Iterator,
class IteratorConnectHandler = BOOST_ASIO_COMPLETION_TOKEN_FOR(
void(error_code, Iterator))
IteratorConnectHandler =
net::default_completion_token_t<executor_type>> net::default_completion_token_t<executor_type>>
BOOST_ASIO_INITFN_RESULT_TYPE( BOOST_ASIO_INITFN_RESULT_TYPE(
IteratorConnectHandler, IteratorConnectHandler,
@@ -1182,7 +1192,9 @@ public:
template< template<
class Iterator, class Iterator,
class ConnectCondition, class ConnectCondition,
class IteratorConnectHandler = BOOST_ASIO_COMPLETION_TOKEN_FOR(
void(error_code, Iterator))
IteratorConnectHandler =
net::default_completion_token_t<executor_type>> net::default_completion_token_t<executor_type>>
BOOST_ASIO_INITFN_RESULT_TYPE( BOOST_ASIO_INITFN_RESULT_TYPE(
IteratorConnectHandler, IteratorConnectHandler,
@@ -1306,7 +1318,7 @@ public:
*/ */
template< template<
class MutableBufferSequence, class MutableBufferSequence,
class ReadHandler = BOOST_BEAST_ASYNC_TPARAM2 ReadHandler =
net::default_completion_token_t<executor_type> net::default_completion_token_t<executor_type>
> >
BOOST_BEAST_ASYNC_RESULT2(ReadHandler) BOOST_BEAST_ASYNC_RESULT2(ReadHandler)
@@ -1429,7 +1441,7 @@ public:
*/ */
template< template<
class ConstBufferSequence, class ConstBufferSequence,
class WriteHandler = BOOST_BEAST_ASYNC_TPARAM2 WriteHandler =
net::default_completion_token_t<Executor> net::default_completion_token_t<Executor>
> >
BOOST_BEAST_ASYNC_RESULT2(WriteHandler) BOOST_BEAST_ASYNC_RESULT2(WriteHandler)

View File

@@ -263,7 +263,7 @@ public:
*/ */
template< template<
class MutableBufferSequence, class MutableBufferSequence,
class ReadHandler = BOOST_BEAST_ASYNC_TPARAM2 ReadHandler =
net::default_completion_token_t<executor_type>> net::default_completion_token_t<executor_type>>
BOOST_BEAST_ASYNC_RESULT2(ReadHandler) BOOST_BEAST_ASYNC_RESULT2(ReadHandler)
async_read_some( async_read_some(
@@ -342,7 +342,7 @@ public:
*/ */
template< template<
class ConstBufferSequence, class ConstBufferSequence,
class WriteHandler = BOOST_BEAST_ASYNC_TPARAM2 WriteHandler =
net::default_completion_token_t<executor_type>> net::default_completion_token_t<executor_type>>
BOOST_BEAST_ASYNC_RESULT2(WriteHandler) BOOST_BEAST_ASYNC_RESULT2(WriteHandler)
async_write_some( async_write_some(

View File

@@ -90,7 +90,15 @@ namespace net = boost::asio;
#ifndef BOOST_BEAST_ASYNC_RESULT2 #ifndef BOOST_BEAST_ASYNC_RESULT2
#define BOOST_BEAST_ASYNC_RESULT2(type) \ #define BOOST_BEAST_ASYNC_RESULT2(type) \
BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(type, void(::boost::beast::error_code, std::size_t)) BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(type, void(::boost::beast::error_code, ::std::size_t))
#endif
#ifndef BOOST_BEAST_ASYNC_TPARAM1
#define BOOST_BEAST_ASYNC_TPARAM1 BOOST_ASIO_COMPLETION_TOKEN_FOR(void(::boost::beast::error_code))
#endif
#ifndef BOOST_BEAST_ASYNC_TPARAM2
#define BOOST_BEAST_ASYNC_TPARAM2 BOOST_ASIO_COMPLETION_TOKEN_FOR(void(::boost::beast::error_code, ::std::size_t))
#endif #endif
#endif #endif

View File

@@ -253,7 +253,7 @@ public:
*/ */
template< template<
class MutableBufferSequence, class MutableBufferSequence,
class ReadHandler = BOOST_BEAST_ASYNC_TPARAM2 ReadHandler =
net::default_completion_token_t<executor_type>> net::default_completion_token_t<executor_type>>
BOOST_BEAST_ASYNC_RESULT2(ReadHandler) BOOST_BEAST_ASYNC_RESULT2(ReadHandler)
async_read_some( async_read_some(
@@ -334,7 +334,7 @@ public:
*/ */
template< template<
class ConstBufferSequence, class ConstBufferSequence,
class WriteHandler = BOOST_BEAST_ASYNC_TPARAM2 WriteHandler =
net::default_completion_token_t<executor_type>> net::default_completion_token_t<executor_type>>
BOOST_BEAST_ASYNC_RESULT2(WriteHandler) BOOST_BEAST_ASYNC_RESULT2(WriteHandler)
async_write_some( async_write_some(

View File

@@ -205,7 +205,7 @@ template<
class AsyncReadStream, class AsyncReadStream,
class DynamicBuffer, class DynamicBuffer,
bool isRequest, bool isRequest,
class ReadHandler = BOOST_BEAST_ASYNC_TPARAM2 ReadHandler =
net::default_completion_token_t< net::default_completion_token_t<
executor_type<AsyncReadStream>>> executor_type<AsyncReadStream>>>
BOOST_BEAST_ASYNC_RESULT2(ReadHandler) BOOST_BEAST_ASYNC_RESULT2(ReadHandler)
@@ -402,7 +402,7 @@ template<
class AsyncReadStream, class AsyncReadStream,
class DynamicBuffer, class DynamicBuffer,
bool isRequest, bool isRequest,
class ReadHandler = BOOST_BEAST_ASYNC_TPARAM2 ReadHandler =
net::default_completion_token_t< net::default_completion_token_t<
executor_type<AsyncReadStream>>> executor_type<AsyncReadStream>>>
BOOST_BEAST_ASYNC_RESULT2(ReadHandler) BOOST_BEAST_ASYNC_RESULT2(ReadHandler)
@@ -599,7 +599,7 @@ template<
class AsyncReadStream, class AsyncReadStream,
class DynamicBuffer, class DynamicBuffer,
bool isRequest, bool isRequest,
class ReadHandler = BOOST_BEAST_ASYNC_TPARAM2 ReadHandler =
net::default_completion_token_t< net::default_completion_token_t<
executor_type<AsyncReadStream>>> executor_type<AsyncReadStream>>>
BOOST_BEAST_ASYNC_RESULT2(ReadHandler) BOOST_BEAST_ASYNC_RESULT2(ReadHandler)
@@ -805,7 +805,7 @@ template<
class AsyncReadStream, class AsyncReadStream,
class DynamicBuffer, class DynamicBuffer,
bool isRequest, class Body, class Allocator, bool isRequest, class Body, class Allocator,
class ReadHandler = BOOST_BEAST_ASYNC_TPARAM2 ReadHandler =
net::default_completion_token_t< net::default_completion_token_t<
executor_type<AsyncReadStream>>> executor_type<AsyncReadStream>>>
BOOST_BEAST_ASYNC_RESULT2(ReadHandler) BOOST_BEAST_ASYNC_RESULT2(ReadHandler)

View File

@@ -166,7 +166,7 @@ write_some(
template< template<
class AsyncWriteStream, class AsyncWriteStream,
bool isRequest, class Body, class Fields, bool isRequest, class Body, class Fields,
class WriteHandler = BOOST_BEAST_ASYNC_TPARAM2 WriteHandler =
net::default_completion_token_t< net::default_completion_token_t<
executor_type<AsyncWriteStream>>> executor_type<AsyncWriteStream>>>
BOOST_BEAST_ASYNC_RESULT2(WriteHandler) BOOST_BEAST_ASYNC_RESULT2(WriteHandler)
@@ -296,7 +296,7 @@ write_header(
template< template<
class AsyncWriteStream, class AsyncWriteStream,
bool isRequest, class Body, class Fields, bool isRequest, class Body, class Fields,
class WriteHandler = BOOST_BEAST_ASYNC_TPARAM2 WriteHandler =
net::default_completion_token_t< net::default_completion_token_t<
executor_type<AsyncWriteStream>>> executor_type<AsyncWriteStream>>>
BOOST_BEAST_ASYNC_RESULT2(WriteHandler) BOOST_BEAST_ASYNC_RESULT2(WriteHandler)
@@ -417,7 +417,7 @@ write(
template< template<
class AsyncWriteStream, class AsyncWriteStream,
bool isRequest, class Body, class Fields, bool isRequest, class Body, class Fields,
class WriteHandler = BOOST_BEAST_ASYNC_TPARAM2 WriteHandler =
net::default_completion_token_t< net::default_completion_token_t<
executor_type<AsyncWriteStream>>> executor_type<AsyncWriteStream>>>
BOOST_BEAST_ASYNC_RESULT2(WriteHandler) BOOST_BEAST_ASYNC_RESULT2(WriteHandler)
@@ -642,7 +642,7 @@ write(
template< template<
class AsyncWriteStream, class AsyncWriteStream,
bool isRequest, class Body, class Fields, bool isRequest, class Body, class Fields,
class WriteHandler = BOOST_BEAST_ASYNC_TPARAM2 WriteHandler =
net::default_completion_token_t< net::default_completion_token_t<
executor_type<AsyncWriteStream>>> executor_type<AsyncWriteStream>>>
BOOST_BEAST_ASYNC_RESULT2(WriteHandler) BOOST_BEAST_ASYNC_RESULT2(WriteHandler)
@@ -704,7 +704,7 @@ async_write(
template< template<
class AsyncWriteStream, class AsyncWriteStream,
bool isRequest, class Body, class Fields, bool isRequest, class Body, class Fields,
class WriteHandler = BOOST_BEAST_ASYNC_TPARAM2 WriteHandler =
net::default_completion_token_t< net::default_completion_token_t<
executor_type<AsyncWriteStream>>> executor_type<AsyncWriteStream>>>
BOOST_BEAST_ASYNC_RESULT2(WriteHandler) BOOST_BEAST_ASYNC_RESULT2(WriteHandler)

View File

@@ -876,7 +876,7 @@ public:
@li <a href="https://tools.ietf.org/html/rfc7230#section-5.3.1">origin-form (RFC7230)</a> @li <a href="https://tools.ietf.org/html/rfc7230#section-5.3.1">origin-form (RFC7230)</a>
*/ */
template< template<
class HandshakeHandler = BOOST_BEAST_ASYNC_TPARAM1 HandshakeHandler =
net::default_completion_token_t<executor_type> net::default_completion_token_t<executor_type>
> >
BOOST_BEAST_ASYNC_RESULT1(HandshakeHandler) BOOST_BEAST_ASYNC_RESULT1(HandshakeHandler)
@@ -962,7 +962,7 @@ public:
@li <a href="https://tools.ietf.org/html/rfc7230#section-5.3.1">origin-form (RFC7230)</a> @li <a href="https://tools.ietf.org/html/rfc7230#section-5.3.1">origin-form (RFC7230)</a>
*/ */
template< template<
class HandshakeHandler = BOOST_BEAST_ASYNC_TPARAM1 HandshakeHandler =
net::default_completion_token_t<executor_type> net::default_completion_token_t<executor_type>
> >
BOOST_BEAST_ASYNC_RESULT1(HandshakeHandler) BOOST_BEAST_ASYNC_RESULT1(HandshakeHandler)
@@ -1286,7 +1286,7 @@ public:
@li <a href="https://tools.ietf.org/html/rfc6455#section-4.2">Websocket Opening Handshake Server Requirements (RFC6455)</a> @li <a href="https://tools.ietf.org/html/rfc6455#section-4.2">Websocket Opening Handshake Server Requirements (RFC6455)</a>
*/ */
template< template<
class AcceptHandler = BOOST_BEAST_ASYNC_TPARAM1 AcceptHandler =
net::default_completion_token_t<executor_type> net::default_completion_token_t<executor_type>
> >
BOOST_BEAST_ASYNC_RESULT1(AcceptHandler) BOOST_BEAST_ASYNC_RESULT1(AcceptHandler)
@@ -1354,7 +1354,7 @@ public:
*/ */
template< template<
class ConstBufferSequence, class ConstBufferSequence,
class AcceptHandler = BOOST_BEAST_ASYNC_TPARAM1 AcceptHandler =
net::default_completion_token_t<executor_type> net::default_completion_token_t<executor_type>
> >
BOOST_BEAST_ASYNC_RESULT1(AcceptHandler) BOOST_BEAST_ASYNC_RESULT1(AcceptHandler)
@@ -1419,7 +1419,7 @@ public:
*/ */
template< template<
class Body, class Allocator, class Body, class Allocator,
class AcceptHandler = BOOST_BEAST_ASYNC_TPARAM1 AcceptHandler =
net::default_completion_token_t<executor_type> net::default_completion_token_t<executor_type>
> >
BOOST_BEAST_ASYNC_RESULT1(AcceptHandler) BOOST_BEAST_ASYNC_RESULT1(AcceptHandler)
@@ -1554,7 +1554,7 @@ public:
@li <a href="https://tools.ietf.org/html/rfc6455#section-7.1.2">Websocket Closing Handshake (RFC6455)</a> @li <a href="https://tools.ietf.org/html/rfc6455#section-7.1.2">Websocket Closing Handshake (RFC6455)</a>
*/ */
template< template<
class CloseHandler = BOOST_BEAST_ASYNC_TPARAM1 CloseHandler =
net::default_completion_token_t<executor_type> net::default_completion_token_t<executor_type>
> >
BOOST_BEAST_ASYNC_RESULT1(CloseHandler) BOOST_BEAST_ASYNC_RESULT1(CloseHandler)
@@ -1656,7 +1656,7 @@ public:
manner equivalent to using `net::post`. manner equivalent to using `net::post`.
*/ */
template< template<
class WriteHandler = BOOST_BEAST_ASYNC_TPARAM1 WriteHandler =
net::default_completion_token_t<executor_type> net::default_completion_token_t<executor_type>
> >
BOOST_BEAST_ASYNC_RESULT1(WriteHandler) BOOST_BEAST_ASYNC_RESULT1(WriteHandler)
@@ -1764,7 +1764,7 @@ public:
manner equivalent to using `net::post`. manner equivalent to using `net::post`.
*/ */
template< template<
class WriteHandler = BOOST_BEAST_ASYNC_TPARAM1 WriteHandler =
net::default_completion_token_t<executor_type> net::default_completion_token_t<executor_type>
> >
BOOST_BEAST_ASYNC_RESULT1(WriteHandler) BOOST_BEAST_ASYNC_RESULT1(WriteHandler)
@@ -1926,7 +1926,7 @@ public:
*/ */
template< template<
class DynamicBuffer, class DynamicBuffer,
class ReadHandler = BOOST_BEAST_ASYNC_TPARAM2 ReadHandler =
net::default_completion_token_t< net::default_completion_token_t<
executor_type>> executor_type>>
BOOST_BEAST_ASYNC_RESULT2(ReadHandler) BOOST_BEAST_ASYNC_RESULT2(ReadHandler)
@@ -2105,7 +2105,7 @@ public:
*/ */
template< template<
class DynamicBuffer, class DynamicBuffer,
class ReadHandler = BOOST_BEAST_ASYNC_TPARAM2 ReadHandler =
net::default_completion_token_t< net::default_completion_token_t<
executor_type>> executor_type>>
BOOST_BEAST_ASYNC_RESULT2(ReadHandler) BOOST_BEAST_ASYNC_RESULT2(ReadHandler)
@@ -2280,7 +2280,7 @@ public:
*/ */
template< template<
class MutableBufferSequence, class MutableBufferSequence,
class ReadHandler = BOOST_BEAST_ASYNC_TPARAM2 ReadHandler =
net::default_completion_token_t< net::default_completion_token_t<
executor_type>> executor_type>>
BOOST_BEAST_ASYNC_RESULT2(ReadHandler) BOOST_BEAST_ASYNC_RESULT2(ReadHandler)
@@ -2403,7 +2403,7 @@ public:
*/ */
template< template<
class ConstBufferSequence, class ConstBufferSequence,
class WriteHandler = BOOST_BEAST_ASYNC_TPARAM2 WriteHandler =
net::default_completion_token_t< net::default_completion_token_t<
executor_type>> executor_type>>
BOOST_BEAST_ASYNC_RESULT2(WriteHandler) BOOST_BEAST_ASYNC_RESULT2(WriteHandler)
@@ -2526,7 +2526,7 @@ public:
*/ */
template< template<
class ConstBufferSequence, class ConstBufferSequence,
class WriteHandler = BOOST_BEAST_ASYNC_TPARAM2 WriteHandler =
net::default_completion_token_t< net::default_completion_token_t<
executor_type>> executor_type>>
BOOST_BEAST_ASYNC_RESULT2(WriteHandler) BOOST_BEAST_ASYNC_RESULT2(WriteHandler)