1 #ifndef _ots_WorkLoopManager_h
2 #define _ots_WorkLoopManager_h
4 #include <toolbox/task/WorkLoop.h>
5 #include <xgi/Method.h>
6 #include <xoap/MessageReference.h>
16 class HttpXmlDocument;
22 typedef unsigned long long RequestNumber;
34 bool report (toolbox::task::WorkLoop* workLoop, std::string result,
float progress,
bool status);
35 bool removeProcessedRequests(
void);
36 std::string getWorkLoopRequest (toolbox::task::WorkLoop* workLoop);
37 void translateWorkLoopName (toolbox::task::WorkLoop* workLoop,
SOAPCommand& soapCommand);
41 xoap::MessageReference getMessage(toolbox::task::WorkLoop* workLoop);
44 const std::string cWorkLoopType_;
45 enum{maxWorkLoops = 5};
46 enum{timeOutInSeconds = 20};
49 toolbox::task::WorkLoop* workLoop;
50 std::string workLoopName;
55 time_t requestStartTime;
56 time_t requestLastTimeChecked;
57 xoap::MessageReference message;
59 HttpXmlDocument processRequest (std::string workLoopName,
const xoap::MessageReference* message=0);
60 bool removeWorkLoop (toolbox::task::WorkLoop* workLoop);
61 bool removeWorkLoop (RequestNumber requestNumber);
62 bool removeTimedOutRequests (
void);
63 std::string composeWorkLoopName (RequestNumber requestNumber, cgicc::Cgicc &cgi);
64 std::string composeWorkLoopName (RequestNumber requestNumber,
const xoap::MessageReference& message);
65 RequestNumber getWorkLoopRequestNumber(toolbox::task::WorkLoop* workLoop);
66 RequestNumber getWorkLoopRequestNumber(std::string workLoopName);
67 std::string getWorkLoopRequest (std::string workLoopName);
69 std::map<RequestNumber, WorkLoopStruct> workLoops_;
70 toolbox::task::ActionSignature* job_;
71 unsigned long long requestNumber_;
72 std::string requestName_;