28 #ifndef __OgreWorkQueue_H__
29 #define __OgreWorkQueue_H__
228 virtual void startup(
bool forceRestart =
true) = 0;
238 virtual void addRequestHandler(
uint16 channel, RequestHandler* rh) = 0;
240 virtual void removeRequestHandler(
uint16 channel, RequestHandler* rh) = 0;
251 virtual void addResponseHandler(
uint16 channel, ResponseHandler* rh) = 0;
253 virtual void removeResponseHandler(
uint16 channel, ResponseHandler* rh) = 0;
272 virtual RequestID addRequest(
uint16 channel,
uint16 requestType,
const Any& rData,
uint8 retryCount = 0,
273 bool forceSynchronous =
false,
bool idleThread =
false) = 0;
280 virtual void abortRequest(RequestID
id) = 0;
288 virtual void abortRequestsByChannel(
uint16 channel) = 0;
296 virtual void abortPendingRequestsByChannel(
uint16 channel) = 0;
302 virtual void abortAllRequests() = 0;
309 virtual void setPaused(
bool pause) = 0;
311 virtual bool isPaused()
const = 0;
317 virtual void setRequestsAccepted(
bool accept) = 0;
319 virtual bool getRequestsAccepted()
const = 0;
329 virtual void processResponses() = 0;
334 virtual unsigned long getResponseProcessingTimeLimit()
const = 0;
341 virtual void setResponseProcessingTimeLimit(
unsigned long ms) = 0;
345 virtual void shutdown() = 0;
371 const String& getName()
const;
375 virtual size_t getWorkerThreadCount()
const;
382 virtual void setWorkerThreadCount(
size_t c);
393 virtual bool getWorkersCanAccessRenderSystem()
const;
407 virtual void setWorkersCanAccessRenderSystem(
bool access);
416 virtual void _processNextRequest();
419 virtual void _threadMain() = 0;
425 virtual void addRequestHandler(
uint16 channel, RequestHandler* rh);
427 virtual void removeRequestHandler(
uint16 channel, RequestHandler* rh);
429 virtual void addResponseHandler(
uint16 channel, ResponseHandler* rh);
431 virtual void removeResponseHandler(
uint16 channel, ResponseHandler* rh);
434 virtual RequestID addRequest(
uint16 channel,
uint16 requestType,
const Any& rData,
uint8 retryCount = 0,
435 bool forceSynchronous =
false,
bool idleThread =
false);
437 virtual void abortRequest(RequestID
id);
439 virtual void abortRequestsByChannel(
uint16 channel);
441 virtual void abortPendingRequestsByChannel(
uint16 channel);
443 virtual void abortAllRequests();
445 virtual void setPaused(
bool pause);
447 virtual bool isPaused()
const;
449 virtual void setRequestsAccepted(
bool accept);
451 virtual bool getRequestsAccepted()
const;
453 virtual void processResponses();
481 void operator()()
const;
498 : mHandler(handler) {}
524 if (mHandler->canHandleRequest(req, srcQ))
526 response = mHandler->handleRequest(req, srcQ);
559 void processRequestResponse(Request* r,
bool synchronous);
560 Response* processRequest(Request* r);
563 virtual void notifyWorkers() = 0;
565 void addRequestWithRID(RequestID rid,
uint16 channel,
uint16 requestType,
const Any& rData,
uint8 retryCount);
572 bool processIdleRequests();