GSI Object Oriented Online Offline (Go4) GO4-6.4.0
|
example class for a server task that fits to the example application More...
#include <TGo4ExampleServer.h>
Public Member Functions | |
TGo4ExampleServer (const char *name, UInt_t negotiationport=0, Bool_t blockingmode=kFALSE) | |
virtual | ~TGo4ExampleServer () |
TGo4TaskHandlerCommandList * | CreateCommandList () override |
factory method for command list; overridden by implementation | |
TGo4ExampleController * | GetController () |
Int_t | StartWorkThreads () override |
start the working threads of the task implementation; this method is used after the current connection has changed, to continue reading/writing the queues. | |
Int_t | StopWorkThreads () override |
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. | |
![]() | |
TGo4ServerTask (const char *name, UInt_t negotiationport=0, Bool_t blockingmode=kFALSE, Bool_t standalone=kFALSE, Bool_t autostart=kTRUE, Bool_t autocreate=kTRUE, Bool_t ismaster=kTRUE) | |
virtual | ~TGo4ServerTask () |
Bool_t | ConnectorThreadIsStopped () |
Returns the waiting state fbIsWaiting of the Connector Thread;. | |
TGo4BufferQueue * | GetCommandQueue (const char *task=nullptr) override |
const char * | GetConnectHost () const |
const char * | GetConnectorName () const |
TGo4Socket * | GetConnectTransport () |
TGo4TaskHandler * | GetCurrentTaskHandler () |
Get task handler of the currently activated client connection. | |
TGo4BufferQueue * | GetDataQueue (const char *task=nullptr) override |
TGo4BufferQueue * | GetStatusQueue (const char *task=nullptr) override |
TGo4TaskHandler * | GetTaskHandler () override |
Get task handler for client specified by name. | |
TGo4TaskHandler * | GetTaskHandler (const char *name) |
Get task handler for client specified by name. | |
TGo4TaskManager * | GetTaskManager () |
TGo4Command * | NextCommand () override |
Delivers next command. | |
void | Quit () override |
Quit method used by quit command; may be overridden in special application. | |
virtual Int_t | RemoveAllClients (Bool_t force=false) |
Remove all connected client task from this server. | |
virtual Bool_t | RemoveClient (const char *name, Bool_t clientwait=kTRUE, Bool_t isterminating=kFALSE) |
Remove the client task specified by name from this server. | |
Bool_t | RemoveCurrentClient () |
removes the currently active client from server (disconnect) | |
void | SendStatus (TGo4Status *stat, const char *receiver=nullptr) override |
Send status object via status channel to the master. | |
void | SendStatusBuffer () override |
Send internal status buffer to the master(s). | |
void | SetConnect (TGo4Socket *trans, const char *host, UInt_t port, Bool_t keepserv=kFALSE) |
void | SetCurrentTask (const char *name) |
sets current client task (i.e. | |
void | SetDisConnect (TGo4Socket *trans) |
void | Shutdown () |
Fast Quit() without waiting for proper disconnection. | |
virtual Bool_t | StartConnectorThread () |
starts the thread that listens to the connector port for a client negotiation request; used after launching an rsh client from server | |
virtual Bool_t | StopConnectorThread () |
stops the thread that listens to the connector port for a client negotiation request; used before launching an rsh client from server. | |
virtual Int_t | TimerConnect () |
this method is used by the connectortimer Notify to connect or disconnect a transportchannel (TSocket) on demand; the connection process itself is handled by the connector runnable which uses services of the TaskManager class | |
Int_t | WaitForClose () |
Int_t | WaitForConnection () |
Int_t | WaitForOpen () |
![]() | |
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 TGo4TaskStatus * | CreateStatus () |
create a status object with information on the current (slave) task. | |
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. | |
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. | |
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 void | Start () |
General start method of client application to be called from remote command; should be re-implemented by application. | |
virtual void | Stop () |
General stop method of client application to be called from remote command; should be re-implemented by application. | |
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 * | fgcCONTROLTHREAD ="CONTROL-" |
suffix for controller thread name | |
static const char * | fgcLOGGINGTHREAD ="LOGGER-" |
suffix for logging thread name | |
![]() | |
static const Long_t | fglTIMERPERIOD = 200 |
Period in ms for the application control timer. | |
Private Member Functions | |
TGo4ExampleServer () | |
Private Attributes | |
TString | fcControlName |
remember name of controller thread | |
TString | fcLoggingName |
remember name of logging thread | |
TGo4ExampleController * | fxController {nullptr} |
aggregationByValue 1 0..1 | |
Additional Inherited Members | |
![]() | |
enum | ELaunchmodes { kSecureShell = BIT(0) , kGuiEmbed = BIT(1) } |
![]() | |
enum | { fguTEXTLENGTH = 256 } |
Default textlength for char arrays. More... | |
![]() | |
static const char * | Get_fgcLAUNCHPREFSFILE () |
![]() | |
static Int_t | Get_fgiTERMID () |
![]() | |
TGo4ObjectQueue * | GetLocalCommandQueue () |
TGo4TaskHandlerCommandList * | GetPrototype () |
get pointer to currently valid command list | |
void | SetMaster (Bool_t on=kTRUE) |
void | SetWorkIsStopped (Bool_t on) |
virtual void | UpdateStatus (TGo4TaskStatus *state) |
method needed by method CreateStatus of any status subclasses to set the values of the clienttask specific part of the status object. | |
![]() | |
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. | |
![]() | |
static const char * | fgcLAUNCHPREFSFILE = "etc/Go4LaunchPrefs.txt" |
Name of the Preferences file for the client startup. | |
static const Int_t | fgiCLOSEWAITCYCLES =100 |
maximum cycles to wait until transport is closed | |
static const Int_t | fgiCONNECTWAITCYCLES =20 |
maximum cycles to wait until transport is connected | |
static const Int_t | fgiOPENWAITCYCLES =100 |
maximum cycles to wait until transport is open | |
static const UInt_t | fguCLOSEWAITCYCLETIME =100 |
time for each close wait cycle | |
static const UInt_t | fguCONNECTTIMERPERIOD =100 |
period of task connector timer | |
static const UInt_t | fguCONNECTWAITCYCLETIME =200 |
time for each connect wait cycle | |
static const UInt_t | fguOPENWAITCYCLETIME =100 |
time for each open wait cycle | |
example class for a server task that fits to the example application
Definition at line 25 of file TGo4ExampleServer.h.
TGo4ExampleServer::TGo4ExampleServer | ( | const char * | name, |
UInt_t | negotiationport = 0, | ||
Bool_t | blockingmode = kFALSE ) |
Definition at line 42 of file TGo4ExampleServer.cxx.
References TGo4ServerTask::TGo4ServerTask(), TGo4Log::Debug(), fcControlName, fcLoggingName, fgcCONTROLTHREAD, fgcLOGGINGTHREAD, fxController, TGo4ThreadManager::fxWorkHandler, GO4TRACE, and TGo4ThreadManager::Launch().
|
virtual |
Definition at line 34 of file TGo4ExampleServer.cxx.
References fxController, TGo4ThreadManager::fxWorkHandler, and GO4TRACE.
|
private |
|
overridevirtual |
factory method for command list; overridden by implementation
Reimplemented from TGo4Task.
Definition at line 68 of file TGo4ExampleServer.cxx.
TGo4ExampleController * TGo4ExampleServer::GetController | ( | ) |
Definition at line 28 of file TGo4ExampleServer.cxx.
References fxController, and GO4TRACE.
Referenced by TGo4ControllerRunnable::TGo4ControllerRunnable(), and TGo4LoggingRunnable::TGo4LoggingRunnable().
|
overridevirtual |
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 from TGo4Task.
Definition at line 93 of file TGo4ExampleServer.cxx.
References TGo4Log::Debug(), fcControlName, fcLoggingName, TGo4ThreadManager::GetWorkHandler(), TGo4ThreadHandler::Start(), and TGo4Task::StartWorkThreads().
|
overridevirtual |
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 from TGo4Task.
Definition at line 73 of file TGo4ExampleServer.cxx.
References TGo4BufferQueue::AddBufferFromObject(), TGo4Log::Debug(), fcControlName, fcLoggingName, TGo4ServerTask::GetDataQueue(), TGo4ServerTask::GetStatusQueue(), TGo4ThreadManager::GetWorkHandler(), TGo4ThreadHandler::Stop(), and TGo4Task::StopWorkThreads().
|
private |
remember name of controller thread
Definition at line 59 of file TGo4ExampleServer.h.
Referenced by TGo4ExampleServer(), StartWorkThreads(), and StopWorkThreads().
|
private |
remember name of logging thread
Definition at line 62 of file TGo4ExampleServer.h.
Referenced by TGo4ExampleServer(), StartWorkThreads(), and StopWorkThreads().
|
static |
suffix for controller thread name
Definition at line 44 of file TGo4ExampleServer.h.
Referenced by TGo4ExampleServer().
|
static |
suffix for logging thread name
Definition at line 47 of file TGo4ExampleServer.h.
Referenced by TGo4ExampleServer().
|
private |
aggregationByValue 1 0..1
Definition at line 56 of file TGo4ExampleServer.h.
Referenced by TGo4ExampleServer(), ~TGo4ExampleServer(), and GetController().