Server and client. In fact Sun, Moon and Fire. Shines, reflects and glows.
static void* | tl_Delayed_MIR_Shooter(Saturn* s) |
static void | tl_MIR_DetachedCleanUp(Saturn* sat) |
static void* | tl_MIR_DetachedExecutor(Saturn* sat) |
static void* | tl_MIR_Router(Saturn* sat) |
static void* | tl_MIR_Shooter(Saturn* s) |
static void* | tl_Ray_Emitter(Saturn* s) |
static void* | tl_SaturnAcceptor(Saturn::new_connection_ti* ss) |
static void* | tl_SaturnFdSucker(Saturn* s) |
static const Int_t | s_Gled_Protocol_Version |
Bool_t | bAcceptsRays | |
Bool_t | bAllowMoons | X{g} |
bool | bSunAbsolute | X{g} |
GMutex | mBeamReqHandleMutex | |
Mountain* | mChaItOss | X{g} |
GCondition | mDelayedMIRShootingCnd | |
multimap<GTime,ZMIR*> | mDelayedMIRShootingQueue | |
GThread* | mDelayedMIRShootingThread | |
GMutex | mEyeLock | sending to eyes |
list<EyeInfo*> | mEyes | |
ZFireKing* | mFireKing | X{g} |
ZFireQueen* | mFireQueen | X{g} |
ZGod* | mGod | X{g} |
GMutex | mIDLock | X{r} ... must allow locking to eyez |
ZKing* | mKing | X{g} |
UInt_t | mLastBeamReqHandle | |
GMutex | mMIRShooterRoutingLock | |
GCondition | mMIRShootingCnd | |
list<ZMIR*> | mMIRShootingQueue | |
GThread* | mMIRShootingThread | |
GMutex | mMasterLock | sending to master |
GMutex | mMoonLock | sending to moons |
list<SaturnInfo*> | mMoons | |
GCondition | mQueenLoadCnd | X{r} |
Int_t | mQueenLoadNum | X{gS} |
GCondition | mRayEmittingCnd | |
list<pair<Ray*,EyeInfoVector*> > | mRayEmittingQueue | |
GThread* | mRayEmittingThread | |
GMutex | mRulingLock | Exec in kings & queens |
SaturnInfo* | mSaturnInfo | X{g} |
GSelector | mSelector | fd select wrapper for sockets |
TServerSocket* | mServerSocket | |
GThread* | mServerThread | |
GThread* | mShutdownThread | |
SaturnInfo* | mSunInfo | X{g} |
ZKing* | mSunKing | X{g} |
ZSunQueen* | mSunQueen | X{g} |
ZHistoManager* | pZHistoManager |
The thread foo for doing select on all sockets (master, moons & eyes). Could (in principle) have several threads.
Thread foo for acception of a new connection. Accept threads are always created in a detached state.
Thread foo for execution of a single *detached* MIR. MIR is set in the GThread structure.
Handles handshake with a Saturn on a newly opened socket. Returns greeting TString.
Sends request for instantiation of mee via socket. If authentication is required it is handled via ZSunQueen::HandleClientSideAuthentication(). The required identity is deduced from the TString ZMirEmittingEntity::mLogin.
Spawns SunAbsolute and starts internal Saturn threads. The calling thread is given the identity of the argument SaturnInfo, which is also assigned to mSunInfo and mSaturnInfo members.
Connects to a higher Saturn, as specified by si->MasterName and si->MasterPort. Does the following: 1) handles handshake & protocol info exchange 2) queries first free id to establish beginning of local sun-space 3) authenticates to sun.absolute and receives higher kings, sun.queen and the authorized SaturnInfo structure 4) starts MirShooting thread and server thread 5) issues requests for mirroring of mandatory queens The calling thread is given the identity of the return SaturnInfo, which is also assigned to mSaturnInfo member.
Creates unix socket pair and runs Accept() in a special thread. The other socket is returned. Used for Eye connections.
On start-up the moons are not allowed to connect (only Eyes). AllowMoons() allows moons connections from now on.
Inserts glass into hash with key id. Sets Saturn related glass members and calls ZGlass::AdEnlightenment().
Finds SaturnInfo that is on-route to target. Checks target's masters and if self is found, sends to the previous master. Otherwise it must be sent up.
Accepts connection from an Eye/Moon or handles FirstFreeID query. Locks/Suspends all executions upon adding fd to Selector and sending scene to the Moon. Runs in a detached thread (called from tl_SaturnAcceptor) ... perhaps should timeout. Handles one connection at a time.
Writes header and caller infromation. If caller==0 the owner of current thread is used.
The auto_ptr<ZMIR> is released and should not be used afterwards.
The auto_ptr<ZMIR> is released and should not be used afterwards.
Routes MIR 'mir' in the current thread. Usually called from Operators to publish some result. 'mir' will NOT be harmed; if it is to be re-used, do: mir.RewindToMIR() prior to posting it again.
Routes a MIR in the current thread. Wrapper for the variant with auto_ptr argument.
Accepts a MIR and shoots it into the system. The auto_ptr<ZMIR> is released and should not be used afterwards.
Accepts a MIR and shoots it into the system. Wrapper for the variant with auto_ptr argument.
Accepts a MIR and shoots it into the system. The auto_ptr<ZMIR> is released and should not be used afterwards.
Accepts a MIR and shoots it into the system. Wrapper for the variant with auto_ptr argument.
Accepts a MIR, shoots it into the system and waits for ResultReport. The auto_ptr<ZMIR> is released and should not be used afterwards.
Accepts a MIR, shoots it into the system and waits for ResultReport. Wrapper for the variant with auto_ptr argument.
Makes a result MIR and sends it to the caller Saturn. Should be called from a method called via a MIR (flare OR beam) containing a result request.
Prepares MIR for execution, does checks, proper broadcasting and the execution itself. Message type should be MT_Beam or MT_Flare.
Wrapper with auto_ptr argument. This is the preferred entry point but the variant taking plain ZMIR* is also needed for execution of MIRs in detached threads that can be potentially cancelled.
This function spawns a thread that calls ExecMIR(). mir is released and deleted at thread completition.
Broadcasts MIR to reflecting Moons specified in socks.
Broadcasts MIR to reflecting Moons specified in socks. Specifically sets each SaturnInfo to be the recipient.
A thread function to spawn off server thread and shooter threads. Needed to ensure that most signals are blocked. Termination policy for these threads is set to system-exit. This is called from Create() or Connect() which in turn is usually called from a CINT script -- and that thread has several system signals unblocked.
Removes moon from list of moons and notifies the SunQueen if notify_sunqueen_p is true. Also removes the moon from all queens that are reflecting to it.