GSI Object Oriented Online Offline (Go4)  GO4-6.2.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
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 ()
 
virtual void Quit ()
 
void Shutdown ()
 
TGo4TaskManagerGetTaskManager ()
 
TGo4TaskHandlerGetCurrentTaskHandler ()
 
TGo4TaskHandlerGetTaskHandler ()
 
TGo4TaskHandlerGetTaskHandler (const char *name)
 
TGo4BufferQueueGetCommandQueue (const char *task=0)
 
TGo4BufferQueueGetStatusQueue (const char *task=0)
 
TGo4BufferQueueGetDataQueue (const char *task=0)
 
virtual TGo4CommandNextCommand ()
 
virtual void SendStatus (TGo4Status *stat, const char *receiver=0)
 
virtual void SendStatusBuffer ()
 
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 ()
 
virtual void Terminate (Bool_t termapp=kTRUE)
 
virtual void TerminateFast ()
 
virtual void ExecuteString (const char *command)
 
Bool_t IsMaster ()
 
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=0)
 
TMutex * GetStatusBufferMutex ()
 
void SendStatusMessage (Int_t level, Bool_t printout, const char *text,...)
 
void UpdateStatusBuffer ()
 
virtual Int_t Initialization ()
 
virtual TGo4TaskStatusCreateStatus ()
 
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)
 
TGo4CommandMakeCommand (const char *name)
 
void WakeCommandQueue (Int_t id=0)
 
virtual Int_t StartWorkThreads ()
 
virtual Int_t StopWorkThreads ()
 
Bool_t IsWorkStopped ()
 
virtual void GetStatus ()
 
const char * GetCommanderName () const
 
TGo4MasterGetMaster ()
 
TGo4SlaveGetSlave ()
 
void SendStopBuffers (const char *taskname=0)
 
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
 
TGo4TaskHandlerfxCurrentTaskHandler
 
TGo4SocketfxConnectTransport
 
TGo4SocketfxDisConnectTransport
 
TString fxConnectHost
 
UInt_t fuConnectPort
 
Bool_t fbKeepServerSocket
 
Bool_t fbConnectRequest
 
Bool_t fbDisConnectRequest
 
Bool_t fbConnectIsOpen
 
Bool_t fbConnectIsDone
 
Bool_t fbConnectIsClose
 
TGo4TaskConnectorTimerfxConnectorTimer
 

Additional Inherited Members

- Static Public Attributes inherited from TGo4ThreadManager
static const Long_t fglTIMERPERIOD = 200
 
- Protected Member Functions inherited from TGo4Task
virtual
TGo4TaskHandlerCommandList
CreateCommandList ()
 
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
 
TBuffer * fxStatusBuffer
 
- Protected Attributes inherited from TGo4ThreadManager
Bool_t fbInitDone
 
Bool_t fbTerminating
 
Bool_t fbTerminateApplication
 
Bool_t fbAppBlocking
 
Bool_t fbAutoCreate
 
Bool_t fbAutoStart
 
Int_t fbBeingQuit
 
TGo4AppControlTimerfxBlocker
 
TGo4ThreadHandlerfxWorkHandler
 

Detailed Description

Definition at line 28 of file TGo4ServerTask.h.

Member Enumeration Documentation

Enumerator
kSecureShell 
kGuiEmbed 

Definition at line 262 of file TGo4ServerTask.h.

Constructor & Destructor Documentation

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 ( )
virtual

Member Function Documentation

Bool_t TGo4ServerTask::ConnectorThreadIsStopped ( )

Returns the waiting state fbIsWaiting of the Connector Thread;

Definition at line 590 of file TGo4ServerTask.cxx.

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

const char * TGo4ServerTask::Get_fgcLAUNCHPREFSFILE ( )
static

Definition at line 646 of file TGo4ServerTask.cxx.

References fgcLAUNCHPREFSFILE.

Referenced by TGo4ServerProxy::GetLaunchString().

TGo4BufferQueue * TGo4ServerTask::GetCommandQueue ( const char *  task = 0)
virtual

Reimplemented from TGo4Task.

Definition at line 462 of file TGo4ServerTask.cxx.

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

const char* TGo4ServerTask::GetConnectHost ( ) const
inline

Definition at line 123 of file TGo4ServerTask.h.

References fxConnectHost.

Referenced by TimerConnect().

const char* TGo4ServerTask::GetConnectorName ( ) const
inline
TGo4Socket * TGo4ServerTask::GetConnectTransport ( )

Definition at line 457 of file TGo4ServerTask.cxx.

References fxConnectTransport.

TGo4TaskHandler * TGo4ServerTask::GetCurrentTaskHandler ( )
TGo4BufferQueue * TGo4ServerTask::GetDataQueue ( const char *  task = 0)
virtual
TGo4BufferQueue * TGo4ServerTask::GetStatusQueue ( const char *  task = 0)
virtual
TGo4TaskHandler * TGo4ServerTask::GetTaskHandler ( )
virtual

Get task handler for client specified by name

Reimplemented from TGo4Task.

Definition at line 274 of file TGo4ServerTask.cxx.

References GetCurrentTaskHandler().

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

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

