#include <TGo4AppControlTimer.h>
Public Member Functions | |
TGo4AppControlTimer (TGo4ThreadManager *manager, Long_t msperiod=3000, Bool_t mode=kTRUE) | |
virtual | ~TGo4AppControlTimer () |
void | SetManager (TGo4ThreadManager *parent) |
virtual Bool_t | Notify () |
const TCondition * | GetCondition () const |
void | SetApplicationRun (Bool_t flag=kTRUE) |
Bool_t | GetApplicationRun () |
Protected Attributes | |
TGo4ThreadManager * | fxManager |
Static Protected Attributes | |
static UInt_t | fguTERMWAIT = 3000 |
static Int_t | fgiTERMWAITCYCLES = 5 |
Private Member Functions | |
TGo4AppControlTimer () | |
Private Attributes | |
Bool_t | fbApplicationRun |
TCondition * | fxCondition |
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.
TGo4AppControlTimer::TGo4AppControlTimer | ( | TGo4ThreadManager * | manager, | |
Long_t | msperiod = 3000 , |
|||
Bool_t | mode = kTRUE | |||
) |
Definition at line 28 of file TGo4AppControlTimer.cxx.
References fxCondition, fxManager, and GO4TRACE.
TGo4AppControlTimer::~TGo4AppControlTimer | ( | ) | [virtual] |
Definition at line 39 of file TGo4AppControlTimer.cxx.
References fxCondition, and GO4TRACE.
TGo4AppControlTimer::TGo4AppControlTimer | ( | ) | [private] |
Bool_t TGo4AppControlTimer::GetApplicationRun | ( | ) |
Status of the application run flag. If true, root application is _not_ blocked.
Definition at line 139 of file TGo4AppControlTimer.cxx.
References fbApplicationRun, and GO4TRACE.
Referenced by TGo4ThreadManager::UnBlockApp().
const TCondition* TGo4AppControlTimer::GetCondition | ( | ) | const [inline] |
Returns handle for internal condition which is used to block the gSystem.
Definition at line 56 of file TGo4AppControlTimer.h.
References fxCondition.
Referenced by TGo4ThreadManager::UnBlockApp().
Bool_t TGo4AppControlTimer::Notify | ( | ) | [virtual] |
Routine called from TTimer on timeout
Definition at line 50 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().
void TGo4AppControlTimer::SetApplicationRun | ( | Bool_t | flag = kTRUE |
) | [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 64 of file TGo4AppControlTimer.h.
References fbApplicationRun.
Referenced by TGo4ThreadManager::BlockApp(), and TGo4ThreadManager::UnBlockApp().
void TGo4AppControlTimer::SetManager | ( | TGo4ThreadManager * | parent | ) | [inline] |
Sets reference to new thread manager
Definition at line 47 of file TGo4AppControlTimer.h.
References fxManager.
Bool_t TGo4AppControlTimer::fbApplicationRun [private] |
Definition at line 98 of file TGo4AppControlTimer.h.
Referenced by GetApplicationRun(), Notify(), and SetApplicationRun().
Int_t TGo4AppControlTimer::fgiTERMWAITCYCLES = 5 [static, protected] |
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 87 of file TGo4AppControlTimer.h.
Referenced by Notify().
UInt_t TGo4AppControlTimer::fguTERMWAIT = 3000 [static, protected] |
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 79 of file TGo4AppControlTimer.h.
Referenced by Notify().
TCondition* TGo4AppControlTimer::fxCondition [private] |
Definition at line 100 of file TGo4AppControlTimer.h.
Referenced by GetCondition(), Notify(), TGo4AppControlTimer(), and ~TGo4AppControlTimer().
TGo4ThreadManager* TGo4AppControlTimer::fxManager [protected] |
Backlink to threadmanager who owns this timer. 1 1
Definition at line 94 of file TGo4AppControlTimer.h.
Referenced by Notify(), SetManager(), and TGo4AppControlTimer().