#ifndef ROOT_TProofMgr
#define ROOT_TProofMgr
#ifndef ROOT_TList
#include "TList.h"
#endif
#ifndef ROOT_TNamed
#include "TNamed.h"
#endif
#ifndef ROOT_TUrl
#include "TUrl.h"
#endif
#ifndef ROOT_TString
#include "TString.h"
#endif
#ifndef ROOT_TSystem
#include "TSystem.h"
#endif
class TFileCollection;
class TObjString;
class TProof;
class TProofDesc;
class TProofLog;
class TProofMgr;
class TSignalHandler;
typedef TProofMgr *(*TProofMgr_t)(const char *, Int_t, const char *);
class TProofMgr : public TNamed {
public:
enum EServType { kProofd = 0, kXProofd = 1, kProofLite = 2 };
private:
TProofMgr(const TProofMgr&);
TProofMgr& operator=(const TProofMgr&);
static TProofMgr_t fgTXProofMgrHook;
static TProofMgr_t GetXProofMgrHook();
static void ReplaceSubdirs(const char *fn, TString &fdst, TList &dirph);
protected:
TString fMssUrl;
Int_t fRemoteProtocol;
EServType fServType;
TList *fSessions;
TUrl fUrl;
TSignalHandler *fIntHandler;
static TList fgListOfManagers;
TProofMgr() : fRemoteProtocol(-1),
fServType(kXProofd), fSessions(0), fUrl(), fIntHandler(0) { }
public:
TProofMgr(const char *url, Int_t loglevel = -1, const char *alias = "");
virtual ~TProofMgr();
virtual Bool_t IsLite() const { return (fServType == kProofLite); }
virtual Bool_t IsProofd() const { return (fServType == kProofd); }
virtual Bool_t IsValid() const { return kTRUE; }
virtual void SetInvalid() { }
void Close() { SetInvalid(); }
virtual TProof *AttachSession(Int_t, Bool_t = kFALSE);
virtual TProof *AttachSession(TProofDesc *, Bool_t = kFALSE);
virtual TProof *CreateSession(const char * = 0, const char * = 0, Int_t = -1);
virtual void DetachSession(Int_t, Option_t * = "");
virtual void DetachSession(TProof *, Option_t * = "");
virtual void DiscardSession(TProof *p);
virtual const char *GetMssUrl(Bool_t = kFALSE) { return fMssUrl.Data(); }
virtual TProofDesc *GetProofDesc(Int_t id);
virtual TProofDesc *GetProofDesc(TProof *p);
virtual Int_t GetRemoteProtocol() const { return fRemoteProtocol; }
virtual TProofLog *GetSessionLogs(Int_t = 0, const char * = 0,
const char * = "-v \"| SvcMsg\"", Bool_t = kFALSE)
{ return (TProofLog *)0; }
virtual const char *GetUrl() { return fUrl.GetUrl(); }
virtual Bool_t MatchUrl(const char *url);
virtual TList *QuerySessions(Option_t *opt = "S");
virtual TObjString *ReadBuffer(const char *, Long64_t, Int_t)
{ return (TObjString *)0; }
virtual TObjString *ReadBuffer(const char *, const char *)
{ return (TObjString *)0; }
virtual Int_t Reset(Bool_t hard = kFALSE, const char *usr = 0);
virtual void ShowWorkers();
virtual Int_t SendMsgToUsers(const char *, const char * = 0);
virtual void SetAlias(const char *alias="") { TNamed::SetTitle(alias); }
virtual void SetMssUrl(const char *mss) { fMssUrl = mss; }
virtual Int_t SetROOTVersion(const char *) { return 0; }
virtual void ShowROOTVersions() { }
virtual void ShutdownSession(Int_t id) { DetachSession(id,"S"); }
virtual void ShutdownSession(TProof *p) { DetachSession(p,"S"); }
virtual Int_t Cp(const char *, const char * = 0, const char * = 0) { return -1; }
virtual void Find(const char * = "~/", const char * = 0, const char * = 0) { }
virtual void Grep(const char *, const char * = 0, const char * = 0) { }
virtual void Ls(const char * = "~/", const char * = 0, const char * = 0) { }
virtual void More(const char *, const char * = 0, const char * = 0) { }
virtual Int_t Rm(const char *, const char * = 0, const char * = 0);
virtual void Tail(const char *, const char * = 0, const char * = 0) { }
virtual Int_t Md5sum(const char *, TString &, const char * = 0) { return -1; }
virtual Int_t Stat(const char *, FileStat_t &, const char * = 0) { return -1; }
virtual Int_t GetFile(const char *, const char *, const char * = 0) { return -1; }
virtual Int_t PutFile(const char *, const char *, const char * = 0) { return -1; }
static TList *GetListOfManagers();
static void SetTXProofMgrHook(TProofMgr_t pmh);
static TProofMgr *Create(const char *url, Int_t loglevel = -1,
const char *alias = 0, Bool_t xpd = kTRUE);
static Int_t Ping(const char *url, Bool_t checkxrd = kFALSE);
static TFileCollection *UploadFiles(TList *src, const char *mss, const char *dest = 0);
static TFileCollection *UploadFiles(const char *txtfile, const char *mss, const char *dest = 0);
ClassDef(TProofMgr,0)
};
class TProofDesc : public TNamed {
public:
enum EStatus { kUnknown = -1, kIdle = 0, kRunning =1, kShutdown = 2};
private:
TProofDesc(const TProofDesc&);
TProofDesc& operator=(const TProofDesc&);
Int_t fLocalId;
Int_t fStatus;
TProof *fProof;
Int_t fRemoteId;
TString fUrl;
public:
TProofDesc(const char *tag = 0, const char *alias = 0, const char *url = 0,
Int_t id = -1, Int_t remid = -1, Int_t status = kIdle, TProof *p = 0)
: TNamed(tag, alias),
fLocalId(id), fStatus(0), fProof(p), fRemoteId(remid), fUrl(url) { SetStatus(status); }
virtual ~TProofDesc() { }
Int_t GetLocalId() const { return fLocalId; }
TProof *GetProof() const { return fProof; }
Int_t GetRemoteId() const { return fRemoteId; }
Int_t GetStatus() const { return fStatus; }
const char *GetUrl() const { return fUrl; }
Bool_t IsIdle() const { return (fStatus == kIdle) ? kTRUE : kFALSE; }
Bool_t IsRunning() const { return (fStatus == kRunning) ? kTRUE : kFALSE; }
Bool_t IsShuttingDown() const { return (fStatus == kShutdown) ? kTRUE : kFALSE; }
Bool_t MatchId(Int_t id) const { return (fLocalId == id); }
void Print(Option_t *opt = "") const;
void SetStatus(Int_t st) { fStatus = (st < kIdle || st > kShutdown) ? -1 : st; }
void SetProof(TProof *p) { fProof = p; }
void SetRemoteId(Int_t id) { fRemoteId = id; }
ClassDef(TProofDesc,1)
};
#endif