ROOT logo
// $Id: SaturnInfo.cxx 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/.

#include "SaturnInfo.h"
#include <Glasses/ZHashList.h>
#include <Glasses/EyeInfo.h>
#include "SaturnInfo.c7"

#include <Glasses/ZQueen.h>
#include <Glasses/EyeInfo.h>
#include <Stones/ZMIR.h>

#include <TSocket.h>
#include <TSystem.h>

//______________________________________________________________________
//
// SaturnInfo glass represents a Saturn within a Gled cluster.
//
// It is mostly a data-holder, functionality mostly in Saturn, Kings
// and Queens.

ClassImp(SaturnInfo);

SaturnInfo::SaturnInfo(const Text_t* n, const Text_t* t) :
  ZMirEmittingEntity(n,t)
{
  hSocket = 0; hRoute = 0;

  mHostName   = ""; mServerPort = GLED_DEF_PORT; mServPortScan = 0;
  mMasterName = ""; mMasterPort = GLED_DEF_PORT;

  mSunSpaceSize = mKingID = mFireKingID = 0;
  bUseAuth = false;

  mOS = mCPU_Model = mCPU_Type = "<unknown>";
  mCPU_Freq = mCPU_Num = 0;
  mMemory = mSwap = mMFree = mSFree = 0;
  mLAvg1 = mLAvg5 = mLAvg15 = 0;
  mCU_Total = mCU_User = mCU_Nice = mCU_Sys = mCU_Idle = 0;

  mMaster = 0; mMoons = 0; mEyes = 0;
}

SaturnInfo::~SaturnInfo()
{}

/**************************************************************************/

// !!! Caller id missing

void SaturnInfo::Message(const Text_t* s)
{
  ISmess(TString("Received message: ") + s);
}

void SaturnInfo::Warning(const Text_t* s)
{
  ISwarn(TString("Received warning: ") + s);
}

void SaturnInfo::Error(const Text_t* s)
{
  ISerr(TString("Received error: ") + s);
}

/**************************************************************************/

void SaturnInfo::create_lists()
{
  ZHashList* l;
  l = new ZHashList(GForm("Moons of %s", mName.Data()));
  mQueen->CheckIn(l); SetMoons(l);
  l = new ZHashList(GForm("Eyes of %s", mName.Data()));
  mQueen->CheckIn(l); SetEyes(l);
}

/**************************************************************************/
/**************************************************************************/



/**************************************************************************/
/**************************************************************************/
/**************************************************************************/
/**************************************************************************/
/*
void SaturnInfo::handle_new_connection()
{
  // Called from local Saturn to manage login procedure for a new connection.
  // Beams SunAbsolute ... then waits for its responses.

  // create connection object

  // create beam ... send to SA

  // wait for response

  // if ok ... pass connection key, host, port to the new connectee

  // wait for response

  // if ok ... pass data to the new connectee
}

void SaturnInfo::new_connection_request(SaturnInfo* host)
{
  // Called by an SaturnInfo in an attempt to initiate new connection.
  // Must be sent to SunAbsolute via a beamed MIR.

}

void SaturnInfo::new_connection_result()
{
  // Called by SunAbsolute upon receiving new_connection_request().
  // Beamed back to host that sent the original request.

  // unstream and set data
  // signal condition
}

void SaturnInfo::handle_login(TMessage* msg)
{
  // Called by SunAbsoulte upon receiving login request.


}

void SaturnInfo::login_result()
{
  // Called by SunAbsolute upon finalizing login procedure of a new MEE.
  // Beamed back to host that sent the original request.

  // unstream data
  // signal condition
}

*/

/**************************************************************************/
/**************************************************************************/

void SaturnInfo::AddMoon(SaturnInfo* moon)
{
  // blabla ...
  // moon->create_lists
}

void SaturnInfo::AddEye(EyeInfo* eye)
{

}

/**************************************************************************/

