GSI Object Oriented Online Offline (Go4)  GO4-6.3.0
Public Types | Public Member Functions | Static Public Member Functions | Static Protected Attributes | Private Attributes | List of all members
TGo4ServerTask Class Reference

#include <TGo4ServerTask.h>

+ Inheritance diagram for TGo4ServerTask:

Public Types

enum  ELaunchmodes { kSecureShell = BIT(0), kGuiEmbed = BIT(1) }
 
- Public Types inherited from TGo4ThreadManager
enum  { fguTEXTLENGTH = 256 }
 

Public Member Functions

 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 ()
 
void Quit () override
 
void Shutdown ()
 
TGo4TaskManagerGetTaskManager ()
 
TGo4TaskHandlerGetCurrentTaskHandler ()
 
TGo4TaskHandlerGetTaskHandler () override
 
TGo4TaskHandlerGetTaskHandler (const char *name)
 
TGo4BufferQueueGetCommandQueue (const char *task=nullptr) override
 
TGo4BufferQueueGetStatusQueue (const char *task=nullptr) override
 
TGo4BufferQueueGetDataQueue (const char *task=nullptr) override
 
TGo4CommandNextCommand () override
 
void SendStatus (TGo4Status *stat, const char *receiver=nullptr) override
 
void SendStatusBuffer () override
 
virtual Bool_t StartConnectorThread ()
 
virtual Bool_t StopConnectorThread ()
 
Bool_t ConnectorThreadIsStopped ()
 
void SetCurrentTask (const char *name)
 
void SetConnect (TGo4Socket *trans, const char *host, UInt_t port, Bool_t keepserv=kFALSE)
 
void SetDisConnect (TGo4Socket *trans)
 
TGo4SocketGetConnectTransport ()
 
const char * GetConnectorName () const
 
const char * GetConnectHost () const
 
virtual Int_t TimerConnect ()
 
virtual Int_t RemoveAllClients (Bool_t force=false)
 
virtual Bool_t RemoveClient (const char *name, Bool_t clientwait=kTRUE, Bool_t isterminating=kFALSE)
 
Bool_t RemoveCurrentClient ()
 
Int_t WaitForOpen ()
 
Int_t WaitForClose ()
 
Int_t WaitForConnection ()
 
- 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 ()
 
virtual void Start ()
 
virtual void Stop ()
 
virtual void KillMain ()
 
virtual void RestartMain ()
 
void Terminate (Bool_t termapp=kTRUE) override
 
void TerminateFast () override
 
virtual void ExecuteString (const char *command)
 
Bool_t IsMaster () const
 
void SetOwner (TGo4TaskOwner *owner)
 
void AddUserCommand (TGo4Command *com)
 
void AddUserCommandList (TGo4CommandProtoList *comlist)
 
TGo4StatusNextStatus (Bool_t wait=kTRUE)
 
TObject * NextObject (Bool_t wait=kTRUE)
 
void SendObject (TObject *obj, const char *receiver=nullptr)
 
TMutex * GetStatusBufferMutex ()
 
void SendStatusMessage (Int_t level, Bool_t printout, const char *text,...)
 
void UpdateStatusBuffer ()
 
Int_t Initialization () override
 
virtual TGo4TaskStatusCreateStatus ()
 
Bool_t SubmitCommand (const char *name)
 
Bool_t SubmitEmergencyCommand (Go4EmergencyCommand_t val)
 
Bool_t SubmitEmergencyData (Go4EmergencyCommand_t val, const char *receiver=nullptr)
 
Bool_t SubmitLocalCommand (TGo4Command *com)
 
Bool_t SubmitCommand (TGo4Command *com)
 
TGo4CommandMakeCommand (const char *name)
 
void WakeCommandQueue (Int_t id=0)
 
virtual Int_t StartWorkThreads ()
 
virtual Int_t StopWorkThreads ()
 
Bool_t IsWorkStopped () const
 
virtual void GetStatus ()
 
const char * GetCommanderName () const
 
TGo4MasterGetMaster () const
 
TGo4SlaveGetSlave () const
 
void SendStopBuffers (const char *taskname=nullptr)
 
TBuffer * GetAbortBuffer ()
 
- Public Member Functions inherited from TGo4ThreadManager
 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)
 
TGo4ThreadHandlerGetWorkHandler () const
 
Bool_t BlockApp ()
 
Bool_t UnBlockApp (Int_t mode=0)
 
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 ()
 
