Definitely need Queen loading implemented in Saturn GCondition mQueenLoadingCond lID_t mAwaited Queens (or hash ... or both ... or sth) (need list<GCondition*>) void LoadQueen(ZQueen*) or LoadQueen(ID_t) { checks deps ... } void SuspendUntilQueenReady(ZQueen*) void SuspendUntilNoQueensPending() where do requests come from? This is ... again ... the tricky part. Now been mis-using the fire-king
Saturn() | |
Saturn(const Saturn&) | |
virtual | ~Saturn() |
void | TObject::AbstractMethod(const char* method) const |
Bool_t | AcceptsRays() const |
void | AllowMoons() |
virtual void | TObject::AppendPad(Option_t* option = "") |
virtual void | TObject::Browse(TBrowser* b) |
static TClass* | Class() |
virtual const char* | TObject::ClassName() const |
virtual void | TObject::Clear(Option_t* = "") |
virtual TObject* | TObject::Clone(const char* newname = "") const |
virtual Int_t | TObject::Compare(const TObject* obj) const |
SaturnInfo* | Connect(SaturnInfo* si) |
virtual void | TObject::Copy(TObject& object) const |
void | CopyMoons(lpSaturnInfo_t& list) |
void | Create(SaturnInfo* si) |
void | DelayedShootMIR(auto_ptr<ZMIR>& mir, GTime at_time) |
virtual void | TObject::Delete(Option_t* option = "")MENU |
void | DeliverTextMessage(EyeInfo* eye, TextMessage& tm) |
virtual ZGlass* | DemangleID(ID_t id) |
virtual Int_t | TObject::DistancetoPrimitive(Int_t px, Int_t py) |
virtual void | TObject::Draw(Option_t* option = "") |
virtual void | TObject::DrawClass() constMENU |
virtual TObject* | TObject::DrawClone(Option_t* option = "") constMENU |
virtual void | TObject::Dump() constMENU |
virtual void | TObject::Error(const char* method, const char* msgfmt) const |
virtual void | TObject::Execute(const char* method, const char* params, Int_t* error = 0) |
virtual void | TObject::Execute(TMethod* method, TObjArray* params, Int_t* error = 0) |
virtual void | TObject::ExecuteEvent(Int_t event, Int_t px, Int_t py) |
virtual void | TObject::Fatal(const char* method, const char* msgfmt) const |
virtual TObject* | TObject::FindObject(const char* name) const |
virtual TObject* | TObject::FindObject(const TObject* obj) const |
Int_t | Freeze() |
Bool_t | GetAllowMoons() |
Mountain* | GetChaItOss() |
virtual Option_t* | TObject::GetDrawOption() const |
static Long_t | TObject::GetDtorOnly() |
ZFireKing* | GetFireKing() |
ZFireQueen* | GetFireQueen() |
ZGod* | GetGod() |
virtual const char* | TObject::GetIconName() const |
ZKing* | GetKing() |
virtual const char* | TObject::GetName() const |
virtual char* | TObject::GetObjectInfo(Int_t px, Int_t py) const |
static Bool_t | TObject::GetObjectStat() |
virtual Option_t* | TObject::GetOption() const |
Int_t | GetQueenLoadNum() |
SaturnInfo* | GetSaturnInfo() |
bool | GetSunAbsolute() |
SaturnInfo* | GetSunInfo() |
ZKing* | GetSunKing() |
ZSunQueen* | GetSunQueen() |
virtual const char* | TObject::GetTitle() const |
virtual UInt_t | TObject::GetUniqueID() const |
Forest* | GetVer() |
ZHistoManager* | GetZHistoManager() |
static TMessage* | HandleClientSideMeeConnection(TSocket* socket, ZMirEmittingEntity* mee) |
static TString | HandleClientSideSaturnHandshake(TSocket*& socket) |
virtual Bool_t | TObject::HandleTimer(TTimer* timer) |
virtual ULong_t | TObject::Hash() const |
virtual void | TObject::Info(const char* method, const char* msgfmt) const |
virtual Bool_t | TObject::InheritsFrom(const char* classname) const |
virtual Bool_t | TObject::InheritsFrom(const TClass* cl) const |
virtual void | TObject::Inspect() constMENU |
void | TObject::InvertBit(UInt_t f) |
virtual TClass* | IsA() const |
virtual Bool_t | TObject::IsEqual(const TObject* obj) const |
virtual Bool_t | TObject::IsFolder() const |
Bool_t | IsMoon(SaturnInfo* si) |
Bool_t | TObject::IsOnHeap() const |
virtual Bool_t | TObject::IsSortable() const |
Bool_t | TObject::IsZombie() const |
void | LockMIRShooters(bool wait_until_queue_empty = false) |
virtual void | TObject::ls(Option_t* option = "") const |
void | TObject::MayNotUse(const char* method) const |
virtual Bool_t | TObject::Notify() |
static void | TObject::operator delete(void* ptr) |
static void | TObject::operator delete(void* ptr, void* vp) |
static void | TObject::operator delete[](void* ptr) |
static void | TObject::operator delete[](void* ptr, void* vp) |
void* | TObject::operator new(size_t sz) |
void* | TObject::operator new(size_t sz, void* vp) |
void* | TObject::operator new[](size_t sz) |
void* | TObject::operator new[](size_t sz, void* vp) |
Saturn& | operator=(const Saturn&) |
virtual void | TObject::Paint(Option_t* option = "") |
virtual void | TObject::Pop() |
void | PostMIR(auto_ptr<ZMIR>& mir) |
void | PostMIR(ZMIR* mir) |
virtual void | TObject::Print(Option_t* option = "") const |
virtual Int_t | TObject::Read(const char* name) |
virtual void | TObject::RecursiveRemove(TObject* obj) |
GMutex& | RefIDLock() |
GCondition& | RefQueenLoadCnd() |
void | TObject::ResetBit(UInt_t f) |
virtual void | TObject::SaveAs(const char* filename = "", Option_t* option = "") constMENU |
virtual void | TObject::SavePrimitive(basic_ostream<char,char_traits<char> >& out, Option_t* option = "") |
void | TObject::SetBit(UInt_t f) |
void | TObject::SetBit(UInt_t f, Bool_t set) |
virtual void | TObject::SetDrawOption(Option_t* option = "")MENU |
static void | TObject::SetDtorOnly(void* obj) |
static void | TObject::SetObjectStat(Bool_t stat) |
void | SetQueenLoadNum(Int_t queenloadnum) |
virtual void | TObject::SetUniqueID(UInt_t uid) |
void | Shine(auto_ptr<Ray>& ray) |
void | ShootMIR(auto_ptr<ZMIR>& mir, bool use_own_thread = false) |
void | ShootMIR(ZMIR* mir, bool use_own_thread = false) |
void | ShootMIRResult(TBuffer& buf) |
ZMIR_RR* | ShootMIRWaitResult(auto_ptr<ZMIR>& mir, bool use_own_thread = false) |
virtual void | ShowMembers(TMemberInspector& insp, char* parent) |
void | Shutdown() |
virtual void | Streamer(TBuffer& b) |
void | StreamerNVirtual(TBuffer& b) |
virtual void | TObject::SysError(const char* method, const char* msgfmt) const |
Bool_t | TObject::TestBit(UInt_t f) const |
Int_t | TObject::TestBits(UInt_t f) const |
Int_t | UnFreeze() |
void | UnlockMIRShooters() |
virtual void | TObject::UseCurrentStyle() |
virtual void | TObject::Warning(const char* method, const char* msgfmt) const |
virtual Int_t | TObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0) |
virtual Int_t | TObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0) const |
void | Accept(TSocket* newsocket) |
void | AcceptWrapper(TSocket* newsocket) |
void | arrival_of_kings(TMessage* m) |
void | BroadcastBeamMIR(ZMIR& mir, lpSaturnInfo_t& moons) |
void | BroadcastMIR(ZMIR& mir, lpSaturnInfo_t& moons) |
void | create_kings(const char* king, const char* whore_king) |
void | delayed_mir_shooter() |
void | delayed_shoot_mir(auto_ptr<ZMIR>& mir, ZMirEmittingEntity* caller, GTime at_time) |
virtual void | TObject::DoError(int level, const char* location, const char* fmt, va_list va) const |
void | Endark(ZGlass* glass) |
void | Enlight(ZGlass* glass, ID_t) |
void | ExecDetachedMIR(auto_ptr<ZMIR>& mir) |
void | ExecMIR(ZMIR* mir, bool lockp = true) |
void | ExecMIR(auto_ptr<ZMIR>& mir, bool lockp = true) |
void | finalize_eye_connection(EyeInfo* ei) |
void | finalize_moon_connection(SaturnInfo* si) |
SaturnInfo* | FindRouteTo(SaturnInfo* target) |
void | fix_fire_king_id(SaturnInfo* si) |
void | ForwardMIR(ZMIR& mir, SaturnInfo* route) |
void | Freeze(ZGlass* glass) |
void | generick_shoot_mir_result(ZMIR& mir, const Text_t* exc, TBuffer* buf) |
void | handle_mir_result(UInt_t req_handle, ZMIR* mirp) |
void | TObject::MakeZombie() |
Int_t | Manage(TSocket* sock) |
void | markup_posted_mir(ZMIR& mir, ZMirEmittingEntity* caller = 0) |
void | mir_shooter() |
void | post_mir(auto_ptr<ZMIR>& mir, ZMirEmittingEntity* caller = 0) |
ZMIR_RR* | query_mir_result(UInt_t req_handle) |
void | ray_emitter() |
void | Reflect(ZGlass* glass) |
UInt_t | register_mir_result_request(GCondition* cond) |
void | report_mir_post_demangling_error(ZMIR& mir, TString error) |
void | report_mir_pre_demangling_error(ZMIR& mir, TString error) |
void | RouteMIR(auto_ptr<ZMIR>& mir) |
void | shoot_mir(auto_ptr<ZMIR>& mir, ZMirEmittingEntity* caller, bool use_own_thread = false) |
void | socket_closed(TSocket* sock) |
Int_t | SockSuck() |
int | start_server() |
int | start_shooters() |
int | stop_detached_threads() |
int | stop_server() |
int | stop_shooters() |
void | UnfoldMIR(auto_ptr<ZMIR>& mir) |
void | wipe_eye(EyeInfo* eye, bool notify_sunqueen_p) |
void | wipe_moon(SaturnInfo* moon, bool notify_sunqueen_p) |
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) |
enum TObject::EStatusBits { | kCanDelete | |
kMustCleanup | ||
kObjInCanvas | ||
kIsReferenced | ||
kHasUUID | ||
kCannotPick | ||
kNoContextMenu | ||
kInvalidObject | ||
}; | ||
enum TObject::[unnamed] { | kIsOnHeap | |
kNotDeleted | ||
kZombie | ||
kBitMask | ||
kSingleKey | ||
kOverwrite | ||
kWriteDelete | ||
}; |
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 |
lpSaturnInfo_t | mMoons | |
GCondition | mQueenLoadCnd | X{r} |
Int_t | mQueenLoadNum | X{gS} |
GCondition | mRayEmittingCnd | |
list<Ray*> | 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} |
Forest* | mVer | X{g} Will hold URL->queen/glass maps |
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.
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, shoots it into the system and waits for ResultReport. The auto_ptr<ZMIR> is released and should not be used afterwards.
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.
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.