ROOT logo
// $Id: SaturnInfo.h 2456 2010-10-17 18:31:40Z matevz $

// Copyright (C) 1999-2008, Matevz Tadel. All rights reserved.
// This file is part of GLED, released under GNU General Public License version 2.
// For the licensing terms see $GLEDSYS/LICENSE or http://www.gnu.org/.

#ifndef GledCore_SaturnInfo_H
#define GledCore_SaturnInfo_H

#include <Glasses/ZMirEmittingEntity.h>
class ZHashList;

#include <Gled/GCondition.h>

class ZQueen;
class EyeInfo;
class Saturn;
class TSocket;

class SaturnInfo : public ZMirEmittingEntity
{
  MAC_RNR_FRIENDS(SaturnInfo);

  friend class ZKing; friend class ZSunQueen; friend class ZQueen;
  friend class Saturn;

private:

  TSocket*	hSocket;	//! used locally in Saturn for routing.
  SaturnInfo*	hRoute;		//! likewise

  typedef set<ZQueen*>			spZQueen_t;
  typedef set<ZQueen*>::iterator	spZQueen_i;

  spZQueen_t	hQueens;	//! Queens mirrored to Saturn represented
				//  by this SaturnInfo (only used for moons of
				//  local Saturn)

protected:

  // Saturn config

  TString	mHostName;	// X{GSR} 7 TextOut()
  Int_t		mServerPort;	// X{GS}  7 ValOut(-range=>[0,65535,1], -join=>1)
  Int_t         mServPortScan;  // X{GS}  7 Value(-range=>[0,256,1])

  TString	mMasterName;	// X{GSR} 7 TextOut()
  Int_t		mMasterPort;	// X{GS}  7 ValOut(-range=>[0,65535,1,1])

  ID_t		mSunSpaceSize;	// X{GS}  7 ValOut(-range=>[0,MAX_ID,1,0], -width=>10)
  ID_t		mKingID;	// X{G}   7 ValOut(-range=>[0,MAX_ID,1,0], -width=>10)
  ID_t		mFireKingID;	// X{G}   7 ValOut(-range=>[0,MAX_ID,1,0], -width=>10)

  // Only relevant for Sun Absolute; set for all SaturnInfos on mee incarnation.
  Bool_t	bUseAuth;	// X{GS}  7 BoolOut()

  // Node info

  TString       mOS;            // X{GS} 7 TextOut()
  TString	mCPU_Model;	// X{GS} 7 TextOut()
  TString	mCPU_Type;	// X{GS} 7 TextOut()
  UShort_t	mCPU_Freq;	// X{GS} 7 ValOut(-width=>6, -join=>1)
  UShort_t	mCPU_Num;	// X{GS} 7 ValOut(-width=>6)

  UShort_t	mMemory;	// X{GS} 7 ValOut(-width=>6, -join=>1)
  UShort_t	mSwap;		// X{GS} 7 ValOut(-width=>6)

  UShort_t	mMFree;		// X{GS} 7 ValOut(-width=>6, -join=>1)
  UShort_t	mSFree;		// X{GS} 7 ValOut(-width=>6)

  Float_t	mLAvg1;		// X{GS} 7 ValOut(-width=>5, -join=>1)
  Float_t	mLAvg5;		// X{GS} 7 ValOut(-width=>5, -join=>1)
  Float_t	mLAvg15;	// X{GS} 7 ValOut(-width=>5)

  Float_t	mCU_Total;	// X{GS} 7 ValOut(-width=>6, -join=>1)
  Float_t	mCU_User;	// X{GS} 7 ValOut(-width=>6)
  Float_t	mCU_Nice;	// X{GS} 7 ValOut(-width=>6, -join=>1)
  Float_t	mCU_Sys;	// X{GS} 7 ValOut(-width=>6)
  Float_t	mCU_Idle;	// X{GS} 7 ValOut(-width=>6)

  // Cluster structure

  ZLink<SaturnInfo>	mMaster;	// X{gS} L{}
  ZLink<ZHashList>	mMoons;		// X{gS} L{}
  ZLink<ZHashList>	mEyes;		// X{gS} L{}

  void create_lists();

public:

  SaturnInfo(const Text_t* n="SaturnInfo", const Text_t* t=0);
  virtual ~SaturnInfo();

