summaryrefslogtreecommitdiffstats
path: root/sca-cpp/trunk/modules/http/http.hpp
diff options
context:
space:
mode:
authorjsdelfino <jsdelfino@13f79535-47bb-0310-9956-ffa450edef68>2010-08-22 05:02:11 +0000
committerjsdelfino <jsdelfino@13f79535-47bb-0310-9956-ffa450edef68>2010-08-22 05:02:11 +0000
commit3c98b27f754a3ef97a8b0a02ecfd0ac1aa6e1fe5 (patch)
tree085366a1d1bb269197cf1c1844176ed784eff4be /sca-cpp/trunk/modules/http/http.hpp
parentb70da6b982209e43079708df1da43ae4054f3d80 (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.hpp7
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;
};
}