Take advantage of perfect forwarding in a few more places.

This commit is contained in:
JoelKatz
2013-03-18 03:10:54 -07:00
parent 125c5273a6
commit 7a6a199df4
6 changed files with 32 additions and 31 deletions

View File

@@ -785,7 +785,7 @@ int commandLineRPC(const std::vector<std::string>& vCmd)
: vCmd[0], : vCmd[0],
jvParams, // Parsed, execute. jvParams, // Parsed, execute.
false, false,
boost::bind(callRPCHandler, &jvOutput, _1)); BIND_TYPE(callRPCHandler, &jvOutput, P_1));
isService.run(); // This blocks until there is no more outstanding async calls. isService.run(); // This blocks until there is no more outstanding async calls.
@@ -848,7 +848,7 @@ int commandLineRPC(const std::vector<std::string>& vCmd)
#define RPC_NOTIFY_SECONDS 10 #define RPC_NOTIFY_SECONDS 10
bool responseRPC( bool responseRPC(
boost::function<void(const Json::Value& jvInput)> callbackFuncP, FUNCTION_TYPE<void(const Json::Value& jvInput)> callbackFuncP,
const boost::system::error_code& ecResult, int iStatus, const std::string& strData) const boost::system::error_code& ecResult, int iStatus, const std::string& strData)
{ {
if (callbackFuncP) if (callbackFuncP)
@@ -886,7 +886,9 @@ bool responseRPC(
} }
// Build the request. // Build the request.
void requestRPC(const std::string& strMethod, const Json::Value& jvParams, const std::map<std::string, std::string>& mHeaders, const std::string& strPath, boost::asio::streambuf& sb, const std::string& strHost) void requestRPC(const std::string& strMethod, const Json::Value& jvParams,
const std::map<std::string, std::string>& mHeaders, const std::string& strPath,
boost::asio::streambuf& sb, const std::string& strHost)
{ {
cLog(lsDEBUG) << "requestRPC: strPath='" << strPath << "'"; cLog(lsDEBUG) << "requestRPC: strPath='" << strPath << "'";
@@ -906,7 +908,7 @@ void callRPC(
const std::string& strUsername, const std::string& strPassword, const std::string& strUsername, const std::string& strPassword,
const std::string& strPath, const std::string& strMethod, const std::string& strPath, const std::string& strMethod,
const Json::Value& jvParams, const bool bSSL, const Json::Value& jvParams, const bool bSSL,
boost::function<void(const Json::Value& jvInput)> callbackFuncP) FUNCTION_TYPE<void(const Json::Value& jvInput)> callbackFuncP)
{ {
// Connect to localhost // Connect to localhost
if (!theConfig.QUIET) if (!theConfig.QUIET)
@@ -933,15 +935,15 @@ void callRPC(
io_service, io_service,
strIp, strIp,
iPort, iPort,
boost::bind( BIND_TYPE(
&requestRPC, &requestRPC,
strMethod, strMethod,
jvParams, jvParams,
mapRequestHeaders, mapRequestHeaders,
strPath, _1, _2), strPath, P_1, P_2),
RPC_REPLY_MAX_BYTES, RPC_REPLY_MAX_BYTES,
boost::posix_time::seconds(RPC_NOTIFY_SECONDS), boost::posix_time::seconds(RPC_NOTIFY_SECONDS),
boost::bind(&responseRPC, callbackFuncP, _1, _2, _3)); BIND_TYPE(&responseRPC, callbackFuncP, P_1, P_2, P_3));
} }
// vim:ts=4 // vim:ts=4

View File

@@ -56,7 +56,7 @@ extern void callRPC(
const std::string& strUsername, const std::string& strPassword, const std::string& strUsername, const std::string& strPassword,
const std::string& strPath, const std::string& strMethod, const std::string& strPath, const std::string& strMethod,
const Json::Value& jvParams, const bool bSSL, const Json::Value& jvParams, const bool bSSL,
boost::function<void(const Json::Value& jvInput)> callbackFuncP = 0); FUNCTION_TYPE<void(const Json::Value& jvInput)> callbackFuncP = 0);
#endif #endif
// vim:ts=4 // vim:ts=4

