#include <TGo4Task.h>
Public Member Functions | |
TGo4Task (const char *name, Bool_t blockingmode, Bool_t autostart=kFALSE, Bool_t autocreate=kTRUE, Bool_t ismaster=kFALSE) | |
virtual | ~TGo4Task () |
virtual void | Start () |
virtual void | Stop () |
virtual void | Quit () |
virtual void | KillMain () |
virtual void | RestartMain () |
virtual void | Terminate (Bool_t termapp=kTRUE) |
virtual void | TerminateFast () |
virtual void | ExecuteString (const char *command) |
Bool_t | IsMaster () |
void | SetOwner (TGo4TaskOwner *owner) |
virtual TGo4TaskHandler * | GetTaskHandler () |
virtual TGo4BufferQueue * | GetCommandQueue (const char *task=0) |
virtual TGo4BufferQueue * | GetStatusQueue (const char *task=0) |
virtual TGo4BufferQueue * | GetDataQueue (const char *task=0) |
void | AddUserCommand (TGo4Command *com) |
void | AddUserCommandList (TGo4CommandProtoList *comlist) |
TGo4Status * | NextStatus (Bool_t wait=kTRUE) |
TObject * | NextObject (Bool_t wait=kTRUE) |
virtual TGo4Command * | NextCommand () |
void | SendObject (TObject *obj, const char *receiver=0) |
virtual void | SendStatus (TGo4Status *stat, const char *receiver=0) |
virtual void | SendStatusBuffer () |
TMutex * | GetStatusBufferMutex () |
void | SendStatusMessage (Int_t level, Bool_t printout, const char *text,...) |
void | UpdateStatusBuffer () |
virtual Int_t | Initialization () |
virtual TGo4TaskStatus * | CreateStatus () |
Bool_t | SubmitCommand (const char *name) |
Bool_t | SubmitEmergencyCommand (Go4EmergencyCommand_t val) |
Bool_t | SubmitEmergencyData (Go4EmergencyCommand_t val, const char *receiver=0) |
Bool_t | SubmitLocalCommand (TGo4Command *com) |
Bool_t | SubmitCommand (TGo4Command *com) |
TGo4Command * | MakeCommand (const char *name) |
void | WakeCommandQueue (Int_t id=0) |
virtual Int_t | StartWorkThreads () |
virtual Int_t | StopWorkThreads () |
Bool_t | IsWorkStopped () |
virtual void | LockAll () |
virtual void | UnLockAll () |
virtual void | GetStatus () |
const char * | GetCommanderName () const |
TGo4Master * | GetMaster () |
TGo4Slave * | GetSlave () |
void | SendStopBuffers (const char *taskname=0) |
TBuffer * | GetAbortBuffer () |
Static Public Member Functions | |
static Int_t | Get_fgiTERMID () |
Protected Member Functions | |
virtual TGo4TaskHandlerCommandList * | CreateCommandList () |
TGo4TaskHandlerCommandList * | GetPrototype () |
virtual void | UpdateStatus (TGo4TaskStatus *state) |
TGo4ObjectQueue * | GetLocalCommandQueue () |
void | SetMaster (Bool_t on=kTRUE) |
void | SetWorkIsStopped (Bool_t on) |
Protected Attributes | |
TMutex * | fxStatusMutex |
TBuffer * | fxStatusBuffer |
Private Member Functions | |
void | SetMaster (TGo4Master *m) |
void | SetSlave (TGo4Slave *s) |
Private Attributes | |
TGo4TaskHandlerCommandList * | fxCommandPrototype |
TGo4ObjectQueue * | fxLocalCommandQueue |
Bool_t | fbCommandMaster |
TString | fxCommanderName |
TGo4Master * | fxMaster |
TGo4Slave * | fxSlave |
TGo4TaskOwner * | fxOwner |
Bool_t | fbWorkIsStopped |
TBuffer * | fxStopBuffer |
TBuffer * | fxQuitBuffer |
TBuffer * | fxAbortBuffer |
Static Private Attributes | |
static const Int_t | fgiTERMID = 999 |
Friends | |
class | TGo4LocalCommandRunnable |
class | TGo4Slave |
class | TGo4TaskOwner |
Definition at line 36 of file TGo4Task.h.
TGo4Task::TGo4Task | ( | const char * | name, | |
Bool_t | blockingmode, | |||
Bool_t | autostart = kFALSE , |
|||
Bool_t | autocreate = kTRUE , |
|||
Bool_t | ismaster = kFALSE | |||
) |
Definition at line 38 of file TGo4Task.cxx.
References CreateCommandList(), TGo4BufferQueue::CreateValueBuffer(), fxAbortBuffer, fxCommanderName, fxCommandPrototype, fxLocalCommandQueue, fxQuitBuffer, fxStatusBuffer, fxStatusMutex, fxStopBuffer, GetCommanderName(), TGo4ThreadManager::GetWorkHandler(), TGo4CommandInvoker::Instance(), kComAbortTask, kComCloseInput, kComQuit, TGo4ThreadHandler::NewThread(), TGo4CommandInvoker::Register(), TGo4CommandInvoker::SetCommandList(), TGo4Buffer, and TGo4LocalCommandRunnable.
TGo4Task::~TGo4Task | ( | ) | [virtual] |
Definition at line 71 of file TGo4Task.cxx.
References fxCommandPrototype, fxLocalCommandQueue, fxOwner, fxQuitBuffer, fxStatusBuffer, fxStatusMutex, fxStopBuffer, TGo4TaskOwner::SetTask(), and TGo4CommandInvoker::UnRegister().
void TGo4Task::AddUserCommand | ( | TGo4Command * | com | ) |
Add a user command object to the existing command list. This can be done on the fly. Command receiver name of user command must match "Analysis", "AnalysisClient", or the name of the user analysis to be executed on the remote side.
Definition at line 237 of file TGo4Task.cxx.
References TGo4CommandProtoList::AddCommand(), and fxCommandPrototype.
void TGo4Task::AddUserCommandList | ( | TGo4CommandProtoList * | comlist | ) |
Add a user command list to the existing command list. This can be done on the fly. Commands of the user list are added to the existing command list.
Definition at line 242 of file TGo4Task.cxx.
References fxCommandPrototype.
TGo4TaskHandlerCommandList * TGo4Task::CreateCommandList | ( | ) | [protected, virtual] |
factory method for command list; overridden by implementation
Reimplemented in TGo4ExampleServer.
Definition at line 535 of file TGo4Task.cxx.
Referenced by Initialization(), and TGo4Task().
TGo4TaskStatus * TGo4Task::CreateStatus | ( | ) | [virtual] |
create a status object with information on the current (slave) task. this object may be sent to the master or may be used to restore current status by memento mechanism
Reimplemented in TGo4ClientTask, and TGo4ExampleClient.
Definition at line 433 of file TGo4Task.cxx.
References UpdateStatus().
Referenced by GetStatus(), and UpdateStatusBuffer().
void TGo4Task::ExecuteString | ( | const char * | command | ) | [virtual] |
Execute string command. Uses gInterpreter by default. May be overridden to evaluate go4 command strings in subclass.
Definition at line 146 of file TGo4Task.cxx.
References TGo4Slave::ExecuteString(), and fxSlave.
Referenced by TGo4ComExecLine::ExeCom().
Int_t TGo4Task::Get_fgiTERMID | ( | ) | [static] |
Definition at line 648 of file TGo4Task.cxx.
References fgiTERMID.
Referenced by TGo4ClientTask::DisconnectServer(), TGo4ServerTask::Quit(), TGo4LocalCommandRunnable::Run(), TGo4AnalysisMainRunnable::Run(), and TGo4ServerTask::Shutdown().
TBuffer* TGo4Task::GetAbortBuffer | ( | ) | [inline] |
Use preallocated abort buffer to stop remote socket wait from taskhandler itself
Definition at line 278 of file TGo4Task.h.
References fxAbortBuffer.
const char* TGo4Task::GetCommanderName | ( | ) | const [inline] |
Definition at line 261 of file TGo4Task.h.
References fxCommanderName.
Referenced by Initialization(), SubmitLocalCommand(), and TGo4Task().
TGo4BufferQueue * TGo4Task::GetCommandQueue | ( | const char * | task = 0 |
) | [virtual] |
Reimplemented in TGo4ClientTask, and TGo4ServerTask.
Definition at line 159 of file TGo4Task.cxx.
Referenced by NextCommand(), TGo4AnalysisProxy::ReceiveStatus(), SendStopBuffers(), SubmitCommand(), and SubmitEmergencyCommand().
TGo4BufferQueue * TGo4Task::GetDataQueue | ( | const char * | task = 0 |
) | [virtual] |
Reimplemented in TGo4ClientTask, and TGo4ServerTask.
Definition at line 168 of file TGo4Task.cxx.
Referenced by NextObject(), SendObject(), SendStopBuffers(), and SubmitEmergencyData().
TGo4ObjectQueue* TGo4Task::GetLocalCommandQueue | ( | ) | [inline, protected] |
Definition at line 298 of file TGo4Task.h.
References fxLocalCommandQueue.
Referenced by TGo4LocalCommandRunnable::Run(), and SubmitLocalCommand().
TGo4Master* TGo4Task::GetMaster | ( | ) | [inline] |
Definition at line 263 of file TGo4Task.h.
References fxMaster.
Referenced by TGo4TaskHandlerAbortException::Handle().
TGo4TaskHandlerCommandList * TGo4Task::GetPrototype | ( | ) | [protected] |
get pointer to currently valid command list
Definition at line 173 of file TGo4Task.cxx.
References fxCommandPrototype.
TGo4Slave* TGo4Task::GetSlave | ( | ) | [inline] |
Definition at line 265 of file TGo4Task.h.
References fxSlave.
Referenced by TGo4TaskHandlerAbortException::Handle(), TGo4ServerTask::Quit(), and TGo4ServerTask::Shutdown().
void TGo4Task::GetStatus | ( | ) | [virtual] |
Send current status information of the task to the master; may be re-implemented by application subclass of TGo4Task
Definition at line 576 of file TGo4Task.cxx.
References TGo4BufferQueue::AddBufferFromObject(), CreateStatus(), TGo4Log::Debug(), and GetStatusQueue().
TMutex* TGo4Task::GetStatusBufferMutex | ( | ) | [inline] |
Access to the mutex of status buffer. To be locked outside any command, otherwise deadlocking possible
Definition at line 155 of file TGo4Task.h.
References fxStatusMutex.
Referenced by TGo4AnalysisMainRunnable::Run().
TGo4BufferQueue * TGo4Task::GetStatusQueue | ( | const char * | task = 0 |
) | [virtual] |
Reimplemented in TGo4ClientTask, and TGo4ServerTask.
Definition at line 164 of file TGo4Task.cxx.
Referenced by GetStatus(), NextStatus(), SendStatus(), SendStatusBuffer(), and SendStopBuffers().
TGo4TaskHandler * TGo4Task::GetTaskHandler | ( | ) | [virtual] |
Reimplemented in TGo4ClientTask, and TGo4ServerTask.
Definition at line 154 of file TGo4Task.cxx.
Referenced by TGo4AnalysisProxy::GetRole(), SendStopBuffers(), UpdateStatus(), and WakeCommandQueue().
Int_t TGo4Task::Initialization | ( | ) | [virtual] |
Overrides the ThreadManager Initialization; is used to setup the client connections on demand; checks for fbConnectRequest flag
Reimplemented in TGo4ClientTask.
Definition at line 393 of file TGo4Task.cxx.
References CreateCommandList(), TGo4Master::CreateCommandList(), TGo4Log::Debug(), TGo4ThreadManager::fbInitDone, fxCommandPrototype, fxMaster, fxSlave, TGo4ThreadManager::fxWorkHandler, GetCommanderName(), TGo4Slave::Initialization(), and TGo4ThreadHandler::Start().
Referenced by TGo4AnalysisProxy::TGo4AnalysisProxy().
Bool_t TGo4Task::IsMaster | ( | ) | [inline] |
Definition at line 94 of file TGo4Task.h.
References fbCommandMaster.
Referenced by TGo4TaskManager::ClientLogin(), TGo4ClientTask::ConnectServer(), TGo4ClientTask::DisconnectServer(), TGo4TaskManager::NewTaskHandler(), NextCommand(), TGo4ServerTask::NextCommand(), NextObject(), NextStatus(), TGo4ServerTask::Quit(), TGo4ClientTask::Quit(), TGo4ServerTask::RemoveClient(), SendObject(), SendStatus(), TGo4ServerTask::SendStatus(), SendStatusBuffer(), TGo4ServerTask::SendStatusBuffer(), SendStatusMessage(), SendStopBuffers(), TGo4ClientTask::TGo4ClientTask(), and UpdateStatusBuffer().
Bool_t TGo4Task::IsWorkStopped | ( | ) | [inline] |
Definition at line 243 of file TGo4Task.h.
References fbWorkIsStopped.
Referenced by TGo4ServerTask::SetCurrentTask().
void TGo4Task::KillMain | ( | ) | [virtual] |
Kill the main thread; method to be called from command, should be overridden in user implementation
Definition at line 120 of file TGo4Task.cxx.
References fxSlave, and TGo4Slave::KillMain().
Referenced by TGo4CommandRunnable::Run().
void TGo4Task::LockAll | ( | ) | [virtual] |
Lock all go4 mutexes in correct order to avoid deadlocking. to be used from cintlocktimer
Reimplemented in TGo4ServerTask.
Definition at line 635 of file TGo4Task.cxx.
References fxStatusMutex, and TGo4LockGuard::LockMainMutex().
Referenced by TGo4AnalysisClient::LockAll().
TGo4Command * TGo4Task::MakeCommand | ( | const char * | name | ) |
Method using internal command prototype list to produce a clone of the specified command
Definition at line 540 of file TGo4Task.cxx.
References fxCommandPrototype, and TGo4CommandProtoList::MakeCommand().
Referenced by SubmitCommand().
TGo4Command * TGo4Task::NextCommand | ( | ) | [virtual] |
Delivers next command from command queue.
Reimplemented in TGo4ServerTask.
Definition at line 357 of file TGo4Task.cxx.
References fxSlave, GetCommandQueue(), TGo4Queue::IsEmpty(), IsMaster(), kGo4ComModeController, TGo4Slave::MainIsRunning(), TGo4Command::SetMode(), TGo4Command::SetTaskName(), and TGo4BufferQueue::WaitObjectFromBuffer().
Referenced by TGo4Slave::NextCommand(), and TGo4MainRunnable::Run().
TObject * TGo4Task::NextObject | ( | Bool_t | wait = kTRUE |
) |
Delivers next object from data queue. Encapsulates the queue wait and the object streaming. Streamer is decoupled from queue wait and sets global lockguard. If wait=kFALSE, queue will be polled once instead of condition wait.
Definition at line 217 of file TGo4Task.cxx.
References GetDataQueue(), TGo4Queue::IsEmpty(), IsMaster(), and TGo4BufferQueue::WaitObjectFromBuffer().
Referenced by TGo4DisplayDrawerTimer::Notify(), and TGo4ControllerRunnable::Run().
TGo4Status * TGo4Task::NextStatus | ( | Bool_t | wait = kTRUE |
) |
Delivers next status object from status queue. Encapsulates the queue wait and the object streaming. Streamer is decoupled from queue wait and sets global lockguard. If wait=kFALSE, queue will be polled once instead of condition wait.
Definition at line 179 of file TGo4Task.cxx.
References TGo4Log::Debug(), GetStatusQueue(), TGo4Queue::IsEmpty(), IsMaster(), and TGo4BufferQueue::WaitObjectFromBuffer().
Referenced by TGo4DisplayLoggerTimer::Notify(), and TGo4LoggingRunnable::Run().
void TGo4Task::Quit | ( | ) | [virtual] |
Quit the client; method to be called from command object, may be overridden in user implementation
Reimplemented in TGo4ClientTask, and TGo4ServerTask.
Definition at line 115 of file TGo4Task.cxx.
References fxSlave, and TGo4TaskOwner::Quit().
Referenced by TGo4ComQuit::ExeCom(), and TGo4TaskOwner::Quit().
void TGo4Task::RestartMain | ( | ) | [virtual] |
Restart the main thread; method to be called from command, should be overridden in user implementation
Definition at line 125 of file TGo4Task.cxx.
References fxSlave, and TGo4Slave::RestartMain().
Referenced by TGo4CommandRunnable::Run().
void TGo4Task::SendObject | ( | TObject * | obj, | |
const char * | receiver = 0 | |||
) |
Send object via data channel to the master. Master name may be specified, if more than one master is connected. By default, object is send to current active task
Definition at line 253 of file TGo4Task.cxx.
References TGo4BufferQueue::AddBufferFromObject(), TGo4Log::Debug(), GetDataQueue(), IsMaster(), and SendStatusMessage().
Referenced by TGo4Slave::SendObject().
void TGo4Task::SendStatus | ( | TGo4Status * | stat, | |
const char * | receiver = 0 | |||
) | [virtual] |
Send status object via status channel to the master. Master name may be specified, if more than one master is connected. By default, object is send to all connected tasks
Reimplemented in TGo4ServerTask.
Definition at line 277 of file TGo4Task.cxx.
References TGo4BufferQueue::AddBufferFromObject(), TGo4Log::Debug(), GetStatusQueue(), and IsMaster().
Referenced by TGo4Slave::SendStatus(), and SendStatusMessage().
void TGo4Task::SendStatusBuffer | ( | ) | [virtual] |
Send internal status buffer to the master(s).
Reimplemented in TGo4ServerTask.
Definition at line 294 of file TGo4Task.cxx.
References TGo4BufferQueue::AddBuffer(), TGo4Log::Debug(), fxStatusBuffer, fxStatusMutex, GetStatusQueue(), and IsMaster().
Referenced by TGo4WatchRunnable::Run(), and TGo4Slave::SendStatusBuffer().
void TGo4Task::SendStatusMessage | ( | Int_t | level, | |
Bool_t | printout, | |||
const char * | text, | |||
... | ||||
) |
Send message string in a status object to the gui. Will be displayed in status window. Level indicates info, warning or error. Message text may begin with name of receiver for message, followed by "::". If no receiver is defined, all connected masters will receive message (default).
Definition at line 303 of file TGo4Task.cxx.
References IsMaster(), TGo4Log::IsOutputEnabled(), TGo4Log::Message(), TGo4Log::OutputEnable(), and SendStatus().
Referenced by TGo4TaskManager::AddClient(), TGo4ClientTask::ConnectServer(), TGo4ComStop::ExeCom(), TGo4ComStart::ExeCom(), TGo4ComExecLine::ExeCom(), TGo4ServerTask::Quit(), TGo4ClientTask::Quit(), TGo4TaskHandlerCommand::RefuseCom(), TGo4WatchRunnable::Run(), SendObject(), TGo4Slave::SendStatusMessage(), and TGo4ServerTask::Shutdown().
void TGo4Task::SendStopBuffers | ( | const char * | taskname = 0 |
) |
Send message buffers with stop values into queues and via socket connections. Used in disconnect procedure to put taskhandler threads into suspend mode, i.e. wake them from socket receive or queue wait. For multiple client connection, taskname defines which client to stop.
Definition at line 601 of file TGo4Task.cxx.
References TGo4BufferQueue::AddBuffer(), fxStopBuffer, GetCommandQueue(), GetDataQueue(), GetStatusQueue(), GetTaskHandler(), TGo4TaskHandler::IsAborting(), and IsMaster().
Referenced by TGo4TaskManager::DisConnectClient(), TGo4ClientTask::DisconnectServer(), and TGo4ServerTask::RemoveClient().
void TGo4Task::SetMaster | ( | Bool_t | on = kTRUE |
) | [inline, protected] |
Definition at line 300 of file TGo4Task.h.
References fbCommandMaster.
Referenced by SetMaster(), SetOwner(), SetSlave(), and TGo4ExampleClient::TGo4ExampleClient().
void TGo4Task::SetMaster | ( | TGo4Master * | m | ) | [private] |
Definition at line 86 of file TGo4Task.cxx.
References fxMaster, and SetMaster().
void TGo4Task::SetOwner | ( | TGo4TaskOwner * | owner | ) |
Set owner object and switch automatically in master or slave mode, depending on owner type
Definition at line 98 of file TGo4Task.cxx.
References fxOwner, SetMaster(), and SetSlave().
Referenced by TGo4TaskOwner::SetTask(), and TGo4TaskOwner::~TGo4TaskOwner().
void TGo4Task::SetSlave | ( | TGo4Slave * | s | ) | [private] |
Definition at line 92 of file TGo4Task.cxx.
References fxSlave, and SetMaster().
Referenced by SetOwner().
void TGo4Task::SetWorkIsStopped | ( | Bool_t | on | ) | [inline, protected] |
Definition at line 302 of file TGo4Task.h.
References fbWorkIsStopped.
Referenced by TGo4TaskOwner::StartWorkThreads(), and TGo4TaskOwner::StopWorkThreads().
void TGo4Task::Start | ( | ) | [virtual] |
General start method of client application to be called from remote command; should be re-implemented by application
Reimplemented in TGo4ExampleClient.
Definition at line 105 of file TGo4Task.cxx.
References fxSlave, and TGo4Slave::Start().
Referenced by TGo4ComStart::ExeCom().
Int_t TGo4Task::StartWorkThreads | ( | ) | [virtual] |
start the working threads of the task implementation; this method is used after the current connection has changed, to continue reading/writing the queues. To be overridden by the derived task.
Reimplemented in TGo4ExampleServer.
Definition at line 589 of file TGo4Task.cxx.
References fbWorkIsStopped, fxOwner, and TGo4TaskOwner::StartWorkThreads().
Referenced by TGo4ClientTask::DisconnectServer(), TGo4ServerTask::RemoveClient(), TGo4TaskManager::RemoveTaskHandler(), and TGo4ServerTask::SetCurrentTask().
void TGo4Task::Stop | ( | ) | [virtual] |
General stop method of client application to be called from remote command; should be re-implemented by application
Reimplemented in TGo4ExampleClient.
Definition at line 110 of file TGo4Task.cxx.
References fxSlave, and TGo4Slave::Stop().
Referenced by TGo4ComStop::ExeCom().
Int_t TGo4Task::StopWorkThreads | ( | ) | [virtual] |
stop the working threads of the task implementation; this method is used before the current connection is changed to prevent reading/writing and waiting for the wrong queues. To be overridden by the derived task.
Reimplemented in TGo4ExampleServer.
Definition at line 595 of file TGo4Task.cxx.
References fbWorkIsStopped, fxOwner, and TGo4TaskOwner::StopWorkThreads().
Referenced by TGo4ClientTask::DisconnectServer(), TGo4ServerTask::RemoveClient(), TGo4ServerTask::SetCurrentTask(), and TGo4ServerTask::Shutdown().
Bool_t TGo4Task::SubmitCommand | ( | TGo4Command * | com | ) |
send given command to the current client task. Command object is deleted after this call internally!
Definition at line 513 of file TGo4Task.cxx.
References TGo4BufferQueue::AddBufferFromObject(), GetCommandQueue(), TGo4Command::IsLocal(), and SubmitLocalCommand().
Bool_t TGo4Task::SubmitCommand | ( | const char * | name | ) |
send command specified by name to the current client task
Definition at line 440 of file TGo4Task.cxx.
References kComKillMain, kComQuit, kComRestartMain, MakeCommand(), and SubmitEmergencyCommand().
Referenced by TGo4TaskHandlerAbortException::Handle(), TGo4ControllerRunnable::Run(), TGo4Master::SubmitCommand(), and WakeCommandQueue().
Bool_t TGo4Task::SubmitEmergencyCommand | ( | Go4EmergencyCommand_t | val | ) |
send emergency quit command to the current client task
Definition at line 469 of file TGo4Task.cxx.
References TGo4BufferQueue::AddBuffer(), TGo4BufferQueue::CreateValueBuffer(), fxQuitBuffer, GetCommandQueue(), and kComQuit.
Referenced by TGo4ServerTask::RemoveClient(), SubmitCommand(), and TGo4Master::SubmitEmergencyCommand().
Bool_t TGo4Task::SubmitEmergencyData | ( | Go4EmergencyCommand_t | val, | |
const char * | receiver = 0 | |||
) |
Send emergency command via data channel. For analysis server shutdown, to inform clients about disconnect
Definition at line 491 of file TGo4Task.cxx.
References TGo4BufferQueue::AddBuffer(), TGo4BufferQueue::CreateValueBuffer(), fxQuitBuffer, GetDataQueue(), and kComQuit.
Referenced by TGo4ServerTask::RemoveClient().
Bool_t TGo4Task::SubmitLocalCommand | ( | TGo4Command * | com | ) |
Send given command to the current client task. Command object is deleted after this call internally!
Definition at line 546 of file TGo4Task.cxx.
References TGo4ObjectQueue::AddObject(), TGo4ThreadManager::fxWorkHandler, GetCommanderName(), GetLocalCommandQueue(), kGo4ComModeAdministrator, TGo4Command::SetMode(), and TGo4ThreadHandler::Start().
Referenced by TGo4DataRunnable::Run(), TGo4CommandRunnable::Run(), SubmitCommand(), TGo4AnalysisClient::SubmitShutdown(), and WakeCommandQueue().
void TGo4Task::Terminate | ( | Bool_t | termapp = kTRUE |
) | [virtual] |
Definition at line 130 of file TGo4Task.cxx.
References fxSlave, and TGo4Slave::Terminate().
Referenced by TGo4Master::DisconnectSlave(), TGo4ClientTask::Initialization(), TGo4ServerTask::Quit(), and TGo4ClientTask::Quit().
void TGo4Task::TerminateFast | ( | ) | [virtual] |
Overwrites the Threadmanager TerminateFast to shutdown the objectserver properly
Definition at line 138 of file TGo4Task.cxx.
References fxSlave, and TGo4Slave::TerminateFast().
Referenced by TGo4TaskHandlerAbortException::Handle().
void TGo4Task::UnLockAll | ( | ) | [virtual] |
UnLock all go4 mutexes in correct order to avoid deadlocking to be used from cintlocktimer
Reimplemented in TGo4ServerTask.
Definition at line 642 of file TGo4Task.cxx.
References fxStatusMutex, and TGo4LockGuard::UnLockMainMutex().
Referenced by TGo4AnalysisClient::UnLockAll().
void TGo4Task::UpdateStatus | ( | TGo4TaskStatus * | state | ) | [protected, virtual] |
method needed by method CreateStatus of any status subclasses to set the values of the clienttask specific part of the status object.
Reimplemented in TGo4ClientTask.
Definition at line 424 of file TGo4Task.cxx.
References TGo4TaskHandler::CreateStatus(), TGo4ThreadManager::fbAppBlocking, TGo4ThreadManager::fbAutoCreate, TGo4ThreadManager::fbAutoStart, TGo4ThreadManager::fbInitDone, TGo4ThreadManager::fbTerminating, GetTaskHandler(), TGo4TaskStatus::SetFlags(), and TGo4TaskStatus::SetTaskHandlerStatus().
Referenced by CreateStatus(), and TGo4Slave::UpdateStatus().
void TGo4Task::UpdateStatusBuffer | ( | ) |
Create status object and stream it into the status send buffer. To be executed from the main thread; buffer will be send by status thread.
Definition at line 340 of file TGo4Task.cxx.
References CreateStatus(), TGo4Slave::CreateStatus(), fxSlave, fxStatusBuffer, fxStatusMutex, and IsMaster().
Referenced by TGo4WatchRunnable::Run(), and TGo4Slave::UpdateStatusBuffer().
void TGo4Task::WakeCommandQueue | ( | Int_t | id = 0 |
) |
Put dummy object into command queue to wake up user threads which might wait for a command. To be used in quit and restart methods. Id can set in such way that application can check the command id for special action, e.g. stop thread in case of termination.
Definition at line 560 of file TGo4Task.cxx.
References GetTaskHandler(), SubmitCommand(), and SubmitLocalCommand().
Referenced by TGo4ClientTask::DisconnectServer(), TGo4AnalysisClient::KillMain(), TGo4ServerTask::Quit(), TGo4AnalysisClient::RestartMain(), and TGo4ServerTask::Shutdown().
friend class TGo4LocalCommandRunnable [friend] |
Definition at line 39 of file TGo4Task.h.
Referenced by TGo4Task().
friend class TGo4Slave [friend] |
Definition at line 40 of file TGo4Task.h.
friend class TGo4TaskOwner [friend] |
Definition at line 41 of file TGo4Task.h.
Bool_t TGo4Task::fbCommandMaster [private] |
This flag indicates the main state of the task: either master (sends commands, receives data and status), or slave (receives commands and may send date and status)
Definition at line 325 of file TGo4Task.h.
Referenced by IsMaster(), and SetMaster().
Bool_t TGo4Task::fbWorkIsStopped [private] |
True if user work threads are stopped for connection change
Definition at line 340 of file TGo4Task.h.
Referenced by IsWorkStopped(), SetWorkIsStopped(), StartWorkThreads(), and StopWorkThreads().
const Int_t TGo4Task::fgiTERMID = 999 [static, private] |
Id number of dummy command that wakes the command queue on termination
Definition at line 353 of file TGo4Task.h.
Referenced by Get_fgiTERMID().
TBuffer* TGo4Task::fxAbortBuffer [private] |
this buffer is used for emergeny socket aborting
Definition at line 350 of file TGo4Task.h.
Referenced by GetAbortBuffer(), and TGo4Task().
TString TGo4Task::fxCommanderName [private] |
remember name of localcommand thread
Definition at line 328 of file TGo4Task.h.
Referenced by GetCommanderName(), and TGo4Task().
the command list which holds all command prototypes
Definition at line 317 of file TGo4Task.h.
Referenced by AddUserCommand(), AddUserCommandList(), GetPrototype(), Initialization(), MakeCommand(), TGo4Task(), and ~TGo4Task().
TGo4ObjectQueue* TGo4Task::fxLocalCommandQueue [private] |
queue for the server side local commands, submitted by the gui or cli
Definition at line 320 of file TGo4Task.h.
Referenced by GetLocalCommandQueue(), TGo4Task(), and ~TGo4Task().
TGo4Master* TGo4Task::fxMaster [private] |
0..1
Definition at line 331 of file TGo4Task.h.
Referenced by GetMaster(), Initialization(), and SetMaster().
TGo4TaskOwner* TGo4Task::fxOwner [private] |
0..1
Definition at line 337 of file TGo4Task.h.
Referenced by SetOwner(), StartWorkThreads(), StopWorkThreads(), and ~TGo4Task().
TBuffer* TGo4Task::fxQuitBuffer [private] |
this buffer is used for quit command
Definition at line 347 of file TGo4Task.h.
Referenced by SubmitEmergencyCommand(), SubmitEmergencyData(), TGo4Task(), and ~TGo4Task().
TGo4Slave* TGo4Task::fxSlave [private] |
0..1
Definition at line 334 of file TGo4Task.h.
Referenced by ExecuteString(), GetSlave(), Initialization(), KillMain(), NextCommand(), Quit(), RestartMain(), SetSlave(), Start(), Stop(), Terminate(), TerminateFast(), and UpdateStatusBuffer().
TBuffer* TGo4Task::fxStatusBuffer [protected] |
Buffer containing the analysis status which is updated by the main thread
Definition at line 308 of file TGo4Task.h.
Referenced by SendStatusBuffer(), TGo4ServerTask::SendStatusBuffer(), TGo4Task(), UpdateStatusBuffer(), and ~TGo4Task().
TMutex* TGo4Task::fxStatusMutex [protected] |
Mutex protecting status buffer between main and watch thread.
Definition at line 305 of file TGo4Task.h.
Referenced by GetStatusBufferMutex(), LockAll(), TGo4ServerTask::LockAll(), SendStatusBuffer(), TGo4ServerTask::SendStatusBuffer(), TGo4Task(), UnLockAll(), TGo4ServerTask::UnLockAll(), UpdateStatusBuffer(), and ~TGo4Task().
TBuffer* TGo4Task::fxStopBuffer [private] |
this buffer is used for stop message for threads
Definition at line 344 of file TGo4Task.h.
Referenced by SendStopBuffers(), TGo4Task(), and ~TGo4Task().