summaryrefslogtreecommitdiffstats
path: root/sca-cpp/trunk/modules/scdl
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/scdl
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/scdl')
-rw-r--r--sca-cpp/trunk/modules/scdl/scdl.hpp36
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) {