GSI Object Oriented Online Offline (Go4)  GO4-6.3.0
TGo4AnalysisProxy.h
Go to the documentation of this file.
1 // $Id$
2 //-----------------------------------------------------------------------
3 // The GSI Online Offline Object Oriented (Go4) Project
4 // Experiment Data Processing at EE department, GSI
5 //-----------------------------------------------------------------------
6 // Copyright (C) 2000- GSI Helmholtzzentrum fuer Schwerionenforschung GmbH
7 // Planckstr. 1, 64291 Darmstadt, Germany
8 // Contact: http://go4.gsi.de
9 //-----------------------------------------------------------------------
10 // This software can be used under the license agreements as stated
11 // in Go4License.txt file which is part of the distribution.
12 //-----------------------------------------------------------------------
13 
14 #ifndef TGO4ANALYSISPROXY_H
15 #define TGO4ANALYSISPROXY_H
16 
17 #include "TGo4ServerProxy.h"
18 
19 #include "TObjArray.h"
20 
22 class TGo4AnalysisDummySlot;
23 class TFolder;
25 class TGo4Status;
26 class TGo4Display;
27 
28 enum EGo4ShellKind { Go4_sh = 0, Go4_rsh = 1, Go4_ssh = 2 };
31 
33  protected:
34  Bool_t fIsServer{kFALSE};
35  TGo4AnalysisDummySlot *fDummySlot{nullptr};
37  TObjArray fxSubmittedProxy;
39  Bool_t fbNamesListReceived{kFALSE};
40  Bool_t fbAnalysisReady{kFALSE};
41  Bool_t fbAnalysisRunning{kFALSE};
42  Int_t fDisconectCounter{0};
43  TGo4Display *fxDisplay{nullptr};
44  Int_t fActualRole{0};
45  TTimer *fxRefreshTimer{nullptr};
46  TTimer *fxConnectionTimer{nullptr};
48 
49  TGo4AnalysisObjectAccess* FindSubmittedProxy(const char *pathname, const char *objname);
51 
53 
54  void CallSlotUpdate();
55 
56  public:
57  TGo4AnalysisProxy(Bool_t isserver = kFALSE);
58  virtual ~TGo4AnalysisProxy();
59 
60  // proxy functionality
61 
62  void Initialize(TGo4Slot *slot) override;
63  void Finalize(TGo4Slot *slot) override;
64 
65  Bool_t HasSublevels() const override;
66 
67  TGo4LevelIter *MakeIter() override;
68 
69  std::unique_ptr<TGo4Access> ProvideAccess(const char *name) override;
70 
71  void WriteData(TGo4Slot *slot, TDirectory *dir, Bool_t onlyobjs) override;
72  void ReadData(TGo4Slot *slot, TDirectory *dir) override;
73 
74  const char *GetContainedObjectInfo() override;
75  Int_t GetObjectKind() const override { return TGo4Access::kndFolder; }
76  const char *GetContainedClassName() const override { return ClassName(); }
77  TObject *GetAssignedObject() override { return this; }
78 
79  void Update(TGo4Slot *slot, Bool_t strong) override;
80 
81  // server proxy functionality
82 
83  Bool_t IsGo4Analysis() const override { return kTRUE; }
84  Bool_t IsAnalysisServer() const override { return fIsServer; }
85 
86  Bool_t IsConnected() const override;
87  Bool_t IsViewer() const override;
88  Bool_t IsController() const override;
89  Bool_t IsAdministrator() const override;
90 
91  Bool_t RefreshNamesList() override;
92  Bool_t DelayedRefreshNamesList(Int_t delay_sec) override;
93 
94  Bool_t CanSubmitObjects() const override { return IsConnected() && !IsViewer(); }
95  void RequestAnalysisSettings() override;
96  void SubmitAnalysisSettings() override;
97  void CloseAnalysisSettings() override;
98 
99  Bool_t IsAnalysisRunning() const override { return fbAnalysisRunning; }
100  void StartAnalysis() override;
101  void StopAnalysis() override;
102 
103  Bool_t RequestObjectStatus(const char *objectname, TGo4Slot *tgtslot) override;
104 
105  void RequestEventStatus(const char *evname, Bool_t astree, TGo4Slot *tgtslot) override;
106 
107  Bool_t UpdateAnalysisObject(const char *objectname, TObject *obj) override;
108 
109  void ClearAllAnalysisObjects() override;
110  void ClearAnalysisObject(const char *fullpath) override;
111 
112  void RemoteTreeDraw(const char *treename,
113  const char *varexp,
114  const char *cutcond,
115  const char *hname) override;
116 
117  void ChageObjectProtection(const char *fullpath, const char *flags) override;
118 
119  void RemoveObjectFromAnalysis(const char *fullpath) override;
120 
121  void ExecuteLine(const char *line) override;
122 
123  void PrintDynListEntry(const char *fullpath) override;
124 
125  void RemotePrintEvent(const char *evname,
126  Int_t evnumber,
127  Int_t subid,
128  Bool_t ishex,
129  Bool_t islong) override;
130 
131  void LoadConfigFile(const char *fname) override;
132  void SaveConfigFile(const char *fname) override;
133 
134  void WriteAutoSave(const char *fname,
135  Int_t complevel,
136  Bool_t overwrite) override;
137 
138  Bool_t NamesListReceived() const override;
139 
140  // analysis proxy functionality
141 
143 
144  // communication with analysis functionality
145 
146  Int_t ConnectorPort();
147  Int_t GetRole() const;
148 
149  void ReceiveObject(TNamed *obj);
150  void ReceiveStatus(TGo4Status *status);
151  Bool_t SubmitProxy(TGo4AnalysisObjectAccess *proxy);
152 
153  Int_t NumberOfWaitingProxyes() override { return fNumberOfWaitingProxyes; }
154 
155  Bool_t LaunchAsClient(TString &launchcmd,
156  TString &killcmd,
157  Int_t shellkind, // Go4_sh = 0, Go4_rsh = 1, Go4_ssh = 2
158  Int_t konsole, // Go4_qt = 0, Go4_xterm = 1, Go4_konsole = 2
159  const char *name,
160  const char *remotehost,
161  const char *remotedir,
162  const char *remoteexe,
163  Int_t exe_kind = 0, // Go4_exe = 0, Go4_lib = 1
164  const char *exeargs = nullptr);
165 
166  static Bool_t LaunchAsServer(TString &launchcmd,
167  TString &killcmd,
168  Int_t shellkind, // Go4_sh = 0, Go4_rsh = 1, Go4_ssh = 2
169  Int_t konsole, // Go4_qt = 0, Go4_xterm = 1, Go4_konsole = 2
170  const char *name,
171  const char *remotehost,
172  Int_t remoteport, // needed for http server mode
173  const char *remotedir,
174  const char *remoteexe,
175  Int_t exe_kind = 0, // Go4_exe = 0, Go4_lib = 1
176  const char *exeargs = nullptr);
177 
178  Bool_t ConnectToServer(const char *remotehost,
179  Int_t remoteport,
180  Int_t ascontroller, // 0 - observer, 1 - controller, 2 - administrator
181  const char *accesspass);
182 
183  Bool_t WaitForConnection(Int_t seconds);
184 
185  void DisplayDeleted(TGo4Display *displ);
186 
187  void DisplayDisconnected(TGo4Display *displ);
188 
193  void DisconnectAnalysis(Int_t waittime = 30, Bool_t servershutdown = kFALSE) override;
194 
195  Bool_t HandleTimer(TTimer *timer) override;
196 
198  void SetDefaultReceiver(TGo4ObjectManager *rcv, const char *path);
199 
201 };
202 
203 #endif
void RemotePrintEvent(const char *evname, Int_t evnumber, Int_t subid, Bool_t ishex, Bool_t islong) override
void ExecuteLine(const char *line) override
void DisplayDeleted(TGo4Display *displ)
Bool_t IsAdministrator() const override
Bool_t IsViewer() const override
Bool_t DelayedRefreshNamesList(Int_t delay_sec) override
Bool_t IsController() const override
void DisconnectAnalysis(Int_t waittime=30, Bool_t servershutdown=kFALSE) override
TGo4AnalysisProxy(Bool_t isserver=kFALSE)
const char * GetContainedObjectInfo() override
void SubmitAnalysisSettings() override
void StartAnalysis() override
void WriteData(TGo4Slot *slot, TDirectory *dir, Bool_t onlyobjs) override
TGo4Slot * UpdateObjectSlot()
EGo4AnalysisCodeKind
void RequestAnalysisSettings() override
void PrintDynListEntry(const char *fullpath) override
Bool_t NamesListReceived() const override
void ReceiveStatus(TGo4Status *status)
Bool_t SubmitProxy(TGo4AnalysisObjectAccess *proxy)
Bool_t IsConnected() const override
void Finalize(TGo4Slot *slot) override
void StopAnalysis() override
void AssignNewNamesList(TGo4AnalysisObjectNames *objnames)
void SaveConfigFile(const char *fname) override
Int_t NumberOfWaitingProxyes() override
void ClearAllAnalysisObjects() override
TGo4AnalysisObjectNames * fAnalysisNames
Bool_t HasSublevels() const override
Bool_t HandleTimer(TTimer *timer) override
void ReadData(TGo4Slot *slot, TDirectory *dir) override
Bool_t ConnectToServer(const char *remotehost, Int_t remoteport, Int_t ascontroller, const char *accesspass)
void Update(TGo4Slot *slot, Bool_t strong) override
void SetDefaultReceiver(TGo4ObjectManager *rcv, const char *path)
TGo4LevelIter * MakeIter() override
void ChageObjectProtection(const char *fullpath, const char *flags) override
std::unique_ptr< TGo4Access > ProvideAccess(const char *name) override
void ReceiveObject(TNamed *obj)
void DisplayDisconnected(TGo4Display *displ)
ClassDefOverride(TGo4AnalysisProxy, 1)
TGo4AnalysisObjectAccess * fxDefaultProxy
void RequestEventStatus(const char *evname, Bool_t astree, TGo4Slot *tgtslot) override
TObject * GetAssignedObject() override
TGo4AnalysisObjectAccess * FindSubmittedProxy(const char *pathname, const char *objname)
Bool_t RequestObjectStatus(const char *objectname, TGo4Slot *tgtslot) override
void RemoteTreeDraw(const char *treename, const char *varexp, const char *cutcond, const char *hname) override
Bool_t IsAnalysisServer() const override
EGo4ConsoleKind
Int_t GetObjectKind() const override
void Initialize(TGo4Slot *slot) override
Bool_t RefreshNamesList() override
void RemoveObjectFromAnalysis(const char *fullpath) override
Bool_t UpdateAnalysisObject(const char *objectname, TObject *obj) override
void CloseAnalysisSettings() override
Bool_t IsAnalysisRunning() const override
Bool_t IsGo4Analysis() const override
TObjArray fxSubmittedProxy
void WriteAutoSave(const char *fname, Int_t complevel, Bool_t overwrite) override
EGo4ShellKind
const char * GetContainedClassName() const override
Bool_t WaitForConnection(Int_t seconds)
void LoadConfigFile(const char *fname) override
TGo4Display * fxDisplay
Bool_t LaunchAsClient(TString &launchcmd, TString &killcmd, Int_t shellkind, Int_t konsole, const char *name, const char *remotehost, const char *remotedir, const char *remoteexe, Int_t exe_kind=0, const char *exeargs=nullptr)
void DeleteSubmittedProxy(TGo4AnalysisObjectAccess *proxy)
Bool_t CanSubmitObjects() const override
static Bool_t LaunchAsServer(TString &launchcmd, TString &killcmd, Int_t shellkind, Int_t konsole, const char *name, const char *remotehost, Int_t remoteport, const char *remotedir, const char *remoteexe, Int_t exe_kind=0, const char *exeargs=nullptr)
TGo4AnalysisDummySlot * fDummySlot
void ClearAnalysisObject(const char *fullpath) override