Logo ROOT   6.08/07
Reference Guide
List of all members | Public Member Functions | Private Attributes | List of all members
TPoolWorker< F, T, R > Class Template Reference

template<class F, class T = void, class R = void>
class TPoolWorker< F, T, R >

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.

TPoolWorker<F, T, R>

The most general case, used by TProcessExecutor::MapReduce(F func, T& args, R redfunc). This worker is build with:

Partial specializations

A few partial specializations are provided for less general cases:

Since all the important data are passed to TPoolWorker at construction time, the kind of messages that client and workers have to exchange are usually very simple.

Definition at line 77 of file TPoolWorker.h.

Public Member Functions

 TPoolWorker (F func, const std::vector< T > &args, R redfunc)
 
 ~TPoolWorker ()
 
void HandleInput (MPCodeBufPair &msg)
 Handle a message with an EMPCode. More...
 
- Public Member Functions inherited from TMPWorker
 TMPWorker ()
 Class constructors. More...
 
 TMPWorker (const std::vector< std::string > &fileNames, const std::string &treeName, unsigned nWorkers, ULong64_t maxEntries)
 
 TMPWorker (TTree *tree, unsigned nWorkers, ULong64_t maxEntries)
 
 TMPWorker (const TMPWorker &)=delete
 
virtual ~TMPWorker ()
 
unsigned GetNWorker () const
 
pid_t GetPid ()
 
TSocketGetSocket ()
 
virtual void Init (int fd, unsigned workerN)
 This method is called by children processes right after forking. More...
 
TMPWorkeroperator= (const TMPWorker &)=delete
 
void Run ()
 

Private Attributes

std::vector< T > fArgs
 a vector containing the arguments that must be passed to fFunc More...
 
bool fCanReduce
 true if fReducedResult can be reduced with a new result, false until we have produced one result More...
 
F fFunc
 the function to be executed More...
 
R fRedFunc
 the reduce function More...
 
decltype(fFunc(fArgs.front())) fReducedResult
 the result of the execution More...
 

Additional Inherited Members

- Protected Member Functions inherited from TMPWorker
void CloseFile ()
 Handle file closing. More...
 
TFileOpenFile (const std::string &fileName)
 Handle file opening. More...
 
TTreeRetrieveTree (TFile *fp)
 Retrieve a tree from an open file. More...
 
void SendError (const std::string &errmsg, unsigned int code=MPCode::kError)
 Error sender. More...
 
void Setup ()
 Auxilliary method for common initializations. More...
 
void SetupTreeCache (TTree *tree)
 Tree cache handling. More...
 
- Protected Attributes inherited from TMPWorker
TFilefFile
 last open file More...
 
std::vector< std::string > fFileNames
 the files to be processed by all workers More...
 
std::string fId
 identifier string in the form W<nwrk>|P<proc id>=""> More...
 
ULong64_t fMaxNEntries
 the maximum number of entries to be processed by this worker More...
 
unsigned fNWorkers
 the number of workers spawned More...
 
ULong64_t fProcessedEntries
 the number of entries processed by this worker so far More...
 
TTreefTree
 pointer to the tree to be processed. It is only used if the tree is directly passed to TProcessExecutor::Process as argument More...
 
std::string fTreeName
 the name of the tree to be processed More...
 

#include <TPoolWorker.h>

Inheritance diagram for TPoolWorker< F, T, R >:
[legend]

Constructor & Destructor Documentation

◆ TPoolWorker()

template<class F, class T = void, class R = void>
TPoolWorker< F, T, R >::TPoolWorker ( F  func,
const std::vector< T > &  args,
R  redfunc 
)
inline

Definition at line 82 of file TPoolWorker.h.

◆ ~TPoolWorker()

template<class F, class T = void, class R = void>
TPoolWorker< F, T, R >::~TPoolWorker ( )
inline

Definition at line 86 of file TPoolWorker.h.

Member Function Documentation

◆ HandleInput()

template<class F, class T = void, class R = void>
void TPoolWorker< F, T, R >::HandleInput ( MPCodeBufPair msg)
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.

Parameters
msgExecute instructions received from a TProcessExecutor client

Reimplemented from TMPWorker.

Definition at line 88 of file TPoolWorker.h.

Member Data Documentation

◆ fArgs

template<class F, class T = void, class R = void>
std::vector<T> TPoolWorker< F, T, R >::fArgs
private

a vector containing the arguments that must be passed to fFunc

Definition at line 119 of file TPoolWorker.h.

◆ fCanReduce

template<class F, class T = void, class R = void>
bool TPoolWorker< F, T, R >::fCanReduce
private

true if fReducedResult can be reduced with a new result, false until we have produced one result

Definition at line 122 of file TPoolWorker.h.

◆ fFunc

template<class F, class T = void, class R = void>
F TPoolWorker< F, T, R >::fFunc
private

the function to be executed

Definition at line 118 of file TPoolWorker.h.

◆ fRedFunc

template<class F, class T = void, class R = void>
R TPoolWorker< F, T, R >::fRedFunc
private

the reduce function

Definition at line 120 of file TPoolWorker.h.

◆ fReducedResult

template<class F, class T = void, class R = void>
decltype(fFunc(fArgs.front())) TPoolWorker< F, T, R >::fReducedResult
private

the result of the execution

Definition at line 121 of file TPoolWorker.h.


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