Get task handler for client specified by name

Definition at line 269 of file TGo4ServerTask.cxx.

References fxTaskManager, and TGo4TaskManager::GetTaskHandler().

TGo4TaskManager * TGo4ServerTask::GetTaskManager ( )
TGo4Command * TGo4ServerTask::NextCommand ( )
virtual

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 503 of file TGo4ServerTask.cxx.

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

void TGo4ServerTask::Quit ( )
virtual
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 Quit(), and Shutdown().

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

removes the currently active client from server (disconnect)

Definition at line 199 of file TGo4ServerTask.cxx.

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

void TGo4ServerTask::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 from TGo4Task.

Definition at line 529 of file TGo4ServerTask.cxx.

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

void TGo4ServerTask::SendStatusBuffer ( )
virtual
void TGo4ServerTask::SetConnect ( TGo4Socket trans,
const char *  host,
UInt_t  port,
Bool_t  keepserv = kFALSE 
)
void TGo4ServerTask::SetCurrentTask ( const char *  name)
void TGo4ServerTask::SetDisConnect ( TGo4Socket trans)

Definition at line 298 of file TGo4ServerTask.cxx.

References fbDisConnectRequest, and fxDisConnectTransport.

Referenced by TGo4TaskManager::ServeClient().

void TGo4ServerTask::Shutdown ( )
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 569 of file TGo4ServerTask.cxx.

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

Referenced by TGo4AnalysisProxy::LaunchAsClient().

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 574 of file TGo4ServerTask.cxx.

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

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 304 of file TGo4ServerTask.cxx.

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

Referenced by TGo4TaskConnectorTimer::Notify().

Int_t TGo4ServerTask::WaitForClose ( )
Int_t TGo4ServerTask::WaitForConnection ( )
Int_t TGo4ServerTask::WaitForOpen ( )

Member Data Documentation

Bool_t TGo4ServerTask::fbConnectIsClose
private

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

Definition at line 252 of file TGo4ServerTask.h.

Referenced by TimerConnect(), and WaitForClose().

Bool_t TGo4ServerTask::fbConnectIsDone
private

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

Definition at line 246 of file TGo4ServerTask.h.

Referenced by TimerConnect(), and WaitForConnection().

Bool_t TGo4ServerTask::fbConnectIsOpen
private

True if fxConnectTransport waits in server Open() call

Definition at line 240 of file TGo4ServerTask.h.

Referenced by TimerConnect(), and WaitForOpen().

Bool_t TGo4ServerTask::fbConnectRequest
private

True if fxConnectTransport shall be Open() by AppControlTimer

Definition at line 229 of file TGo4ServerTask.h.

Referenced by SetConnect(), and TimerConnect().

Bool_t TGo4ServerTask::fbDisConnectRequest
private

True if fxConnectTransport shall be Close() by AppControlTimer

Definition at line 234 of file TGo4ServerTask.h.

Referenced by SetDisConnect(), and TimerConnect().

Bool_t TGo4ServerTask::fbKeepServerSocket
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().

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().

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().

const Int_t TGo4ServerTask::fgiCONNECTWAITCYCLES =20
staticprotected

maximum cycles to wait until transport is connected

Definition at line 174 of file TGo4ServerTask.h.

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().

const UInt_t TGo4ServerTask::fguCLOSEWAITCYCLETIME =100
staticprotected

time for each close wait cycle

Definition at line 171 of file TGo4ServerTask.h.

Referenced by WaitForClose().

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().

const UInt_t TGo4ServerTask::fguCONNECTWAITCYCLETIME =200
staticprotected

time for each connect wait cycle

Definition at line 177 of file TGo4ServerTask.h.

Referenced by WaitForConnection().

const UInt_t TGo4ServerTask::fguOPENWAITCYCLETIME =100
staticprotected

time for each open wait cycle

Definition at line 165 of file TGo4ServerTask.h.

Referenced by WaitForOpen().

UInt_t TGo4ServerTask::fuConnectPort
private

port number for timer connect

Definition at line 219 of file TGo4ServerTask.h.

Referenced by SetConnect(), and TimerConnect().

TString TGo4ServerTask::fxConnectHost
private

hostname for timer connect

Definition at line 214 of file TGo4ServerTask.h.

Referenced by GetConnectHost(), and SetConnect().

TString TGo4ServerTask::fxConnectorName
private

remember name of connector thread

Definition at line 190 of file TGo4ServerTask.h.

Referenced by GetConnectorName(), and TGo4ServerTask().

TGo4TaskConnectorTimer* TGo4ServerTask::fxConnectorTimer
private

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

Definition at line 259 of file TGo4ServerTask.h.

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

TGo4Socket* TGo4ServerTask::fxConnectTransport
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().

TGo4TaskHandler* TGo4ServerTask::fxCurrentTaskHandler
private

1

Definition at line 197 of file TGo4ServerTask.h.

Referenced by GetCurrentTaskHandler(), and SetCurrentTask().

TGo4Socket* TGo4ServerTask::fxDisConnectTransport
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().

TGo4TaskManager* TGo4ServerTask::fxTaskManager
private

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