GSI Object Oriented Online Offline (Go4) GO4-6.4.0
Loading...
Searching...
No Matches
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
22class TGo4AnalysisDummySlot;
23class TFolder;
25class TGo4Status;
26class TGo4Display;
27
28enum 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};
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);
152
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
EGo4AnalysisCodeKind
@ Go4_exe
@ Go4_lib
EGo4ConsoleKind
@ Go4_xterm
@ Go4_konsole
@ Go4_qt
EGo4ShellKind
@ Go4_sh
@ Go4_ssh
@ Go4_rsh
Contains the name (key) list of all objects in the analysis scope.
TGo4Display * fxDisplay
void ReceiveObject(TNamed *obj)
Bool_t IsAdministrator() const override
void ChageObjectProtection(const char *fullpath, const char *flags) override
void DeleteSubmittedProxy(TGo4AnalysisObjectAccess *proxy)
Bool_t IsConnected() const override
void RequestEventStatus(const char *evname, Bool_t astree, TGo4Slot *tgtslot) override
const char * GetContainedObjectInfo() override
Bool_t IsAnalysisRunning() const override
Bool_t DelayedRefreshNamesList(Int_t delay_sec) override
TGo4AnalysisDummySlot * fDummySlot
void StartAnalysis() override
void StopAnalysis() override
TGo4AnalysisProxy(Bool_t isserver=kFALSE)
Bool_t SubmitProxy(TGo4AnalysisObjectAccess *proxy)
void ClearAllAnalysisObjects() override
void CloseAnalysisSettings() override
void RequestAnalysisSettings() override
void ClearAnalysisObject(const char *fullpath) override
void DisplayDisconnected(TGo4Display *displ)
void WriteData(TGo4Slot *slot, TDirectory *dir, Bool_t onlyobjs) override
TGo4AnalysisObjectAccess * FindSubmittedProxy(const char *pathname, const char *objname)
Bool_t CanSubmitObjects() const override
void SaveConfigFile(const char *fname) override
Bool_t ConnectToServer(const char *remotehost, Int_t remoteport, Int_t ascontroller, const char *accesspass)
TGo4AnalysisObjectNames * fAnalysisNames
Bool_t HandleTimer(TTimer *timer) override
TGo4LevelIter * MakeIter() override
void SubmitAnalysisSettings() override
TGo4AnalysisObjectAccess * fxDefaultProxy
void AssignNewNamesList(TGo4AnalysisObjectNames *objnames)
TObject * GetAssignedObject() override
Bool_t IsGo4Analysis() const override
TGo4Slot * UpdateObjectSlot()
Bool_t RefreshNamesList() override
void RemoveObjectFromAnalysis(const char *fullpath) override
const char * GetContainedClassName() const override
std::unique_ptr< TGo4Access > ProvideAccess(const char *name) override
void Finalize(TGo4Slot *slot) override
Bool_t IsAnalysisServer() const override
void DisconnectAnalysis(Int_t waittime=30, Bool_t servershutdown=kFALSE) override
Close connection to analysis and destroys proxy with correspondent slot.
Bool_t IsViewer() const override
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)
Bool_t RequestObjectStatus(const char *objectname, TGo4Slot *tgtslot) override
Int_t GetObjectKind() const override
void ExecuteLine(const char *line) override
void Update(TGo4Slot *slot, Bool_t strong) override
void Initialize(TGo4Slot *slot) override
void RemoteTreeDraw(const char *treename, const char *varexp, const char *cutcond, const char *hname) override
void RemotePrintEvent(const char *evname, Int_t evnumber, Int_t subid, Bool_t ishex, Bool_t islong) override
void DisplayDeleted(TGo4Display *displ)
Bool_t HasSublevels() const override
Int_t NumberOfWaitingProxyes() 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)
ClassDefOverride(TGo4AnalysisProxy, 1)
Bool_t IsController() const override
void ReadData(TGo4Slot *slot, TDirectory *dir) override
void SetDefaultReceiver(TGo4ObjectManager *rcv, const char *path)
Set receiver for object envelopes, which coming from analysis without request.
void LoadConfigFile(const char *fname) override
Bool_t WaitForConnection(Int_t seconds)
void PrintDynListEntry(const char *fullpath) override
Bool_t UpdateAnalysisObject(const char *objectname, TObject *obj) override
void ReceiveStatus(TGo4Status *status)
Bool_t NamesListReceived() const override
void WriteAutoSave(const char *fname, Int_t complevel, Bool_t overwrite) override
TGo4ServerProxy()
contained object info