diff options
Diffstat (limited to 'src/uscxml/plugins/element/response')
-rw-r--r-- | src/uscxml/plugins/element/response/ResponseElement.cpp | 76 | ||||
-rw-r--r-- | src/uscxml/plugins/element/response/ResponseElement.h | 10 |
2 files changed, 43 insertions, 43 deletions
diff --git a/src/uscxml/plugins/element/response/ResponseElement.cpp b/src/uscxml/plugins/element/response/ResponseElement.cpp index ce25036..814f726 100644 --- a/src/uscxml/plugins/element/response/ResponseElement.cpp +++ b/src/uscxml/plugins/element/response/ResponseElement.cpp @@ -17,52 +17,52 @@ bool connect(pluma::Host& host) { #endif boost::shared_ptr<ExecutableContentImpl> ResponseElement::create(Interpreter* interpreter) { - boost::shared_ptr<ResponseElement> invoker = boost::shared_ptr<ResponseElement>(new ResponseElement()); + boost::shared_ptr<ResponseElement> invoker = boost::shared_ptr<ResponseElement>(new ResponseElement()); invoker->_interpreter = interpreter; return invoker; } void ResponseElement::enterElement(const Arabica::DOM::Node<std::string>& node) { - if (!HAS_ATTR(node, "request") && !HAS_ATTR(node, "requestexpr")) { - LOG(ERROR) << "Response element requires request or requestexpr"; - return; - } - if (HAS_ATTR(node, "requestexpr") && !_interpreter->getDataModel()) { - LOG(ERROR) << "Response element with requestexpr requires datamodel"; - return; - } - if (HAS_ATTR(node, "close")) { - - } - - std::string requestId = (HAS_ATTR(node, "request") ? ATTR(node, "request") : _interpreter->getDataModel().evalAsString(ATTR(node, "requestexpr"))); - - HTTPServletInvoker* servlet = _interpreter->getHTTPServlet(); - tthread::lock_guard<tthread::recursive_mutex> lock(servlet->getMutex()); - - if (servlet->getRequests().find(requestId) == servlet->getRequests().end()) { - LOG(ERROR) << "No matching HTTP request for response element"; - return; - } - - std::string statusStr = (HAS_ATTR(node, "status") ? ATTR(node, "status") : "200"); - if (!isNumeric(statusStr.c_str(), 10)) { - LOG(ERROR) << "Response element with non-numeric status " << statusStr; - return; - } - int status = strTo<int>(statusStr); - - HTTPServer::Request httpReq = servlet->getRequests()[requestId]; - - HTTPServer::Reply httpReply(httpReq); - httpReply.status = status; - - HTTPServer::reply(httpReply); - servlet->getRequests().erase(requestId); + if (!HAS_ATTR(node, "request") && !HAS_ATTR(node, "requestexpr")) { + LOG(ERROR) << "Response element requires request or requestexpr"; + return; + } + if (HAS_ATTR(node, "requestexpr") && !_interpreter->getDataModel()) { + LOG(ERROR) << "Response element with requestexpr requires datamodel"; + return; + } + if (HAS_ATTR(node, "close")) { + + } + + std::string requestId = (HAS_ATTR(node, "request") ? ATTR(node, "request") : _interpreter->getDataModel().evalAsString(ATTR(node, "requestexpr"))); + + HTTPServletInvoker* servlet = _interpreter->getHTTPServlet(); + tthread::lock_guard<tthread::recursive_mutex> lock(servlet->getMutex()); + + if (servlet->getRequests().find(requestId) == servlet->getRequests().end()) { + LOG(ERROR) << "No matching HTTP request for response element"; + return; + } + + std::string statusStr = (HAS_ATTR(node, "status") ? ATTR(node, "status") : "200"); + if (!isNumeric(statusStr.c_str(), 10)) { + LOG(ERROR) << "Response element with non-numeric status " << statusStr; + return; + } + int status = strTo<int>(statusStr); + + HTTPServer::Request httpReq = servlet->getRequests()[requestId]; + + HTTPServer::Reply httpReply(httpReq); + httpReply.status = status; + + HTTPServer::reply(httpReply); + servlet->getRequests().erase(requestId); } void ResponseElement::exitElement(const Arabica::DOM::Node<std::string>& node) { - + } }
\ No newline at end of file diff --git a/src/uscxml/plugins/element/response/ResponseElement.h b/src/uscxml/plugins/element/response/ResponseElement.h index 97ff9db..9b3ce61 100644 --- a/src/uscxml/plugins/element/response/ResponseElement.h +++ b/src/uscxml/plugins/element/response/ResponseElement.h @@ -8,7 +8,7 @@ #endif namespace uscxml { - + class ResponseElement : public ExecutableContentImpl { public: ResponseElement() {} @@ -22,16 +22,16 @@ public: std::string getNamespace() { return "http://www.w3.org/2005/07/scxml"; } - + bool processChildren() { return false; } - + void enterElement(const Arabica::DOM::Node<std::string>& node); void exitElement(const Arabica::DOM::Node<std::string>& node); - + }; - + #ifdef BUILD_AS_PLUGINS PLUMA_INHERIT_PROVIDER(ResponseElement, Element); #endif |