TRestMessenger
This metadata helps to recieve/dispatch messages across processes(UNIX process) For example, we start two restManager with TRestMessenger added as metadata. For one of them, we add a "sendMessage" task after "processEvent". Then, when the process chain finishes, it will dispatch the message containing, e.g., the output file name. Then, the other restManager can get the message and be notified that the file is done. It can therefore do some operations to this file, e.g., add to TRestAnalysisPlot file list and update the plots.
By default it uses shared memory. Can be overridden by REST packages, adding more communication methods(http, kafka, etc.)
Each TRestMessenger connects to a message pool in shared memory. Each message pool is limited with 100 messages. Each message is limited with 256 bytes. When sending message, the message is added to the message pool. When receiving message, the logic is more like "consuming": message is taken out from the pool and given to the specific process. It will be erased after being consumed. TRestMessenger cannot consume the message sent by self process.
The rml definition is like follows. We need to add serval <pool sections in its config section to define the message pools. The token of the pool is equivalent to the shm key, where two processes with a same token can access to a same memory.
<
TRestManager name=
"CoBoDataAnalysis" title=
"Example" verboseLevel=
"info" >
messageSource="outputfile" token="116027"/>
<addTask command="Messager->SendMessage()" value="ON"/>
Managing applications and executing tasks.
RESTsoft - Software for Rare Event Searches with TPCs
History of developments:
2020-Aug: First implementation and concept Ni Kaixiang
- Author
- Ni Kaixiang
Definition at line 29 of file TRestMessenger.h.
|
| ClassDefOverride (TRestMessenger, 1) |
|
virtual std::string | ConsumeMessage () |
|
virtual bool | IsConnected () |
|
void | PrintMetadata () override |
| Implemented it in the derived metadata class to print out specific metadata information. More...
|
|
virtual void | SendMessage (std::string message="") |
|
virtual std::vector< std::string > | ShowMessagePool () |
|
| TRestMessenger (int token, std::string mode="TwoWay") |
|
void | AddLog (std::string log="", bool print=true) |
| Add logs to messageBuffer. More...
|
|
void | DoNotStore () |
| If this method is called the metadata information will not be stored in disk. More...
|
|
TVector2 | Get2DVectorParameterWithUnits (std::string parName, TVector2 defaultValue=TVector2(-1, -1)) |
|
TVector3 | Get3DVectorParameterWithUnits (std::string parName, TVector3 defaultValue=TVector3(-1, -1, -1)) |
|
TString | GetCommit () |
| Returns the REST commit value stored in fCommit. More...
|
|
std::string | GetConfigBuffer () |
| Returns the config section of this class. More...
|
|
std::string | GetDataMemberValue (std::string memberName) |
| Get the value of data member as string. More...
|
|
std::vector< std::string > | GetDataMemberValues (std::string memberName, Int_t precision=0) |
| Get the value of datamember as a vector of strings. More...
|
|
TString | GetDataPath () |
| Returns a std::string with the path used for data storage. More...
|
|
Double_t | GetDblParameterWithUnits (std::string parName, Double_t defaultValue=PARAMETER_NOT_FOUND_DBL) |
| Gets the value of the parameter name parName, after applying unit conversion. More...
|
|
Bool_t | GetError () const |
| It returns true if an error was identified by a derived metadata class. More...
|
|
TString | GetErrorMessage () |
| Returns a std::string containing the error message. More...
|
|
TString | GetLibraryVersion () |
| Returns the REST libraty version stored in fLibraryVersion. More...
|
|
TString | GetMainDataPath () |
| Gets a std::string with the path used for data storage. More...
|
|
Int_t | GetNumberOfErrors () const |
|
Int_t | GetNumberOfWarnings () const |
|
std::string | GetParameter (std::string parName, TString defaultValue=PARAMETER_NOT_FOUND_STR) |
| Returns corresponding REST Metadata parameter from multiple sources. More...
|
|
std::string | GetSectionName () |
| Returns the section name of this class, defined at the beginning of fSectionName. More...
|
|
TRestStringOutput::REST_Verbose_Level | GetVerboseLevel () |
| returns the verboselevel in type of REST_Verbose_Level enumerator More...
|
|
TString | GetVerboseLevelString () |
| returns the verbose level in type of TString More...
|
|
TString | GetVersion () |
| Returns the REST version stored in fVersion. More...
|
|
Int_t | GetVersionCode () |
|
UInt_t | GetVersionMajor () const |
|
UInt_t | GetVersionMinor () const |
|
UInt_t | GetVersionPatch () const |
|
Bool_t | GetWarning () const |
| It returns true if an error was identified by a derived metadata class. More...
|
|
TString | GetWarningMessage () |
| Returns a std::string containing the warning message. More...
|
|
virtual void | Initialize () |
| Making default settings. More...
|
|
TRestMetadata * | InstantiateChildMetadata (int index, std::string pattern="") |
| This method will retrieve a new TRestMetadata instance of a child element of the present TRestMetadata instance based on the index given by argument, which defines the element order to be retrieved, 0 for first element found, 1 for the second element found, etc. More...
|
|
TRestMetadata * | InstantiateChildMetadata (std::string pattern="", std::string name="") |
| This method will retrieve a new TRestMetadata instance of a child element of the present TRestMetadata instance based on the name given by argument. More...
|
|
Bool_t | isCleanState () const |
|
Bool_t | isOfficialRelease () const |
|
Int_t | LoadConfigFromBuffer () |
| Initialize data from a string element buffer. More...
|
|
Int_t | LoadConfigFromElement (TiXmlElement *eSectional, TiXmlElement *eGlobal, std::map< std::string, std::string > envs={}) |
| Main starter method. More...
|
|
Int_t | LoadConfigFromFile (const std::string &configFilename, const std::string §ionName="") |
| Give the file name, find out the corresponding section. Then call the main starter. More...
|
|
virtual void | Merge (const TRestMetadata &) |
|
TRestMetadata & | operator= (const TRestMetadata &) |
|
void | Print () |
| Implementing TObject::Print() method. More...
|
|
void | PrintConfigBuffer () |
| Print the config xml section stored in the class. More...
|
|
void | PrintMessageBuffer () |
| Print the buffered message. More...
|
|
virtual void | PrintMetadata () |
| Implemented it in the derived metadata class to print out specific metadata information. More...
|
|
void | PrintTimeStamp (Double_t timeStamp) |
| Print the current time on local machine. More...
|
|
void | SetConfigFile (std::string configFilename) |
| set config file path from external More...
|
|
void | SetError (std::string message="", bool print=true, int maxPrint=5) |
| A metadata class may use this method to signal that something went wrong. More...
|
|
void | SetHostmgr (TRestManager *m) |
| Set the host manager for this class. More...
|
|
void | SetSectionName (std::string sName) |
| set the section name, clear the section content More...
|
|
void | SetVerboseLevel (TRestStringOutput::REST_Verbose_Level v) |
| sets the verbose level More...
|
|
void | SetWarning (std::string message="", bool print=true, int maxPrint=5) |
| A metadata class may use this method to signal that something went wrong. More...
|
|
void | Store () |
| If this method is called the metadata information will be stored in disk. More...
|
|
| TRestMetadata (const TRestMetadata &) |
|
virtual void | UpdateMetadataMembers () |
| Method to allow implementation of specific metadata members updates at inherited classes. More...
|
|
virtual Int_t | Write (const char *name=nullptr, Int_t option=0, Int_t bufsize=0) |
| overwriting the write() method with fStore considered More...
|
|
void | WriteConfigBuffer (std::string fName) |
| Writes the config buffer to a file in append mode. More...
|
|
| ~TRestMetadata () |
| TRestMetadata default destructor. More...
|
|
|
virtual void | AddPool (std::string message) |
|
virtual void | InitFromConfigFile () override |
| To make settings from rml file. This method must be implemented in the derived class. More...
|
|
virtual void | Initialize () override |
| Making default settings. More...
|
|
bool | lock (messagepool_t *pool, int timeoutMs=1000) |
|
bool | unlock (messagepool_t *pool, int timeoutMs=1000) |
|
std::string | ElementToString (TiXmlElement *ele) |
| Convert an TiXmlElement object to string. More...
|
|
TVector2 | Get2DVectorParameterWithUnits (std::string parName, TiXmlElement *e, TVector2 defaultValue=TVector2(-1, -1)) |
|
TVector3 | Get3DVectorParameterWithUnits (std::string parName, TiXmlElement *e, TVector3 defaultValue=TVector3(-1, -1, -1)) |
|
Double_t | GetDblParameterWithUnits (std::string parName, TiXmlElement *e, Double_t defaultVal=PARAMETER_NOT_FOUND_DBL) |
|
TiXmlElement * | GetElement (std::string eleDeclare, TiXmlElement *e=nullptr) |
| Get an xml element from a given parent element, according to its declaration. More...
|
|
TiXmlElement * | GetElementFromFile (std::string configFilename, std::string NameOrDecalre="") |
| Open an xml encoded file and find its element. More...
|
|
TiXmlElement * | GetElementWithName (std::string eleDeclare, std::string eleName) |
| Get an xml element from the default location, according to its declaration and its field "name". More...
|
|
TiXmlElement * | GetElementWithName (std::string eleDeclare, std::string eleName, TiXmlElement *e) |
| Get an xml element from a given parent element, according to its declaration and its field "name". More...
|
|
std::string | GetFieldValue (std::string fieldName, std::string definition, size_t fromPosition=0) |
| Gets field value in an xml element string by parsing it as TiXmlElement. More...
|
|
std::string | GetFieldValue (std::string parName, TiXmlElement *e) |
| Returns the field value of an xml element which has the specified name. More...
|
|
std::string | GetKEYDefinition (std::string keyName) |
| Gets the first key definition for keyName found inside buffer starting at fromPosition. More...
|
|
std::string | GetKEYDefinition (std::string keyName, size_t &Position) |
|
std::string | GetKEYDefinition (std::string keyName, size_t &Position, std::string buffer) |
|
std::string | GetKEYDefinition (std::string keyName, std::string buffer) |
|
std::string | GetKEYStructure (std::string keyName) |
| Gets the first key structure for keyName found inside buffer after fromPosition. More...
|
|
std::string | GetKEYStructure (std::string keyName, size_t &Position) |
|
std::string | GetKEYStructure (std::string keyName, size_t &Position, std::string buffer) |
|
std::string | GetKEYStructure (std::string keyName, size_t &Position, TiXmlElement *ele) |
|
std::string | GetKEYStructure (std::string keyName, std::string buffer) |
|
TiXmlElement * | GetNextElement (TiXmlElement *e) |
| Get the next sibling xml element of this element, with same eleDeclare. More...
|
|
std::string | GetParameter (std::string parName, size_t &pos, std::string inputString) |
| Returns the value for the parameter name parName found in inputString. More...
|
|
std::string | GetParameter (std::string parName, TiXmlElement *e, TString defaultValue=PARAMETER_NOT_FOUND_STR) |
| Returns the value for the parameter named parName in the given section. More...
|
|
std::pair< std::string, std::string > | GetParameterAndUnits (std::string parname, TiXmlElement *e=nullptr) |
| Returns the unit string of the given parameter of the given xml section. More...
|
|
std::map< std::string, std::string > | GetParametersList () |
| It retrieves a map of all parameter:value found in the metadata class. More...
|
|
TString | GetSearchPath () |
|
virtual void | InitFromConfigFile () |
| To make settings from rml file. This method must be implemented in the derived class. More...
|
|
virtual void | InitFromRootFile () |
| Method called after the object is retrieved from root file. More...
|
|
virtual Int_t | LoadSectionMetadata () |
| This method does some preparation of xml section. More...
|
|
void | ReadAllParameters () |
| Reflection methods, Set value of a datamember in class according to TRestMetadata::fElement. More...
|
|
void | ReadParametersList (std::map< std::string, std::string > &list) |
| It reads a parameter list and associates it to its corresponding metadata member. par0 --> fPar0. More...
|
|
std::string | ReplaceConstants (const std::string buffer) |
| Identifies "constants" in the input buffer, and replace them with corresponding value. More...
|
|
std::string | ReplaceVariables (const std::string buffer) |
| Identifies environmental variable replacing marks in the input buffer, and replace them with corresponding value. More...
|
|
void | ReSetVersion () |
| Resets the version of TRestRun to REST_RELEASE. Only TRestRun is allowed to update version. More...
|
|
std::string | SearchFile (std::string filename) |
| Search files in current directory and directories specified in "searchPath" section. More...
|
|
void | SetLibraryVersion (TString version) |
| Set the library version of this metadata class. More...
|
|
TiXmlElement * | StringToElement (std::string definition) |
| Parsing a string into TiXmlElement object. More...
|
|
| TRestMetadata () |
| TRestMetadata default constructor. More...
|
|
| TRestMetadata (const char *configFilename) |
| constructor More...
|
|
void | UnSetVersion () |
| Resets the version of TRestRun to -1, in case the file is old REST file. Only TRestRun is allowed to update version. More...
|
|