Parallel process facade used to insert work units from a remote scheduler into the local one. More...
#include <mitsuba/core/sched_remote.h>
Public Member Functions | |
RemoteProcess (int id, ELogLevel logLevel, StreamBackend *backend, WorkProcessor *proc) | |
Create a new remote process. More... | |
EStatus | generateWork (WorkUnit *unit, int worker) |
Generate a piece of work. More... | |
void | processResult (const WorkResult *result, bool cancelled) |
Called whenever a work unit has been completed. More... | |
ref< WorkProcessor > | createWorkProcessor () const |
Create an instance of the algorithm responsible for executing the work units of this parallel process. More... | |
void | handleCancellation () |
Called when the parallel process is canceled by Scheduler::cancel(). More... | |
WorkUnit * | getEmptyWorkUnit () |
Get an empty work unit from the process (or create one) More... | |
void | putFullWorkUnit (WorkUnit *wu) |
Make a full work unit available to the process. More... | |
void | setDone () |
Mark the process as finished. More... | |
virtual const Class * | getClass () const |
Retrieve this object's class. More... | |
Public Member Functions inherited from mitsuba::ParallelProcess | |
EStatus | getReturnStatus () const |
Query the return status of a process after its execution has finished. More... | |
virtual void | bindResource (const std::string &name, int id) |
Bind a resource to this parallel process. More... | |
virtual bool | isLocal () const |
Is this process strictly local? More... | |
ELogLevel | getLogLevel () const |
Return the log level for events associated with this process. More... | |
const ResourceBindings & | getResourceBindings () const |
Return a list of all bound resources. More... | |
virtual std::vector< std::string > | getRequiredPlugins () |
Return a list of plugins required by this parallel process. More... | |
Public Member Functions inherited from Object | |
Object () | |
Construct a new object. More... | |
int | getRefCount () const |
Return the current reference count. More... | |
void | incRef () const |
Increase the reference count of the object by one. More... | |
void | decRef (bool autoDeallocate=true) const |
Decrease the reference count of the object and possibly deallocate it. More... | |
virtual std::string | toString () const |
Return a human-readable string representation of the object's contents. More... | |
Static Public Attributes | |
static Class * | m_theClass |
Static Public Attributes inherited from mitsuba::ParallelProcess | |
static Class * | m_theClass |
Static Public Attributes inherited from Object | |
static Class * | m_theClass |
Pointer to the object's class descriptor. More... | |
Protected Member Functions | |
virtual | ~RemoteProcess () |
Protected Member Functions inherited from mitsuba::ParallelProcess | |
ParallelProcess () | |
Protected constructor. More... | |
virtual | ~ParallelProcess () |
Virtual destructor. More... | |
Protected Member Functions inherited from Object | |
virtual | ~Object () |
Virtual private deconstructor. (Will only be called by ref) More... | |
Additional Inherited Members | |
Public Types inherited from mitsuba::ParallelProcess | |
enum | EStatus { EUnknown, EPause, ESuccess, EFailure } |
Return codes used by generateWork() and getReturnStatus() More... | |
typedef std::map< std::string, int > | ResourceBindings |
Binding from local resource names to global resource IDs. More... | |
Static Public Member Functions inherited from Object | |
static void | staticInitialization () |
Initializes the built-in reference count debugger (if enabled) More... | |
static void | staticShutdown () |
Free the memory taken by staticInitialization() More... | |
Protected Attributes inherited from mitsuba::ParallelProcess | |
ResourceBindings | m_bindings |
EStatus | m_returnStatus |
ELogLevel | m_logLevel |
Parallel process facade used to insert work units from a remote scheduler into the local one.
mitsuba::RemoteProcess::RemoteProcess | ( | int | id, |
ELogLevel | logLevel, | ||
StreamBackend * | backend, | ||
WorkProcessor * | proc | ||
) |
Create a new remote process.
id | Identification number for this process |
logLevel | Log level for events associated with this process |
backend | The responsible server-side communication backend |
proc | Work processor instance for use with this process |
|
protectedvirtual |
|
virtual |
Create an instance of the algorithm responsible for executing the work units of this parallel process.
Implements mitsuba::ParallelProcess.
Generate a piece of work.
Takes a pre-allocated WorkUnit instance of the appropriate sub-type and size (as specified by ParallelProcess::getWorkUnitName()) and fills it with the appropriate content. Returns ESuccess on success and EFailure or EPause when no more work is left – in that case, the work unit will be ignored and the process completed (EFailure) or temporarily paused (EPause). When EPause was used, resubmission via Scheduler::schedule() will be required once more work is available. In some cases, it is useful to distribute 'nearby' pieces of work to the same processor – the worker
parameter can be used to implement this. This function should run as quickly as possible, since it will be executed while the scheduler mutex is held. A thrown exception will lead to the termination of the parallel process.
unit | Work unit data structure to be filled |
worker | ID of the worker executing this function |
Implements mitsuba::ParallelProcess.
|
virtual |
Retrieve this object's class.
Reimplemented from mitsuba::ParallelProcess.
|
inline |
Get an empty work unit from the process (or create one)
|
virtual |
Called when the parallel process is canceled by Scheduler::cancel().
The default implementation does nothing.
Reimplemented from mitsuba::ParallelProcess.
|
virtual |
Called whenever a work unit has been completed.
Note that this function may concurrently be executed by multiple threads. Also, processing of work results will generally be out of order with respect to the creation in generateWork().
When a work unit is only partially completed due to a call to Scheduler::cancel(), the second parameter is set to true. A thrown exception will lead to the termination of the parallel process.
result | Work result to be processed |
cancelled | Was the associated work unit not fully completed |
Implements mitsuba::ParallelProcess.
|
inline |
Make a full work unit available to the process.
|
inline |
Mark the process as finished.
|
static |