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/smtp/Makefile.am | 4 +- sca-cpp/trunk/components/smtp/client-test.cpp | 4 +- sca-cpp/trunk/components/smtp/smtppost.cpp | 90 +++++++++++---------------- 3 files changed, 39 insertions(+), 59 deletions(-) (limited to 'sca-cpp/trunk/components/smtp') diff --git a/sca-cpp/trunk/components/smtp/Makefile.am b/sca-cpp/trunk/components/smtp/Makefile.am index 41fa686b9a..42c0d3347f 100644 --- a/sca-cpp/trunk/components/smtp/Makefile.am +++ b/sca-cpp/trunk/components/smtp/Makefile.am @@ -23,12 +23,12 @@ comp_LTLIBRARIES = libsmtppost.la noinst_DATA = libsmtppost${libsuffix} libsmtppost_la_SOURCES = smtppost.cpp -libsmtppost_la_LDFLAGS = -lxml2 -lmozjs -curl +libsmtppost_la_LDFLAGS = -lxml2 -ljansson -curl libsmtppost${libsuffix}: ln -s .libs/libsmtppost${libsuffix} client_test_SOURCES = client-test.cpp -client_test_LDFLAGS = -lxml2 -lcurl -lmozjs +client_test_LDFLAGS = -lxml2 -lcurl -ljansson dist_noinst_SCRIPTS = server-test noinst_PROGRAMS = client-test diff --git a/sca-cpp/trunk/components/smtp/client-test.cpp b/sca-cpp/trunk/components/smtp/client-test.cpp index 10274a6248..4a60b475fc 100644 --- a/sca-cpp/trunk/components/smtp/client-test.cpp +++ b/sca-cpp/trunk/components/smtp/client-test.cpp @@ -38,8 +38,8 @@ namespace smtp { const string postURI("http://localhost:8090/smtppost"); -bool testPost() { - http::CURLSession cs("", "", "", "", 0); +const bool testPost() { + const http::CURLSession cs("", "", "", "", 0); const failable val = http::get(postURI, cs); assert(hasContent(val)); diff --git a/sca-cpp/trunk/components/smtp/smtppost.cpp b/sca-cpp/trunk/components/smtp/smtppost.cpp index 1030ccc223..396b1a0a38 100644 --- a/sca-cpp/trunk/components/smtp/smtppost.cpp +++ b/sca-cpp/trunk/components/smtp/smtppost.cpp @@ -38,7 +38,7 @@ namespace smtppost { /** * Post/send an email message using SMTP. */ -const failable post(const string& url, const string& user, const string& pass, const string& from, const string& to, const string& subject, const value& val, http::CURLSession& cs) { +const failable post(const string& url, const string& user, const string& pass, const string& from, const string& to, const string& subject, const value& val, const http::CURLSession& cs) { // Convert value to a content request const failable > > freq = http::contentRequest(val, url); if (!hasContent(freq)) @@ -52,7 +52,7 @@ const failable post(const string& url, const string& user, const string& http::cleanup(cs); return mkfailure(fch); } - CURL* ch = content(fch); + CURL* const ch = content(fch); curl_easy_setopt(ch, CURLOPT_USE_SSL, (long)CURLUSESSL_ALL); // Convert message to a string @@ -88,25 +88,25 @@ const failable post(const string& url, const string& user, const string& } http::cleanup(cs); - return value(true); + return trueValue; } /** * Evaluate an SMTP post/send. */ -const failable get(const lambda&)>& url, - const lambda&)>& user, const lambda&)>& pass, - const lambda&)>& from, const lambda&)>& to, - const lambda&)>& subject, const lambda&)>& val, - http::CURLSession& ch) { +const failable get(const lvvlambda& url, + const lvvlambda& user, const lvvlambda& pass, + const lvvlambda& from, const lvvlambda& to, + const lvvlambda& subject, const lvvlambda& val, + const http::CURLSession& ch) { debug("smtppost::get"); - const value u = url(mklist("get", list())); - const value i = user(mklist("get", list())); - const value p = pass(mklist("get", list())); - const value f = from(mklist("get", list())); - const value t = to(mklist("get", list())); - const value s = subject(mklist("get", list())); - const value v = val(mklist("get", list())); + const value u = url(mklist("get", nilListValue)); + const value i = user(mklist("get", nilListValue)); + const value p = pass(mklist("get", nilListValue)); + const value f = from(mklist("get", nilListValue)); + const value t = to(mklist("get", nilListValue)); + const value s = subject(mklist("get", nilListValue)); + const value v = val(mklist("get", nilListValue)); debug(u, "smtppost::get::url"); debug(i, "smtppost::get::user"); debug(p, "smtppost::get::pass"); @@ -118,53 +118,33 @@ const failable get(const lambda&)>& url, } /** - * Component implementation lambda function. + * Start the component. */ -class applysmtp { -public: - applysmtp(const lambda&)>& url, - const lambda&)>& user, const lambda&)>& pass, - const lambda&)>& from, const lambda&)>& to, - const lambda&)>& subject, const lambda&)>& val, - perthread_ptr& ch) : - url(url), user(user), pass(pass), from(from), to(to), subject(subject), val(val), ch(ch) { - } +const failable start(const list& params) { + // Create a CURL session + const gc_pool cp(gc_current_pool()); + const lambda()> newsession = [cp]() -> const gc_ptr { + const gc_scoped_pool sp(pool(cp)); + return new (gc_new()) http::CURLSession(emptyString, emptyString, emptyString, emptyString, 0); + }; + 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 user = cadr(params); + const lvvlambda pass = caddr(params); + const lvvlambda from = cadddr(params); + const lvvlambda to = caddddr(params); + const lvvlambda subject = cadddddr(params); + const lvvlambda val = caddddddr(params); + const lvvlambda applysmtp = [url, user, pass, from, to, subject, val, ch](const list& params) -> const value { debug(params, "smtppost::applysmtp::params"); const value func(car(params)); if (func == "get") return get(url, user, pass, from, to, subject, val, *ch); return mkfailure(); - } - -private: - const lambda&)> url; - const lambda&)> user; - const lambda&)> pass; - const lambda&)> from; - const lambda&)> to; - const lambda&)> subject; - const lambda&)> val; - perthread_ptr ch; -}; - -/** - * Create a new CURL session. - */ -const gc_ptr newsession() { - return new (gc_new()) http::CURLSession("", "", "", "", 0); -} - -/** - * Start the component. - */ -const failable start(const list& params) { - // Create a CURL session - perthread_ptr ch = perthread_ptr(lambda()>(newsession)); - - // Return the component implementation lambda function - return value(lambda&)>(applysmtp(car(params), cadr(params), caddr(params), cadddr(params), caddddr(params), cadddddr(params), caddddddr(params), ch))); + }; + return value(applysmtp); } } -- cgit v1.2.3