- Public Member Functions inherited from TGo4CommandReceiver
 TGo4CommandReceiver ()
 
virtual ~TGo4CommandReceiver ()
 

Static Public Member Functions

static const char * Get_fgcLAUNCHPREFSFILE ()
 
- Static Public Member Functions inherited from TGo4Task
static Int_t Get_fgiTERMID ()
 

Static Protected Attributes

static const Int_t fgiOPENWAITCYCLES =100
 
static const UInt_t fguOPENWAITCYCLETIME =100
 
static const Int_t fgiCLOSEWAITCYCLES =100
 
static const UInt_t fguCLOSEWAITCYCLETIME =100
 
static const Int_t fgiCONNECTWAITCYCLES =20
 
static const UInt_t fguCONNECTWAITCYCLETIME =200
 
static const UInt_t fguCONNECTTIMERPERIOD =100
 
static const char * fgcLAUNCHPREFSFILE = "etc/Go4LaunchPrefs.txt"
 

Private Attributes

TString fxConnectorName
 
TGo4TaskManagerfxTaskManager {nullptr}
 
TGo4TaskHandlerfxCurrentTaskHandler {nullptr}
 
TGo4SocketfxConnectTransport {nullptr}
 
TGo4SocketfxDisConnectTransport {nullptr}
 
TString fxConnectHost
 
UInt_t fuConnectPort {0}
 
Bool_t fbKeepServerSocket {kFALSE}
 
Bool_t fbConnectRequest {kFALSE}
 
Bool_t fbDisConnectRequest {kFALSE}
 
Bool_t fbConnectIsOpen {kFALSE}
 
Bool_t fbConnectIsDone {kFALSE}
 
Bool_t fbConnectIsClose {kFALSE}
 
TGo4TaskConnectorTimerfxConnectorTimer {nullptr}
 

Additional Inherited Members

- Static Public Attributes inherited from TGo4ThreadManager
static const Long_t fglTIMERPERIOD = 200
 
- Protected Member Functions inherited from TGo4Task
virtual TGo4TaskHandlerCommandListCreateCommandList ()
 
TGo4TaskHandlerCommandListGetPrototype ()
 
virtual void UpdateStatus (TGo4TaskStatus *state)
 
TGo4ObjectQueueGetLocalCommandQueue ()
 
void SetMaster (Bool_t on=kTRUE)
 
void SetWorkIsStopped (Bool_t on)
 
- Protected Attributes inherited from TGo4Task
TMutex * fxStatusMutex {nullptr}
 
TBuffer * fxStatusBuffer {nullptr}
 
- Protected Attributes inherited from TGo4ThreadManager
Bool_t fbInitDone {kFALSE}
 
Bool_t fbTerminating {kFALSE}
 
Bool_t fbTerminateApplication {kFALSE}
 
Bool_t fbAppBlocking {kFALSE}
 
Bool_t fbAutoCreate {kFALSE}
 
Bool_t fbAutoStart {kFALSE}
 
Int_t fbBeingQuit {0}
 
TGo4AppControlTimerfxBlocker {nullptr}
 
TGo4ThreadHandlerfxWorkHandler {nullptr}
 

Detailed Description

Definition at line 28 of file TGo4ServerTask.h.

Member Enumeration Documentation

◆ ELaunchmodes

Enumerator
kSecureShell 
kGuiEmbed 

Definition at line 261 of file TGo4ServerTask.h.

Constructor & Destructor Documentation

◆ TGo4ServerTask()

TGo4ServerTask::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 
)

◆ ~TGo4ServerTask()

TGo4ServerTask::~TGo4ServerTask ( )
virtual

Member Function Documentation

◆ ConnectorThreadIsStopped()

Bool_t TGo4ServerTask::ConnectorThreadIsStopped ( )

Returns the waiting state fbIsWaiting of the Connector Thread;

Definition at line 548 of file TGo4ServerTask.cxx.

References GetConnectorName(), TGo4ThreadHandler::GetThread(), TGo4ThreadManager::GetWorkHandler(), and TGo4Thread::IsWaiting().

◆ Get_fgcLAUNCHPREFSFILE()

const char * TGo4ServerTask::Get_fgcLAUNCHPREFSFILE ( )
static

Definition at line 599 of file TGo4ServerTask.cxx.

References fgcLAUNCHPREFSFILE.

Referenced by GetConnectHost(), and TGo4ServerProxy::GetLaunchString().

◆ GetCommandQueue()