View File

@@ -6,7 +6,6 @@
#include "utils.h" #include "utils.h"
#include <iostream> #include <iostream>
#include <boost/bind.hpp>
#include <boost/date_time/posix_time/posix_time.hpp> #include <boost/date_time/posix_time/posix_time.hpp>
#include <boost/regex.hpp> #include <boost/regex.hpp>
#include <boost/smart_ptr/shared_ptr.hpp> #include <boost/smart_ptr/shared_ptr.hpp>
@@ -52,9 +51,9 @@ void HttpsClient::makeGet(const std::string& strPath, boost::asio::streambuf& sb
void HttpsClient::httpsRequest( void HttpsClient::httpsRequest(
bool bSSL, bool bSSL,
std::deque<std::string> deqSites, std::deque<std::string> deqSites,
boost::function<void(boost::asio::streambuf& sb, const std::string& strHost)> build, FUNCTION_TYPE<void(boost::asio::streambuf& sb, const std::string& strHost)> build,
boost::posix_time::time_duration timeout, boost::posix_time::time_duration timeout,
boost::function<bool(const boost::system::error_code& ecResult, int iStatus, const std::string& strData)> complete) FUNCTION_TYPE<bool(const boost::system::error_code& ecResult, int iStatus, const std::string& strData)> complete)
{ {
mSSL = bSSL; mSSL = bSSL;
mDeqSites = deqSites; mDeqSites = deqSites;
@@ -70,7 +69,7 @@ void HttpsClient::httpsGet(
std::deque<std::string> deqSites, std::deque<std::string> deqSites,
const std::string& strPath, const std::string& strPath,
boost::posix_time::time_duration timeout, boost::posix_time::time_duration timeout,
boost::function<bool(const boost::system::error_code& ecResult, int iStatus, const std::string& strData)> complete) { FUNCTION_TYPE<bool(const boost::system::error_code& ecResult, int iStatus, const std::string& strData)> complete) {
mComplete = complete; mComplete = complete;
mTimeout = timeout; mTimeout = timeout;
@@ -78,7 +77,7 @@ void HttpsClient::httpsGet(
httpsRequest( httpsRequest(
bSSL, bSSL,
deqSites, deqSites,
boost::bind(&HttpsClient::makeGet, shared_from_this(), strPath, _1, _2), BIND_TYPE(&HttpsClient::makeGet, shared_from_this(), strPath, P_1, P_2),
timeout, timeout,
complete); complete);
} }
@@ -403,7 +402,7 @@ void HttpsClient::httpsGet(
const std::string& strPath, const std::string& strPath,
std::size_t responseMax, std::size_t responseMax,
boost::posix_time::time_duration timeout, boost::posix_time::time_duration timeout,
boost::function<bool(const boost::system::error_code& ecResult, int iStatus, const std::string& strData)> complete) { FUNCTION_TYPE<bool(const boost::system::error_code& ecResult, int iStatus, const std::string& strData)> complete) {
boost::shared_ptr<HttpsClient> client(new HttpsClient(io_service, port, responseMax)); boost::shared_ptr<HttpsClient> client(new HttpsClient(io_service, port, responseMax));
@@ -418,7 +417,7 @@ void HttpsClient::httpsGet(
const std::string& strPath, const std::string& strPath,
std::size_t responseMax, std::size_t responseMax,
boost::posix_time::time_duration timeout, boost::posix_time::time_duration timeout,
boost::function<bool(const boost::system::error_code& ecResult, int iStatus, const std::string& strData)> complete) { FUNCTION_TYPE<bool(const boost::system::error_code& ecResult, int iStatus, const std::string& strData)> complete) {
std::deque<std::string> deqSites(1, strSite); std::deque<std::string> deqSites(1, strSite);
@@ -432,10 +431,10 @@ void HttpsClient::httpsRequest(
boost::asio::io_service& io_service, boost::asio::io_service& io_service,
std::string strSite, std::string strSite,
const unsigned short port, const unsigned short port,
boost::function<void(boost::asio::streambuf& sb, const std::string& strHost)> setRequest, FUNCTION_TYPE<void(boost::asio::streambuf& sb, const std::string& strHost)> setRequest,
std::size_t responseMax, std::size_t responseMax,
boost::posix_time::time_duration timeout, boost::posix_time::time_duration timeout,
boost::function<bool(const boost::system::error_code& ecResult, int iStatus, const std::string& strData)> complete) { FUNCTION_TYPE<bool(const boost::system::error_code& ecResult, int iStatus, const std::string& strData)> complete) {
std::deque<std::string> deqSites(1, strSite); std::deque<std::string> deqSites(1, strSite);

View File

@@ -8,10 +8,10 @@
#include <boost/asio/ssl.hpp> #include <boost/asio/ssl.hpp>
#include <boost/date_time/posix_time/posix_time_types.hpp> #include <boost/date_time/posix_time/posix_time_types.hpp>
#include <boost/enable_shared_from_this.hpp> #include <boost/enable_shared_from_this.hpp>
#include <boost/function.hpp>
#include <boost/shared_ptr.hpp> #include <boost/shared_ptr.hpp>
#include "AutoSocket.h" #include "AutoSocket.h"
#include "utils.h"
// //
// Async https client. // Async https client.
@@ -33,8 +33,8 @@ private:
const unsigned short mPort; const unsigned short mPort;
int mResponseMax; int mResponseMax;
int mStatus; int mStatus;
boost::function<void(boost::asio::streambuf& sb, const std::string& strHost)> mBuild; FUNCTION_TYPE<void(boost::asio::streambuf& sb, const std::string& strHost)> mBuild;
boost::function<bool(const boost::system::error_code& ecResult, int iStatus, const std::string& strData)> mComplete; FUNCTION_TYPE<bool(const boost::system::error_code& ecResult, int iStatus, const std::string& strData)> mComplete;
boost::asio::deadline_timer mDeadline; boost::asio::deadline_timer mDeadline;
@@ -76,16 +76,16 @@ public:
void httpsRequest( void httpsRequest(
bool bSSL, bool bSSL,
std::deque<std::string> deqSites, std::deque<std::string> deqSites,
boost::function<void(boost::asio::streambuf& sb, const std::string& strHost)> build, FUNCTION_TYPE<void(boost::asio::streambuf& sb, const std::string& strHost)> build,
boost::posix_time::time_duration timeout, boost::posix_time::time_duration timeout,
boost::function<bool(const boost::system::error_code& ecResult, int iStatus, const std::string& strData)> complete); FUNCTION_TYPE<bool(const boost::system::error_code& ecResult, int iStatus, const std::string& strData)> complete);
void httpsGet( void httpsGet(
bool bSSL, bool bSSL,
std::deque<std::string> deqSites, std::deque<std::string> deqSites,
const std::string& strPath, const std::string& strPath,
boost::posix_time::time_duration timeout, boost::posix_time::time_duration timeout,
boost::function<bool(const boost::system::error_code& ecResult, int iStatus, const std::string& strData)> complete); FUNCTION_TYPE<bool(const boost::system::error_code& ecResult, int iStatus, const std::string& strData)> complete);
static void httpsGet( static void httpsGet(
bool bSSL, bool bSSL,
@@ -95,7 +95,7 @@ public:
const std::string& strPath, const std::string& strPath,
std::size_t responseMax, std::size_t responseMax,
boost::posix_time::time_duration timeout, boost::posix_time::time_duration timeout,
boost::function<bool(const boost::system::error_code& ecResult, int iStatus, const std::string& strData)> complete); FUNCTION_TYPE<bool(const boost::system::error_code& ecResult, int iStatus, const std::string& strData)> complete);
static void httpsGet( static void httpsGet(
bool bSSL, bool bSSL,
@@ -105,17 +105,17 @@ public:
const std::string& strPath, const std::string& strPath,
std::size_t responseMax, std::size_t responseMax,
boost::posix_time::time_duration timeout, boost::posix_time::time_duration timeout,
boost::function<bool(const boost::system::error_code& ecResult, int iStatus, const std::string& strData)> complete); FUNCTION_TYPE<bool(const boost::system::error_code& ecResult, int iStatus, const std::string& strData)> complete);
static void httpsRequest( static void httpsRequest(
bool bSSL, bool bSSL,
boost::asio::io_service& io_service, boost::asio::io_service& io_service,
std::string strSite, std::string strSite,
const unsigned short port, const unsigned short port,
boost::function<void(boost::asio::streambuf& sb, const std::string& strHost)> build, FUNCTION_TYPE<void(boost::asio::streambuf& sb, const std::string& strHost)> build,
std::size_t responseMax, std::size_t responseMax,
boost::posix_time::time_duration timeout, boost::posix_time::time_duration timeout,
boost::function<bool(const boost::system::error_code& ecResult, int iStatus, const std::string& strData)> complete); FUNCTION_TYPE<bool(const boost::system::error_code& ecResult, int iStatus, const std::string& strData)> complete);
}; };
#endif #endif
// vim:ts=4 // vim:ts=4

View File

@@ -185,7 +185,7 @@ public:
// //
// Transaction operations // Transaction operations
// //
typedef boost::function<void (Transaction::pointer, TER)> stCallback; // must complete immediately typedef FUNCTION_TYPE<void (Transaction::pointer, TER)> stCallback; // must complete immediately
void submitTransaction(Job&, SerializedTransaction::pointer, stCallback callback = stCallback()); void submitTransaction(Job&, SerializedTransaction::pointer, stCallback callback = stCallback());
Transaction::pointer submitTransactionSync(Transaction::ref tpTrans, bool bSubmit=true); Transaction::pointer submitTransactionSync(Transaction::ref tpTrans, bool bSubmit=true);

View File

@@ -885,7 +885,7 @@ void UniqueNodeList::getValidatorsUrl(const RippleAddress& naNodePublic, section
strPath, strPath,
NODE_FILE_BYTES_MAX, NODE_FILE_BYTES_MAX,
boost::posix_time::seconds(NODE_FETCH_SECONDS), boost::posix_time::seconds(NODE_FETCH_SECONDS),
boost::bind(&UniqueNodeList::responseValidators, this, strValidatorsUrl, naNodePublic, secSite, strDomain, _1, _2, _3)); BIND_TYPE(&UniqueNodeList::responseValidators, this, strValidatorsUrl, naNodePublic, secSite, strDomain, P_1, P_2, P_3));
} }
else else
{ {
@@ -1063,7 +1063,7 @@ void UniqueNodeList::fetchProcess(std::string strDomain)
NODE_FILE_PATH, NODE_FILE_PATH,
NODE_FILE_BYTES_MAX, NODE_FILE_BYTES_MAX,
boost::posix_time::seconds(NODE_FETCH_SECONDS), boost::posix_time::seconds(NODE_FETCH_SECONDS),
boost::bind(&UniqueNodeList::responseFetch, this, strDomain, _1, _2, _3)); BIND_TYPE(&UniqueNodeList::responseFetch, this, strDomain, P_1, P_2, P_3));
} }
void UniqueNodeList::fetchTimerHandler(const boost::system::error_code& err) void UniqueNodeList::fetchTimerHandler(const boost::system::error_code& err)
@@ -1610,7 +1610,7 @@ void UniqueNodeList::nodeNetwork()
theConfig.VALIDATORS_URI, theConfig.VALIDATORS_URI,
VALIDATORS_FILE_BYTES_MAX, VALIDATORS_FILE_BYTES_MAX,
boost::posix_time::seconds(VALIDATORS_FETCH_SECONDS), boost::posix_time::seconds(VALIDATORS_FETCH_SECONDS),
boost::bind(&UniqueNodeList::validatorsResponse, this, _1, _2, _3)); BIND_TYPE(&UniqueNodeList::validatorsResponse, this, P_1, P_2, P_3));
} }
} }