60 const char *classname,
61 const char *fullpath) :
77 Bool_t
IsRemote()
const override {
return kTRUE; }
102 return (res<0) || (res > millisec);
105 void ReceiveObject(TObject *obj,
const char *objfolder,
const char *objname, Bool_t owner)
109 if (objfolder && (strlen(objfolder) != 0)) {
110 path += objfolder; path +=
"/";
112 if (objname && (strlen(objname) != 0)) path += objname;
148 fIter = folder->GetListOfFolders()->MakeIterator();
158 fCurrent = fIter->Next();
159 return fCurrent !=
nullptr;
164 return dynamic_cast<TFolder *
>(fCurrent) ||
165 dynamic_cast<TGo4TreeStructure *>(fCurrent);
170 if (strcmp(flagname,
"IsRemote") == 0)
172 if (strcmp(flagname,
"IsDeleteProtect") == 0) {
177 if (strcmp(flagname,
"IsResetProtect") == 0) {
195 return fCurrent->GetName();
200 return fCurrent->GetTitle();
217 }
else if (isfolder()) {
221 if (fCurrent && fCurrent->InheritsFrom(TGo4ParameterStatus::Class()))
223 else if (fCurrent && fCurrent->InheritsFrom(TGo4MemberStatus::Class()))
232 return EntryClassName(fCurrent);
237 if (!entry)
return nullptr;
239 if (entry->InheritsFrom(TGo4TreeStructure::Class()))
240 return TTree::Class()->GetName();
242 if (entry->InheritsFrom(TGo4BranchStatus::Class())) {
248 if (entry->InheritsFrom(TGo4ParameterStatus::Class())) {
254 if (entry->InheritsFrom(TGo4AnalysisStatus::Class()))
255 return TGo4AnalysisStatus::Class()->GetName();
257 if (entry->InheritsFrom(TGo4ObjectStatus::Class())) {
263 return entry->ClassName();
267 TIterator *fIter{
nullptr};
268 TObject *fCurrent{
nullptr};
269 Bool_t fIsTree{kFALSE};
277 fAnalysisNames(nullptr),
279 fxDefaultProxy(nullptr),
280 fbNamesListReceived(kFALSE),
281 fbAnalysisRunning(kFALSE),
282 fDisconectCounter(-111),
285 fxRefreshTimer(nullptr),
286 fxConnectionTimer(nullptr),
287 fNumberOfWaitingProxyes(0)
319 TGo4Log::Debug(
"TGo4Display instance is not deleted correctly when analysis proxy is destroyed");
422 if (!proxy)
continue;
424 if (pathname && (strcmp(proxy->
GetPathName(), pathname) != 0))
continue;
432 bool docompress =
false;
435 delete proxytodelete;
442 if (!proxy)
continue;
457 if (dynamic_cast<TGo4AnalysisStatus*> (status)) {
489 fullname.Prepend(
"/");
502 TString message = status->GetName();
504 if(message.Contains(
"event classes were initialized"))
509 for (
int j = 0; j < 4; ++j)
516 if (message.Contains(
"is shutting down now!")) {
529 if (status)
delete status;
544 TObject *envelopeobj = envelope->
TakeObject();
545 if (envelopeobj && envelopeobj->InheritsFrom(TH1::Class()))
546 ((TH1 *) envelopeobj)->SetDirectory(
nullptr);
615 if (!classname)
return nullptr;
617 TString objfolder, objname;
620 return std::make_unique<TGo4AnalysisObjectAccess>(
this,
cmdEnvelope, objname.Data(), classname, objfolder.Data());
632 if (!proxy)
return kFALSE;
655 rcvname.Append(
"_status");
663 Bool_t astree = strcmp(proxy->
GetPathName(),
"Tree") == 0;
667 com->SetValue(kFALSE,0);
668 com->SetValue(kFALSE,1);
669 com->SetValue(astree,2);
678 if (!fullname || !tgtslot)
return kFALSE;
680 TString objfolder, objname;
695 TString folder, name;
710 if (astree) folder =
"Tree";
711 else folder =
"Event";
726 TString tfoldername, tobjectname;
729 TString hfoldername, hobjectname;
759 if (!obj)
return kFALSE;
761 const char *objname = obj->GetName();
762 if (!objname || (*objname == 0))
return kFALSE;
775 if(!fname || (strlen(fname) == 0)) {
787 if(!fname || (strlen(fname) == 0)) {
840 TString foldername, objectname;
849 TString foldername, objectname;
859 TString foldername, objectname;
894 TString foldername, objectname;
917 const char *remotehost,
918 const char *remotedir,
919 const char *remoteexe,
926 if (!tsk)
return kFALSE;
932 name, remotehost, remotedir, remoteexe,
933 guiport, exe_kind, exeargs))
return kFALSE;
937 if ((konsole==2) || (konsole==3))
938 gSystem->Exec(launchcmd.Data());
940 fNodeName.Form(
"%s:%d",remotehost,guiport);
949 const char *remotehost,
951 const char *remotedir,
952 const char *remoteexe,
958 name, remotehost, remotedir, remoteexe,
959 remoteport, exe_kind, exeargs))
return kFALSE;
961 if ((konsole==2) || (konsole==3))
962 gSystem->Exec(launchcmd.Data());
970 const char *accesspass)
976 switch (ascontroller) {
987 default: accesspass =
"";
break;
990 client->
ConnectServer(remotehost, remoteport, mode, accesspass);
991 fNodeName.Form(
"%s:%d",remotehost,remoteport);
995 return client !=
nullptr;
1000 Int_t period = seconds*1000;
1001 while (period > 0) {
1003 gSystem->Sleep(100);
1004 gSystem->ProcessEvents();
1074 std::cout<<
" TGo4AnalysisProxy::HandleTimer still sees not that display is gone. Cleanup myself!"<< std::endl;
void RemotePrintEvent(const char *evname, Int_t evnumber, Int_t subid, Bool_t ishex, Bool_t islong) override
void SetLine(const char *name)
void ExecuteLine(const char *line) override
void DisplayDeleted(TGo4Display *displ)
Bool_t IsAdministrator() const override
TGo4AnalysisLevelIter(TFolder *folder, Bool_t istree=kFALSE)
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)
void SetDefaultReceiver(TGo4ObjectManager *rcv, const char *path)
const char * GetContainedObjectInfo() override
void SubmitAnalysisSettings() override
void SetProxy(TGo4Proxy *cont)
void StartAnalysis() override
void WriteData(TGo4Slot *slot, TDirectory *dir, Bool_t onlyobjs) override
TGo4Slot * UpdateObjectSlot()
UInt_t GetNegotiationPort()
void RequestAnalysisSettings() override
void PrintDynListEntry(const char *fullpath) override
const char * GetClassName() override
const char * GetObjectName() const override
TGo4Task * GetTask() const
TGo4ObjectManager * fxReceiver
Bool_t NamesListReceived() const override
TGo4LevelIter * subiterator() override
void Clear(Option_t *opt="") override
void SetAggregate(TObject *ob)
TGo4Slot * FindChild(const char *name) const
void ReceiveStatus(TGo4Status *status)
const char * GetObjectFullName() const
void ChangeObjectName(const char *newname)
void DoObjectAssignement(TGo4ObjectManager *rcv, const char *path, TObject *obj, Bool_t owner)
virtual TGo4TaskHandler * GetTaskHandler()
Bool_t SubmitProxy(TGo4AnalysisObjectAccess *proxy)
Bool_t IsConnected() const override
const char * GetObjFolder() const
void Finalize(TGo4Slot *slot) override
void StopAnalysis() override
static Bool_t GetLaunchString(TString &launchcmd, TString &killcmd, Int_t serverkind, Int_t shellkind, Int_t konsole, const char *name, const char *remotehost, const char *remotedir, const char *remoteexe, Int_t guiport, Int_t exe_kind=0, const char *exeargs=nullptr)
Bool_t IsResetProtect() const
Bool_t isfolder() override
void AssignNewNamesList(TGo4AnalysisObjectNames *objnames)
void SaveConfigFile(const char *fname) override
Bool_t ConnectServer(const char *node, UInt_t negport, Go4CommandMode_t role=kGo4ComModeRefused, const char *passwd=nullptr)
const char * name() override
void ReceiveObject(TObject *obj, const char *objfolder, const char *objname, Bool_t owner)
virtual ~TGo4AnalysisObjectAccess()
Bool_t CanGetObject() const override
void ClearAllAnalysisObjects() override
TGo4AnalysisObjectNames * fAnalysisNames
Int_t Initialization() override
Bool_t IsDeleteProtect() const
Bool_t HasSublevels() const override
Bool_t HandleTimer(TTimer *timer) override
virtual const char * GetServerName() const
void ReadData(TGo4Slot *slot, TDirectory *dir) override
Int_t sizeinfo() override
Bool_t ConnectToServer(const char *remotehost, Int_t remoteport, Int_t ascontroller, const char *accesspass)
void Update(TGo4Slot *slot, Bool_t strong) override
TGo4Slot * RatemeterSlot()
const char * GetObjectClass() const
TObject * GetAssignedObject()
void SetDefaultReceiver(TGo4ObjectManager *rcv, const char *path)
static void Debug(const char *text,...) GO4_PRINTF_ARGS
void SetAnalysisReady(Bool_t on=kTRUE)
void SetAnalysis(TGo4AnalysisProxy *an)
TGo4LevelIter * MakeIter() override
void ChageObjectProtection(const char *fullpath, const char *flags) override
std::unique_ptr< TGo4Access > ProvideAccess(const char *name) override
virtual ~TGo4AnalysisProxy()
TGo4Slot * SettingsSlot()
Bool_t IsAnalysisRunning() const
TTimer * fxConnectionTimer
void ReceiveObject(TNamed *obj)
void SetAnalysisSettingsReady(Bool_t on=kTRUE)
TGo4AnalysisObjectNames * GetNamesList(Bool_t chown=kTRUE)
Int_t AssignObjectTo(TGo4ObjectManager *rcv, const char *path) override
void DisplayDisconnected(TGo4Display *displ)
Int_t GetObjectSize() const
static const char * EntryClassName(TObject *entry)
const char * GetObjectClassName() const override
TFolder * GetNamesFolder(Bool_t chown=kFALSE)
TGo4AnalysisObjectAccess * fxDefaultProxy
virtual ~TGo4AnalysisLevelIter()
TGo4AnalysisProxy * fxAnalProxy
void SetObjectFullName(const char *nam)
const char * GetPathName() const
void RequestEventStatus(const char *evname, Bool_t astree, TGo4Slot *tgtslot) 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
static void ProduceFolderAndName(const char *fullname, TString &foldername, TString &objectname)
Int_t fNumberOfWaitingProxyes
const char * GetContainedObjectInfo() override
Int_t AssignObjectToSlot(TGo4Slot *slot)
const char * GetObjName() const
TString fNodeName
0 - not launched, 1 - external shell, 2 - in qt shell
Bool_t IsRemote() const override
void SetValue(Int_t num, Int_t i)
virtual TGo4BufferQueue * GetCommandQueue(const char *task=nullptr)
void SetString(const char *txt, Int_t i)
Go4CommandMode_t GetRole()
TGo4AnalysisObjectAccess(TGo4AnalysisProxy *cont, Int_t proxykind, const char *name, const char *classname, const char *fullpath)
Bool_t AssignObject(TObject *obj, Bool_t owner)
void Initialize(TGo4Slot *slot) override
void ForwardEvent(TGo4Slot *source, Int_t id, void *param=nullptr)
Bool_t RefreshNamesList() override
void RemoveObjectFromAnalysis(const char *fullpath) override
Bool_t UpdateAnalysisObject(const char *objectname, TObject *obj) override
void CloseAnalysisSettings() override
void DeleteChilds(const char *startedwith=nullptr)
Bool_t fbNamesListReceived
TObjArray fxSubmittedProxy
Bool_t CheckLifeTime(long int millisec)
void Delete(Option_t *opt="") override
void WriteAutoSave(const char *fname, Int_t complevel, Bool_t overwrite) override
static const char * GetModeDescription(Go4CommandMode_t mode)
Int_t getflag(const char *flagname) override
Bool_t WaitForConnection(Int_t seconds)
void LoadConfigFile(const char *fname) override
TGo4TaskManager * GetTaskManager()
void Initialize(TGo4Slot *slot) 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)
void DeleteSubmittedProxy(TGo4AnalysisObjectAccess *proxy)
Bool_t SubmitCommand(const char *name)
const char * info() 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)
virtual Bool_t StartConnectorThread()
void ClearAnalysisObject(const char *fullpath) override