OGRE  2.0
Object-Oriented Graphics Rendering Engine
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
Ogre::WorkQueue::RequestHandler Class Referenceabstract

Interface definition for a handler of requests. More...

#include <OgreWorkQueue.h>

+ Inheritance diagram for Ogre::WorkQueue::RequestHandler:

Public Member Functions

 RequestHandler ()
 
virtual ~RequestHandler ()
 
virtual bool canHandleRequest (const Request *req, const WorkQueue *srcQ)
 Return whether this handler can process a given request. More...
 
virtual ResponsehandleRequest (const Request *req, const WorkQueue *srcQ)=0
 The handler method every subclass must implement. More...
 

Detailed Description

Interface definition for a handler of requests.

Remarks
User classes are expected to implement this interface in order to process requests on the queue. It's important to realise that the calls to this class may be in a separate thread to the main render context, and as such it may not be possible to make rendersystem or other GPU-dependent calls in this handler. You can only do so if the queue was created with 'workersCanAccessRenderSystem' set to true, and OGRE_THREAD_SUPPORT=1, but this puts extra strain on the thread safety of the render system and is not recommended. It is best to perform CPU-side work in these handlers and let the response handler transfer results to the GPU in the main render thread.

Definition at line 162 of file OgreWorkQueue.h.

Constructor & Destructor Documentation

Ogre::WorkQueue::RequestHandler::RequestHandler ( )
inline

Definition at line 165 of file OgreWorkQueue.h.

virtual Ogre::WorkQueue::RequestHandler::~RequestHandler ( )
inlinevirtual

Definition at line 166 of file OgreWorkQueue.h.

Member Function Documentation

virtual bool Ogre::WorkQueue::RequestHandler::canHandleRequest ( const Request req,
const WorkQueue srcQ 
)
inlinevirtual

Return whether this handler can process a given request.

Remarks
Defaults to true, but if you wish to add several handlers each of which deal with different types of request, you can override this method.

Reimplemented in Ogre::Terrain, Ogre::TerrainGroup, Ogre::ResourceBackgroundQueue, Ogre::Page, and Ogre::TerrainLodManager.

Definition at line 174 of file OgreWorkQueue.h.

References Ogre::WorkQueue::Request::getAborted().

virtual Response* Ogre::WorkQueue::RequestHandler::handleRequest ( const Request req,
const WorkQueue srcQ 
)
pure virtual

The handler method every subclass must implement.

If a failure is encountered, return a Response with a failure result rather than raise an exception.

Parameters
reqThe Request structure, which is effectively owned by the handler during this call. It must be attached to the returned Response regardless of success or failure.
srcQThe work queue that this request originated from
Returns
Pointer to a Response object - the caller is responsible for deleting the object.

Implemented in Ogre::Terrain, Ogre::TerrainGroup, Ogre::ResourceBackgroundQueue, Ogre::Page, Ogre::TerrainPagedWorldSection, Ogre::Volume::ChunkHandler, Ogre::TerrainLodManager, and Ogre::LodWorkQueueWorker.


The documentation for this class was generated from the following file: