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);