  virtual SaturnInfo* HostingSaturn() { return this; }
  // Virtuals exported from MEE
  virtual void Message(const Text_t* s);
  virtual void Warning(const Text_t* s);
  virtual void Error(const Text_t* s);

  void AddMoon(SaturnInfo* moon); // X{E} C{1}
  void AddEye(EyeInfo* eye);	  // X{E} C{1}

  void ReceiveBeamResult(UInt_t req_handle); // X{E} T{MEE::Self}

  void TellAverages(Int_t sample_time=500); // X{Ed}

#include "SaturnInfo.h7"
  ClassDef(SaturnInfo, 1);
}; // endclass SaturnInfo

#endif
 SaturnInfo.h:1
 SaturnInfo.h:2
 SaturnInfo.h:3
 SaturnInfo.h:4
 SaturnInfo.h:5
 SaturnInfo.h:6
 SaturnInfo.h:7
 SaturnInfo.h:8
 SaturnInfo.h:9
 SaturnInfo.h:10
 SaturnInfo.h:11
 SaturnInfo.h:12
 SaturnInfo.h:13
 SaturnInfo.h:14
 SaturnInfo.h:15
 SaturnInfo.h:16
 SaturnInfo.h:17
 SaturnInfo.h:18
 SaturnInfo.h:19
 SaturnInfo.h:20
 SaturnInfo.h:21
 SaturnInfo.h:22
 SaturnInfo.h:23
 SaturnInfo.h:24
 SaturnInfo.h:25
 SaturnInfo.h:26
 SaturnInfo.h:27
 SaturnInfo.h:28
 SaturnInfo.h:29
 SaturnInfo.h:30
 SaturnInfo.h:31
 SaturnInfo.h:32
 SaturnInfo.h:33
 SaturnInfo.h:34
 SaturnInfo.h:35
 SaturnInfo.h:36
 SaturnInfo.h:37
 SaturnInfo.h:38
 SaturnInfo.h:39
 SaturnInfo.h:40
 SaturnInfo.h:41
 SaturnInfo.h:42
 SaturnInfo.h:43
 SaturnInfo.h:44
 SaturnInfo.h:45
 SaturnInfo.h:46
 SaturnInfo.h:47
 SaturnInfo.h:48
 SaturnInfo.h:49
 SaturnInfo.h:50
 SaturnInfo.h:51
 SaturnInfo.h:52
 SaturnInfo.h:53
 SaturnInfo.h:54
 SaturnInfo.h:55
 SaturnInfo.h:56
 SaturnInfo.h:57
 SaturnInfo.h:58
 SaturnInfo.h:59
 SaturnInfo.h:60
 SaturnInfo.h:61
 SaturnInfo.h:62
 SaturnInfo.h:63
 SaturnInfo.h:64
 SaturnInfo.h:65
 SaturnInfo.h:66
 SaturnInfo.h:67
 SaturnInfo.h:68
 SaturnInfo.h:69
 SaturnInfo.h:70
 SaturnInfo.h:71
 SaturnInfo.h:72
 SaturnInfo.h:73
 SaturnInfo.h:74
 SaturnInfo.h:75
 SaturnInfo.h:76
 SaturnInfo.h:77
 SaturnInfo.h:78
 SaturnInfo.h:79
 SaturnInfo.h:80
 SaturnInfo.h:81
 SaturnInfo.h:82
 SaturnInfo.h:83
 SaturnInfo.h:84
 SaturnInfo.h:85
 SaturnInfo.h:86
 SaturnInfo.h:87
 SaturnInfo.h:88
 SaturnInfo.h:89
 SaturnInfo.h:90
 SaturnInfo.h:91
 SaturnInfo.h:92
 SaturnInfo.h:93
 SaturnInfo.h:94
 SaturnInfo.h:95
 SaturnInfo.h:96
 SaturnInfo.h:97
 SaturnInfo.h:98
 SaturnInfo.h:99
 SaturnInfo.h:100
 SaturnInfo.h:101
 SaturnInfo.h:102
 SaturnInfo.h:103
 SaturnInfo.h:104
 SaturnInfo.h:105
 SaturnInfo.h:106
 SaturnInfo.h:107
 SaturnInfo.h:108
 SaturnInfo.h:109
 SaturnInfo.h:110
 SaturnInfo.h:111