GSI Object Oriented Online Offline (Go4) GO4-6.4.0
|
Example class for a client application; this may be the analysis client later on which keeps the analysis class itself as aggregate and provides threads to work on analysis. More...
#include <TGo4ExampleClient.h>
Public Member Functions | |
TGo4ExampleClient (const char *name, const char *host="localhost", UInt_t negport=0, Bool_t blockingmode=kTRUE) | |
virtual | ~TGo4ExampleClient () |
TGo4TaskStatus * | CreateStatus () override |
create a status object with information on the current client state. | |
TGo4ExampleApplication * | GetApplication () |
void | Start () override |
General start method of client application to be called from remote command; should be re-implemented by application. | |
void | Stop () override |
General stop method of client application to be called from remote command; should be re-implemented by application. | |
![]() | |
TGo4ClientTask (const char *name, const char *serverhost="localhost", UInt_t negotiationport=0, Bool_t blockingmode=kTRUE, Bool_t standalone=kFALSE, Bool_t autostart=kFALSE, Bool_t autocreate=kTRUE, Bool_t ismaster=kFALSE, Bool_t autoconnect=kTRUE) | |
virtual | ~TGo4ClientTask () |
void | AddLocalCommand (TGo4Command *com) |
Put command into the command queue for local execution in main thread. | |
Bool_t | ConnectServer (const char *node, UInt_t negport, Go4CommandMode_t role=kGo4ComModeRefused, const char *passwd=nullptr) |
Connect this client to a waiting server task on node with negotiation channel negport. | |
Bool_t | DisconnectServer (Bool_t isterminating=kFALSE) |
Disconnect the current server task, but do not terminate the client. | |
TGo4BufferQueue * | GetCommandQueue (const char *task=nullptr) override |
TGo4BufferQueue * | GetDataQueue (const char *task=nullptr) override |
const char * | GetServerHostName () const |
TGo4BufferQueue * | GetStatusQueue (const char *task=nullptr) override |
TGo4TaskHandler * | GetTaskHandler () override |
Int_t | Initialization () override |
override the ThreadManager Initialization used by AppControlTimer to let this thing initialize the client transport connection | |
Bool_t | IsConnected () const |
void | Quit () override |
Quit the client; method to be called from command object, may be overridden in user implementation. | |
![]() | |
TGo4Task (const char *name, Bool_t blockingmode, Bool_t autostart=kFALSE, Bool_t autocreate=kTRUE, Bool_t ismaster=kFALSE) | |
virtual | ~TGo4Task () |
void | AddUserCommand (TGo4Command *com) |
Add a user command object to the existing command list. | |
void | AddUserCommandList (TGo4CommandProtoList *comlist) |
Add a user command list to the existing command list. | |
virtual void | ExecuteString (const char *command) |
Execute string command. | |
TBuffer * | GetAbortBuffer () |
Use preallocated abort buffer to stop remote socket wait from taskhandler itself. | |
const char * | GetCommanderName () const |
TGo4Master * | GetMaster () const |
TGo4Slave * | GetSlave () const |
virtual void | GetStatus () |
Send current status information of the task to the master; may be re-implemented by application subclass of TGo4Task. | |
TMutex * | GetStatusBufferMutex () |
Access to the mutex of status buffer. | |
Int_t | Initialization () override |
Overrides the ThreadManager Initialization; is used to setup the client connections on demand; checks for fbConnectRequest flag. | |
Bool_t | IsMaster () const |
Bool_t | IsWorkStopped () const |
virtual void | KillMain () |
Kill the main thread; method to be called from command, should be overridden in user implementation. | |
TGo4Command * | MakeCommand (const char *name) |
Method using internal command prototype list to produce a clone of the specified command. | |
virtual TGo4Command * | NextCommand () |
Delivers next command from command queue. | |
TObject * | NextObject (Bool_t wait=kTRUE) |
Delivers next object from data queue. | |
TGo4Status * | NextStatus (Bool_t wait=kTRUE) |
Delivers next status object from status queue. | |
virtual void | RestartMain () |
Restart the main thread; method to be called from command, should be overridden in user implementation. | |
void | SendObject (TObject *obj, const char *receiver=nullptr) |
Send object via data channel to the master. | |
virtual void | SendStatus (TGo4Status *stat, const char *receiver=nullptr) |
Send status object via status channel to the master. | |
virtual void | SendStatusBuffer () |
Send internal status buffer to the master(s). | |
void | SendStatusMessage (Int_t level, Bool_t printout, const char *text,...) |
Send message string in a status object to the gui. | |
void | SendStopBuffers (const char *taskname=nullptr) |
Send message buffers with stop values into queues and via socket connections. | |
void | SetOwner (TGo4TaskOwner *owner) |
Set owner object and switch automatically in master or slave mode, depending on owner type. | |
virtual Int_t | StartWorkThreads () |
start the working threads of the task implementation; this method is used after the current connection has changed, to continue reading/writing the queues. | |
virtual Int_t | StopWorkThreads () |
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. | |
Bool_t | SubmitCommand (const char *name) |
send command specified by name to the current client task | |
Bool_t | SubmitCommand (TGo4Command *com) |
send given command to the current client task. | |
Bool_t | SubmitEmergencyCommand (Go4EmergencyCommand_t val) |
send emergency quit command to the current client task | |
Bool_t | SubmitEmergencyData (Go4EmergencyCommand_t val, const char *receiver=nullptr) |
Send emergency command via data channel. | |
Bool_t | SubmitLocalCommand (TGo4Command *com) |
Send given command to the current client task. | |
void | Terminate (Bool_t termapp=kTRUE) override |
deletes the Manager instance via Control timer. | |
void | TerminateFast () override |
Overwrites the Threadmanager TerminateFast to shutdown the objectserver properly. | |
void | UpdateStatusBuffer () |
Create status object and stream it into the status send buffer. | |
void | WakeCommandQueue (Int_t id=0) |
Put dummy object into command queue to wake up user threads which might wait for a command. | |
![]() | |
TGo4ThreadManager (const char *name, Bool_t blockingmode=kTRUE, Bool_t autostart=kTRUE, Bool_t autocreate=kTRUE) | |
Normal constructor. | |
TGo4ThreadManager (const TGo4ThreadManager &right) | |
virtual | ~TGo4ThreadManager () |
Bool_t | BlockApp () |
Blocks gSystem by means of the blocking timer. | |
TGo4ThreadHandler * | GetWorkHandler () const |
Access to ThreadHandler for working threads. | |
Bool_t | IsAppBlocking () const |
Returns true if threadmanager works in root system blocking mode. | |
Bool_t | IsBeingQuit () const |
Returns true if threadmanager works in root system blocking mode. | |
Bool_t | IsInitDone () const |
Bool_t | IsTerminateApp () const |
Bool_t | IsTerminating () const |
returns termination status of Threadmanager | |
void | Launch () |
This Method has to be called to create the startup threads and to turn on the application control timer. | |
void | SetBeingQuit (Bool_t on) |
void | SetTimer (TGo4AppControlTimer *ctrltimer) |
user can exchange the standard control timer by an own derived one by this method | |
Bool_t | 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. | |
![]() | |
TGo4CommandReceiver () | |
virtual | ~TGo4CommandReceiver () |
Static Public Attributes | |
static const char * | fgcMAINTHREAD ="MAIN-" |
Suffix for main thread name. | |
static const char * | fgcWATCHTHREAD ="WATCH-" |
Suffix for watch thread name. | |
![]() | |
static const Long_t | fglTIMERPERIOD = 200 |
Period in ms for the application control timer. | |
Protected Member Functions | |
void | UpdateStatus (TGo4TaskStatus *state) override |
method needed by method CreateStatus of any status subclasses to set the values of the clienttask specific part of the status object. | |
![]() | |
virtual TGo4TaskHandlerCommandList * | CreateCommandList () |
factory method for command list; overridden by implementation | |
TGo4ObjectQueue * | GetLocalCommandQueue () |
TGo4TaskHandlerCommandList * | GetPrototype () |
get pointer to currently valid command list | |
void | SetMaster (Bool_t on=kTRUE) |
void | SetWorkIsStopped (Bool_t on) |
Private Member Functions | |
TGo4ExampleClient () | |
Private Attributes | |
TString | fcMainName |
Remember name of main thread. | |
TString | fcWatchName |
Remember name of watch thread. | |
TGo4ExampleApplication * | fxApplication {nullptr} |
aggregationByValue 1 0..1 | |
Additional Inherited Members | |
![]() | |
enum | { fguTEXTLENGTH = 256 } |
Default textlength for char arrays. More... | |
![]() | |
static Int_t | Get_fgiTERMID () |
![]() | |
TBuffer * | fxStatusBuffer {nullptr} |
Buffer containing the analysis status which is updated by the main thread. | |
TMutex * | fxStatusMutex {nullptr} |
Mutex protecting status buffer between main and watch thread. | |
![]() | |
Bool_t | fbAppBlocking {kFALSE} |
true if threadmanager shall block root gSystem using the AppControlTimer; false if gSystem shall never be blocked (necessary for gui) | |
Bool_t | fbAutoCreate {kFALSE} |
If true, TThreads of all go4threads in list shall be created automatically on calling Launch(). | |
Bool_t | fbAutoStart {kFALSE} |
If true, workfunctions (runnable Run()) of all go4threads in list shall be started automatically on Initialization. | |
Int_t | fbBeingQuit {0} |
Bool_t | fbInitDone {kFALSE} |
is set kTRUE after first Initialize is done | |
Bool_t | fbTerminateApplication {kFALSE} |
If true, terminate complete application. | |
Bool_t | fbTerminating {kFALSE} |
flag showing termination status | |
TGo4AppControlTimer * | fxBlocker {nullptr} |
Composition of Application control timer. | |
TGo4ThreadHandler * | fxWorkHandler {nullptr} |
Thread handler aggregate (threadsafe list of go4 threads) aggregationByValue 1 1. | |
Example class for a client application; this may be the analysis client later on which keeps the analysis class itself as aggregate and provides threads to work on analysis.
Definition at line 29 of file TGo4ExampleClient.h.
TGo4ExampleClient::TGo4ExampleClient | ( | const char * | name, |
const char * | host = "localhost", | ||
UInt_t | negport = 0, | ||
Bool_t | blockingmode = kTRUE ) |
Definition at line 30 of file TGo4ExampleClient.cxx.
References TGo4ClientTask::TGo4ClientTask(), TGo4Log::Debug(), fcMainName, fcWatchName, fgcMAINTHREAD, fgcWATCHTHREAD, fxApplication, TGo4ThreadManager::fxWorkHandler, TGo4ClientTask::GetDataQueue(), TGo4ClientTask::GetTaskHandler(), GO4TRACE, TGo4ThreadManager::Launch(), and TGo4Task::SetMaster().
|
virtual |
Definition at line 50 of file TGo4ExampleClient.cxx.
References fxApplication, TGo4ThreadManager::fxWorkHandler, and GO4TRACE.
|
private |
|
overridevirtual |
create a status object with information on the current client state.
this object may be sent to the server or may be used to restore current status by memento mechanism. Overridden from superclass
Reimplemented from TGo4ClientTask.
Definition at line 57 of file TGo4ExampleClient.cxx.
References GO4TRACE, and UpdateStatus().
TGo4ExampleApplication * TGo4ExampleClient::GetApplication | ( | ) |
Definition at line 94 of file TGo4ExampleClient.cxx.
References fxApplication, and GO4TRACE.
Referenced by TGo4MainRunnable::TGo4MainRunnable(), TGo4WatchRunnable::TGo4WatchRunnable(), and UpdateStatus().
|
overridevirtual |
General start method of client application to be called from remote command; should be re-implemented by application.
Reimplemented from TGo4Task.
Definition at line 85 of file TGo4ExampleClient.cxx.
References TGo4Log::Debug(), fcMainName, TGo4ThreadManager::fxWorkHandler, and GO4TRACE.
|
overridevirtual |
General stop method of client application to be called from remote command; should be re-implemented by application.
Reimplemented from TGo4Task.
Definition at line 76 of file TGo4ExampleClient.cxx.
References TGo4Log::Debug(), fcMainName, TGo4ThreadManager::fxWorkHandler, and GO4TRACE.
|
overrideprotectedvirtual |
method needed by method CreateStatus of any status subclasses to set the values of the clienttask specific part of the status object.
Reimplemented from TGo4ClientTask.
Definition at line 65 of file TGo4ExampleClient.cxx.
References fcMainName, fcWatchName, GetApplication(), GetHistogram(), GO4TRACE, TGo4ExampleClientStatus::SetHistoStatus(), TGo4ExampleClientStatus::SetNames(), and TGo4ClientTask::UpdateStatus().
Referenced by CreateStatus().
|
private |
Remember name of main thread.
Definition at line 80 of file TGo4ExampleClient.h.
Referenced by TGo4ExampleClient(), Start(), Stop(), and UpdateStatus().
|
private |
Remember name of watch thread.
Definition at line 83 of file TGo4ExampleClient.h.
Referenced by TGo4ExampleClient(), and UpdateStatus().
|
static |
Suffix for main thread name.
Definition at line 46 of file TGo4ExampleClient.h.
Referenced by TGo4ExampleClient().
|
static |
Suffix for watch thread name.
Definition at line 49 of file TGo4ExampleClient.h.
Referenced by TGo4ExampleClient().
|
private |
aggregationByValue 1 0..1
Definition at line 77 of file TGo4ExampleClient.h.
Referenced by TGo4ExampleClient(), ~TGo4ExampleClient(), and GetApplication().