void SaturnInfo::ReceiveBeamResult(UInt_t req_handle)
{
  // Should be called via S_ and passed as beam to beam result
  // requestor (a SaturnInfo).

  static const Exc_t _eh("SaturnInfo::ReceiveBeamResult ");

  ZMIR* mir = assert_MIR_presence(_eh);

  mSaturn->handle_mir_result(req_handle, mir);
}

/**************************************************************************/

void SaturnInfo::TellAverages(Int_t sample_time)
{
  // Sort-of-a demo for Beam Result facility.
  // Executes in a detached thread.

  static const Exc_t _eh("SaturnInfo::TellAverages ");

  assert_MIR_presence(_eh, ZGlass::MC_IsBeam | ZGlass::MC_HasResultReq);

  CpuInfo_t cpu; gSystem->GetCpuInfo(&cpu, sample_time);

  TBufferFile ret(TBuffer::kWrite);
  ret << cpu.fLoad1m << cpu.fLoad5m << cpu.fLoad15m;
  mSaturn->ShootMIRResult(ret);
}
 SaturnInfo.cxx:1
 SaturnInfo.cxx:2
 SaturnInfo.cxx:3
 SaturnInfo.cxx:4
 SaturnInfo.cxx:5
 SaturnInfo.cxx:6
 SaturnInfo.cxx:7
 SaturnInfo.cxx:8
 SaturnInfo.cxx:9
 SaturnInfo.cxx:10
 SaturnInfo.cxx:11
 SaturnInfo.cxx:12
 SaturnInfo.cxx:13
 SaturnInfo.cxx:14
 SaturnInfo.cxx:15
 SaturnInfo.cxx:16
 SaturnInfo.cxx:17
 SaturnInfo.cxx:18
 SaturnInfo.cxx:19
 SaturnInfo.cxx:20
 SaturnInfo.cxx:21
 SaturnInfo.cxx:22
 SaturnInfo.cxx:23
 SaturnInfo.cxx:24
 SaturnInfo.cxx:25
 SaturnInfo.cxx:26
 SaturnInfo.cxx:27
 SaturnInfo.cxx:28
 SaturnInfo.cxx:29
 SaturnInfo.cxx:30
 SaturnInfo.cxx:31
 SaturnInfo.cxx:32
 SaturnInfo.cxx:33
 SaturnInfo.cxx:34
 SaturnInfo.cxx:35
 SaturnInfo.cxx:36
 SaturnInfo.cxx:37
 SaturnInfo.cxx:38
 SaturnInfo.cxx:39
 SaturnInfo.cxx:40
 SaturnInfo.cxx:41
 SaturnInfo.cxx:42
 SaturnInfo.cxx:43
 SaturnInfo.cxx:44
 SaturnInfo.cxx:45
 SaturnInfo.cxx:46
 SaturnInfo.cxx:47
 SaturnInfo.cxx:48
 SaturnInfo.cxx:49
 SaturnInfo.cxx:50
 SaturnInfo.cxx:51
 SaturnInfo.cxx:52
 SaturnInfo.cxx:53
 SaturnInfo.cxx:54
 SaturnInfo.cxx:55
 SaturnInfo.cxx:56
 SaturnInfo.cxx:57
 SaturnInfo.cxx:58
 SaturnInfo.cxx:59
 SaturnInfo.cxx:60
 SaturnInfo.cxx:61
 SaturnInfo.cxx:62
 SaturnInfo.cxx:63
 SaturnInfo.cxx:64
 SaturnInfo.cxx:65
 SaturnInfo.cxx:66
 SaturnInfo.cxx:67
 SaturnInfo.cxx:68
 SaturnInfo.cxx:69
 SaturnInfo.cxx:70
 SaturnInfo.cxx:71
 SaturnInfo.cxx:72
 SaturnInfo.cxx:73
 SaturnInfo.cxx:74
 SaturnInfo.cxx:75
 SaturnInfo.cxx:76
 SaturnInfo.cxx:77
 SaturnInfo.cxx:78
 SaturnInfo.cxx:79
 SaturnInfo.cxx:80
 SaturnInfo.cxx:81
 SaturnInfo.cxx:82
 SaturnInfo.cxx:83
 SaturnInfo.cxx:84
 SaturnInfo.cxx:85
 SaturnInfo.cxx:86
 SaturnInfo.cxx:87
 SaturnInfo.cxx:88
 SaturnInfo.cxx:89
 SaturnInfo.cxx:90
 SaturnInfo.cxx:91
 SaturnInfo.cxx:92
 SaturnInfo.cxx:93
 SaturnInfo.cxx:94
 SaturnInfo.cxx:95
 SaturnInfo.cxx:96
 SaturnInfo.cxx:97
 SaturnInfo.cxx:98
 SaturnInfo.cxx:99
 SaturnInfo.cxx:100
 SaturnInfo.cxx:101
 SaturnInfo.cxx:102
 SaturnInfo.cxx:103
 SaturnInfo.cxx:104
 SaturnInfo.cxx:105
 SaturnInfo.cxx:106
 SaturnInfo.cxx:107
 SaturnInfo.cxx:108
 SaturnInfo.cxx:109
 SaturnInfo.cxx:110
 SaturnInfo.cxx:111
 SaturnInfo.cxx:112
 SaturnInfo.cxx:113
 SaturnInfo.cxx:114
 SaturnInfo.cxx:115
 SaturnInfo.cxx:116
 SaturnInfo.cxx:117
 SaturnInfo.cxx:118
 SaturnInfo.cxx:119
 SaturnInfo.cxx:120
 SaturnInfo.cxx:121
 SaturnInfo.cxx:122
 SaturnInfo.cxx:123
 SaturnInfo.cxx:124
 SaturnInfo.cxx:125
 SaturnInfo.cxx:126
 SaturnInfo.cxx:127
 SaturnInfo.cxx:128
 SaturnInfo.cxx:129
 SaturnInfo.cxx:130
 SaturnInfo.cxx:131
 SaturnInfo.cxx:132
 SaturnInfo.cxx:133
 SaturnInfo.cxx:134
 SaturnInfo.cxx:135
 SaturnInfo.cxx:136
 SaturnInfo.cxx:137
 SaturnInfo.cxx:138
 SaturnInfo.cxx:139
 SaturnInfo.cxx:140
 SaturnInfo.cxx:141
 SaturnInfo.cxx:142
 SaturnInfo.cxx:143
 SaturnInfo.cxx:144
 SaturnInfo.cxx:145
 SaturnInfo.cxx:146
 SaturnInfo.cxx:147
 SaturnInfo.cxx:148
 SaturnInfo.cxx:149
 SaturnInfo.cxx:150
 SaturnInfo.cxx:151
 SaturnInfo.cxx:152
 SaturnInfo.cxx:153
 SaturnInfo.cxx:154
 SaturnInfo.cxx:155
 SaturnInfo.cxx:156
 SaturnInfo.cxx:157
 SaturnInfo.cxx:158
 SaturnInfo.cxx:159
 SaturnInfo.cxx:160
 SaturnInfo.cxx:161
 SaturnInfo.cxx:162
 SaturnInfo.cxx:163
 SaturnInfo.cxx:164
 SaturnInfo.cxx:165
 SaturnInfo.cxx:166
 SaturnInfo.cxx:167
 SaturnInfo.cxx:168
 SaturnInfo.cxx:169
 SaturnInfo.cxx:170
 SaturnInfo.cxx:171
 SaturnInfo.cxx:172
 SaturnInfo.cxx:173
 SaturnInfo.cxx:174
 SaturnInfo.cxx:175
 SaturnInfo.cxx:176
 SaturnInfo.cxx:177
 SaturnInfo.cxx:178
 SaturnInfo.cxx:179
 SaturnInfo.cxx:180
 SaturnInfo.cxx:181
 SaturnInfo.cxx:182
 SaturnInfo.cxx:183
 SaturnInfo.cxx:184
 SaturnInfo.cxx:185
 SaturnInfo.cxx:186
 SaturnInfo.cxx:187