TGo4BufferQueue * TGo4ServerTask::GetCommandQueue ( const char *  task = nullptr)
overridevirtual

Reimplemented from TGo4Task.

Definition at line 430 of file TGo4ServerTask.cxx.

References TGo4TaskHandler::GetCommandQueue(), GetCurrentTaskHandler(), and GetTaskHandler().

◆ GetConnectHost()

const char* TGo4ServerTask::GetConnectHost ( ) const
inline

◆ GetConnectorName()

const char* TGo4ServerTask::GetConnectorName ( ) const
inline

◆ GetConnectTransport()

TGo4Socket * TGo4ServerTask::GetConnectTransport ( )

Definition at line 425 of file TGo4ServerTask.cxx.

References fxConnectTransport.

◆ GetCurrentTaskHandler()

TGo4TaskHandler * TGo4ServerTask::GetCurrentTaskHandler ( )

◆ GetDataQueue()

TGo4BufferQueue * TGo4ServerTask::GetDataQueue ( const char *  task = nullptr)
overridevirtual

◆ GetStatusQueue()

TGo4BufferQueue * TGo4ServerTask::GetStatusQueue ( const char *  task = nullptr)
overridevirtual

◆ GetTaskHandler() [1/2]

TGo4TaskHandler * TGo4ServerTask::GetTaskHandler ( )
overridevirtual

Get task handler for client specified by name

Reimplemented from TGo4Task.

Definition at line 249 of file TGo4ServerTask.cxx.

References GetCurrentTaskHandler().

Referenced by GetCommandQueue(), GetDataQueue(), GetStatusQueue(), and RemoveClient().

◆ GetTaskHandler() [2/2]

TGo4TaskHandler * TGo4ServerTask::GetTaskHandler ( const char *  name)

Get task handler for client specified by name

Definition at line 244 of file TGo4ServerTask.cxx.

References fxTaskManager, and TGo4TaskManager::GetTaskHandler().

◆ GetTaskManager()

TGo4TaskManager * TGo4ServerTask::GetTaskManager ( )

◆ NextCommand()

TGo4Command * TGo4ServerTask::NextCommand ( )
overridevirtual

Delivers next command. This implementation will poll over command queues of all existing connections. Command is labeled with name of ordering task, so data may be returned to command sender only.

Reimplemented from TGo4Task.

Definition at line 469 of file TGo4ServerTask.cxx.

References fxTaskManager, TGo4TaskManager::GetMutex(), TGo4Queue::IsEmpty(), TGo4Task::IsMaster(), TGo4TaskManager::NextTaskHandler(), TGo4Command::SetMode(), TGo4Command::SetTaskName(), and TGo4BufferQueue::WaitObjectFromBuffer().

◆ Quit()

void TGo4ServerTask::Quit ( )
overridevirtual

◆ RemoveAllClients()

Int_t TGo4ServerTask::RemoveAllClients ( Bool_t  force = false)
virtual

Remove all connected client task from this server. with option force=true, remove without waiting

Definition at line 171 of file TGo4ServerTask.cxx.

References fxTaskManager, TGo4TaskManager::NextTaskHandler(), and RemoveClient().

Referenced by GetConnectHost(), Quit(), and Shutdown().

◆ RemoveClient()

Bool_t TGo4ServerTask::RemoveClient ( const char *  name,
Bool_t  clientwait = kTRUE,
Bool_t  isterminating = kFALSE 
)
virtual

◆ RemoveCurrentClient()

Bool_t TGo4ServerTask::RemoveCurrentClient ( )

removes the currently active client from server (disconnect)

Definition at line 192 of file TGo4ServerTask.cxx.

References TGo4Log::Debug(), GetCurrentTaskHandler(), and RemoveClient().

Referenced by GetConnectHost().

◆ SendStatus()

void TGo4ServerTask::SendStatus ( TGo4Status stat,
const char *  receiver = nullptr 
)
overridevirtual

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 from TGo4Task.

Definition at line 493 of file TGo4ServerTask.cxx.

References TGo4Log::Debug(), fxTaskManager, TGo4TaskManager::GetMutex(), TGo4Task::IsMaster(), TGo4TaskManager::NextTaskHandler(), and TGo4Task::SendStatus().

◆ SendStatusBuffer()

void TGo4ServerTask::SendStatusBuffer ( )
overridevirtual

◆ SetConnect()

