00001 #ifndef __XRDCKSMANAGER_HH__
00002 #define __XRDCKSMANAGER_HH__
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033 #include "sys/types.h"
00034
00035 #include "XrdCks/XrdCks.hh"
00036 #include "XrdCks/XrdCksData.hh"
00037
00038
00039
00040
00041
00042
00043 class XrdCksCalc;
00044 class XrdCksLoader;
00045 class XrdSysError;
00046 struct XrdVersionInfo;
00047
00048 class XrdCksManager : public XrdCks
00049 {
00050 public:
00051 virtual int Calc( const char *Pfn, XrdCksData &Cks, int doSet=1);
00052
00053 virtual int Config(const char *Token, char *Line);
00054
00055 virtual int Del( const char *Pfn, XrdCksData &Cks);
00056
00057 virtual int Get( const char *Pfn, XrdCksData &Cks);
00058
00059 virtual int Init(const char *ConfigFN, const char *AddCalc=0);
00060
00061 virtual char *List(const char *Pfn, char *Buff, int Blen, char Sep=' ');
00062
00063 virtual const char *Name(int seqNum=0);
00064
00065 virtual XrdCksCalc *Object(const char *name);
00066
00067 virtual int Size( const char *Name=0);
00068
00069 virtual int Set( const char *Pfn, XrdCksData &Cks, int myTime=0);
00070
00071 virtual int Ver( const char *Pfn, XrdCksData &Cks);
00072
00073 XrdCksManager(XrdSysError *erP, int iosz,
00074 XrdVersionInfo &vInfo, bool autoload=false);
00075 virtual ~XrdCksManager();
00076
00077 protected:
00078
00079
00080
00081
00082
00083
00084 virtual int Calc(const char *Pfn, time_t &MTime, XrdCksCalc *CksObj);
00085
00086
00087
00088
00089 virtual int ModTime(const char *Pfn, time_t &MTime);
00090
00091 private:
00092
00093 struct csInfo
00094 {char Name[XrdCksData::NameSize];
00095 XrdCksCalc *Obj;
00096 char *Path;
00097 char *Parms;
00098 XrdSysPlugin *Plugin;
00099 int Len;
00100 bool doDel;
00101 csInfo() : Obj(0), Path(0), Parms(0), Plugin(0), Len(0),
00102 doDel(true)
00103 {memset(Name, 0, sizeof(Name));}
00104 };
00105
00106 int Config(const char *cFN, csInfo &Info);
00107 csInfo *Find(const char *Name);
00108
00109 static const int csMax = 8;
00110 csInfo csTab[csMax];
00111 int csLast;
00112 int segSize;
00113 XrdCksLoader *cksLoader;
00114 XrdVersionInfo &myVersion;
00115 };
00116 #endif