This class works together with TProcessExecutor to allow the execution of functions in server processes.
Depending on the exact task that the worker is required to execute, a different version of the class can be called.
The most general case, used by TProcessExecutor::MapReduce(F func, T& args, R redfunc). This worker is build with:
A few partial specializations are provided for less general cases:
Since all the important data are passed to TMPWorkerExecutor at construction time, the kind of messages that client and workers have to exchange are usually very simple.
Definition at line 77 of file TMPWorkerExecutor.h.
Public Member Functions | |
TMPWorkerExecutor (F func, const std::vector< T > &args, R redfunc) | |
~TMPWorkerExecutor () | |
void | HandleInput (MPCodeBufPair &msg) |
Handle a message with an EMPCode. | |
Public Member Functions inherited from TMPWorker | |
TMPWorker () | |
TMPWorker (const TMPWorker &)=delete | |
TMPWorker (unsigned nWorkers, ULong64_t maxEntries) | |
virtual | ~TMPWorker () |
unsigned | GetNWorker () const |
pid_t | GetPid () |
TSocket * | GetSocket () |
virtual void | Init (int fd, unsigned workerN) |
This method is called by children processes right after forking. | |
TMPWorker & | operator= (const TMPWorker &)=delete |
void | Run () |
Private Attributes | |
std::vector< T > | fArgs |
a vector containing the arguments that must be passed to fFunc | |
bool | fCanReduce |
true if fReducedResult can be reduced with a new result, false until we have produced one result | |
F | fFunc |
the function to be executed | |
R | fRedFunc |
the reduce function | |
decltype(fFunc(fArgs.front())) | fReducedResult |
the result of the execution | |
Additional Inherited Members | |
Protected Member Functions inherited from TMPWorker | |
void | SendError (const std::string &errmsg, unsigned int code=MPCode::kError) |
Error sender. | |
Protected Attributes inherited from TMPWorker | |
std::string | fId |
identifier string in the form W<nwrk>|P<proc id> | |
ULong64_t | fMaxNEntries |
the maximum number of entries to be processed by this worker | |
unsigned | fNWorkers |
the number of workers spawned | |
ULong64_t | fProcessedEntries |
the number of entries processed by this worker so far | |
#include <TMPWorkerExecutor.h>
|
inline |
Definition at line 82 of file TMPWorkerExecutor.h.
|
inline |
Definition at line 86 of file TMPWorkerExecutor.h.
|
inlinevirtual |
Handle a message with an EMPCode.
This method is called upon receiving a message with a code >= 1000 (i.e. EMPCode). It handles the most generic types of messages.
Classes inheriting from TMPWorker should implement their own HandleInput function, that should be able to handle codes specific to that application.
The appropriate version of the HandleInput method (TMPWorker's or the overriding version) is automatically called depending on the message code.
Reimplemented from TMPWorker.
Definition at line 88 of file TMPWorkerExecutor.h.
|
private |
a vector containing the arguments that must be passed to fFunc
Definition at line 119 of file TMPWorkerExecutor.h.
|
private |
true if fReducedResult can be reduced with a new result, false until we have produced one result
Definition at line 122 of file TMPWorkerExecutor.h.
the function to be executed
Definition at line 118 of file TMPWorkerExecutor.h.
the reduce function
Definition at line 120 of file TMPWorkerExecutor.h.
|
private |
the result of the execution
Definition at line 121 of file TMPWorkerExecutor.h.