Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Replace BOOST_ASIO_INITFN_RESULT_TYPE with BOOST_ASIO_INITFN_AUTO_RESULT_TYPE #2728

Merged
merged 1 commit into from
Sep 5, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion doc/Jamfile
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ docca.reference reference.qbk
\"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_AUTO_RESULT_TYPE(t,a)=__deduced__\" \\
\"BOOST_ASIO_DEFAULT_COMPLETION_TOKEN(e)= =__deduced__\" \\
\"BOOST_ASIO_COMPLETION_TOKEN_FOR(sig)=class\" \\
GENERATING_DOCUMENTATION \\
Expand Down
12 changes: 4 additions & 8 deletions include/boost/beast/_experimental/test/impl/stream.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -31,11 +31,6 @@ template<class Executor>
template<class Handler, class Buffers>
class basic_stream<Executor>::read_op : public detail::stream_read_op_base
{
using ex1_type =
executor_type;
using ex2_type
= net::associated_executor_t<Handler, ex1_type>;

struct lambda
{
Handler h_;
Expand All @@ -44,7 +39,8 @@ class basic_stream<Executor>::read_op : public detail::stream_read_op_base
#if defined(BOOST_ASIO_NO_TS_EXECUTORS)
net::any_io_executor wg2_;
#else // defined(BOOST_ASIO_NO_TS_EXECUTORS)
net::executor_work_guard<ex2_type> wg2_;
net::executor_work_guard<
net::associated_executor_t<Handler, net::any_io_executor>> wg2_;
klemens-morgenstern marked this conversation as resolved.
Show resolved Hide resolved
#endif // defined(BOOST_ASIO_NO_TS_EXECUTORS)

lambda(lambda&&) = default;
Expand Down Expand Up @@ -330,7 +326,7 @@ read_some(MutableBufferSequence const& buffers,
template<class Executor>
template<class MutableBufferSequence,
BOOST_ASIO_COMPLETION_TOKEN_FOR(void(error_code, std::size_t)) ReadHandler>
BOOST_ASIO_INITFN_RESULT_TYPE(ReadHandler, void(error_code, std::size_t))
BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler, void(error_code, std::size_t))
basic_stream<Executor>::
async_read_some(
MutableBufferSequence const& buffers,
Expand Down Expand Up @@ -414,7 +410,7 @@ write_some(
template<class Executor>
template<class ConstBufferSequence,
BOOST_ASIO_COMPLETION_TOKEN_FOR(void(error_code, std::size_t)) WriteHandler>
BOOST_ASIO_INITFN_RESULT_TYPE(WriteHandler, void(error_code, std::size_t))
BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(WriteHandler, void(error_code, std::size_t))
basic_stream<Executor>::
async_write_some(
ConstBufferSequence const& buffers,
Expand Down
4 changes: 2 additions & 2 deletions include/boost/beast/_experimental/test/stream.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -468,7 +468,7 @@ class basic_stream
class MutableBufferSequence,
BOOST_ASIO_COMPLETION_TOKEN_FOR(void(error_code, std::size_t)) ReadHandler
BOOST_ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(executor_type)>
BOOST_ASIO_INITFN_RESULT_TYPE(ReadHandler, void(error_code, std::size_t))
BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler, void(error_code, std::size_t))
async_read_some(
MutableBufferSequence const& buffers,
ReadHandler&& handler BOOST_ASIO_DEFAULT_COMPLETION_TOKEN(executor_type));
Expand Down Expand Up @@ -547,7 +547,7 @@ class basic_stream
class ConstBufferSequence,
BOOST_ASIO_COMPLETION_TOKEN_FOR(void(error_code, std::size_t)) WriteHandler
BOOST_ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(executor_type)>
BOOST_ASIO_INITFN_RESULT_TYPE(WriteHandler, void(error_code, std::size_t))
BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(WriteHandler, void(error_code, std::size_t))
async_write_some(
ConstBufferSequence const& buffers,
WriteHandler&& handler BOOST_ASIO_DEFAULT_COMPLETION_TOKEN(executor_type)
Expand Down
8 changes: 4 additions & 4 deletions include/boost/beast/core/basic_stream.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -1022,7 +1022,7 @@ class basic_stream
EndpointSequence>::value>::type
#endif
>
BOOST_ASIO_INITFN_RESULT_TYPE(
BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(
RangeConnectHandler,
void(error_code, typename Protocol::endpoint))
async_connect(
Expand Down Expand Up @@ -1126,7 +1126,7 @@ class basic_stream
EndpointSequence>::value>::type
#endif
>
BOOST_ASIO_INITFN_RESULT_TYPE(
BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(
RangeConnectHandler,
void(error_code, typename Protocol::endpoint))
async_connect(
Expand Down Expand Up @@ -1195,7 +1195,7 @@ class basic_stream
void(error_code, Iterator))
IteratorConnectHandler =
net::default_completion_token_t<executor_type>>
BOOST_ASIO_INITFN_RESULT_TYPE(
BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(
IteratorConnectHandler,
void(error_code, Iterator))
async_connect(
Expand Down Expand Up @@ -1267,7 +1267,7 @@ class basic_stream
void(error_code, Iterator))
IteratorConnectHandler =
net::default_completion_token_t<executor_type>>
BOOST_ASIO_INITFN_RESULT_TYPE(
BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(
IteratorConnectHandler,
void(error_code, Iterator))
async_connect(
Expand Down
20 changes: 3 additions & 17 deletions include/boost/beast/core/detect_ssl.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -319,19 +319,12 @@ template<
class CompletionToken =
net::default_completion_token_t<beast::executor_type<AsyncReadStream>>
>
#if BOOST_BEAST_DOXYGEN
BOOST_ASIO_INITFN_RESULT_TYPE(CompletionToken, void(error_code, bool))
#else
auto
#endif
BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(CompletionToken, void(error_code, bool))
async_detect_ssl(
AsyncReadStream& stream,
DynamicBuffer& buffer,
CompletionToken&& token = net::default_completion_token_t<
beast::executor_type<AsyncReadStream>>{}) ->
typename net::async_result<
typename std::decay<CompletionToken>::type, /*< `async_result` customizes the return value based on the completion token >*/
void(error_code, bool)>::return_type; /*< This is the signature for the completion handler >*/
beast::executor_type<AsyncReadStream>>{});
//]

//[example_core_detect_ssl_5
Expand Down Expand Up @@ -395,18 +388,11 @@ template<
class AsyncReadStream,
class DynamicBuffer,
class CompletionToken>
#if BOOST_BEAST_DOXYGEN
BOOST_ASIO_INITFN_RESULT_TYPE(CompletionToken, void(error_code, bool))
#else
auto
#endif
BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(CompletionToken, void(error_code, bool))
async_detect_ssl(
AsyncReadStream& stream,
DynamicBuffer& buffer,
CompletionToken&& token)
-> typename net::async_result<
typename std::decay<CompletionToken>::type,
void(error_code, bool)>::return_type
{
// Make sure arguments meet the type requirements

Expand Down
8 changes: 4 additions & 4 deletions include/boost/beast/core/impl/basic_stream.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -893,7 +893,7 @@ template<
class EndpointSequence,
BOOST_ASIO_COMPLETION_TOKEN_FOR(void(error_code, typename Protocol::endpoint)) RangeConnectHandler,
class>
BOOST_ASIO_INITFN_RESULT_TYPE(RangeConnectHandler,void(error_code, typename Protocol::endpoint))
BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(RangeConnectHandler,void(error_code, typename Protocol::endpoint))
basic_stream<Protocol, Executor, RatePolicy>::
async_connect(
EndpointSequence const& endpoints,
Expand All @@ -915,7 +915,7 @@ template<
class ConnectCondition,
BOOST_ASIO_COMPLETION_TOKEN_FOR(void(error_code, typename Protocol::endpoint)) RangeConnectHandler,
class>
BOOST_ASIO_INITFN_RESULT_TYPE(RangeConnectHandler,void (error_code, typename Protocol::endpoint))
BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(RangeConnectHandler,void (error_code, typename Protocol::endpoint))
basic_stream<Protocol, Executor, RatePolicy>::
async_connect(
EndpointSequence const& endpoints,
Expand All @@ -936,7 +936,7 @@ template<class Protocol, class Executor, class RatePolicy>
template<
class Iterator,
BOOST_ASIO_COMPLETION_TOKEN_FOR(void(error_code, Iterator)) IteratorConnectHandler>
BOOST_ASIO_INITFN_RESULT_TYPE(IteratorConnectHandler,void (error_code, Iterator))
BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(IteratorConnectHandler,void (error_code, Iterator))
basic_stream<Protocol, Executor, RatePolicy>::
async_connect(
Iterator begin, Iterator end,
Expand All @@ -957,7 +957,7 @@ template<
class Iterator,
class ConnectCondition,
BOOST_ASIO_COMPLETION_TOKEN_FOR(void(error_code, Iterator)) IteratorConnectHandler>
BOOST_ASIO_INITFN_RESULT_TYPE(IteratorConnectHandler,void (error_code, Iterator))
BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(IteratorConnectHandler,void (error_code, Iterator))
basic_stream<Protocol, Executor, RatePolicy>::
async_connect(
Iterator begin, Iterator end,
Expand Down
10 changes: 5 additions & 5 deletions include/boost/beast/ssl/ssl_stream.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -412,7 +412,7 @@ class ssl_stream
); @endcode
*/
template<BOOST_BEAST_ASYNC_TPARAM1 HandshakeHandler = net::default_completion_token_t<executor_type>>
BOOST_ASIO_INITFN_RESULT_TYPE(HandshakeHandler, void(boost::system::error_code))
BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(HandshakeHandler, void(boost::system::error_code))
async_handshake(handshake_type type,
BOOST_ASIO_MOVE_ARG(HandshakeHandler) handler = net::default_completion_token_t<executor_type>{})
{
Expand Down Expand Up @@ -443,7 +443,7 @@ class ssl_stream
*/
template<class ConstBufferSequence,
BOOST_BEAST_ASYNC_TPARAM2 BufferedHandshakeHandler = net::default_completion_token_t<executor_type>>
BOOST_ASIO_INITFN_RESULT_TYPE(BufferedHandshakeHandler, void(boost::system::error_code, std::size_t))
BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(BufferedHandshakeHandler, void(boost::system::error_code, std::size_t))
async_handshake(handshake_type type, ConstBufferSequence const& buffers,
BOOST_ASIO_MOVE_ARG(BufferedHandshakeHandler) handler
= net::default_completion_token_t<executor_type>{})
Expand Down Expand Up @@ -491,7 +491,7 @@ class ssl_stream
); @endcode
*/
template<BOOST_BEAST_ASYNC_TPARAM1 ShutdownHandler = net::default_completion_token_t<executor_type>>
BOOST_ASIO_INITFN_RESULT_TYPE(ShutdownHandler, void(boost::system::error_code))
BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(ShutdownHandler, void(boost::system::error_code))
async_shutdown(BOOST_ASIO_MOVE_ARG(ShutdownHandler) handler = net::default_completion_token_t<executor_type>{})
{
return p_->next_layer().async_shutdown(
Expand Down Expand Up @@ -570,7 +570,7 @@ class ssl_stream
*/
template<class ConstBufferSequence,
BOOST_BEAST_ASYNC_TPARAM2 WriteHandler = net::default_completion_token_t<executor_type>>
BOOST_ASIO_INITFN_RESULT_TYPE(WriteHandler, void(boost::system::error_code, std::size_t))
BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(WriteHandler, void(boost::system::error_code, std::size_t))
async_write_some(ConstBufferSequence const& buffers,
BOOST_ASIO_MOVE_ARG(WriteHandler) handler= net::default_completion_token_t<executor_type>{})
{
Expand Down Expand Up @@ -652,7 +652,7 @@ class ssl_stream
*/
template<class MutableBufferSequence,
BOOST_BEAST_ASYNC_TPARAM2 ReadHandler = net::default_completion_token_t<executor_type>>
BOOST_ASIO_INITFN_RESULT_TYPE(ReadHandler, void(boost::system::error_code, std::size_t))
BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler, void(boost::system::error_code, std::size_t))
async_read_some(MutableBufferSequence const& buffers,
BOOST_ASIO_MOVE_ARG(ReadHandler) handler
= net::default_completion_token_t<executor_type>{})
Expand Down
2 changes: 1 addition & 1 deletion test/beast/core/basic_stream.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1298,7 +1298,7 @@ class basic_stream_test
resolve_results.begin()->endpoint(),
net::use_awaitable))>);

auto comparison_function = [](error_code&, net::ip::tcp::endpoint) { return true; };
auto comparison_function = [](error_code const&, net::ip::tcp::endpoint) { return true; };

static_assert(std::is_same_v<
net::awaitable<net::ip::tcp::resolver::results_type::const_iterator>, decltype(
Expand Down
1 change: 1 addition & 0 deletions test/beast/http/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ add_executable (tests-beast-http
basic_parser.cpp
buffer_body.cpp
chunk_encode.cpp
deferred.cpp
dynamic_body.cpp
empty_body.cpp
error.cpp
Expand Down
1 change: 1 addition & 0 deletions test/beast/http/Jamfile
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ local SOURCES =
basic_parser.cpp
buffer_body.cpp
chunk_encode.cpp
deferred.cpp
dynamic_body.cpp
error.cpp
field.cpp
Expand Down
36 changes: 36 additions & 0 deletions test/beast/http/deferred.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
//
// Copyright (c) 2023 Mohammad Nejati
//
// 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)
//

#include <boost/asio/deferred.hpp>
#include <boost/asio/ip/tcp.hpp>
#include <boost/beast/http.hpp>

using namespace boost;
namespace http = boost::beast::http;

#if !defined(BOOST_NO_CXX14)

// just compile this.
void test_deferred_for_http(
asio::ip::tcp::socket & stream,
beast::flat_static_buffer_base & buf,
http::basic_parser<true> & parser,
http::serializer<true, http::empty_body> & ser,
http::message<false, http::empty_body> & msg)
{
http::async_read(stream, buf, parser, asio::deferred);
http::async_read(stream, buf, msg, asio::deferred);
http::async_read_some(stream, buf, parser, asio::deferred);
http::async_read_header(stream, buf, parser, asio::deferred);

http::async_write(stream, ser, asio::deferred);
http::async_write(stream, msg, asio::deferred);
http::async_write_header(stream, ser, asio::deferred);
http::async_write_some(stream, ser, asio::deferred);
}

#endif
1 change: 1 addition & 0 deletions test/beast/websocket/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ add_executable (tests-beast-websocket
accept.cpp
cancel.cpp
close.cpp
deferred.cpp
error.cpp
frame.cpp
handshake.cpp
Expand Down
1 change: 1 addition & 0 deletions test/beast/websocket/Jamfile
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ local SOURCES =
accept.cpp
cancel.cpp
close.cpp
deferred.cpp
error.cpp
frame.cpp
handshake.cpp
Expand Down
43 changes: 43 additions & 0 deletions test/beast/websocket/deferred.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
//
// Copyright (c) 2023 Mohammad Nejati
//
// 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)
//

#include <boost/asio/deferred.hpp>
#include <boost/asio/ip/tcp.hpp>
#include <boost/beast/websocket.hpp>

using namespace boost;
namespace websocket = boost::beast::websocket;

#if !defined(BOOST_NO_CXX14)

// just compile this.
void test_deferred_for_websocket(
websocket::stream<asio::ip::tcp::socket> & stream,
beast::flat_static_buffer_base & buf,
beast::http::request<beast::http::empty_body> & req,
websocket::response_type & res)
{
stream.async_accept(asio::deferred);
stream.async_accept(asio::const_buffer(), asio::deferred);
stream.async_accept(req, asio::deferred);
stream.async_close(websocket::close_code::bad_payload, asio::deferred);

stream.async_handshake("", "/", asio::deferred);
stream.async_handshake(res, "", "/", asio::deferred);

stream.async_ping(websocket::ping_data{}, asio::deferred);
stream.async_pong(websocket::ping_data{}, asio::deferred);

stream.async_read(buf, asio::deferred);
stream.async_read_some(buf.data(), asio::deferred);

stream.async_write(buf.cdata(), asio::deferred);
stream.async_write_some(true, buf.cdata(), asio::deferred);

}

#endif