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();
164 return dynamic_cast<TFolder *
>(
fCurrent) ||
170 if (strcmp(flagname,
"IsRemote") == 0)
172 if (strcmp(flagname,
"IsDeleteProtect") == 0) {
177 if (strcmp(flagname,
"IsResetProtect") == 0) {
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();
319 TGo4Log::Debug(
"TGo4Display instance is not deleted correctly when analysis proxy is destroyed");
386 if (
fxDisplay->GetTask()->GetTaskHandler())
387 res =
fxDisplay->GetTask()->GetTaskHandler()->GetRole();
422 if (!proxy)
continue;
424 if (pathname && (strcmp(proxy->
GetPathName(), pathname) != 0))
continue;
432 bool docompress =
false;
435 delete proxytodelete;
442 if (!proxy)
continue;
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);
611 TObject *entry =
fAnalysisNames->GetNamesFolder()->FindObjectAny(name);
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;
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();
1038 if (!
fxDisplay->IsConnected())
return kFALSE;
1074 std::cout<<
" TGo4AnalysisProxy::HandleTimer still sees not that display is gone. Cleanup myself!"<< std::endl;
Go4CommandMode_t
These values define command execution rights.
@ kGo4ComModeAdministrator
void DoObjectAssignement(TGo4ObjectManager *rcv, const char *path, TObject *obj, Bool_t owner)
Int_t AssignObjectToSlot(TGo4Slot *slot)
Made for convenience - extracts OM and slot path and calls AssignObjectTo method.
Bool_t IsAnalysisRunning() const
Bool_t isfolder() override
virtual ~TGo4AnalysisLevelIter()
const char * GetClassName() override
const char * name() override
Int_t sizeinfo() override
Int_t getflag(const char *flagname) override
static const char * EntryClassName(TObject *entry)
const char * info() override
TGo4LevelIter * subiterator() override
TGo4AnalysisLevelIter(TFolder *folder, Bool_t istree=kFALSE)
void ChangeObjectName(const char *newname)
TGo4ObjectManager * fxReceiver
void SetDefaultReceiver(TGo4ObjectManager *rcv, const char *path)
Bool_t IsRemote() const override
Indicate if object is remote.
Bool_t CheckLifeTime(long int millisec)
Int_t AssignObjectTo(TGo4ObjectManager *rcv, const char *path) override
Have to assign object to provided receiver.
const char * GetObjectName() const override
TGo4AnalysisObjectAccess(TGo4AnalysisProxy *cont, Int_t proxykind, const char *name, const char *classname, const char *fullpath)
void ReceiveObject(TObject *obj, const char *objfolder, const char *objname, Bool_t owner)
TGo4AnalysisProxy * fxAnalProxy
const char * GetObjectClassName() const override
virtual ~TGo4AnalysisObjectAccess()
const char * GetPathName() const
Bool_t CanGetObject() const override
Returns kTRUE, when object can be directly obtained with GetObject() method.
Contains the name (key) list of all objects in the analysis scope.
const char * GetObjectFullName() const
TGo4AnalysisObjectNames * GetNamesList(Bool_t chown=kTRUE)
Take out the nameslist.
void SetObjectFullName(const char *nam)
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 DelayedRefreshNamesList(Int_t delay_sec) override
virtual ~TGo4AnalysisProxy()
void StartAnalysis() override
void StopAnalysis() override
TGo4AnalysisProxy(Bool_t isserver=kFALSE)
Bool_t fbNamesListReceived
Bool_t SubmitProxy(TGo4AnalysisObjectAccess *proxy)
void ClearAllAnalysisObjects() override
void CloseAnalysisSettings() override
TTimer * fxConnectionTimer
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)
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)
TGo4Slot * UpdateObjectSlot()
TObjArray fxSubmittedProxy
Bool_t RefreshNamesList() override
void RemoveObjectFromAnalysis(const char *fullpath) 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.
Int_t fNumberOfWaitingProxyes
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
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
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)
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
Status of the analysis instance.
Class containing a pointer queue for TBuffers.
void Clear(Option_t *opt="") override
Empty the queue and give free buffers back.
This class controls a client application running in a task which is controlled by another server task...
Bool_t ConnectServer(const char *node, UInt_t negport, Go4CommandMode_t role=kGo4ComModeRefused, const char *passwd=nullptr)
Connect this client to a waiting server task on node with negotiation channel negport.
Command executes string as CINT macro.
void SetLine(const char *name)
set the object name under command.
static const char * GetModeDescription(Go4CommandMode_t mode)
text description of current execution mode
static void Debug(const char *text,...) GO4_PRINTF_ARGS
User shortcut for message with prio 0.
const char * GetObjName() const
const char * GetObjFolder() const
One entry of the object names folder.
const char * GetObjectClass() const
ClassName of the described object.
Int_t GetObjectSize() const
Size of described object in byte.
Bool_t IsResetProtect() const
Object's reset protection state.
Bool_t IsDeleteProtect() const
Object's delete protection state.
Status object for an analysis parameter.
This command is a container for commands to be send from master to slave via inter-process transport.
void SetAggregate(TObject *ob)
Wrap any object ob into this command container.
void SetString(const char *txt, Int_t i)
Specify string parameter txt for index i to be used in executed command.
void SetValue(Int_t num, Int_t i)
Specify integer parameters to be used in executed command.
const char * GetContainedObjectInfo() override
TString fNodeName
0 - not launched, 1 - external shell, 2 - in qt shell
void SetAnalysisReady(Bool_t on=kTRUE)
virtual const char * GetServerName() const
TString fInfoStr
name of remote node
TGo4ServerProxy()
contained object info
TGo4Slot * RatemeterSlot()
void Initialize(TGo4Slot *slot) override
TGo4Slot * SettingsSlot()
void SetAnalysisSettingsReady(Bool_t on=kTRUE)
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)
virtual Bool_t StartConnectorThread()
starts the thread that listens to the connector port for a client negotiation request; used after lau...
TGo4TaskManager * GetTaskManager()
void SetProxy(TGo4Proxy *cont)
static void ProduceFolderAndName(const char *fullname, TString &foldername, TString &objectname)
Bool_t AssignObject(TObject *obj, Bool_t owner)
void DeleteChilds(const char *startedwith=nullptr)
TObject * GetAssignedObject()
UInt_t GetNegotiationPort()
returns the portnumber for client server negotiation port which is actually used by the running taskm...
virtual TGo4BufferQueue * GetCommandQueue(const char *task=nullptr)
Contains the branchelement structure of a certain TTree on the analysis side.