diff options
Diffstat (limited to 'rotord/src/rotord.cpp')
| -rwxr-xr-x | rotord/src/rotord.cpp | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/rotord/src/rotord.cpp b/rotord/src/rotord.cpp index 33031e7..6130cfc 100755 --- a/rotord/src/rotord.cpp +++ b/rotord/src/rotord.cpp @@ -108,6 +108,42 @@ HTTPRequestHandler* RotorRequestHandlerFactory::createRequestHandler(const HTTPS status=HTTPResponse::HTTP_OK; } } + else if (command[0]=="listrenders") { + XML.pushTag("rotor"); + if (request.getMethod()=="GET") { + int i=0; + for (auto r: renders){ + XML.addTag("render"); + XML.addAttribute("render","ID",r.first,i); + bool context_found=false; + for (auto& task: manager.taskList()) { + if(task->name()==r.second) { + Render_status status=((Poco::AutoPtr<Rotor::Render_context>)task)->get_render_status(r.first); + //cerr<<"render "<<r.first<<" found, context "<<r.second<<", status: "<<status.status<<endl; + switch (status.status) { + case RENDERING: + XML.addAttribute("render","status","rendering",i); + XML.addAttribute("render","progress",status.progress,i); + break; + case RENDER_READY: + XML.addAttribute("render","status","render complete",i); + break; + case FAILED: + XML.addAttribute("render","status","render failed",i); + break; + case NOT_FOUND: + XML.addAttribute("render","status","error - not found",i); + break; + } + context_found=true; + } + } + if (!context_found) XML.addAttribute("render","status","context unavailable",i); + i++; + } + status=HTTPResponse::HTTP_OK; + } + } else if (command[0]=="exit") { logger.information("exiting"); exit(0); @@ -154,6 +190,7 @@ HTTPRequestHandler* RotorRequestHandlerFactory::createRequestHandler(const HTTPS ((Poco::AutoPtr<Rotor::Render_context>)task)->session_command(SC,XML,status); if (XML.tagExists("render_id")){ //cerr<<"render started: "<<SC.uid<<" in context: "<<command[0]<<endl; + renders[SC.uid]=command[0]; } } } |
