OGRE
13.6
Object-Oriented Graphics Rendering Engine
|
Interface definition for a handler of requests. More...
#include <OgreWorkQueue.h>
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 Response * | handleRequest (const Request *req, const WorkQueue *srcQ)=0 |
The handler method every subclass must implement. More... | |
Interface definition for a handler of requests.
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.
|
inline |
|
inlinevirtual |
|
inlinevirtual |
Return whether this handler can process a given request.
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::ResourceBackgroundQueue, Ogre::TerrainLodManager, Ogre::TerrainGroup, Ogre::Terrain, and Ogre::Page.
References Ogre::WorkQueue::Request::getAborted().
|
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.
req | The 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. |
srcQ | The work queue that this request originated from |
Implemented in Ogre::ResourceBackgroundQueue, Ogre::Volume::ChunkHandler, Ogre::TerrainPagedWorldSection, Ogre::TerrainLodManager, Ogre::TerrainGroup, Ogre::Terrain, and Ogre::Page.