44 #define CANNOTUSE(x) Info(x,"Not manager: cannot use this method")
59 class TProofInputHandler;
60 class TProofInterruptHandler;
62 class TVirtualProofPlayer;
64 class TProofPlayerRemote;
65 class TProofProgressDialog;
72 class TFileCollection;
74 class TDataSetManager;
75 class TDataSetManagerFile;
120 const Int_t kPROOF_Protocol = 37;
121 const Int_t kPROOF_Port = 1093;
122 const char*
const kPROOF_ConfFile =
"proof.conf";
123 const char*
const kPROOF_ConfDir =
"/usr/local/root";
124 const char*
const kPROOF_WorkDir =
".proof";
125 const char*
const kPROOF_CacheDir =
"cache";
126 const char*
const kPROOF_PackDir =
"packages";
127 const char*
const kPROOF_PackDownloadDir =
"downloaded";
128 const char*
const kPROOF_QueryDir =
"queries";
129 const char*
const kPROOF_DataSetDir =
"datasets";
130 const char*
const kPROOF_DataDir =
"data";
131 const char*
const kPROOF_CacheLockFile =
"proof-cache-lock-";
132 const char*
const kPROOF_PackageLockFile =
"proof-package-lock-";
133 const char*
const kPROOF_QueryLockFile =
"proof-query-lock-";
134 const char*
const kPROOF_TerminateWorker =
"+++ terminating +++";
135 const char*
const kPROOF_WorkerIdleTO =
"+++ idle-timeout +++";
136 const char*
const kPROOF_InputDataFile =
"inputdata.root";
137 const char*
const kPROOF_MissingFiles =
"MissingFiles";
138 const Long64_t kPROOF_DynWrkPollInt_s = 10;
141 const char*
const kCP =
"/bin/cp -fp";
142 const char*
const kRM =
"/bin/rm -rf";
143 const char*
const kLS =
"/bin/ls -l";
144 const char*
const kUNTAR =
"%s -c %s/%s | (cd %s; tar xf -)";
145 const char*
const kUNTAR2 =
"%s -c %s | (cd %s; tar xf -)";
146 const char*
const kUNTAR3 =
"%s -c %s | (tar xf -)";
147 const char*
const kGUNZIP =
"gunzip";
149 const char*
const kCP =
"copy";
150 const char*
const kRM =
"delete";
151 const char*
const kLS =
"dir";
152 const char*
const kUNTAR =
"...";
153 const char*
const kUNTAR2 =
"...";
154 const char*
const kUNTAR3 =
"...";
155 const char*
const kGUNZIP =
"gunzip";
158 typedef void (*PrintProgress_t)(Long64_t tot, Long64_t proc, Float_t proctime, Long64_t bytes);
161 class TProofProgressInfo :
public TObject {
172 Float_t fEffSessions;
173 TProofProgressInfo(Long64_t tot = 0, Long64_t proc = 0, Long64_t bytes = 0,
174 Float_t initt = -1., Float_t proct = -1.,
175 Float_t evts = -1., Float_t mbs = -1.,
176 Int_t actw = 0, Int_t tsess = 0, Float_t esess = 0.) :
177 fTotal(tot), fProcessed(proc), fBytesRead(bytes),
178 fInitTime(initt), fProcTime(proct), fEvtRateI(evts), fMBRateI(mbs),
179 fActWorkers(actw), fTotSessions(tsess), fEffSessions(esess) { }
180 virtual ~TProofProgressInfo() { }
181 ClassDef(TProofProgressInfo, 1);
185 class TProofInterruptHandler :
public TSignalHandler {
189 TProofInterruptHandler(
const TProofInterruptHandler&);
190 TProofInterruptHandler& operator=(
const TProofInterruptHandler&);
192 TProofInterruptHandler(TProof *p)
193 : TSignalHandler(kSigInterrupt, kFALSE), fProof(p) { }
198 class TProofInputHandler :
public TFileHandler {
203 TProofInputHandler(
const TProofInputHandler&);
204 TProofInputHandler& operator=(
const TProofInputHandler&);
206 TProofInputHandler(TProof *p, TSocket *s);
208 Bool_t ReadNotify() {
return Notify(); }
212 class TSlaveInfo :
public TObject {
214 enum ESlaveStatus { kActive, kNotActive, kBad };
222 ESlaveStatus fStatus;
224 TSlaveInfo(
const char *ordinal =
"",
const char *host =
"", Int_t perfidx = 0,
225 const char *msd =
"",
const char *datadir =
"") :
226 fOrdinal(ordinal), fHostName(host), fMsd(msd), fDataDir(datadir),
227 fPerfIndex(perfidx), fSysInfo(), fStatus(kNotActive) { }
229 const char *GetDataDir()
const {
return fDataDir; }
230 const char *GetMsd()
const {
return fMsd; }
231 const char *GetName()
const {
return fHostName; }
232 const char *GetOrdinal()
const {
return fOrdinal; }
233 SysInfo_t GetSysInfo()
const {
return fSysInfo; }
234 void SetStatus(ESlaveStatus stat) { fStatus = stat; }
235 void SetSysInfo(SysInfo_t si);
236 void SetOrdinal(
const char *ord) { fOrdinal = ord; }
238 Int_t Compare(
const TObject *obj)
const;
239 Bool_t IsSortable()
const {
return kTRUE; }
240 void Print(Option_t *option=
"")
const;
241 Bool_t IsEqual(
const TObject* obj)
const;
243 ClassDef(TSlaveInfo,4)
247 class TMergerInfo :
public TObject {
252 Int_t fMergedObjects;
254 Int_t fWorkersToMerge;
256 Int_t fMergedWorkers;
262 TMergerInfo(
const TMergerInfo&);
263 TMergerInfo& operator=(
const TMergerInfo&);
266 TMergerInfo(TSlave *t, Int_t port, Int_t forHowManyWorkers) :
267 fMerger(t), fPort(port), fMergedObjects(0), fWorkersToMerge(forHowManyWorkers),
268 fMergedWorkers(0), fWorkers(0), fIsActive(kTRUE) { }
269 virtual ~TMergerInfo();
271 void AddWorker(TSlave *sl);
272 TList *GetWorkers() {
return fWorkers; }
274 TSlave *GetMerger() {
return fMerger; }
275 Int_t GetPort() {
return fPort; }
277 Int_t GetWorkersToMerge() {
return fWorkersToMerge; }
278 Int_t GetMergedWorkers() {
return fMergedWorkers; }
279 Int_t GetMergedObjects() {
return fMergedObjects; }
281 void SetMergedWorker();
282 void AddMergedObjects(Int_t objects) { fMergedObjects += objects; }
284 Bool_t AreAllWorkersAssigned();
285 Bool_t AreAllWorkersMerged();
287 void Deactivate() { fIsActive = kFALSE; }
288 Bool_t IsActive() {
return fIsActive; }
290 ClassDef(TMergerInfo,0)
294 class TProofMergePrg {
302 TProofMergePrg() : fExp(), fIdx(-1), fNWrks(-1), fLastNWrks(-1) { }
304 const char *Export(Bool_t &changed) {
305 fExp.Form(
"%c (%d workers still sending) ", fgCr[fIdx], fNWrks);
306 changed = (fLastNWrks != fNWrks || fLastNWrks == -1) ? kTRUE : kFALSE;
308 return fExp.Data(); }
309 void DecreaseNWrks() { fNWrks--; }
310 void IncreaseNWrks() { fNWrks++; }
311 void IncreaseIdx() { fIdx++;
if (fIdx == 4) fIdx = 0; }
312 void Reset(Int_t n = -1) { fIdx = -1; SetNWrks(n); }
313 void SetNWrks(Int_t n) { fNWrks = n; }
316 class TProof :
public TNamed,
public TQObject {
318 friend class TPacketizer;
319 friend class TPacketizerDev;
320 friend class TPacketizerAdaptive;
321 friend class TProofLite;
322 friend class TDataSetManager;
323 friend class TProofServ;
324 friend class TProofInputHandler;
325 friend class TProofInterruptHandler;
326 friend class TProofPlayer;
327 friend class TProofPlayerLite;
328 friend class TProofPlayerRemote;
329 friend class TProofProgressDialog;
331 friend class TSlaveLite;
332 friend class TVirtualPacketizer;
333 friend class TXSlave;
334 friend class TXSocket;
335 friend class TXSocketHandler;
336 friend class TXProofMgr;
337 friend class TXProofServ;
342 kUsingSessionGui = BIT(14),
343 kNewInputData = BIT(15),
346 kIsTopMaster = BIT(18),
347 kUseProgressDialog = BIT(19)
355 kOverwriteDataSet = 0x2,
356 kNoOverwriteDataSet = 0x4,
357 kOverwriteAllFiles = 0x8,
358 kOverwriteNoFiles = 0x10,
363 kOverwriteIfExists = 1,
366 enum EUploadPackageOpt {
385 enum EProofClearData {
394 kLocalInterrupt = -1,
400 enum EProofCacheCommands {
408 kShowEnabledPackages = 8,
411 kShowSubPackages = 11,
412 kDisableSubPackages = 12,
413 kDisableSubPackage = 13,
414 kBuildSubPackage = 14,
416 kDisablePackage = 16,
417 kUnloadPackages = 17,
418 kDisablePackages = 18,
420 kListEnabledPackages = 20,
423 enum EProofDataSetCommands {
425 kCheckDataSetName = 2,
427 kRegisterDataSet = 4,
435 kSetDefaultTreeName = 12,
437 kRequestStaging = 14,
449 enum EProofWrkListAction {
451 kDeactivateWorker = 2
453 enum EBuildPackageOpt {
454 kDontBuildOnClient = -2,
455 kBuildOnSlavesNoWait = -1,
457 kCollectBuildResults = 1
459 enum EProofShowQuotaOpt {
471 Int_t fCheckFileStatus;
472 TList *fRecvMessages;
474 Bool_t fSendGroupView;
475 Bool_t fIsPollingWorkers;
476 Long64_t fLastPollWorkers_s;
477 TList *fActiveSlaves;
478 TString fActiveSlavesSaved;
480 TList *fInactiveSlaves;
481 TList *fUniqueSlaves;
482 TList *fAllUniqueSlaves;
483 TList *fNonUniqueMasters;
484 TMonitor *fActiveMonitor;
485 TMonitor *fUniqueMonitor;
486 TMonitor *fAllUniqueMonitor;
487 TMonitor *fCurrentMonitor;
491 TSignalHandler *fIntHandler;
492 TPluginHandler *fProgressDialog;
493 Bool_t fProgressDialogStarted;
494 TVirtualProofPlayer *fPlayer;
501 typedef std::map<TString, MD5Mod_t> FileMap_t;
507 ERunStatus fRunStatus;
511 TString fLogFileName;
514 Bool_t fLogToWindowOnly;
516 Bool_t fSaveLogToMacro;
519 TProofMergePrg fMergePrg;
521 TList *fWaitingSlaves;
525 Int_t fMaxDrawQueries;
533 TList *fEnabledPackagesOnCluster;
536 TString fInputDataFile;
538 TProofOutputList fOutputList;
540 PrintProgress_t fPrintProgress;
542 std::recursive_mutex fCloseMutex;
544 TList *fLoadedMacros;
545 static TList *fgProofEnvList;
549 Bool_t fMergersByHost;
551 Int_t fWorkersToMerge;
552 Int_t fLastAssignedMerger;
554 Bool_t fFinalizationRunning;
559 TList *fWrksOutputReady;
561 static TPluginHandler *fgLogViewer;
564 enum ESlaves { kAll, kActive, kUnique, kAllUnique };
573 TList *fTerminatedSlaveInfos;
575 TMonitor *fAllMonitor;
577 Long64_t fBytesReady;
578 Long64_t fTotalBytes;
579 TList *fAvailablePackages;
580 TList *fEnabledPackages;
581 TList *fRunningDSets;
583 Int_t fCollectTimeout;
585 TString fDataPoolUrl;
586 TProofMgr::EServType fServType;
588 EQueryMode fQueryMode;
589 Bool_t fDynamicStartup;
591 TSelector *fSelector;
593 TStopwatch fQuerySTW;
597 TProof(
const TProof &);
598 void operator=(
const TProof &);
600 void CleanGDirectory(TList *ol);
602 Int_t Exec(
const char *cmd, ESlaves list, Bool_t plusMaster);
603 Int_t SendCommand(
const char *cmd, ESlaves list = kActive);
604 Int_t SendCurrentState(ESlaves list = kActive);
605 Int_t SendCurrentState(TList *list);
606 Bool_t CheckFile(
const char *file, TSlave *sl, Long_t modtime, Int_t cpopt = (kCp | kCpBin));
607 Int_t SendObject(
const TObject *obj, ESlaves list = kActive);
608 Int_t SendGroupView();
609 Int_t SendInitialState();
610 Int_t SendPrint(Option_t *option=
"");
611 Int_t Ping(ESlaves list);
612 void Interrupt(EUrgent type, ESlaves list = kActive);
613 void AskStatistics();
615 Int_t GoParallel(Int_t nodes, Bool_t accept = kFALSE, Bool_t random = kFALSE);
616 Int_t GoMoreParallel(Int_t nWorkersToAdd);
617 Int_t SetParallelSilent(Int_t nodes, Bool_t random = kFALSE);
618 void RecvLogFile(TSocket *s, Int_t size);
619 void NotifyLogMsg(
const char *msg,
const char *sfx =
"\n");
621 Int_t BuildPackage(
const char *package, EBuildPackageOpt opt = kBuildAll, Int_t chkveropt = TPackMgr::kCheckROOT, TList *workers = 0);
622 Int_t LoadPackage(
const char *package, Bool_t notOnClient = kFALSE, TList *loadopts = 0, TList *workers = 0);
623 Int_t UnloadPackage(
const char *package);
624 Int_t UnloadPackages();
625 Int_t DisablePackage(
const char *package);
626 Int_t DisablePackages();
628 void Activate(TList *slaves = 0);
629 Int_t Broadcast(
const TMessage &mess, TList *slaves);
630 Int_t Broadcast(
const TMessage &mess, ESlaves list = kActive);
631 Int_t Broadcast(
const char *mess, Int_t kind, TList *slaves);
632 Int_t Broadcast(
const char *mess, Int_t kind = kMESS_STRING, ESlaves list = kActive);
633 Int_t Broadcast(Int_t kind, TList *slaves) {
return Broadcast(0, kind, slaves); }
634 Int_t Broadcast(Int_t kind, ESlaves list = kActive) {
return Broadcast(0, kind, list); }
635 Int_t BroadcastFile(
const char *file, Int_t opt,
const char *rfile, TList *wrks);
636 Int_t BroadcastFile(
const char *file, Int_t opt,
const char *rfile = 0, ESlaves list = kAllUnique);
637 Int_t BroadcastGroupPriority(
const char *grp, Int_t priority, ESlaves list = kAllUnique);
638 Int_t BroadcastGroupPriority(
const char *grp, Int_t priority, TList *workers);
639 Int_t BroadcastObject(
const TObject *obj, Int_t kind, TList *slaves);
640 Int_t BroadcastObject(
const TObject *obj, Int_t kind = kMESS_OBJECT, ESlaves list = kActive);
641 Int_t BroadcastRaw(
const void *buffer, Int_t length, TList *slaves);
642 Int_t BroadcastRaw(
const void *buffer, Int_t length, ESlaves list = kActive);
643 Int_t Collect(
const TSlave *sl, Long_t timeout = -1, Int_t endtype = -1, Bool_t deactonfail = kFALSE);
644 Int_t Collect(TMonitor *mon, Long_t timeout = -1, Int_t endtype = -1, Bool_t deactonfail = kFALSE);
645 Int_t CollectInputFrom(TSocket *s, Int_t endtype = -1, Bool_t deactonfail = kFALSE);
646 Int_t HandleInputMessage(TSlave *wrk, TMessage *m, Bool_t deactonfail = kFALSE);
647 void HandleSubmerger(TMessage *mess, TSlave *sl);
648 void SetMonitor(TMonitor *mon = 0, Bool_t on = kTRUE);
650 void ReleaseMonitor(TMonitor *mon);
652 virtual void FindUniqueSlaves();
653 TSlave *FindSlave(TSocket *s)
const;
654 TList *GetListOfSlaves()
const {
return fSlaves; }
655 TList *GetListOfInactiveSlaves()
const {
return fInactiveSlaves; }
656 TList *GetListOfUniqueSlaves()
const {
return fUniqueSlaves; }
657 TList *GetListOfBadSlaves()
const {
return fBadSlaves; }
658 Int_t GetNumberOfSlaves()
const;
659 Int_t GetNumberOfActiveSlaves()
const;
660 Int_t GetNumberOfInactiveSlaves()
const;
661 Int_t GetNumberOfUniqueSlaves()
const;
662 Int_t GetNumberOfBadSlaves()
const;
664 Bool_t IsEndMaster()
const {
return fEndMaster; }
665 Int_t ModifyWorkerLists(
const char *ord, Bool_t add, Bool_t save);
666 Int_t RestoreActiveList();
667 void SaveActiveList();
669 Bool_t IsSync()
const {
return fSync; }
670 void InterruptCurrentMonitor();
672 void SetRunStatus(ERunStatus rst) { fRunStatus = rst; }
674 void MarkBad(TSlave *wrk,
const char *reason = 0);
675 void MarkBad(TSocket *s,
const char *reason = 0);
676 void TerminateWorker(TSlave *wrk);
677 void TerminateWorker(
const char *ord);
679 void ActivateAsyncInput();
680 void DeActivateAsyncInput();
682 Int_t GetQueryReference(Int_t qry, TString &ref);
683 void PrintProgress(Long64_t total, Long64_t processed,
684 Float_t procTime = -1., Long64_t bytesread = -1);
687 Bool_t CreateMerger(TSlave *sl, Int_t port);
688 void RedirectWorker(TSocket *s, TSlave * sl, Int_t output_size);
689 Int_t GetActiveMergersCount();
690 Int_t FindNextFreeMerger();
691 void ResetMergers() { fMergersSet = kFALSE; }
692 void AskForOutput(TSlave *sl);
694 void FinalizationDone() { fFinalizationRunning = kFALSE; }
696 void ResetMergePrg();
697 void ParseConfigField(
const char *config);
699 Bool_t Prompt(
const char *p);
700 void ClearDataProgress(Int_t r, Int_t t);
702 static TList *GetDataSetSrvMaps(
const TString &srvmaps);
707 Int_t Init(
const char *masterurl,
const char *conffile,
708 const char *confdir, Int_t loglevel,
709 const char *alias = 0);
710 virtual Bool_t StartSlaves(Bool_t attach = kFALSE);
711 Int_t AddWorkers(TList *wrks);
712 Int_t RemoveWorkers(TList *wrks);
713 void SetupWorkersEnv(TList *wrks, Bool_t increasingpool = kFALSE);
715 void SetPlayer(TVirtualProofPlayer *player);
716 TVirtualProofPlayer *GetPlayer()
const {
return fPlayer; }
717 virtual TVirtualProofPlayer *MakePlayer(
const char *player = 0, TSocket *s = 0);
721 void HandleLibIncPath(
const char *what, Bool_t add,
const char *dirs);
723 TList *GetListOfActiveSlaves()
const {
return fActiveSlaves; }
724 TSlave *CreateSlave(
const char *url,
const char *ord,
725 Int_t perf,
const char *image,
const char *workdir);
726 TSlave *CreateSubmaster(
const char *url,
const char *ord,
727 const char *image,
const char *msd, Int_t nwk = 1);
729 virtual Int_t PollForNewWorkers();
730 virtual void SaveWorkerInfo();
732 Int_t Collect(ESlaves list = kActive, Long_t timeout = -1, Int_t endtype = -1, Bool_t deactonfail = kFALSE);
733 Int_t Collect(TList *slaves, Long_t timeout = -1, Int_t endtype = -1, Bool_t deactonfail = kFALSE);
735 TList *GetEnabledPackages()
const {
return fEnabledPackagesOnCluster; }
737 void SetDSet(TDSet *dset) { fDSet = dset; }
738 virtual void ValidateDSet(TDSet *dset);
740 Int_t VerifyDataSetParallel(
const char *uri,
const char *optStr);
742 TPluginHandler *GetProgressDialog()
const {
return fProgressDialog; }
744 Int_t AssertPath(
const char *path, Bool_t writable);
745 Int_t GetSandbox(TString &sb, Bool_t assert = kFALSE,
const char *rc = 0);
747 void PrepareInputDataFile(TString &dataFile);
748 virtual void SendInputDataFile();
749 Int_t SendFile(
const char *file, Int_t opt = (kBinary | kForward | kCp | kCpBin),
750 const char *rfile = 0, TSlave *sl = 0);
753 void SetFeedback(TString &opt, TString &optfb, Int_t action);
755 Int_t HandleOutputOptions(TString &opt, TString &target, Int_t action);
757 static void *SlaveStartupThread(
void *arg);
759 static Int_t AssertDataSet(TDSet *dset, TList *input,
760 TDataSetManager *mgr, TString &emsg);
761 static void AssertMacroPath(
const char *macro);
764 static Int_t GetInputData(TList *input,
const char *cachedir, TString &emsg);
765 static Int_t SaveInputData(TQueryResult *qr,
const char *cachedir, TString &emsg);
766 static Int_t SendInputData(TQueryResult *qr, TProof *p, TString &emsg);
769 static Bool_t GetFileInCmd(
const char *cmd, TString &fn);
772 static void SystemCmd(
const char *cmd, Int_t fdout);
775 TProof(
const char *masterurl,
const char *conffile = kPROOF_ConfFile,
776 const char *confdir = kPROOF_ConfDir, Int_t loglevel = 0,
777 const char *alias = 0, TProofMgr *mgr = 0);
780 void cd(Int_t
id = -1);
784 Int_t Exec(
const char *cmd, Bool_t plusMaster = kFALSE);
785 Int_t Exec(
const char *cmd,
const char *ord, Bool_t logtomacro = kFALSE);
787 TString Getenv(
const char *env,
const char *ord =
"0");
788 Int_t GetRC(
const char *RCenv, Int_t &env,
const char *ord =
"0");
789 Int_t GetRC(
const char *RCenv, Double_t &env,
const char *ord =
"0");
790 Int_t GetRC(
const char *RCenv, TString &env,
const char *ord =
"0");
792 virtual Long64_t Process(TDSet *dset,
const char *selector,
793 Option_t *option =
"", Long64_t nentries = -1,
794 Long64_t firstentry = 0);
795 virtual Long64_t Process(TFileCollection *fc,
const char *selector,
796 Option_t *option =
"", Long64_t nentries = -1,
797 Long64_t firstentry = 0);
798 virtual Long64_t Process(
const char *dsetname,
const char *selector,
799 Option_t *option =
"", Long64_t nentries = -1,
800 Long64_t firstentry = 0, TObject *enl = 0);
801 virtual Long64_t Process(
const char *selector, Long64_t nentries,
802 Option_t *option =
"");
804 virtual Long64_t Process(TDSet *dset, TSelector *selector,
805 Option_t *option =
"", Long64_t nentries = -1,
806 Long64_t firstentry = 0);
807 virtual Long64_t Process(TFileCollection *fc, TSelector *selector,
808 Option_t *option =
"", Long64_t nentries = -1,
809 Long64_t firstentry = 0);
810 virtual Long64_t Process(
const char *dsetname, TSelector *selector,
811 Option_t *option =
"", Long64_t nentries = -1,
812 Long64_t firstentry = 0, TObject *enl = 0);
813 virtual Long64_t Process(TSelector *selector, Long64_t nentries,
814 Option_t *option =
"");
816 virtual Long64_t DrawSelect(TDSet *dset,
const char *varexp,
817 const char *selection =
"",
818 Option_t *option =
"", Long64_t nentries = -1,
819 Long64_t firstentry = 0);
820 Long64_t DrawSelect(
const char *dsetname,
const char *varexp,
821 const char *selection =
"",
822 Option_t *option =
"", Long64_t nentries = -1,
823 Long64_t firstentry = 0, TObject *enl = 0);
824 Int_t Archive(Int_t query,
const char *url);
825 Int_t Archive(
const char *queryref,
const char *url = 0);
826 Int_t CleanupSession(
const char *sessiontag);
827 Long64_t Finalize(Int_t query = -1, Bool_t force = kFALSE);
828 Long64_t Finalize(
const char *queryref, Bool_t force = kFALSE);
829 Int_t Remove(Int_t query, Bool_t all = kFALSE);
830 Int_t Remove(
const char *queryref, Bool_t all = kFALSE);
831 Int_t Retrieve(Int_t query,
const char *path = 0);
832 Int_t Retrieve(
const char *queryref,
const char *path = 0);
834 void DisableGoAsyn();
835 void GoAsynchronous();
836 void StopProcess(Bool_t abort, Int_t timeout = -1);
837 void Browse(TBrowser *b);
839 virtual Int_t Echo(
const TObject *obj);
840 virtual Int_t Echo(
const char *str);
842 Int_t SetParallel(Int_t nodes = -1, Bool_t random = kFALSE);
843 void SetLogLevel(Int_t level, UInt_t mask = TProofDebug::kAll);
845 void Close(Option_t *option=
"");
846 virtual void Print(Option_t *option=
"")
const;
849 virtual void ShowCache(Bool_t all = kFALSE);
850 virtual void ClearCache(
const char *file = 0);
851 TList *GetListOfPackages();
852 TList *GetListOfEnabledPackages();
853 void ShowPackages(Bool_t all = kFALSE, Bool_t redirlog = kFALSE);
854 void ShowEnabledPackages(Bool_t all = kFALSE);
855 Int_t ClearPackages();
856 Int_t ClearPackage(
const char *package);
857 Int_t DownloadPackage(
const char *par,
const char *dstdir = 0);
858 Int_t EnablePackage(
const char *package, Bool_t notOnClient = kFALSE, TList *workers = 0);
859 Int_t EnablePackage(
const char *package,
const char *loadopts,
860 Bool_t notOnClient = kFALSE, TList *workers = 0);
861 Int_t EnablePackage(
const char *package, TList *loadopts,
862 Bool_t notOnClient = kFALSE, TList *workers = 0);
863 Int_t UploadPackage(
const char *par, EUploadPackageOpt opt = kUntar, TList *workers = 0);
864 virtual Int_t Load(
const char *macro, Bool_t notOnClient = kFALSE, Bool_t uniqueOnly = kTRUE,
867 Int_t AddDynamicPath(
const char *libpath, Bool_t onClient = kFALSE, TList *wrks = 0, Bool_t doCollect = kTRUE);
868 Int_t AddIncludePath(
const char *incpath, Bool_t onClient = kFALSE, TList *wrks = 0, Bool_t doCollect = kTRUE);
869 Int_t RemoveDynamicPath(
const char *libpath, Bool_t onClient = kFALSE);
870 Int_t RemoveIncludePath(
const char *incpath, Bool_t onClient = kFALSE);
873 Int_t UploadDataSet(
const char *, TList *,
const char * = 0, Int_t = 0, TList * = 0);
874 Int_t UploadDataSet(
const char *,
const char *,
const char * = 0, Int_t = 0, TList * = 0);
875 Int_t UploadDataSetFromFile(
const char *,
const char *,
const char * = 0, Int_t = 0, TList * = 0);
876 virtual Bool_t RegisterDataSet(
const char *name,
877 TFileCollection *dataset,
const char* optStr =
"");
878 virtual TMap *GetDataSets(
const char *uri =
"",
const char* optStr =
"");
879 virtual void ShowDataSets(
const char *uri =
"",
const char* optStr =
"");
881 TMap *GetDataSetQuota(
const char* optStr =
"");
882 void ShowDataSetQuota(Option_t* opt = 0);
884 virtual Bool_t ExistsDataSet(
const char *dataset);
885 void ShowDataSet(
const char *dataset =
"",
const char* opt =
"filter:SsCc");
886 virtual Int_t RemoveDataSet(
const char *dataset,
const char* optStr =
"");
887 virtual Int_t VerifyDataSet(
const char *dataset,
const char* optStr =
"");
888 virtual TFileCollection *GetDataSet(
const char *dataset,
const char* optStr =
"");
889 TList *FindDataSets(
const char *searchString,
const char* optStr =
"");
890 virtual Bool_t RequestStagingDataSet(
const char *dataset);
891 virtual TFileCollection *GetStagingStatusDataSet(
const char *dataset);
892 virtual void ShowStagingStatusDataSet(
const char *dataset,
const char *optStr =
"filter:SsCc");
893 virtual Bool_t CancelStagingDataSet(
const char *dataset);
895 virtual Int_t SetDataSetTreeName(
const char *dataset,
const char *treename);
897 virtual void ShowDataSetCache(
const char *dataset = 0);
898 virtual void ClearDataSetCache(
const char *dataset = 0);
900 virtual void ShowData();
901 void ClearData(UInt_t what = kUnregistered,
const char *dsname = 0);
903 const char *GetMaster()
const {
return fMaster; }
904 const char *GetConfDir()
const {
return fConfDir; }
905 const char *GetConfFile()
const {
return fConfFile; }
906 const char *GetUser()
const {
return fUrl.GetUser(); }
907 const char *GetGroup()
const {
return fGroup; }
908 const char *GetWorkDir()
const {
return fWorkDir; }
909 const char *GetSessionTag()
const {
return GetName(); }
910 const char *GetImage()
const {
return fImage; }
911 const char *GetUrl() {
return fUrl.GetUrl(); }
912 Int_t GetPort()
const {
return fUrl.GetPort(); }
913 Int_t GetRemoteProtocol()
const {
return fProtocol; }
914 Int_t GetClientProtocol()
const {
return kPROOF_Protocol; }
915 Int_t GetStatus()
const {
return fStatus; }
916 Int_t GetLogLevel()
const {
return fLogLevel; }
917 Int_t GetParallel()
const;
918 Int_t GetSeqNum()
const {
return fSeqNum; }
919 Int_t GetSessionID()
const {
return fSessionID; }
920 TList *GetListOfSlaveInfos();
921 Bool_t UseDynamicStartup()
const {
return fDynamicStartup; }
923 EQueryMode GetQueryMode(Option_t *mode = 0)
const;
924 void SetQueryMode(EQueryMode mode);
926 void SetRealTimeLog(Bool_t on = kTRUE);
928 void GetStatistics(Bool_t verbose = kFALSE);
929 Long64_t GetBytesRead()
const {
return fBytesRead; }
930 Float_t GetRealTime()
const {
return fRealTime; }
931 Float_t GetCpuTime()
const {
return fCpuTime; }
933 Bool_t IsLite()
const {
return (fServType == TProofMgr::kProofLite) ? kTRUE : kFALSE; }
934 Bool_t IsProofd()
const {
return (fServType == TProofMgr::kProofd) ? kTRUE : kFALSE; }
935 Bool_t IsFolder()
const {
return kTRUE; }
936 Bool_t IsMaster()
const {
return fMasterServ; }
937 Bool_t IsValid()
const {
return fValid; }
938 Bool_t IsTty()
const {
return fTty; }
939 Bool_t IsParallel()
const {
return GetParallel() > 0 ? kTRUE : kFALSE; }
940 Bool_t IsIdle()
const {
return (fNotIdle <= 0) ? kTRUE : kFALSE; }
941 Bool_t IsWaiting()
const {
return fIsWaiting; }
943 ERunStatus GetRunStatus()
const {
return fRunStatus; }
944 TList *GetLoadedMacros()
const {
return fLoadedMacros; }
947 void SetParameter(
const char *par,
const char *value);
948 void SetParameter(
const char *par, Int_t value);
949 void SetParameter(
const char *par, Long_t value);
950 void SetParameter(
const char *par, Long64_t value);
951 void SetParameter(
const char *par, Double_t value);
952 TObject *GetParameter(
const char *par)
const;
953 void DeleteParameters(
const char *wildcard);
954 void ShowParameters(
const char *wildcard =
"PROOF_*")
const;
956 void AddInput(TObject *obj);
958 TList *GetInputList();
959 TObject *GetOutput(
const char *name);
960 TList *GetOutputList();
961 static TObject *GetOutput(
const char *name, TList *out);
963 void ShowMissingFiles(TQueryResult *qr = 0);
964 TFileCollection *GetMissingFiles(TQueryResult *qr = 0);
966 void AddInputData(TObject *obj, Bool_t push = kFALSE);
967 void SetInputDataFile(
const char *datafile);
968 void ClearInputData(TObject *obj = 0);
969 void ClearInputData(
const char *name);
971 void AddFeedback(
const char *name);
972 void RemoveFeedback(
const char *name);
973 void ClearFeedback();
974 void ShowFeedback()
const;
975 TList *GetFeedbackList()
const;
977 virtual TList *GetListOfQueries(Option_t *opt =
"");
978 Int_t GetNumberOfQueries();
979 Int_t GetNumberOfDrawQueries() {
return fDrawQueries; }
980 TList *GetQueryResults();
981 TQueryResult *GetQueryResult(
const char *ref = 0);
982 void GetMaxQueries();
983 void SetMaxDrawQueries(Int_t max);
984 void ShowQueries(Option_t *opt =
"");
986 Bool_t IsDataReady(Long64_t &totalbytes, Long64_t &bytesready);
988 void SetActive(Bool_t = kTRUE) { }
990 void LogMessage(
const char *msg, Bool_t all);
991 void Progress(Long64_t total, Long64_t processed);
992 void Progress(Long64_t total, Long64_t processed, Long64_t bytesread,
993 Float_t initTime, Float_t procTime,
994 Float_t evtrti, Float_t mbrti);
995 void Progress(Long64_t total, Long64_t processed, Long64_t bytesread,
996 Float_t initTime, Float_t procTime,
997 Float_t evtrti, Float_t mbrti,
998 Int_t actw, Int_t tses, Float_t eses);
999 void Feedback(TList *objs);
1000 void QueryResultReady(
const char *ref);
1001 void CloseProgressDialog();
1002 void ResetProgressDialog(
const char *sel, Int_t sz,
1003 Long64_t fst, Long64_t ent);
1004 void StartupMessage(
const char *msg, Bool_t status, Int_t done,
1006 void DataSetStatus(
const char *msg, Bool_t status,
1007 Int_t done, Int_t total);
1009 void SendDataSetStatus(
const char *msg, UInt_t n, UInt_t tot, Bool_t st);
1011 void GetLog(Int_t start = -1, Int_t end = -1);
1012 TMacro *GetLastLog();
1013 void PutLog(TQueryResult *qr);
1014 void ShowLog(Int_t qry = -1);
1015 void ShowLog(
const char *queryref);
1016 Bool_t SendingLogToWindow()
const {
return fLogToWindowOnly; }
1017 void SendLogToWindow(Bool_t mode) { fLogToWindowOnly = mode; }
1019 TMacro *GetMacroLog() {
return &fMacroLog; }
1021 void ResetProgressDialogStatus() { fProgressDialogStarted = kFALSE; }
1023 virtual TTree *GetTreeHeader(TDSet *tdset);
1024 TList *GetOutputNames();
1026 void AddChain(TChain *chain);
1027 void RemoveChain(TChain *chain);
1029 TDrawFeedback *CreateDrawFeedback();
1030 void SetDrawFeedbackOption(TDrawFeedback *f, Option_t *opt);
1031 void DeleteDrawFeedback(TDrawFeedback *f);
1033 void Detach(Option_t *opt =
"");
1035 virtual void SetAlias(
const char *alias=
"");
1037 TProofMgr *GetManager() {
return fManager; }
1038 void SetManager(TProofMgr *mgr);
1040 Int_t ActivateWorker(
const char *ord, Bool_t save = kTRUE);
1041 Int_t DeactivateWorker(
const char *ord, Bool_t save = kTRUE);
1043 const char *GetDataPoolUrl()
const {
return fManager ? fManager->GetMssUrl() : 0; }
1044 void SetDataPoolUrl(
const char *url) {
if (fManager) fManager->SetMssUrl(url); }
1046 void SetPrintProgress(PrintProgress_t pp) { fPrintProgress = pp; }
1048 void SetProgressDialog(Bool_t on = kTRUE);
1051 Int_t SavePerfTree(
const char *pf = 0,
const char *qref = 0);
1052 void SetPerfTree(
const char *pf =
"perftree.root", Bool_t withWrks = kFALSE);
1055 static TProof *Open(
const char *url = 0,
const char *conffile = 0,
1056 const char *confdir = 0, Int_t loglevel = 0);
1057 static void LogViewer(
const char *url = 0, Int_t sessionidx = 0);
1058 static TProofMgr *Mgr(
const char *url);
1059 static void Reset(
const char *url, Bool_t hard = kFALSE);
1061 static void AddEnvVar(
const char *name,
const char *value);
1062 static void DelEnvVar(
const char *name);
1063 static const TList *GetEnvVars();
1064 static void ResetEnvVars();
1067 static Int_t GetParameter(TCollection *c,
const char *par, TString &value);
1068 static Int_t GetParameter(TCollection *c,
const char *par, Int_t &value);
1069 static Int_t GetParameter(TCollection *c,
const char *par, Long_t &value);
1070 static Int_t GetParameter(TCollection *c,
const char *par, Long64_t &value);
1071 static Int_t GetParameter(TCollection *c,
const char *par, Double_t &value);
1077 R__EXTERN TProof *gProof;