void TGo4ServerTask::SetConnect ( TGo4Socket trans,
const char *  host,
UInt_t  port,
Bool_t  keepserv = kFALSE 
)

◆ SetCurrentTask()

void TGo4ServerTask::SetCurrentTask ( const char *  name)

◆ SetDisConnect()

void TGo4ServerTask::SetDisConnect ( TGo4Socket trans)

Definition at line 273 of file TGo4ServerTask.cxx.

References fbDisConnectRequest, and fxDisConnectTransport.

Referenced by TGo4TaskManager::ServeClient().

◆ Shutdown()

void TGo4ServerTask::Shutdown ( )

◆ StartConnectorThread()

Bool_t TGo4ServerTask::StartConnectorThread ( )
virtual

starts the thread that listens to the connector port for a client negotiation request; used after launching an rsh client from server

Definition at line 528 of file TGo4ServerTask.cxx.

References GetConnectorName(), TGo4ThreadManager::GetWorkHandler(), and TGo4ThreadHandler::Start().

Referenced by TGo4AnalysisProxy::LaunchAsClient().

◆ StopConnectorThread()

Bool_t TGo4ServerTask::StopConnectorThread ( )
virtual

stops the thread that listens to the connector port for a client negotiation request; used before launching an rsh client from server. A dummy connection is performed to release socket pending in listening state, thus runnable may wait afterwards, and no server socket is listening on spawning the client. Tests showed that any child process took over the listening server socket, which is not desired here and probably a bug of the system.

Definition at line 533 of file TGo4ServerTask.cxx.

References TGo4Socket::Close(), fxTaskManager, TGo4TaskHandler::Get_fgcERROR(), GetConnectorName(), TGo4TaskManager::GetNegotiationPort(), TGo4ThreadManager::GetWorkHandler(), TGo4Socket::Open(), TGo4Socket::Send(), and TGo4ThreadHandler::Stop().

◆ TimerConnect()

Int_t TGo4ServerTask::TimerConnect ( )
virtual

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

Definition at line 279 of file TGo4ServerTask.cxx.

References TGo4Socket::Close(), fbConnectIsClose, fbConnectIsDone, fbConnectIsOpen, fbConnectRequest, fbDisConnectRequest, fbKeepServerSocket, fuConnectPort, fxConnectTransport, fxDisConnectTransport, GetConnectHost(), TGo4Socket::IsOpen(), and TGo4Socket::Open().

Referenced by GetConnectHost(), and TGo4TaskConnectorTimer::Notify().

◆ WaitForClose()

Int_t TGo4ServerTask::WaitForClose ( )

◆ WaitForConnection()

Int_t TGo4ServerTask::WaitForConnection ( )

◆ WaitForOpen()

Int_t TGo4ServerTask::WaitForOpen ( )

Member Data Documentation

◆ fbConnectIsClose

Bool_t TGo4ServerTask::fbConnectIsClose {kFALSE}
private

True if fxConnectTransport has returned from Close(), i.e. connection was established

Definition at line 251 of file TGo4ServerTask.h.

Referenced by TimerConnect(), and WaitForClose().

◆ fbConnectIsDone

Bool_t TGo4ServerTask::fbConnectIsDone {kFALSE}
private

True if fxConnectTransport has returned from Open(), i.e. connection was established

Definition at line 245 of file TGo4ServerTask.h.

Referenced by TimerConnect(), and WaitForConnection().

◆ fbConnectIsOpen

Bool_t TGo4ServerTask::fbConnectIsOpen {kFALSE}
private

True if fxConnectTransport waits in server Open() call

Definition at line 239 of file TGo4ServerTask.h.

Referenced by TimerConnect(), and WaitForOpen().

◆ fbConnectRequest

Bool_t TGo4ServerTask::fbConnectRequest {kFALSE}
private

True if fxConnectTransport shall be Open() by AppControlTimer

Definition at line 229 of file TGo4ServerTask.h.

Referenced by SetConnect(), and TimerConnect().

◆ fbDisConnectRequest

Bool_t TGo4ServerTask::fbDisConnectRequest {kFALSE}
private

True if fxConnectTransport shall be Close() by AppControlTimer

Definition at line 234 of file TGo4ServerTask.h.

Referenced by SetDisConnect(), and TimerConnect().

◆ fbKeepServerSocket

Bool_t TGo4ServerTask::fbKeepServerSocket {kFALSE}
private

True if open in server mode shall keep the server socket instance

Definition at line 224 of file TGo4ServerTask.h.

