GSI Object Oriented Online Offline (Go4) GO4-6.4.0
Loading...
Searching...
No Matches
TGo4ExampleClient Class Reference

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>

+ Inheritance diagram for TGo4ExampleClient:

Public Member Functions

 TGo4ExampleClient (const char *name, const char *host="localhost", UInt_t negport=0, Bool_t blockingmode=kTRUE)
 
virtual ~TGo4ExampleClient ()
 
TGo4TaskStatusCreateStatus () override
 create a status object with information on the current client state.
 
TGo4ExampleApplicationGetApplication ()
 
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.
 
- Public Member Functions inherited from TGo4ClientTask
 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.
 
TGo4BufferQueueGetCommandQueue (const char *task=nullptr) override
 
TGo4BufferQueueGetDataQueue (const char *task=nullptr) override
 
const char * GetServerHostName () const
 
TGo4BufferQueueGetStatusQueue (const char *task=nullptr) override
 
TGo4TaskHandlerGetTaskHandler () 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.
 
- Public Member Functions inherited from TGo4Task
 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
 
TGo4MasterGetMaster () const
 
TGo4SlaveGetSlave () 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.
 
TGo4CommandMakeCommand (const char *name)
 Method using internal command prototype list to produce a clone of the specified command.
 
virtual TGo4CommandNextCommand ()
 Delivers next command from command queue.
 
TObject * NextObject (Bool_t wait=kTRUE)
 Delivers next object from data queue.
 
TGo4StatusNextStatus (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.
 
- Public Member Functions inherited from TGo4ThreadManager
 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.
 
TGo4ThreadHandlerGetWorkHandler () 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.
 
- Public Member Functions inherited from TGo4CommandReceiver
 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 Public Attributes inherited from TGo4ThreadManager
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.
 
- Protected Member Functions inherited from TGo4Task
virtual TGo4TaskHandlerCommandListCreateCommandList ()
 factory method for command list; overridden by implementation
 
TGo4ObjectQueueGetLocalCommandQueue ()
 
TGo4TaskHandlerCommandListGetPrototype ()
 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.
 
TGo4ExampleApplicationfxApplication {nullptr}
 aggregationByValue 1 0..1
 

Additional Inherited Members

- Public Types inherited from TGo4ThreadManager
enum  { fguTEXTLENGTH = 256 }
 Default textlength for char arrays. More...
 
- Static Public Member Functions inherited from TGo4Task
static Int_t Get_fgiTERMID ()
 
- Protected Attributes inherited from TGo4Task
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.
 
- Protected Attributes inherited from TGo4ThreadManager
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
 
TGo4AppControlTimerfxBlocker {nullptr}
 Composition of Application control timer.
 
TGo4ThreadHandlerfxWorkHandler {nullptr}
 Thread handler aggregate (threadsafe list of go4 threads) aggregationByValue 1 1.
 

Detailed Description

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.

Constructor & Destructor Documentation

◆ TGo4ExampleClient() [1/2]

TGo4ExampleClient::TGo4ExampleClient ( const char * name,
const char * host = "localhost",
UInt_t negport = 0,
Bool_t blockingmode = kTRUE )

◆ ~TGo4ExampleClient()

TGo4ExampleClient::~TGo4ExampleClient ( )
virtual

Definition at line 50 of file TGo4ExampleClient.cxx.

References fxApplication, TGo4ThreadManager::fxWorkHandler, and GO4TRACE.

◆ TGo4ExampleClient() [2/2]

TGo4ExampleClient::TGo4ExampleClient ( )
private

Member Function Documentation

◆ CreateStatus()

TGo4TaskStatus * TGo4ExampleClient::CreateStatus ( )
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().

◆ GetApplication()

TGo4ExampleApplication * TGo4ExampleClient::GetApplication ( )

◆ Start()

void TGo4ExampleClient::Start ( )
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.

◆ Stop()

void TGo4ExampleClient::Stop ( )
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.

◆ UpdateStatus()

void TGo4ExampleClient::UpdateStatus ( TGo4TaskStatus * state)
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().

Field Documentation

◆ fcMainName

TString TGo4ExampleClient::fcMainName
private

Remember name of main thread.

Definition at line 80 of file TGo4ExampleClient.h.

Referenced by TGo4ExampleClient(), Start(), Stop(), and UpdateStatus().

◆ fcWatchName

TString TGo4ExampleClient::fcWatchName
private

Remember name of watch thread.

Definition at line 83 of file TGo4ExampleClient.h.

Referenced by TGo4ExampleClient(), and UpdateStatus().

◆ fgcMAINTHREAD

const char * TGo4ExampleClient::fgcMAINTHREAD ="MAIN-"
static

Suffix for main thread name.

Definition at line 46 of file TGo4ExampleClient.h.

Referenced by TGo4ExampleClient().

◆ fgcWATCHTHREAD

const char * TGo4ExampleClient::fgcWATCHTHREAD ="WATCH-"
static

Suffix for watch thread name.

Definition at line 49 of file TGo4ExampleClient.h.

Referenced by TGo4ExampleClient().

◆ fxApplication

TGo4ExampleApplication* TGo4ExampleClient::fxApplication {nullptr}
private

aggregationByValue 1 0..1

Definition at line 77 of file TGo4ExampleClient.h.

Referenced by TGo4ExampleClient(), ~TGo4ExampleClient(), and GetApplication().


The documentation for this class was generated from the following files: