XrdROOT.h

Go to the documentation of this file.
00001 // @(#)root/proofd:$Id: XrdROOT.h 29508 2009-07-17 11:56:03Z ganis $
00002 // Author: G. Ganis  June 2007
00003 
00004 /*************************************************************************
00005  * Copyright (C) 1995-2005, Rene Brun and Fons Rademakers.               *
00006  * All rights reserved.                                                  *
00007  *                                                                       *
00008  * For the licensing terms see $ROOTSYS/LICENSE.                         *
00009  * For the list of contributors see $ROOTSYS/README/CREDITS.             *
00010  *************************************************************************/
00011 
00012 #ifndef ROOT_XrdROOT
00013 #define ROOT_XrdROOT
00014 
00015 //////////////////////////////////////////////////////////////////////////
00016 //                                                                      //
00017 // XrdProofdProtocol                                                    //
00018 //                                                                      //
00019 // Authors: G. Ganis, CERN, 2007                                        //
00020 //                                                                      //
00021 // Class describing a ROOT version                                      //
00022 //                                                                      //
00023 //////////////////////////////////////////////////////////////////////////
00024 #include <list>
00025 
00026 #include "Xrd/XrdProtocol.hh"
00027 #include "XProofProtocol.h"
00028 #include "XrdOuc/XrdOucString.hh"
00029 
00030 #include "XrdProofdConfig.h"
00031 
00032 class XrdProofdManager;
00033 class XrdSysLogger;
00034 
00035 class XrdROOT {
00036 friend class XrdROOTMgr;
00037 private:
00038    int          fStatus;
00039    XrdOucString fDir;
00040    XrdOucString fBinDir;
00041    XrdOucString fDataDir;
00042    XrdOucString fIncDir;
00043    XrdOucString fLibDir;
00044    XrdOucString fTag;
00045    XrdOucString fExport;
00046    XrdOucString fPrgmSrv;
00047    kXR_int16    fSrvProtVers;
00048 
00049    XrdOucString fRelease;
00050    int          fSvnRevision;
00051    int          fVersionCode;
00052 
00053    int          fVrsMajor;
00054    int          fVrsMinor;
00055    int          fVrsPatch;
00056 
00057    int          CheckDir(const char *dir);
00058    int          ParseROOTVersionInfo();
00059 
00060 public:
00061    XrdROOT(const char *dir, const char *tag, const char *bindir = 0,
00062            const char *incdir = 0, const char *libdir = 0, const char *datadir = 0);
00063    ~XrdROOT() { }
00064 
00065    const char *Dir() const { return fDir.c_str(); }
00066    const char *BinDir() const { return fBinDir.c_str(); }
00067    const char *DataDir() const { return fDataDir.c_str(); }
00068    const char *IncDir() const { return fIncDir.c_str(); }
00069    const char *LibDir() const { return fLibDir.c_str(); }
00070    const char *Export() const { return fExport.c_str(); }
00071    bool        IsParked() const { return ((fStatus == 2) ? 1: 0); }
00072    bool        IsValid() const { return ((fStatus == 1) ? 1: 0); }
00073    bool        IsInvalid() const { return ((fStatus == -1) ? 1: 0); }
00074    bool        Match(const char *dir, const char *tag)
00075                           { return ((fTag == tag && fDir == dir) ? 1 : 0); }
00076    bool        MatchTag(const char *tag) { return ((fTag == tag) ? 1 : 0); }
00077    void        Park() { fStatus = 2; }
00078    const char *PrgmSrv() const { return fPrgmSrv.c_str(); }
00079    const char *Release() const { return fRelease.c_str(); }
00080    void        SetValid(kXR_int16 vers = -1);
00081    kXR_int16   SrvProtVers() const { return fSrvProtVers; }
00082    int         SvnRevision() const { return fSvnRevision; }
00083    const char *Tag() const { return fTag.c_str(); }
00084    int         VersionCode() const { return fVersionCode; }
00085    int         VrsMajor() const { return fVrsMajor; }
00086    int         VrsMinor() const { return fVrsMinor; }
00087    int         VrsPatch() const { return fVrsPatch; }
00088 
00089    static int  GetVersionCode(const char *release);
00090    static int  GetVersionCode(int maj, int min, int patch);
00091    static int  ParseReleaseString(const char *release, int &maj, int &min, int &patch);
00092 };
00093 
00094 //
00095 // Manage XrdROOT instances
00096 
00097 class XrdROOTMgr : public XrdProofdConfig {
00098 
00099    XrdProofdManager  *fMgr;
00100    XrdSysLogger      *fLogger;    // Error logger
00101    XrdOucString      fLogDir;     // Path to dir with validation logs
00102 
00103    std::list<XrdROOT *> fROOT;    // ROOT versions; the first is the default
00104 
00105    int               Validate(XrdROOT *r, XrdScheduler *sched);
00106 
00107    void              RegisterDirectives();
00108    int               DoDirectiveRootSys(char *, XrdOucStream *, bool);
00109 
00110 public:
00111    XrdROOTMgr(XrdProofdManager *mgr, XrdProtocol_Config *pi, XrdSysError *e);
00112    virtual ~XrdROOTMgr() { }
00113 
00114    int               Config(bool rcf = 0);
00115    int               DoDirective(XrdProofdDirective *d,
00116                                  char *val, XrdOucStream *cfg, bool rcf);
00117 
00118    XrdROOT          *DefaultVersion() const { return fROOT.front(); }
00119    XrdOucString      ExportVersions(XrdROOT *def);
00120    XrdROOT          *GetVersion(const char *tag);
00121    void              SetLogDir(const char *d);
00122 };
00123 
00124 
00125 #endif

Generated on Tue Jul 5 14:51:50 2011 for ROOT_528-00b_version by  doxygen 1.5.1