#ifndef HONLINEMONCLIENTMAIN_H
#define HONLINEMONCLIENTMAIN_H
#include "TList.h"
#include "TGButton.h"
#include "TApplication.h"
#include "TSocket.h"
#include "TMessage.h"
#include "TThread.h"
#include "TSystem.h"
#include "TGMsgBox.h"
#include <map>
#include <time.h>
#include "honlinemonhist.h"
#include "honlinemonstack.h"
#include "honlinehistarray.h"
#include "honlinetrendhist.h"
class HOnlineMonClientXML;
class HOnlineMonClientMainWin;
class HOnlineMonClientDet;
class HOnlineMonClientTabWin;
class HOnlineMonClientSimpleWin;
class HOnlineMonClientTab;
class HOnlineMonClientCanvas;
class HOnlineMonClientHist;
using namespace std;
class HOnlineMonClientMain {
public:
HOnlineMonClientMain(TString filename="");
virtual ~HOnlineMonClientMain();
void Init(Bool_t sendCmdOnly=kFALSE, TString host="", Int_t port=0, TString cmd="");
void SetServerhost(TString host);
TString GetServerhost();
void SetServerport(Int_t port);
Int_t GetServerport();
Int_t GetUpdateInterval() { return UpdateInterval;}
static void SetAutoSaveInterval(Int_t minute) {AutoSaveInterval = minute;}
static void SetAutoSaveIntervalOnline(Int_t minute) {AutoSaveIntervalOnline = minute;}
void AddHist(HOnlineMonClientCanvas* canvas, HOnlineMonClientHist* hist);
void RemoveHist(HOnlineMonClientCanvas* canvas, HOnlineMonClientHist* hist);
void HandleControlbuttonClick(char *detectorname);
void HandleSingleWindowClose(char *windowname, char* detectorname);
void HandleRefreshRateChange();
void HandleAutoSaveRateChange();
void HandleMainWindowClose();
void HandleSendStopServer();
void HandleSendResetHists();
void HandleSnapshotSave();
void HandleSnapshotSaveOnline();
void HandleConnectionError();
void HandleTryClose();
TList listDetectors;
HOnlineMonClientMainWin* clientmainwin;
TThread* getMainThread() { return mainThread; }
Int_t IsMasterClient() { return isMasterClient <= 0 ? kFALSE : kTRUE ;}
Int_t GetMasterClient(){ return isMasterClient ;}
void SetIsMasterClient(Bool_t master) { isMasterClient = master;}
Int_t GetReconnect(){ return doReconnect;}
void SetReconnect(Int_t recon) { doReconnect = recon;}
private:
void CreateClientConfig(TString xmlfile);
void CreateDetGui(HOnlineMonClientDet* detector);
void DestroyDetGui(HOnlineMonClientDet* detector);
void DestroySingleWindow(HOnlineMonClientSimpleWin* window);
void DestroySingleWindow(HOnlineMonClientTabWin* window);
map <TString, TString> pad2hist;
TList listHists;
TList listPads;
Bool_t Connect(TString host, Int_t port);
Bool_t ReConnect(TString host, Int_t port);
HOnlineMonHistAddon* GetHist(TString histoname);
Bool_t UpdateHist(HOnlineMonClientHist* hist);
void UpdateHists();
static TThread* mainThread ;
TThread* updateThread;
static void* ThreadUpdateHists(void* arg);
TSocket* socket;
TString serverhost;
Int_t serverport;
TList* GetListOfHistograms();
TString SendCmdToServer(TString cmd);
void SetUpdateInterval(Int_t msec);
Int_t UpdateInterval;
static Int_t AutoSaveInterval;
static Int_t AutoSaveIntervalOnline;
static time_t lastSaved;
static time_t lastSavedOnline;
static ULong64_t lastSumBytes ;
static Int_t isMasterClient;
Int_t doReconnect;
TString configfile;
Bool_t updateComplete;
ClassDef(HOnlineMonClientMain, 1);
};
#endif
honlinemonclientmain.h:10 honlinemonclientmain.h:11 honlinemonclientmain.h:12 honlinemonclientmain.h:13 honlinemonclientmain.h:14 honlinemonclientmain.h:15 honlinemonclientmain.h:16 honlinemonclientmain.h:17 honlinemonclientmain.h:18 honlinemonclientmain.h:19 honlinemonclientmain.h:20 honlinemonclientmain.h:21 honlinemonclientmain.h:22 honlinemonclientmain.h:23 honlinemonclientmain.h:24 honlinemonclientmain.h:25 honlinemonclientmain.h:26 honlinemonclientmain.h:27 honlinemonclientmain.h:28 honlinemonclientmain.h:29 honlinemonclientmain.h:30 honlinemonclientmain.h:31 honlinemonclientmain.h:32 honlinemonclientmain.h:33 honlinemonclientmain.h:34 honlinemonclientmain.h:35 honlinemonclientmain.h:36 honlinemonclientmain.h:37 honlinemonclientmain.h:38 honlinemonclientmain.h:39 honlinemonclientmain.h:40 honlinemonclientmain.h:41 honlinemonclientmain.h:42 honlinemonclientmain.h:43 honlinemonclientmain.h:44 honlinemonclientmain.h:45 honlinemonclientmain.h:46 honlinemonclientmain.h:47 honlinemonclientmain.h:48 honlinemonclientmain.h:49 honlinemonclientmain.h:50 honlinemonclientmain.h:51 honlinemonclientmain.h:52 honlinemonclientmain.h:53 honlinemonclientmain.h:54 honlinemonclientmain.h:55 honlinemonclientmain.h:56 honlinemonclientmain.h:57 honlinemonclientmain.h:58 honlinemonclientmain.h:59 honlinemonclientmain.h:60 honlinemonclientmain.h:61 honlinemonclientmain.h:62 honlinemonclientmain.h:63 honlinemonclientmain.h:64 honlinemonclientmain.h:65 honlinemonclientmain.h:66 honlinemonclientmain.h:67 honlinemonclientmain.h:68 honlinemonclientmain.h:69 honlinemonclientmain.h:70 honlinemonclientmain.h:71 honlinemonclientmain.h:72 honlinemonclientmain.h:73 honlinemonclientmain.h:74 honlinemonclientmain.h:75 honlinemonclientmain.h:76 honlinemonclientmain.h:77 honlinemonclientmain.h:78 honlinemonclientmain.h:79 honlinemonclientmain.h:80 honlinemonclientmain.h:81 honlinemonclientmain.h:82 honlinemonclientmain.h:83 honlinemonclientmain.h:84 honlinemonclientmain.h:85 honlinemonclientmain.h:86 honlinemonclientmain.h:87 honlinemonclientmain.h:88 honlinemonclientmain.h:89 honlinemonclientmain.h:90 honlinemonclientmain.h:91 honlinemonclientmain.h:92 honlinemonclientmain.h:93 honlinemonclientmain.h:94 honlinemonclientmain.h:95 honlinemonclientmain.h:96 honlinemonclientmain.h:97 honlinemonclientmain.h:98 honlinemonclientmain.h:99 honlinemonclientmain.h:100 honlinemonclientmain.h:101 honlinemonclientmain.h:102 honlinemonclientmain.h:103 honlinemonclientmain.h:104 honlinemonclientmain.h:105 honlinemonclientmain.h:106 honlinemonclientmain.h:107 honlinemonclientmain.h:108 honlinemonclientmain.h:109 honlinemonclientmain.h:110 honlinemonclientmain.h:111 honlinemonclientmain.h:112 honlinemonclientmain.h:113 honlinemonclientmain.h:114 honlinemonclientmain.h:115 honlinemonclientmain.h:116 honlinemonclientmain.h:117 honlinemonclientmain.h:118 honlinemonclientmain.h:119 honlinemonclientmain.h:120 honlinemonclientmain.h:121 honlinemonclientmain.h:122 honlinemonclientmain.h:123 honlinemonclientmain.h:124 honlinemonclientmain.h:125 honlinemonclientmain.h:126 honlinemonclientmain.h:127 honlinemonclientmain.h:128 honlinemonclientmain.h:129 honlinemonclientmain.h:130 honlinemonclientmain.h:131 honlinemonclientmain.h:132 honlinemonclientmain.h:133 honlinemonclientmain.h:134 honlinemonclientmain.h:135 honlinemonclientmain.h:136 honlinemonclientmain.h:137 honlinemonclientmain.h:138 honlinemonclientmain.h:139