From 36adc76235fb0a38e7042bc751f988b71627e2a0 Mon Sep 17 00:00:00 2001 From: jsdelfino Date: Tue, 11 Dec 2012 06:13:02 +0000 Subject: Changes to get successful C++11 based build. Code cleanup, dependency upgrades, and const + inline optimizations in components, samples, and app hosting server. git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@1420007 13f79535-47bb-0310-9956-ffa450edef68 --- sca-cpp/trunk/components/http/httppost.cpp | 61 ++++++++++-------------------- 1 file changed, 20 insertions(+), 41 deletions(-) (limited to 'sca-cpp/trunk/components/http/httppost.cpp') diff --git a/sca-cpp/trunk/components/http/httppost.cpp b/sca-cpp/trunk/components/http/httppost.cpp index 84fd984e19..99928a2687 100644 --- a/sca-cpp/trunk/components/http/httppost.cpp +++ b/sca-cpp/trunk/components/http/httppost.cpp @@ -38,61 +38,40 @@ namespace httppost { /** * Evaluate an HTTP post. */ -const failable get(const lambda&)>& url, const lambda&)>& val, http::CURLSession& ch) { +const failable get(const lvvlambda& url, const lvvlambda& val, const http::CURLSession& ch) { debug("httppost::get"); - const value u = url(mklist("get", list())); - const value v = val(mklist("get", list())); + const value u = url(mklist("get", nilListValue)); + const value v = val(mklist("get", nilListValue)); debug(u, "httppost::get::url"); debug(v, "httppost::get::val"); return http::post(v, u, ch); } /** - * Component implementation lambda function. + * Start the component. */ -class applyhttp { -public: - applyhttp(const lambda&)>& url, const lambda&)>& val, const perthread_ptr& ch) : url(url), val(val), ch(ch) { - } +const failable start(const list& params) { + // Create a CURL session + const lvvlambda timeout = caddr(params); + const gc_pool cp(gc_current_pool()); + const lambda()> newsession = [timeout, cp]() -> const gc_ptr { + const gc_scoped_pool sp(pool(cp)); + const int t = atoi(c_str((string)timeout(nilListValue))); + return new (gc_new()) http::CURLSession(emptyString, emptyString, emptyString, emptyString, t); + }; + const perthread_ptr ch = *(new (gc_new >()) perthread_ptr(newsession)); - const value operator()(const list& params) const { + // Return the component implementation lambda function + const lvvlambda url = car(params); + const lvvlambda val = cadr(params); + const lvvlambda applyhttp = [url, val, ch](const list& params) -> const value { debug(params, "httppost::applyhttp::params"); const value func(car(params)); if (func == "get") return get(url, val, *ch); return mkfailure(); - } - -private: - const lambda&)> url; - const lambda&)> val; - perthread_ptr ch; -}; - -/** - * Create a new CURL session. - */ -class newsession { -public: - newsession(const lambda&)>& timeout) : timeout(timeout) { - } - const gc_ptr operator()() const { - const int t = atoi(c_str((string)timeout(list()))); - return new (gc_new()) http::CURLSession("", "", "", "", t); - } -private: - const lambda&)> timeout; -}; - -/** - * Start the component. - */ -const failable start(const list& params) { - // Create a CURL session - const perthread_ptr ch = perthread_ptr(lambda()>(newsession(caddr(params)))); - - // Return the component implementation lambda function - return value(lambda&)>(applyhttp(car(params), cadr(params), ch))); + }; + return value(applyhttp); } } -- cgit v1.2.3