Referenced by SetConnect(), and TimerConnect().

◆ fgcLAUNCHPREFSFILE

const char * TGo4ServerTask::fgcLAUNCHPREFSFILE = "etc/Go4LaunchPrefs.txt"
staticprotected

Name of the Preferences file for the client startup

Definition at line 183 of file TGo4ServerTask.h.

Referenced by Get_fgcLAUNCHPREFSFILE().

◆ fgiCLOSEWAITCYCLES

const Int_t TGo4ServerTask::fgiCLOSEWAITCYCLES =100
staticprotected

maximum cycles to wait until transport is closed

Definition at line 168 of file TGo4ServerTask.h.

Referenced by WaitForClose().

◆ fgiCONNECTWAITCYCLES

const Int_t TGo4ServerTask::fgiCONNECTWAITCYCLES =20
staticprotected

maximum cycles to wait until transport is connected

Definition at line 174 of file TGo4ServerTask.h.

◆ fgiOPENWAITCYCLES

const Int_t TGo4ServerTask::fgiOPENWAITCYCLES =100
staticprotected

maximum cycles to wait until transport is open

Definition at line 162 of file TGo4ServerTask.h.

Referenced by WaitForOpen().

◆ fguCLOSEWAITCYCLETIME

const UInt_t TGo4ServerTask::fguCLOSEWAITCYCLETIME =100
staticprotected

time for each close wait cycle

Definition at line 171 of file TGo4ServerTask.h.

Referenced by WaitForClose().

◆ fguCONNECTTIMERPERIOD

const UInt_t TGo4ServerTask::fguCONNECTTIMERPERIOD =100
staticprotected

period of task connector timer

Definition at line 180 of file TGo4ServerTask.h.

Referenced by Shutdown(), and TGo4ServerTask().

◆ fguCONNECTWAITCYCLETIME

const UInt_t TGo4ServerTask::fguCONNECTWAITCYCLETIME =200
staticprotected

time for each connect wait cycle

Definition at line 177 of file TGo4ServerTask.h.

Referenced by WaitForConnection().

◆ fguOPENWAITCYCLETIME

const UInt_t TGo4ServerTask::fguOPENWAITCYCLETIME =100
staticprotected

time for each open wait cycle

Definition at line 165 of file TGo4ServerTask.h.

Referenced by WaitForOpen().

◆ fuConnectPort

UInt_t TGo4ServerTask::fuConnectPort {0}
private

port number for timer connect

Definition at line 219 of file TGo4ServerTask.h.

Referenced by SetConnect(), and TimerConnect().

◆ fxConnectHost

TString TGo4ServerTask::fxConnectHost
private

hostname for timer connect

Definition at line 214 of file TGo4ServerTask.h.

Referenced by GetConnectHost(), and SetConnect().

◆ fxConnectorName

TString TGo4ServerTask::fxConnectorName
private

remember name of connector thread

Definition at line 190 of file TGo4ServerTask.h.

Referenced by GetConnectorName(), and TGo4ServerTask().

◆ fxConnectorTimer

TGo4TaskConnectorTimer* TGo4ServerTask::fxConnectorTimer {nullptr}
private

timer responsible for the connection/disconnection of clients; independent of application control timer 1

Definition at line 258 of file TGo4ServerTask.h.

Referenced by TGo4ServerTask(), and ~TGo4ServerTask().

◆ fxConnectTransport

TGo4Socket* TGo4ServerTask::fxConnectTransport {nullptr}
private

link to the next TaskHandler transport instance that shall be connected by the Application Control Timer with the client

Definition at line 203 of file TGo4ServerTask.h.

Referenced by GetConnectTransport(), SetConnect(), and TimerConnect().

◆ fxCurrentTaskHandler

TGo4TaskHandler* TGo4ServerTask::fxCurrentTaskHandler {nullptr}
private

1

Definition at line 197 of file TGo4ServerTask.h.

Referenced by GetCurrentTaskHandler(), and SetCurrentTask().

◆ fxDisConnectTransport

TGo4Socket* TGo4ServerTask::fxDisConnectTransport {nullptr}
private

link to the next TaskHandler transport instance that shall be disconnected by the Application Control Timer with the client

Definition at line 209 of file TGo4ServerTask.h.

Referenced by SetDisConnect(), and TimerConnect().

◆ fxTaskManager

TGo4TaskManager* TGo4ServerTask::fxTaskManager {nullptr}
private

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