From c5234545dc88fe00e401696a3bb7d24ae63158a7 Mon Sep 17 00:00:00 2001 From: Arthur Britto Date: Mon, 2 Jul 2012 00:11:20 -0700 Subject: [PATCH] Fix bind shared_ptr for HttpsClient. --- src/HttpsClient.cpp | 12 ++++++------ src/HttpsClient.h | 22 ++++++++++++++++++---- 2 files changed, 24 insertions(+), 10 deletions(-) diff --git a/src/HttpsClient.cpp b/src/HttpsClient.cpp index 26f027870a..987869e099 100644 --- a/src/HttpsClient.cpp +++ b/src/HttpsClient.cpp @@ -67,7 +67,7 @@ void HttpsClient::httpsNext() { mDeadline.async_wait( boost::bind( - &HttpsClient::handleDeadline, + &HttpsClient::ShandleDeadline, shared_from_this(), boost::asio::placeholders::error)); } @@ -78,7 +78,7 @@ void HttpsClient::httpsNext() mResolver.async_resolve(*mQuery, boost::bind( - &HttpsClient::handleResolve, + &HttpsClient::ShandleResolve, shared_from_this(), boost::asio::placeholders::error, boost::asio::placeholders::iterator)); @@ -149,7 +149,7 @@ void HttpsClient::handleResolve( mSocketSsl.lowest_layer(), itrEndpoint, boost::bind( - &HttpsClient::handleConnect, + &HttpsClient::ShandleConnect, shared_from_this(), boost::asio::placeholders::error)); } @@ -183,7 +183,7 @@ void HttpsClient::handleConnect(const boost::system::error_code& ecResult) if (!mShutdown) { mSocketSsl.async_handshake(boost::asio::ssl::stream::client, - boost::bind(&HttpsClient::handleRequest, + boost::bind(&HttpsClient::ShandleRequest, shared_from_this(), boost::asio::placeholders::error)); } @@ -219,7 +219,7 @@ void HttpsClient::handleRequest(const boost::system::error_code& ecResult) boost::asio::async_write( mSocketSsl, mRequest, - boost::bind(&HttpsClient::handleWrite, + boost::bind(&HttpsClient::ShandleWrite, shared_from_this(), boost::asio::placeholders::error)); } @@ -244,7 +244,7 @@ void HttpsClient::handleWrite(const boost::system::error_code& ecResult) mSocketSsl, mResponse, boost::asio::transfer_all(), - boost::bind(&HttpsClient::handleData, + boost::bind(&HttpsClient::ShandleData, shared_from_this(), boost::asio::placeholders::error)); } diff --git a/src/HttpsClient.h b/src/HttpsClient.h index 930ffeaad3..bebe57a3e3 100644 --- a/src/HttpsClient.h +++ b/src/HttpsClient.h @@ -19,6 +19,8 @@ class HttpsClient : public boost::enable_shared_from_this { private: + typedef boost::shared_ptr pointer; + boost::asio::ssl::context mCtx; boost::asio::ip::tcp::resolver mResolver; boost::shared_ptr mQuery; @@ -38,16 +40,28 @@ private: boost::posix_time::time_duration mTimeout; void handleDeadline(const boost::system::error_code& ecResult); + static void ShandleDeadline(pointer This, const boost::system::error_code& ecResult) + { This->handleDeadline(ecResult); } - void handleResolve( - const boost::system::error_code& ecResult, - boost::asio::ip::tcp::resolver::iterator endpoint_iterator - ); + void handleResolve(const boost::system::error_code& ecResult, boost::asio::ip::tcp::resolver::iterator endpoint_iterator); + static void ShandleResolve(pointer This, const boost::system::error_code& ecResult, boost::asio::ip::tcp::resolver::iterator endpoint_iterator) + { This->handleResolve(ecResult, endpoint_iterator); } void handleConnect(const boost::system::error_code& ecResult); + static void ShandleConnect(pointer This, const boost::system::error_code& ecResult) + { This->handleConnect(ecResult); } + void handleRequest(const boost::system::error_code& ecResult); + static void ShandleRequest(pointer This, const boost::system::error_code& ecResult) + { This->handleRequest(ecResult); } + void handleWrite(const boost::system::error_code& ecResult); + static void ShandleWrite(pointer This, const boost::system::error_code& ecResult) + { This->handleWrite(ecResult); } + void handleData(const boost::system::error_code& ecResult); + static void ShandleData(pointer This, const boost::system::error_code& ecResult) + { This->handleData(ecResult); } void parseData(); void httpsNext();