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/scdl | |
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/scdl')
-rw-r--r-- | sca-cpp/trunk/modules/scdl/scdl.hpp | 36 |
1 files changed, 24 insertions, 12 deletions
diff --git a/sca-cpp/trunk/modules/scdl/scdl.hpp b/sca-cpp/trunk/modules/scdl/scdl.hpp index 531144e219..0f008dc3a8 100644 --- a/sca-cpp/trunk/modules/scdl/scdl.hpp +++ b/sca-cpp/trunk/modules/scdl/scdl.hpp @@ -117,10 +117,33 @@ const list<value> references(const value& l) { } /** + * Returns a list of bindings in a service or reference. + */ +const bool filterBinding(const value& v) { + return isElement(v) && contains(string(cadr<value>(v)), "binding."); +} + +const list<value> bindings(const value& l) { + return filter<value>(filterBinding, l); +} + +/** * Returns the target of a reference. */ +const value bindingsTarget(const list<value>& l) { + if (isNil(l)) + return value(); + const value u = uri(car(l)); + if (!isNil(u)) + return u; + return bindingsTarget(cdr(l)); +} + const value target(const value& l) { - return attributeValue("target", l); + const value target = attributeValue("target", l); + if (!isNil(target)) + return target; + return bindingsTarget(bindings(l)); } /** @@ -134,17 +157,6 @@ const list<value> referenceToTargetAssoc(const list<value>& r) { } /** - * Returns a list of bindings in a service or reference. - */ -const bool filterBinding(const value& v) { - return isElement(v) && contains(string(cadr<value>(v)), "binding."); -} - -const list<value> bindings(const value& l) { - return filter<value>(filterBinding, l); -} - -/** * Returns a list of properties in a component. */ const list<value> properties(const value& l) { |