GSI Object Oriented Online Offline (Go4)
GO4-6.3.0
|
#include <TGo4AppControlTimer.h>
Public Member Functions | |
TGo4AppControlTimer ()=delete | |
TGo4AppControlTimer (TGo4ThreadManager *manager, Long_t msperiod=3000, Bool_t mode=kTRUE) | |
virtual | ~TGo4AppControlTimer () |
void | SetManager (TGo4ThreadManager *parent) |
Bool_t | Notify () override |
const TCondition * | GetCondition () const |
void | SetApplicationRun (Bool_t flag=kTRUE) |
Bool_t | GetApplicationRun () const |
Protected Attributes | |
TGo4ThreadManager * | fxManager {nullptr} |
Static Protected Attributes | |
static UInt_t | fguTERMWAIT = 3000 |
static Int_t | fgiTERMWAITCYCLES = 5 |
Private Attributes | |
Bool_t | fbApplicationRun {kFALSE} |
TCondition * | fxCondition {nullptr} |
Timer with main purpose to block the root TApplication loop during thread execution. Moreover, this timer calls Initialization() function of threadmanager, which can be overridden by user to define any actions which should not be run within a thread (critical root system calls, like opening TServerSocket, should be done within the application loop, i.e. in the timer). In threadmanager non-blocking-mode, Initialization() is called from timer regularly with the period specified in threadmanager; in blocking mode it is called once after each threadmanager UnBlockApp(). This timer is also responsible for proper termination of the threadmanager.
Definition at line 39 of file TGo4AppControlTimer.h.
|
delete |
TGo4AppControlTimer::TGo4AppControlTimer | ( | TGo4ThreadManager * | manager, |
Long_t | msperiod = 3000 , |
||
Bool_t | mode = kTRUE |
||
) |
Definition at line 29 of file TGo4AppControlTimer.cxx.
References fxCondition, and GO4TRACE.
|
virtual |
Definition at line 39 of file TGo4AppControlTimer.cxx.
References fxCondition, and GO4TRACE.
|
inline |
Status of the application run flag. If true, root application is not blocked.
Definition at line 72 of file TGo4AppControlTimer.h.
References fbApplicationRun.
Referenced by TGo4ThreadManager::UnBlockApp().
|
inline |
Returns handle for internal condition which is used to block the gSystem.
Definition at line 59 of file TGo4AppControlTimer.h.
References fxCondition.
Referenced by TGo4ThreadManager::UnBlockApp().
|
override |
Routine called from TTimer on timeout
Definition at line 48 of file TGo4AppControlTimer.cxx.
References TGo4ThreadHandler::AllWaiting(), TGo4Log::Debug(), TGo4Log::Error(), fbApplicationRun, fgiTERMWAITCYCLES, fguTERMWAIT, fxCondition, fxManager, TGo4ThreadManager::GetWorkHandler(), GO4TRACE, TGo4ThreadManager::Initialization(), TGo4ThreadManager::IsTerminateApp(), TGo4ThreadManager::IsTerminating(), and TGo4ThreadHandler::StopAll().
Referenced by SetManager().
|
inline |
Switches between blocking and non blocking mode of the timer. If set to kTRUE, timer will not block the root system. If set to kFALSE, timer will suspend in a condition wait and therefore the InnerLoop() of root is blocked.
Definition at line 67 of file TGo4AppControlTimer.h.
References fbApplicationRun.
Referenced by TGo4ThreadManager::BlockApp(), and TGo4ThreadManager::UnBlockApp().
|
inline |
Sets reference to new thread manager
Definition at line 50 of file TGo4AppControlTimer.h.
|
private |
Definition at line 101 of file TGo4AppControlTimer.h.
Referenced by GetApplicationRun(), Notify(), and SetApplicationRun().
|
staticprotected |
On Termination, Notify will test fgiTERMWAITCYCLES times if Runnables are stopped, i.e. all TGo4Threads are in TCondition wait (safe cancelling point); afterwards, threads are deleted anyway
Definition at line 90 of file TGo4AppControlTimer.h.
Referenced by Notify().
|
staticprotected |
time in ms to wait for all Runnables being stopped before Termination; after this time, the AllWaiting() of TGo4ThreadHandler is tested again, until the max number of testing cycles (fgiTERMWAITCYCLES) is reached; then Termination is done anyway
Definition at line 82 of file TGo4AppControlTimer.h.
Referenced by Notify().
|
private |
Definition at line 103 of file TGo4AppControlTimer.h.
Referenced by GetCondition(), Notify(), TGo4AppControlTimer(), and ~TGo4AppControlTimer().
|
protected |
Backlink to threadmanager who owns this timer. 1 1
Definition at line 97 of file TGo4AppControlTimer.h.
Referenced by Notify(), and SetManager().