summaryrefslogtreecommitdiffstats
path: root/sca-cpp/trunk/modules
diff options
context:
space:
mode:
authorjsdelfino <jsdelfino@13f79535-47bb-0310-9956-ffa450edef68>2010-01-25 07:28:50 +0000
committerjsdelfino <jsdelfino@13f79535-47bb-0310-9956-ffa450edef68>2010-01-25 07:28:50 +0000
commitc4de801fcb55b6ca0c8c12777007948eeb7a9e79 (patch)
tree93865908d8c24ece181826b093c4cac343b9b042 /sca-cpp/trunk/modules
parent0bb923d739f7c1e6f5bb9b1af1e2fad0253350d6 (diff)
Added skeletons and build options for a few more utility components. Minor refactoring of the web service component.
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@902721 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'sca-cpp/trunk/modules')
-rw-r--r--sca-cpp/trunk/modules/http/httpd.hpp14
-rw-r--r--sca-cpp/trunk/modules/server/mod-eval.hpp7
2 files changed, 20 insertions, 1 deletions
diff --git a/sca-cpp/trunk/modules/http/httpd.hpp b/sca-cpp/trunk/modules/http/httpd.hpp
index 4a3e5d0f58..1e8f2a80b5 100644
--- a/sca-cpp/trunk/modules/http/httpd.hpp
+++ b/sca-cpp/trunk/modules/http/httpd.hpp
@@ -264,6 +264,20 @@ const int reportStatus(const failable<int>& rc) {
return content(rc);
}
+/**
+ * Convert an HTTPD request struct to a value
+ */
+const value requestValue(request_rec* r) {
+ return value((const value*)r);
+}
+
+/**
+ * Convert a value to an HTTPD request struc
+ */
+request_rec* request(const value& v) {
+ return (request_rec*)(const value*)gc_ptr<value>(v);
+}
+
}
}
diff --git a/sca-cpp/trunk/modules/server/mod-eval.hpp b/sca-cpp/trunk/modules/server/mod-eval.hpp
index dfc376c55c..aaf31f2b18 100644
--- a/sca-cpp/trunk/modules/server/mod-eval.hpp
+++ b/sca-cpp/trunk/modules/server/mod-eval.hpp
@@ -169,7 +169,12 @@ const failable<int> post(request_rec* r, const lambda<value(const list<value>&)>
return OK;
}
- return HTTP_NOT_IMPLEMENTED;
+ // Unknown content type, wrap the HTTP request struct in a value and pass it to
+ // the component implementation function
+ const failable<value> val = failableResult(impl(cons<value>("handle", mklist<value>(httpd::requestValue(r)))));
+ if (!hasContent(val))
+ return mkfailure<int>(reason(val));
+ return OK;
}
/**