#include <TGo4ThreadManager.h>
Public Types | |
enum | { fguTEXTLENGTH = 256 } |
Public Member Functions | |
TGo4ThreadManager (const TGo4ThreadManager &right) | |
TGo4ThreadManager (const char *name, Bool_t blockingmode=kTRUE, Bool_t autostart=kTRUE, Bool_t autocreate=kTRUE) | |
virtual | ~TGo4ThreadManager () |
void | SetTimer (TGo4AppControlTimer *ctrltimer) |
TGo4ThreadHandler * | GetWorkHandler () const |
Bool_t | BlockApp () |
Bool_t | UnBlockApp (Int_t mode=0) |
virtual Int_t | Initialization () |
Bool_t | IsInitDone () const |
Bool_t | IsTerminating () const |
Bool_t | IsTerminateApp () const |
Bool_t | IsAppBlocking () const |
Bool_t | IsBeingQuit () const |
void | SetBeingQuit (Bool_t on) |
void | Launch () |
virtual void | Terminate (Bool_t termapp=kTRUE) |
virtual void | TerminateFast () |
Static Public Attributes | |
static const Long_t | fglTIMERPERIOD = 200 |
Protected Attributes | |
Bool_t | fbInitDone |
Bool_t | fbTerminating |
Bool_t | fbTerminateApplication |
Bool_t | fbAppBlocking |
Bool_t | fbAutoCreate |
Bool_t | fbAutoStart |
Int_t | fbBeingQuit |
TGo4AppControlTimer * | fxBlocker |
TGo4ThreadHandler * | fxWorkHandler |
Private Member Functions | |
TGo4ThreadManager () |
Base class for classes that shall be accessed from a thread /runnable instance
Definition at line 30 of file TGo4ThreadManager.h.
anonymous enum |
Default textlength for char arrays
Definition at line 99 of file TGo4ThreadManager.h.
TGo4ThreadManager::TGo4ThreadManager | ( | const TGo4ThreadManager & | right | ) |
Definition at line 26 of file TGo4ThreadManager.cxx.
References fxBlocker, fxWorkHandler, and GO4TRACE.
TGo4ThreadManager::TGo4ThreadManager | ( | const char * | name, | |
Bool_t | blockingmode = kTRUE , |
|||
Bool_t | autostart = kTRUE , |
|||
Bool_t | autocreate = kTRUE | |||
) |
ctor parameters: blockingmode=true: gApplication is blocked by timer autostart=true: all thread runnables start their work on Initialization() autocreate=true: all threads added to handler in threadmanager ctor are created on Launch()
Definition at line 37 of file TGo4ThreadManager.cxx.
References TGo4Log::Debug(), fbAppBlocking, fbAutoCreate, fbAutoStart, fglTIMERPERIOD, fxBlocker, fxWorkHandler, and GO4TRACE.
TGo4ThreadManager::~TGo4ThreadManager | ( | ) | [virtual] |
Definition at line 73 of file TGo4ThreadManager.cxx.
References fxWorkHandler, and GO4TRACE.
TGo4ThreadManager::TGo4ThreadManager | ( | ) | [private] |
Bool_t TGo4ThreadManager::BlockApp | ( | ) |
Blocks gSystem by means of the blocking timer
Definition at line 81 of file TGo4ThreadManager.cxx.
References fbAppBlocking, fbTerminating, fxBlocker, fxWorkHandler, GO4TRACE, TGo4ThreadHandler::IsOperating(), and TGo4AppControlTimer::SetApplicationRun().
Referenced by TGo4ThreadHandler::Cancel(), TGo4ThreadHandler::Create(), TGo4ThreadHandler::CreateAll(), Initialization(), TGo4ThreadHandler::ReCreate(), TGo4ThreadHandler::RemoveThread(), TGo4TestRunnable::Run(), TGo4ThreadHandler::Start(), and TGo4ThreadHandler::StartAll().
TGo4ThreadHandler* TGo4ThreadManager::GetWorkHandler | ( | ) | const [inline] |
Access to ThreadHandler for working threads
Definition at line 48 of file TGo4ThreadManager.h.
References fxWorkHandler.
Referenced by TGo4ServerTask::ConnectorThreadIsStopped(), TGo4Slave::GetThreadHandler(), TGo4AppControlTimer::Notify(), TGo4TestRunnable::Run(), TGo4ServerTask::StartConnectorThread(), TGo4ExampleServer::StartWorkThreads(), TGo4ServerTask::StopConnectorThread(), TGo4ExampleServer::StopWorkThreads(), TGo4Task::TGo4Task(), TGo4TaskHandler::TGo4TaskHandler(), TGo4ThreadException::TGo4ThreadException(), TGo4Display::~TGo4Display(), and TGo4ServerTask::~TGo4ServerTask().
Int_t TGo4ThreadManager::Initialization | ( | ) | [virtual] |
Definition at line 157 of file TGo4ThreadManager.cxx.
References TGo4ThreadHandler::AllCreated(), BlockApp(), TGo4Log::Debug(), TGo4ThreadHandler::DumpThreads(), fbAutoCreate, fbAutoStart, fbInitDone, fxWorkHandler, GO4TRACE, and TGo4ThreadHandler::StartAll().
Referenced by TGo4AppControlTimer::Notify().
Bool_t TGo4ThreadManager::IsAppBlocking | ( | ) | const [inline] |
Returns true if threadmanager works in root system blocking mode
Definition at line 71 of file TGo4ThreadManager.h.
References fbAppBlocking.
Bool_t TGo4ThreadManager::IsBeingQuit | ( | ) | const [inline] |
Returns true if threadmanager works in root system blocking mode
Definition at line 75 of file TGo4ThreadManager.h.
References fbBeingQuit.
Referenced by TGo4TaskOwner::IsBeingQuit().
Bool_t TGo4ThreadManager::IsInitDone | ( | ) | const [inline] |
Definition at line 63 of file TGo4ThreadManager.h.
References fbInitDone.
Bool_t TGo4ThreadManager::IsTerminateApp | ( | ) | const [inline] |
Definition at line 68 of file TGo4ThreadManager.h.
References fbTerminateApplication.
Referenced by TGo4AppControlTimer::Notify().
Bool_t TGo4ThreadManager::IsTerminating | ( | ) | const [inline] |
returns termination status of Threadmanager
Definition at line 66 of file TGo4ThreadManager.h.
References fbTerminating.
Referenced by TGo4HistogramServer::ConnectObjectClient(), TGo4AppControlTimer::Notify(), TGo4StatusRunnable::Run(), TGo4DataRunnable::Run(), TGo4CommandRunnable::Run(), TGo4TaskManager::ServeClient(), TGo4TaskManager::WaitForClientRemoved(), TGo4ServerTask::WaitForConnection(), TGo4HistogramServer::WaitForConnection(), TGo4HistogramServer::WaitForOpen(), and TGo4TaskHandler::WaitGetPort().
void TGo4ThreadManager::Launch | ( | ) |
This Method has to be called to create the startup threads and to turn on the application control timer. Usually this is done at the end of the user's threadmanager constructor. The idea is that no thread should be started unless the user initializations are done; therefore, its up to the user to define when to Launch.
Definition at line 215 of file TGo4ThreadManager.cxx.
References TGo4ThreadHandler::CreateAll(), fbAutoCreate, fxBlocker, fxWorkHandler, and GO4TRACE.
Referenced by TGo4AnalysisClient::Constructor(), TGo4ClientTask::TGo4ClientTask(), TGo4Display::TGo4Display(), TGo4ExampleClient::TGo4ExampleClient(), TGo4ExampleServer::TGo4ExampleServer(), TGo4ServerTask::TGo4ServerTask(), and TGo4TestThreadManager::TGo4TestThreadManager().
void TGo4ThreadManager::SetBeingQuit | ( | Bool_t | on | ) | [inline] |
Definition at line 77 of file TGo4ThreadManager.h.
References fbBeingQuit.
Referenced by TGo4TaskHandlerAbortException::Handle(), and TGo4CommandRunnable::Run().
void TGo4ThreadManager::SetTimer | ( | TGo4AppControlTimer * | ctrltimer | ) | [inline] |
user can exchange the standard control timer by an own derived one by this method
Definition at line 45 of file TGo4ThreadManager.h.
References fxBlocker.
void TGo4ThreadManager::Terminate | ( | Bool_t | termapp = kTRUE |
) | [virtual] |
deletes the Manager instance via Control timer. If termap is true, also terminates the root Application
Definition at line 232 of file TGo4ThreadManager.cxx.
References TGo4Log::Debug(), fbTerminateApplication, fbTerminating, fxWorkHandler, GO4TRACE, TGo4ThreadHandler::StopAll(), and UnBlockApp().
Referenced by TGo4TerminateException::Handle(), TerminateFast(), and TGo4Runnable::UnexpectedCatch().
void TGo4ThreadManager::TerminateFast | ( | ) | [virtual] |
Alternative termination in case of error
Definition at line 246 of file TGo4ThreadManager.cxx.
References Terminate().
Bool_t TGo4ThreadManager::UnBlockApp | ( | Int_t | mode = 0 |
) |
Wakes up the control timer waiting for his condition; parameter mode specifies whether timer will block again at next turn (mode=0), timer will block when all threads are up (mode=1), or timer will not block again unless the next Block call, i.e. applicationrun flag is reset (mode=2)
Definition at line 109 of file TGo4ThreadManager.cxx.
References fxBlocker, TGo4AppControlTimer::GetApplicationRun(), TGo4AppControlTimer::GetCondition(), GO4TRACE, and TGo4AppControlTimer::SetApplicationRun().
Referenced by TGo4ThreadHandler::Cancel(), TGo4ThreadHandler::Create(), TGo4ThreadHandler::CreateAll(), TGo4ThreadHandler::ReCreate(), TGo4ThreadHandler::RemoveThread(), TGo4TestRunnable::Run(), TGo4ThreadHandler::Start(), TGo4ThreadHandler::StartAll(), and Terminate().
Bool_t TGo4ThreadManager::fbAppBlocking [protected] |
true if threadmanager shall block root gSystem using the AppControlTimer; false if gSystem shall never be blocked (necessary for gui)
Definition at line 116 of file TGo4ThreadManager.h.
Referenced by BlockApp(), IsAppBlocking(), TGo4ThreadManager(), and TGo4Task::UpdateStatus().
Bool_t TGo4ThreadManager::fbAutoCreate [protected] |
If true, TThreads of all go4threads in list shall be created automatically on calling Launch().
Definition at line 120 of file TGo4ThreadManager.h.
Referenced by Initialization(), Launch(), TGo4ThreadManager(), and TGo4Task::UpdateStatus().
Bool_t TGo4ThreadManager::fbAutoStart [protected] |
If true, workfunctions (runnable Run()) of all go4threads in list shall be started automatically on Initialization. If false, TThreads may be running, but workfunctions suspend in condition wait.
Definition at line 125 of file TGo4ThreadManager.h.
Referenced by Initialization(), TGo4ThreadManager(), and TGo4Task::UpdateStatus().
Int_t TGo4ThreadManager::fbBeingQuit [protected] |
Definition at line 130 of file TGo4ThreadManager.h.
Referenced by IsBeingQuit(), and SetBeingQuit().
Bool_t TGo4ThreadManager::fbInitDone [protected] |
is set kTRUE after first Initialize is done
Definition at line 104 of file TGo4ThreadManager.h.
Referenced by Initialization(), TGo4Task::Initialization(), TGo4ClientTask::Initialization(), IsInitDone(), and TGo4Task::UpdateStatus().
Bool_t TGo4ThreadManager::fbTerminateApplication [protected] |
If true, terminate complete application. If false, only terminate threadmanager instance.
Definition at line 111 of file TGo4ThreadManager.h.
Referenced by IsTerminateApp(), and Terminate().
Bool_t TGo4ThreadManager::fbTerminating [protected] |
flag showing termination status
Definition at line 107 of file TGo4ThreadManager.h.
Referenced by BlockApp(), IsTerminating(), Terminate(), and TGo4Task::UpdateStatus().
const Long_t TGo4ThreadManager::fglTIMERPERIOD = 200 [static] |
Period in ms for the application control timer
Definition at line 96 of file TGo4ThreadManager.h.
Referenced by TGo4ThreadManager().
TGo4AppControlTimer* TGo4ThreadManager::fxBlocker [protected] |
Composition of Application control timer. 1 1
Definition at line 136 of file TGo4ThreadManager.h.
Referenced by BlockApp(), Launch(), SetTimer(), TGo4ThreadManager(), and UnBlockApp().
TGo4ThreadHandler* TGo4ThreadManager::fxWorkHandler [protected] |
Thread handler aggregate (threadsafe list of go4 threads) 1 1
Definition at line 142 of file TGo4ThreadManager.h.
Referenced by BlockApp(), TGo4ClientTask::ConnectServer(), GetWorkHandler(), Initialization(), TGo4Task::Initialization(), Launch(), TGo4ExampleClient::Start(), TGo4ExampleClient::Stop(), TGo4Task::SubmitLocalCommand(), Terminate(), TGo4ExampleClient::TGo4ExampleClient(), TGo4ExampleServer::TGo4ExampleServer(), TGo4ServerTask::TGo4ServerTask(), TGo4TestThreadManager::TGo4TestThreadManager(), TGo4ThreadManager(), TGo4ExampleClient::~TGo4ExampleClient(), TGo4ExampleServer::~TGo4ExampleServer(), and ~TGo4ThreadManager().