summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--icespider/compile/routeCompiler.cpp13
-rw-r--r--icespider/core/ihttpRequest.h2
2 files changed, 13 insertions, 2 deletions
diff --git a/icespider/compile/routeCompiler.cpp b/icespider/compile/routeCompiler.cpp
index 177cd22..7e0d9ed 100644
--- a/icespider/compile/routeCompiler.cpp
+++ b/icespider/compile/routeCompiler.cpp
@@ -222,11 +222,20 @@ namespace IceSpider {
p->name, getEnumString(p->source), Slice::typeToString(ip->type()), p->name);
}
fprintbf(4, output, "auto prx = getProxy<%s>();\n", proxyName);
- fprintbf(4, output, "prx->%s(", operation);
+ if (o->returnsData()) {
+ fprintbf(4, output, "request->response(prx->%s(", operation);
+ }
+ else {
+ fprintbf(4, output, "prx->%s(", operation);
+ }
for (const auto & p : r->params) {
fprintbf(output, "_p_%s, ", p->name);
}
- fprintbf(output, "request->getContext());\n");
+ fprintbf(output, "request->getContext())");
+ if (o->returnsData()) {
+ fprintbf(output, ")");
+ }
+ fprintbf(output, ";\n");
fprintbf(3, output, "}\n\n");
fprintbf(2, output, "private:\n");
for (const auto & p : r->params) {
diff --git a/icespider/core/ihttpRequest.h b/icespider/core/ihttpRequest.h
index 76361b6..3ea877e 100644
--- a/icespider/core/ihttpRequest.h
+++ b/icespider/core/ihttpRequest.h
@@ -18,6 +18,8 @@ namespace IceSpider {
T getQueryStringParam(const std::string & key) const { (void)key; return T(); }
template<typename T>
T getHeaderParam(const std::string & key) const { (void)key; return T(); }
+ template<typename T>
+ void response(const T &) const { }
};
}