diff options
author | jsdelfino <jsdelfino@13f79535-47bb-0310-9956-ffa450edef68> | 2010-08-22 05:02:11 +0000 |
---|---|---|
committer | jsdelfino <jsdelfino@13f79535-47bb-0310-9956-ffa450edef68> | 2010-08-22 05:02:11 +0000 |
commit | 3c98b27f754a3ef97a8b0a02ecfd0ac1aa6e1fe5 (patch) | |
tree | 085366a1d1bb269197cf1c1844176ed784eff4be /sca-cpp/trunk/modules/http/http.hpp | |
parent | b70da6b982209e43079708df1da43ae4054f3d80 (diff) |
Improve performance by reusing HTTP proxy connections across invocations and using local function proxies instead of HTTP proxies for local wires.
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@987845 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'sca-cpp/trunk/modules/http/http.hpp')
-rw-r--r-- | sca-cpp/trunk/modules/http/http.hpp | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/sca-cpp/trunk/modules/http/http.hpp b/sca-cpp/trunk/modules/http/http.hpp index b6de790028..6180518e23 100644 --- a/sca-cpp/trunk/modules/http/http.hpp +++ b/sca-cpp/trunk/modules/http/http.hpp @@ -314,9 +314,9 @@ const failable<value> evalExpr(const value& expr, const string& url, const CURLS // Parse and return JSON-RPC result const failable<value> rval = json::jsonResultValue(cadr<list<string> >(content(res)), cx); + debug(rval, "http::evalExpr::result"); if (!hasContent(rval)) return mkfailure<value>(reason(rval)); - debug(content(rval), "http::evalExpr::result"); return content(rval); } @@ -602,21 +602,22 @@ const failable<int> recv(char* c, const int l, const CURLSession& cs) { * HTTP client proxy function. */ struct proxy { - proxy(const string& uri, const string& ca, const string& cert, const string& key) : uri(uri), ca(ca), cert(cert), key(key) { + proxy(const string& uri, const string& ca, const string& cert, const string& key, const gc_pool& p) : p(p), uri(uri), ca(ca), cert(cert), key(key), cs(*(new (gc_new<CURLSession>(p)) CURLSession(ca, cert, key))) { } const value operator()(const list<value>& args) const { - CURLSession cs(ca, cert, key); failable<value> val = evalExpr(args, uri, cs); if (!hasContent(val)) return value(); return content(val); } + const gc_pool p; const string uri; const string ca; const string cert; const string key; + const CURLSession& cs; }; } |