Код: Выделить всё
#pragma once
#include
#include
#include
#include
#include
class SocketWrapper
{
private:
using SslStream = boost::asio::ssl::stream;
public:
boost::asio::experimental::promise
asyncConnectAndHandshake(const boost::asio::ip::basic_resolver_results& resolver_results)
{
namespace asio = boost::asio;
// pseudo code:
auto promise1 = asio::async_connect(underlyingSocket(), resolver_results, asio::experimental::use_promise);
// This line of code should be executed when promise1 is completed.
if (isSSL()) {
auto promise2 = stream().async_handshake(asio::ssl::stream_base::client, asio::experimental::use_promise);
return promise2;
}
return promise1;
}
private:
bool isSSL() const;
const boost::asio::ip::tcp::socket& underlyingSocket() const;
boost::asio::ip::tcp::socket& underlyingSocket();
const SslStream& stream() const;
SslStream& stream();
};
Следует ли использовать async_compose?>
Подробнее здесь: https://stackoverflow.com/questions/797 ... talpromise
Мобильная версия