summaryrefslogtreecommitdiffstats
path: root/sca-cpp/trunk/modules/server/mod-eval.hpp
diff options
context:
space:
mode:
authorjsdelfino <jsdelfino@13f79535-47bb-0310-9956-ffa450edef68>2010-07-12 15:19:11 +0000
committerjsdelfino <jsdelfino@13f79535-47bb-0310-9956-ffa450edef68>2010-07-12 15:19:11 +0000
commit20a36196a7aad4f863dbc4969ff648bcbc187a02 (patch)
tree2de4b641ea30bd3793c0d82d381f8f1ec6eacdfc /sca-cpp/trunk/modules/server/mod-eval.hpp
parent95a926c827a1f4316c0f9c822e0b6003da78bb12 (diff)
Add a host component property reporting the current virtual host name.
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@963318 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to '')
-rw-r--r--sca-cpp/trunk/modules/server/mod-eval.hpp17
1 files changed, 14 insertions, 3 deletions
diff --git a/sca-cpp/trunk/modules/server/mod-eval.hpp b/sca-cpp/trunk/modules/server/mod-eval.hpp
index ded496a0bf..829edef387 100644
--- a/sca-cpp/trunk/modules/server/mod-eval.hpp
+++ b/sca-cpp/trunk/modules/server/mod-eval.hpp
@@ -275,11 +275,11 @@ const list<value> refProxies(const list<value>& refs, const string& base, const
#ifdef WANT_THREADS
__thread
#endif
-const request_rec* currentRequest = NULL;
+request_rec* currentRequest = NULL;
class ScopedRequest {
public:
- ScopedRequest(const request_rec* r) {
+ ScopedRequest(request_rec* r) {
currentRequest = r;
}
@@ -290,7 +290,7 @@ public:
/**
* Convert a list of component properties to a list of lambda functions that just return
- * the property value. The user and email properties are configured with the values
+ * the property value. The host, user and email properties are configured with the values
* from the HTTP request, if any.
*/
struct propProxy {
@@ -302,6 +302,15 @@ struct propProxy {
}
};
+struct hostPropProxy {
+ const value v;
+ hostPropProxy(const value& v) : v(v) {
+ }
+ const value operator()(unused const list<value>& params) const {
+ return httpd::hostName(currentRequest, v);
+ }
+};
+
struct emailPropProxy {
const value v;
emailPropProxy(const value& v) : v(v) {
@@ -326,6 +335,8 @@ struct userPropProxy {
};
const value mkpropProxy(const value& prop) {
+ if (scdl::name(prop) == "host")
+ return lambda<value(const list<value>&)>(hostPropProxy(elementValue(prop)));
if (scdl::name(prop) == "email")
return lambda<value(const list<value>&)>(emailPropProxy(elementValue(prop)));
if (scdl::name(prop) == "user")