asio: Pass connected address to connect_cb
This commit is contained in:
parent
70ea774f23
commit
76eab3faa0
|
@ -69,8 +69,8 @@ int main(int argc, char *argv[]) {
|
|||
configure_tls_context(tls_ctx);
|
||||
|
||||
session sess(io_service, tls_ctx, "localhost", "3000");
|
||||
sess.on_connect([&sess]() {
|
||||
std::cerr << "connected" << std::endl;
|
||||
sess.on_connect([&sess](tcp::resolver::iterator endpoint_it) {
|
||||
std::cerr << "connected to " << (*endpoint_it).endpoint() << std::endl;
|
||||
boost::system::error_code ec;
|
||||
auto req = sess.submit(ec, "GET", "https://localhost:3000/",
|
||||
"hello world", {{"cookie", {"foobar", true}}});
|
||||
|
|
|
@ -49,7 +49,7 @@ session::session(boost::asio::io_service &io_service,
|
|||
|
||||
session::~session() {}
|
||||
|
||||
void session::on_connect(void_cb cb) { impl_->on_connect(std::move(cb)); }
|
||||
void session::on_connect(connect_cb cb) { impl_->on_connect(std::move(cb)); }
|
||||
|
||||
void session::on_error(error_cb cb) { impl_->on_error(std::move(cb)); }
|
||||
|
||||
|
|
|
@ -68,7 +68,7 @@ void session_impl::start_resolve(const std::string &host,
|
|||
});
|
||||
}
|
||||
|
||||
void session_impl::connected() {
|
||||
void session_impl::connected(tcp::resolver::iterator endpoint_it) {
|
||||
if (!setup_session()) {
|
||||
return;
|
||||
}
|
||||
|
@ -84,7 +84,7 @@ void session_impl::connected() {
|
|||
|
||||
auto &connect_cb = on_connect();
|
||||
if (connect_cb) {
|
||||
connect_cb();
|
||||
connect_cb(endpoint_it);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -95,11 +95,11 @@ void session_impl::not_connected(const boost::system::error_code &ec) {
|
|||
}
|
||||
}
|
||||
|
||||
void session_impl::on_connect(void_cb cb) { connect_cb_ = std::move(cb); }
|
||||
void session_impl::on_connect(connect_cb cb) { connect_cb_ = std::move(cb); }
|
||||
|
||||
void session_impl::on_error(error_cb cb) { error_cb_ = std::move(cb); }
|
||||
|
||||
const void_cb &session_impl::on_connect() const { return connect_cb_; }
|
||||
const connect_cb &session_impl::on_connect() const { return connect_cb_; }
|
||||
|
||||
const error_cb &session_impl::on_error() const { return error_cb_; }
|
||||
|
||||
|
|
|
@ -50,13 +50,13 @@ public:
|
|||
|
||||
void start_resolve(const std::string &host, const std::string &service);
|
||||
|
||||
void connected();
|
||||
void connected(tcp::resolver::iterator endpoint_it);
|
||||
void not_connected(const boost::system::error_code &ec);
|
||||
|
||||
void on_connect(void_cb cb);
|
||||
void on_connect(connect_cb cb);
|
||||
void on_error(error_cb cb);
|
||||
|
||||
const void_cb &on_connect() const;
|
||||
const connect_cb &on_connect() const;
|
||||
const error_cb &on_error() const;
|
||||
|
||||
void cancel(stream &strm);
|
||||
|
@ -104,7 +104,7 @@ private:
|
|||
|
||||
std::map<int32_t, std::unique_ptr<stream>> streams_;
|
||||
|
||||
void_cb connect_cb_;
|
||||
connect_cb connect_cb_;
|
||||
error_cb error_cb_;
|
||||
|
||||
nghttp2_session *session_;
|
||||
|
|
|
@ -46,7 +46,7 @@ void session_tcp_impl::start_connect(tcp::resolver::iterator endpoint_it) {
|
|||
return;
|
||||
}
|
||||
|
||||
connected();
|
||||
connected(endpoint_it);
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
@ -52,13 +52,14 @@ void session_tls_impl::start_connect(tcp::resolver::iterator endpoint_it) {
|
|||
return;
|
||||
}
|
||||
|
||||
socket_.async_handshake(boost::asio::ssl::stream_base::client,
|
||||
[this](const boost::system::error_code &ec) {
|
||||
socket_.async_handshake(
|
||||
boost::asio::ssl::stream_base::client,
|
||||
[this, endpoint_it](const boost::system::error_code &ec) {
|
||||
if (ec) {
|
||||
not_connected(ec);
|
||||
return;
|
||||
}
|
||||
connected();
|
||||
connected(endpoint_it);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
|
|
@ -314,6 +314,8 @@ class request;
|
|||
|
||||
using response_cb = std::function<void(const response &)>;
|
||||
using request_cb = std::function<void(const request &)>;
|
||||
using connect_cb =
|
||||
std::function<void(boost::asio::ip::tcp::resolver::iterator)>;
|
||||
|
||||
class request_impl;
|
||||
|
||||
|
@ -351,7 +353,7 @@ public:
|
|||
const std::string &service);
|
||||
~session();
|
||||
|
||||
void on_connect(void_cb cb);
|
||||
void on_connect(connect_cb cb);
|
||||
void on_error(error_cb cb);
|
||||
|
||||
void shutdown();
|
||||
|
|
Loading…
Reference in New Issue