Public Types | Public Member Functions | Static Public Member Functions | Static Protected Attributes | Private Attributes

TGo4ServerTask Class Reference

#include <TGo4ServerTask.h>

Inheritance diagram for TGo4ServerTask:
TGo4Task TGo4ThreadManager TGo4CommandReceiver TGo4ExampleServer

List of all members.

Public Types

enum  ELaunchmodes { kSecureShell = BIT(0), kGuiEmbed = BIT(1) }

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 ()
virtual void LockAll ()
virtual void UnLockAll ()
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 ()

Static Public Member Functions

static const char * Get_fgcLAUNCHPREFSFILE ()

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

Detailed Description

Definition at line 28 of file TGo4ServerTask.h.


Member Enumeration Documentation

Enumerator:
kSecureShell 
kGuiEmbed 

Definition at line 277 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 592 of file TGo4ServerTask.cxx.

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

const char * TGo4ServerTask::Get_fgcLAUNCHPREFSFILE (  )  [static]

Definition at line 672 of file TGo4ServerTask.cxx.

References fgcLAUNCHPREFSFILE.

Referenced by TGo4AnalysisProxy::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 131 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 ( const char *  name  ) 

Get task handler for client specified by name

Definition at line 269 of file TGo4ServerTask.cxx.

References fxTaskManager, and TGo4TaskManager::GetTaskHandler().

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

void TGo4ServerTask::LockAll (  )  [virtual]

Lock all go4 mutexes in correct order to avoid deadlocking. to be used from cintlocktimer

Reimplemented from TGo4Task.

Definition at line 648 of file TGo4ServerTask.cxx.

References TGo4Task::fxStatusMutex, fxTaskManager, TGo4TaskManager::GetMutex(), and TGo4LockGuard::LockMainMutex().

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(), and TGo4TaskManager::NextTaskHandler().

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

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

void TGo4ServerTask::UnLockAll (  )  [virtual]

UnLock all go4 mutexes in correct order to avoid deadlocking to be used from cintlocktimer

Reimplemented from TGo4Task.

Definition at line 661 of file TGo4ServerTask.cxx.

References TGo4Task::fxStatusMutex, fxTaskManager, TGo4TaskManager::GetMutex(), and TGo4LockGuard::UnLockMainMutex().

Int_t TGo4ServerTask::WaitForClose (  ) 

Overrides the ThreadManager Initialization; is used to setup the client connections on demand; checks for fbConnectRequest flag

Definition at line 409 of file TGo4ServerTask.cxx.

References fbConnectIsClose, fgiCLOSEWAITCYCLES, fguCLOSEWAITCYCLETIME, and TGo4Thread::Sleep().

Referenced by TGo4TaskManager::ServeClient().

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

Member Data Documentation

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

Definition at line 267 of file TGo4ServerTask.h.

Referenced by TimerConnect(), and WaitForClose().

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

Definition at line 261 of file TGo4ServerTask.h.

Referenced by TimerConnect(), and WaitForConnection().

True if fxConnectTransport waits in server Open() call

Definition at line 255 of file TGo4ServerTask.h.

Referenced by TimerConnect(), and WaitForOpen().

True if fxConnectTransport shall be Open() by AppControlTimer

Definition at line 244 of file TGo4ServerTask.h.

Referenced by SetConnect(), and TimerConnect().

True if fxConnectTransport shall be Close() by AppControlTimer

Definition at line 249 of file TGo4ServerTask.h.

Referenced by SetDisConnect(), and TimerConnect().

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

Definition at line 239 of file TGo4ServerTask.h.

Referenced by SetConnect(), and TimerConnect().

const char * TGo4ServerTask::fgcLAUNCHPREFSFILE = "etc/Go4LaunchPrefs.txt" [static, protected]

Name of the Preferences file for the client startup

Definition at line 197 of file TGo4ServerTask.h.

Referenced by Get_fgcLAUNCHPREFSFILE().

const Int_t TGo4ServerTask::fgiCLOSEWAITCYCLES = 100 [static, protected]

maximum cycles to wait until transport is closed

Definition at line 182 of file TGo4ServerTask.h.

Referenced by WaitForClose().

const Int_t TGo4ServerTask::fgiCONNECTWAITCYCLES = 20 [static, protected]

maximum cycles to wait until transport is connected

Definition at line 188 of file TGo4ServerTask.h.

const Int_t TGo4ServerTask::fgiOPENWAITCYCLES = 100 [static, protected]

maximum cycles to wait until transport is open

Definition at line 176 of file TGo4ServerTask.h.

Referenced by WaitForOpen().

const UInt_t TGo4ServerTask::fguCLOSEWAITCYCLETIME = 100 [static, protected]

time for each close wait cycle

Definition at line 185 of file TGo4ServerTask.h.

Referenced by WaitForClose().

const UInt_t TGo4ServerTask::fguCONNECTTIMERPERIOD = 100 [static, protected]

period of task connector timer

Definition at line 194 of file TGo4ServerTask.h.

Referenced by Shutdown(), and TGo4ServerTask().

const UInt_t TGo4ServerTask::fguCONNECTWAITCYCLETIME = 200 [static, protected]

time for each connect wait cycle

Definition at line 191 of file TGo4ServerTask.h.

Referenced by WaitForConnection().

const UInt_t TGo4ServerTask::fguOPENWAITCYCLETIME = 100 [static, protected]

time for each open wait cycle

Definition at line 179 of file TGo4ServerTask.h.

Referenced by WaitForOpen().

port number for timer connect

Definition at line 233 of file TGo4ServerTask.h.

Referenced by SetConnect(), and TimerConnect().

TString TGo4ServerTask::fxConnectHost [private]

hostname for timer connect

Definition at line 228 of file TGo4ServerTask.h.

Referenced by GetConnectHost(), and SetConnect().

remember name of connector thread

Definition at line 204 of file TGo4ServerTask.h.

Referenced by GetConnectorName(), and TGo4ServerTask().

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

Definition at line 274 of file TGo4ServerTask.h.

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

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

Definition at line 217 of file TGo4ServerTask.h.

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

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

Definition at line 223 of file TGo4ServerTask.h.

Referenced by SetDisConnect(), and TimerConnect().


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines