From d3e81c08640d98a3da64db0e0e1b8af15f0ed23d Mon Sep 17 00:00:00 2001 From: Dan Goodliffe Date: Sun, 19 Jun 2016 14:58:44 +0100 Subject: Pass operation response back to the request --- icespider/compile/routeCompiler.cpp | 13 +++++++++++-- icespider/core/ihttpRequest.h | 2 ++ 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 T getHeaderParam(const std::string & key) const { (void)key; return T(); } + template + void response(const T &) const { } }; } -- cgit v1.2.3