Async operations don't have a "result" until the handler has been scheduled for execution. The result of the operation is sent to the handler. Therefore, returning a size_t would be meaningless for the async versions of the operations since the number of bytes sent or received is not known when the call returns. The non-async versions block until there is a result, so they are able to return it directly. On Thu, 14 Jun 2018 at 15:49, Álvaro Cebrián Juan via Boost-users < boost-users@lists.boost.org> wrote:
From the documentation I can see that socket::receive() https://www.boost.org/doc/libs/1_58_0/doc/html/boost_asio/reference/basic_da... returns a variable of type "std::size_t", while the asynchronous version socket::async_receive() https://www.boost.org/doc/libs/1_58_0/doc/html/boost_asio/reference/basic_da... returns "void". This is also true for socket::send() https://www.boost.org/doc/libs/1_58_0/doc/html/boost_asio/reference/basic_da... and socket::async_send() https://www.boost.org/doc/libs/1_58_0/doc/html/boost_asio/reference/basic_da... . I was expecting that they would have the same return types, so there might be a good reason behind.
I would be grateful if someone can shed some light on this.
Thank you.
Álvaro _______________________________________________ Boost-users mailing list Boost-users@lists.boost.org https://lists.boost.org/mailman/listinfo.cgi/boost-users