26 #include "Xrd/XrdProtocol.hh"
28 #include "XrdOuc/XrdOucString.hh"
32 class XrdProofdManager;
36 friend class XrdROOTMgr;
41 XrdOucString fDataDir;
46 XrdOucString fPrgmSrv;
47 kXR_int16 fSrvProtVers;
49 XrdOucString fRelease;
50 XrdOucString fGitCommit;
57 int CheckDir(
const char *dir);
58 int ParseROOTVersionInfo();
61 XrdROOT(
const char *dir,
const char *tag,
const char *bindir = 0,
62 const char *incdir = 0,
const char *libdir = 0,
const char *datadir = 0);
65 const char *Dir()
const {
return fDir.c_str(); }
66 const char *BinDir()
const {
return fBinDir.c_str(); }
67 const char *DataDir()
const {
return fDataDir.c_str(); }
68 const char *IncDir()
const {
return fIncDir.c_str(); }
69 const char *LibDir()
const {
return fLibDir.c_str(); }
70 const char *Export()
const {
return fExport.c_str(); }
71 const char *GitCommit()
const {
return fGitCommit.c_str(); }
72 bool IsParked()
const {
return ((fStatus == 2) ? 1: 0); }
73 bool IsValid()
const {
return ((fStatus == 1) ? 1: 0); }
74 bool IsInvalid()
const {
return ((fStatus == -1) ? 1: 0); }
75 bool Match(
const char *dir,
const char *tag)
76 {
return ((fTag == tag && fDir == dir) ? 1 : 0); }
77 bool MatchTag(
const char *tag) {
return ((fTag == tag) ? 1 : 0); }
78 void Park() { fStatus = 2; }
79 const char *PrgmSrv()
const {
return fPrgmSrv.c_str(); }
80 const char *Release()
const {
return fRelease.c_str(); }
81 void SetValid(kXR_int16 vers = -1);
82 kXR_int16 SrvProtVers()
const {
return fSrvProtVers; }
83 const char *Tag()
const {
return fTag.c_str(); }
84 int VersionCode()
const {
return fVersionCode; }
85 int VrsMajor()
const {
return fVrsMajor; }
86 int VrsMinor()
const {
return fVrsMinor; }
87 int VrsPatch()
const {
return fVrsPatch; }
89 static int GetVersionCode(
const char *release);
90 static int GetVersionCode(
int maj,
int min,
int patch);
91 static int ParseReleaseString(
const char *release,
int &maj,
int &min,
int &patch);
97 class XrdROOTMgr :
public XrdProofdConfig {
99 XrdProofdManager *fMgr;
100 XrdSysLogger *fLogger;
101 XrdOucString fLogDir;
103 std::list<XrdROOT *> fROOT;
105 int Validate(XrdROOT *r, XrdScheduler *sched);
107 void RegisterDirectives();
108 int DoDirectiveRootSys(
char *, XrdOucStream *,
bool);
111 XrdROOTMgr(XrdProofdManager *mgr, XrdProtocol_Config *pi, XrdSysError *e);
112 virtual ~XrdROOTMgr() { }
114 int Config(
bool rcf = 0);
115 int DoDirective(XrdProofdDirective *d,
116 char *val, XrdOucStream *cfg,
bool rcf);
118 XrdROOT *DefaultVersion()
const {
return fROOT.front(); }
119 XrdOucString ExportVersions(XrdROOT *def);
120 XrdROOT *GetVersion(
const char *tag);
121 void SetLogDir(
const char *d);