DABC (Data Acquisition Backbone Core)
2.9.9
|
Base class for user-specific applications. More...
#include <dabc/Application.h>
Public Types | |
typedef void * | ExternalFunction() |
![]() | |
enum | EPriotiryLevels { priorityMaximum = 0 , priorityMinimum = -1 , priorityDefault = -7 , priorityMagic = -77 } |
enum | EWorkerEventsCodes { evntFirstCore = 1 , evntFirstAddOn = 100 , evntFirstSystem = 200 , evntFirstUser = 1000 } |
Public Member Functions | |
Application (const char *classname=0) | |
virtual const char * | ClassName () const |
Returns class name of the object instance. More... | |
virtual bool | Find (ConfigIO &cfg) |
Method to locate object in xml file. More... | |
std::string | GetState () const |
virtual | ~Application () |
![]() | |
bool | ActivateTimeout (double tmout_sec) |
Method used to produce timeout events in the worker. More... | |
Command | Assign (Command cmd) |
! Assign command with processor before command be submitted to other processor This produce ReplyCommand() call when command execution is finished Command itself returned if operation was successful, otherwise null() command More... | |
void | AssignAddon (WorkerAddon *addon) |
Assigns addon to the worker Should be called before worker assigned to the thread. More... | |
bool | AssignToThread (ThreadRef thrd, bool sync=true) |
Assign worker to thread, worker becomes active immediately. More... | |
bool | CanSubmitCommand () const |
Returns true if command can be submitted to worker. More... | |
RecordField | Cfg (const std::string &name, Command cmd=nullptr) const |
Returns configuration field of specified name Configuration value of specified name searched in following places: More... | |
bool | DettachFromThread () |
Detach worker from the thread, later worker can be assigned to some other thread Method especially useful to normally finish object recursion (if it possible). More... | |
bool | Execute (Command cmd, double tmout=-1.) |
Execute command in the processor. More... | |
bool | Execute (const std::string &cmd, double tmout=-1.) |
bool | HasThread () const |
Indicates if pointer on thread is not zero; thread-safe. More... | |
bool | IsOwnThread () const |
Returns true if called from thread. More... | |
bool | MakeThreadForWorker (const std::string &thrdname="") |
Creates appropriate thread for worker and assign worker to the thread. More... | |
Parameter | Par (const std::string &name) const |
Returns reference on worker parameter object. More... | |
virtual std::string | RequiredThrdClass () const |
Method returns name of required thread class for processor. More... | |
void | SetWorkerPriority (int nq) |
bool | Submit (Command cmd) |
Submit command for execution in the processor. More... | |
ThreadRef | thread () |
Return reference on the worker thread; thread-safe. More... | |
std::string | ThreadName () const |
Returns name of the worker thread; thread-safe More... | |
Worker (Reference parent, const std::string &name) | |
std::string | WorkerAddress (bool full=true) |
Return address, which can be used to submit command to the worker If full specified, command can be submitted from any node, which has connection to this node. More... | |
uint32_t | WorkerId () const |
int | WorkerPriority () const |
virtual | ~Worker () |
![]() | |
bool | AddChild (Object *child, bool withmutex=true) throw () |
Add object to list of child objects, thread safe More... | |
bool | AddChildAt (Object *child, unsigned pos, bool withmutex=true) |
Add object to list of child objects at specified position. More... | |
Object * | FindChild (const char *name) const |
returns pointer on child object with given name More... | |
Reference | FindChildRef (const char *name, bool force=false) const throw () |
returns reference on child object with given name More... | |
bool | GetAllChildRef (ReferencesVector *vect) const |
Object * | GetChild (unsigned n) const |
returns pointer on child object More... | |
Reference | GetChildRef (unsigned n) const |
returns reference on child object More... | |
Reference | GetFolder (const std::string &name, bool force=false) throw () |
Return folder of specified name, no special symbols allowed. More... | |
const char * | GetName () const |
Returns name of the object, thread safe More... | |
Object * | GetParent () const |
Returns pointer on parent object, thread safe More... | |
Reference | GetParentRef () const |
bool | IsChildsHidden () const |
Return true if object wants to hide childs from hierarchy scan, thread safe More... | |
bool | IsHidden () const |
Return true if object wants to be hidden from hierarchy scan, thread safe More... | |
bool | IsLogging () const |
Return true if object selected for logging, thread safe More... | |
bool | IsName (const char *str) const |
Checks if object name is same as provided string, thread safe More... | |
bool | IsName (const char *str, int len) const |
Checks if object name is same as provided, thread safe More... | |
bool | IsName (const std::string &str) const |
Checks if object name is same as provided string, thread safe More... | |
bool | IsNameMatch (const std::string &mask) const |
Check if object name match to the mask. More... | |
bool | IsOwner () const |
Returns true if object is owner of its children, thread safe More... | |
bool | IsParent (Object *obj) const |
Checks if specified argument is in the list of object parents. More... | |
bool | IsTopXmlLevel () const |
Return true if object should be searched in the top level of the xml file, thread safe More... | |
std::string | ItemName (bool compact=true) const |
Produce string, which can be used as name argument in dabc::mgr.FindItem(name) call. More... | |
unsigned | NumChilds () const |
returns number of child objects More... | |
Object (const std::string &name, unsigned flags=flIsOwner) | |
Resolve problem with child-parent mutex locking. More... | |
Object (Reference parent, const std::string &name, unsigned flags=flIsOwner) | |
virtual void | Print (int lvl=0) |
Print object content on debug output. More... | |
bool | RemoveChild (Object *child, bool cleanup=true) throw () |
Detach child from parent object If cleanup==true and parent is owner of child, child will be destroyed. More... | |
bool | RemoveChildAt (unsigned n, bool cleanup=true) throw () |
Detach child object from parent at specified position If cleanup==true and object is owner of child, child will be destroyed. More... | |
bool | RemoveChilds (bool cleanup=true) |
Remove all childs. More... | |
void | SetLogging (bool on=true) |
Sets logging flag, thread safe More... | |
virtual | ~Object () |
Static Public Member Functions | |
static const char * | StateParName () |
static const char * | stcmdDoConfigure () |
static const char * | stcmdDoHalt () |
static const char * | stcmdDoStart () |
static const char * | stcmdDoStop () |
static const char * | stFailure () |
static const char * | stHalted () |
static const char * | stReady () |
static const char * | stRunning () |
static const char * | stTransition () |
![]() | |
static int | cmd_bool (bool v) |
![]() | |
static void | Destroy (Object *obj) throw () |
User method for object destroyment. More... | |
static void | InspectGarbageCollector () |
\ brief Methods to inspect how many objects pointers are remained More... | |
static bool | NameMatch (const std::string &name, const std::string &mask) |
Check if name matches to specified mask. More... | |
static bool | NameMatchM (const std::string &name, const std::string &mask) |
Check if name matches to specified mask. More... | |
static unsigned | NumInstances () |
Static variable counts total number of objects instances. More... | |
Protected Member Functions | |
virtual void | BuildFieldsMap (RecordFieldsMap *cont) |
Fill fields map, which is relevant for the object Objects hierarchy produced from dabc::Manager. More... | |
virtual bool | CleanupApplication () |
Delete all components created in application, excluding state parameter. More... | |
virtual bool | CreateAppModules () |
Create application modules. More... | |
virtual int | DoTransition (const std::string &state, Command cmd) |
Do action, required to make transition into specified state. More... | |
virtual int | ExecuteCommand (Command cmd) |
Main method where commands are executed. More... | |
virtual bool | IsModulesRunning () |
Return true if all application-relevant modules are running. More... | |
virtual void | ObjectCleanup () |
Cleanup application. More... | |
virtual void | OnThreadAssigned () |
Method called at thread assignment - application may switch into running state. More... | |
virtual double | ProcessTimeout (double) |
Timeout used by application to control stop state of modules and brake application. More... | |
virtual bool | ReplyCommand (Command cmd) |
Reimplement this method to react on command reply Return true if command can be destroyed by framework. More... | |
void | SetAppState (const std::string &name) |
Directly changes value of the state parameter. More... | |
void | SetInitFunc (ExternalFunction *initfunc) |
Set external function, which creates all necessary components of the application. More... | |
virtual int | SMCommandTimeout () const |
Default state machine command timeout. More... | |
virtual bool | StartModules () |
Start all application modules. More... | |
virtual bool | StopModules () |
Stop all application modules. More... | |
![]() | |
bool | _FireDoNothingEvent () |
bool | _FireEvent (uint16_t evid) |
bool | _FireEvent (uint16_t evid, uint32_t arg, int pri=-1) |
bool | _IsFireEvent () const |
bool | ActivateMainLoop () |
virtual void | BeforeHierarchyScan (Hierarchy &h) |
Method called before publisher makes next snapshot of hierarchy. More... | |
void | CancelCommands () |
void | CleanupPublisher (bool sync=true) |
Release reference on publisher and unsubscribe/unpublish all registered entries. More... | |
CommandDefinition | CreateCmdDef (const std::string &name) |
virtual Parameter | CreatePar (const std::string &name, const std::string &kind="") |
virtual bool | DestroyByOwnThread () |
Inherited method from Object, invoked at the moment when worker requested to be destroyed by its thread. More... | |
bool | DestroyPar (const std::string &name) |
Method must be used if worker wants to destroy parameter. More... | |
virtual void | DoWorkerAfterMainLoop () |
Internal - function executed after leaving main loop. More... | |
virtual void | DoWorkerMainLoop () |
Internal - entrance function for main loop execution. More... | |
bool | ExecuteIn (Worker *dest, Command cmd) |
Executes command in specified worker. More... | |
bool | FireEvent (uint16_t evid) |
bool | FireEvent (uint16_t evid, uint32_t arg, int pri=-1) |
Reference | GetPublisher () |
Return reference on publisher. More... | |
bool | IsWorkerActive () const |
Method indicates if worker is running in the thread and accepts normal events. More... | |
virtual void | ObjectDestroyed (Object *) |
Method to clear object reference, will be called from thread context (when possible) More... | |
virtual int | PreviewCommand (Command cmd) |
This method called before command will be executed. More... | |
virtual void | ProcessEvent (const EventId &) |
virtual void | ProcessParameterEvent (const ParameterEvent &evnt) |
Interface method to retrieve subscribed parameter events. More... | |
virtual bool | Publish (const Hierarchy &h, const std::string &path) |
virtual bool | PublishPars (const std::string &path) |
bool | RegisterForParameterEvent (const std::string &mask, bool onlychangeevent=true) |
Subscribe to parameter events from local or remote node. More... | |
void | SetParValue (const std::string &name, const RecordField &v) |
Set parameter value and sync with worker hierarchy. More... | |
void | SetWorkerCfgId (int id=-1) |
Set identifier which can be used in XML configuration ${}# formula It means that correspondent to the ID element of array will be extracted. More... | |
bool | SingleLoop (double tmout) |
virtual bool | Subscribe (const std::string &path) |
virtual bool | Unpublish (const Hierarchy &h, const std::string &path) |
bool | UnregisterForParameterEvent (const std::string &mask) |
Unsubscribe to parameter events from local or remote node. More... | |
virtual bool | Unsubscribe (const std::string &path) |
Worker (const ConstructorPair &pair) | |
Special constructor, designed for inherited classes. More... | |
void | WorkerSleep (double tmout) |
![]() | |
virtual void | _ChildsChanged () |
Method called when new childs are add or old are removed. More... | |
virtual bool | _DoDeleteItself () |
This method is called at the moment when DecReference think that object can be destroyed and wants to return true. More... | |
bool | _IsNormalState () |
Same as IsNormalState() but without mutex lock - user should lock mutex himself. More... | |
virtual Object * | CreateInstance (const std::string &name) |
Method used to create new item to be placed as child of the object. More... | |
void | DeleteThis () |
Method should be used by the object to delete itself. More... | |
bool | DestroyCalledFromOwnThread () |
Internal DABC method, should be called by thread which was requested to destroy object. More... | |
void | FillFullName (std::string &fullname, Object *upto, bool exclude_top_parent=false) const |
Method used to produce full item name,. More... | |
bool | GetFlag (unsigned fl) const |
Return value of selected flag, not thread safe More... | |
bool | IsNormalState () |
Return true if object is in normal state. More... | |
unsigned | NumReferences () |
Return number of references on the object. More... | |
Object (const ConstructorPair &pair, unsigned flags=flIsOwner) | |
Mutex * | ObjectMutex () const |
Returns mutex, used for protection of Object data members. More... | |
void | SetAutoDestroy (bool on=true) |
Set autodestroy flag for the object Once enabled, object will be destroyed when last reference will be cleared. More... | |
void | SetFlag (unsigned fl, bool on=true) |
Change value of selected flag, not thread safe More... | |
void | SetName (const char *name) |
Changes object name. More... | |
void | SetNameDirect (const char *name) |
Changes object name disregard of existing references. More... | |
void | SetOwner (bool on=true) |
Specifies if object will be owner of its new childs. More... | |
Protected Attributes | |
bool | fAnyModuleWasRunning |
indicate when any module was running, than once can automatically stop application More... | |
std::string | fAppClass |
std::vector< std::string > | fAppDevices |
list of devices, created by application More... | |
std::vector< std::string > | fAppModules |
list of modules, created by application More... | |
std::vector< std::string > | fAppPools |
list of pools, created by application More... | |
double | fConnTimeout |
time for connecting all modules, default 5s More... | |
ExternalFunction * | fInitFunc |
bool | fSelfControl |
when true, application itself decide when stop main loop More... | |
![]() | |
WorkerAddonRef | fAddon |
extension of worker for some special events More... | |
Reference | fPublisher |
reference on publisher, once found, remain until end of object live More... | |
ThreadRef | fThread |
reference on the thread, once assigned remain whole time More... | |
Mutex * | fThreadMutex |
pointer on main thread mutex More... | |
bool | fWorkerActive |
indicates if worker can submit events to the thread More... | |
int | fWorkerCfgId |
special ID, can be used in XML configuration in ${}# formula More... | |
CommandsQueue | fWorkerCommands |
all kinds of commands, processed by the worker More... | |
int | fWorkerCommandsLevel |
Number of process commands recursion. More... | |
unsigned | fWorkerFiredEvents |
indicate current balance between fired and processed events, used to correctly halt worker More... | |
Hierarchy | fWorkerHierarchy |
place for publishing of worker parameters More... | |
uint32_t | fWorkerId |
worker id in thread list, used for events submit More... | |
int | fWorkerPriority |
priority of events, submitted by worker to the thread More... | |
![]() | |
int | fObjectBlock |
counter for blocking calls, as long as non-zero, non of child can be removed More... | |
ReferencesVector * | fObjectChilds |
list of the child objects More... | |
unsigned | fObjectFlags |
flag, protected by the mutex More... | |
Mutex * | fObjectMutex |
mutex protects all private property of the object More... | |
std::string | fObjectName |
object name More... | |
Reference | fObjectParent |
reference on the parent object More... | |
int | fObjectRefCnt |
accounts how many references existing on the object, thread safe More... | |
Private Member Functions | |
int | CallInitFunc (Command statecmd, const std::string &tgtstate) |
Friends | |
class | ApplicationRef |
class | Manager |
Additional Inherited Members | |
![]() | |
enum | EFlags { flStateMask = 0x000f , flIsOwner = 0x0010 , flCleanup = 0x0020 , flHasThread = 0x0040 , flAutoDestroy = 0x0080 , flLogging = 0x0100 , flNoMutex = 0x0200 , flHidden = 0x0400 , flChildsHidden = 0x0800 , flTopXmlLevel = 0x1000 } |
![]() | |
static ConstructorPair | MakePair (const std::string &fullname, bool withmanager=true) |
Internal DABC method, used to produce pair - object parent and object name, which is typically should be used as argument in class constructor. More... | |
static ConstructorPair | MakePair (Object *prnt, const std::string &fullname, bool withmanager=true) |
Internal DABC method, used to produce pair - object parent and object name, which is typically should be used as argument in class constructor. More... | |
static ConstructorPair | MakePair (Reference prnt, const std::string &fullname, bool withmanager=true) |
Internal DABC method, used to produce pair - object parent and object name, which is typically should be used as argument in class constructor. More... | |
Base class for user-specific applications.
Defines main methods and minimal set of state-machine states and commands. Main aim of writing user-specific application is creation and management of different application components like modules, transports, devices, which cannot be handled by standard DABC methods. For instance, complex connection scheme or modules creation, dependent from application parameters.
Following states are defined in the state-machine: 'Halted' - initial state, no any object existed 'Ready' - all objects are created and ready for start 'Running' - modules are running 'Failure' - error state
Several commands are provided to switch between states: 'DoConfigure' - switch to 'Ready' state 'DoStart' - switch to 'Running' state 'DoStop' - switch to 'Ready' state from 'Running' 'DoHalt' - switch to 'Halted' state
Any command can be executed at any time - state machine will try to bring system to specifies state.
Commands can be triggered via web interface.
By default, application will be brought to the 'Running' state by the dabc. Only if self='false' specified in <Context>
node attributes, application will be created and remain as is
Definition at line 73 of file Application.h.
typedef void* dabc::Application::ExternalFunction() |
Definition at line 80 of file Application.h.
dabc::Application::Application | ( | const char * | classname = 0 | ) |
Definition at line 24 of file Application.cxx.
|
virtual |
Definition at line 50 of file Application.cxx.
|
inlinestatic |
Definition at line 83 of file Application.h.
|
inlinestatic |
Definition at line 84 of file Application.h.
|
inlinestatic |
Definition at line 85 of file Application.h.
|
inlinestatic |
Definition at line 86 of file Application.h.
|
inlinestatic |
Definition at line 87 of file Application.h.
|
inlinestatic |
Definition at line 90 of file Application.h.
|
inlinestatic |
Definition at line 91 of file Application.h.
|
inlinestatic |
Definition at line 92 of file Application.h.
|
inlinestatic |
Definition at line 93 of file Application.h.
|
private |
Definition at line 227 of file Application.cxx.
|
protectedvirtual |
Main method where commands are executed.
Reimplemented from dabc::Worker.
Definition at line 89 of file Application.cxx.
|
protectedvirtual |
Reimplement this method to react on command reply Return true if command can be destroyed by framework.
Reimplemented from dabc::Worker.
Definition at line 66 of file Application.cxx.
|
protectedvirtual |
Method called at thread assignment - application may switch into running state.
Reimplemented from dabc::Worker.
Definition at line 54 of file Application.cxx.
|
protectedvirtual |
Cleanup application.
Reimplemented from dabc::Worker.
Definition at line 60 of file Application.cxx.
|
protected |
Directly changes value of the state parameter.
Definition at line 140 of file Application.cxx.
|
protected |
Set external function, which creates all necessary components of the application.
Definition at line 135 of file Application.cxx.
|
protectedvirtual |
Return true if all application-relevant modules are running.
Definition at line 216 of file Application.cxx.
|
inlineprotectedvirtual |
Create application modules.
Definition at line 134 of file Application.h.
|
protectedvirtual |
Start all application modules.
Definition at line 389 of file Application.cxx.
|
protectedvirtual |
Stop all application modules.
Definition at line 397 of file Application.cxx.
|
protectedvirtual |
Delete all components created in application, excluding state parameter.
Definition at line 405 of file Application.cxx.
|
protectedvirtual |
Do action, required to make transition into specified state.
Definition at line 146 of file Application.cxx.
|
inlineprotectedvirtual |
Default state machine command timeout.
Definition at line 149 of file Application.h.
|
protectedvirtual |
Fill fields map, which is relevant for the object Objects hierarchy produced from dabc::Manager.
Reimplemented from dabc::Object.
Definition at line 446 of file Application.cxx.
|
protectedvirtual |
Timeout used by application to control stop state of modules and brake application.
Reimplemented from dabc::Worker.
Definition at line 200 of file Application.cxx.
|
inlinestatic |
Definition at line 161 of file Application.h.
|
inline |
Definition at line 163 of file Application.h.
|
virtual |
Method to locate object in xml file.
Can be reimplemented in derived classes to check more attributes like class name
Reimplemented from dabc::Worker.
Definition at line 435 of file Application.cxx.
|
inlinevirtual |
Returns class name of the object instance.
In some cases class name used to correctly locate object in xml file
Reimplemented from dabc::Worker.
Definition at line 167 of file Application.h.
|
friend |
Definition at line 75 of file Application.h.
|
friend |
Definition at line 76 of file Application.h.
|
protected |
Definition at line 101 of file Application.h.
|
protected |
Definition at line 103 of file Application.h.
|
protected |
indicate when any module was running, than once can automatically stop application
Definition at line 105 of file Application.h.
|
protected |
when true, application itself decide when stop main loop
Definition at line 107 of file Application.h.
|
protected |
time for connecting all modules, default 5s
Definition at line 109 of file Application.h.
|
protected |
list of devices, created by application
Definition at line 111 of file Application.h.
|
protected |
list of pools, created by application
Definition at line 112 of file Application.h.
|
protected |
list of modules, created by application
Definition at line 113 of file Application.h.