00001 #ifndef __FRMADMIN__HH
00002 #define __FRMADMIN__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 <stdlib.h>
00034 #include <sys/types.h>
00035
00036 #include "XrdCks/XrdCksData.hh"
00037 #include "XrdOuc/XrdOucNSWalk.hh"
00038
00039 class XrdFrcProxy;
00040 class XrdFrmFileset;
00041 class XrdOucArgs;
00042 class XrdOucTList;
00043
00044 class XrdFrmAdmin
00045 {
00046 public:
00047
00048 int Audit();
00049
00050 int Chksum();
00051
00052 int Copy();
00053
00054 int Create();
00055
00056 int Find();
00057
00058 int Help();
00059
00060 int MakeLF();
00061
00062 int Mark();
00063
00064 int Mmap();
00065
00066 int Mv();
00067
00068 int Pin();
00069
00070 int Query();
00071
00072 int Quit() {exit(finalRC); return 0;}
00073
00074 int Reloc();
00075
00076 int Remove();
00077
00078 int Rename();
00079
00080 void setArgs(int argc, char **argv);
00081
00082 void setArgs(char *argv);
00083
00084 int xeqArgs(char *Cmd);
00085
00086 XrdFrmAdmin() : frmProxy(0), frmProxz(0), finalRC(0) {}
00087 ~XrdFrmAdmin() {}
00088
00089 private:
00090 int AuditNameNB(XrdFrmFileset *sP);
00091 int AuditNameNF(XrdFrmFileset *sP);
00092 int AuditNameNL(XrdFrmFileset *sP);
00093 int AuditNames();
00094 int AuditNameXA(XrdFrmFileset *sP);
00095 int AuditRemove(XrdFrmFileset *sP);
00096 int AuditSpace();
00097 int AuditSpaceAX(const char *Path);
00098 int AuditSpaceAXDB(const char *Path);
00099 int AuditSpaceAXDC(const char *Path, XrdOucNSWalk::NSEnt *nP);
00100 int AuditSpaceAXDL(int dorm, const char *Path, const char *Dest);
00101 int AuditSpaceXA(const char *Space, const char *Path);
00102 int AuditSpaceXA(XrdFrmFileset *sP);
00103 int AuditUsage();
00104 int AuditUsage(char *Space);
00105 int AuditUsageAX(const char *Path);
00106 int AuditUsageXA(const char *Path, const char *Space);
00107 int isXA(XrdOucNSWalk::NSEnt *nP);
00108
00109 int ChksumList( const char *Lfn, const char *Pfn);
00110 void ChksumPrint(const char *Lfn, int rc);
00111
00112 int FindFail(XrdOucArgs &Spec);
00113 int FindMmap(XrdOucArgs &Spec);
00114 int FindNocs(XrdOucArgs &Spec);
00115 int FindPins(XrdOucArgs &Spec);
00116 int FindPins(XrdFrmFileset *sP);
00117 int FindUnmi(XrdOucArgs &Spec);
00118
00119 int Abbrev(const char *Spec, const char *Word, int minLen);
00120
00121 void ConfigProxy();
00122
00123 void Emsg(const char *tx1, const char *tx2=0, const char *tx3=0,
00124 const char *tx4=0, const char *tx5=0);
00125 void Emsg(int Enum, const char *tx2=0, const char *tx3=0,
00126 const char *tx4=0, const char *tx5=0);
00127 void Msg(const char *tx1, const char *tx2=0, const char *tx3=0,
00128 const char *tx4=0, const char *tx5=0);
00129
00130 int Parse(const char *What, XrdOucArgs &Spec, const char **Reqs);
00131 int ParseKeep(const char *What, const char *kTime);
00132 int ParseOwner(const char *What, char *Uname);
00133 XrdOucTList *ParseSpace(char *Space, char **Path);
00134 int ParseType(const char *What, char *Type);
00135
00136 char ckAttr(int What, const char *Lfn, char *Pfn, int Pfnsz);
00137 int mkLock(const char *Lfn);
00138 int mkFile(int What, const char *Path, const char *Data=0, int Dlen=0);
00139 int mkMark(const char *Lfn);
00140 int mkMmap(const char *Lfn);
00141 int mkPin(const char *Lfn);
00142 char mkStat(int What, const char *Lfn, char *Pfn, int Pfnsz);
00143
00144
00145
00146 static const int isPFN= 0x0001;
00147 static const int mkLF = 0x0002;
00148 static const int mkMF = 0x0004;
00149 static const int mkPF = 0x0008;
00150
00151 int QueryPfn(XrdOucArgs &Spec);
00152 int QueryRfn(XrdOucArgs &Spec);
00153 int QuerySpace(XrdOucArgs &Spec);
00154 int QuerySpace(const char *Pfn, char *Lnk=0, int Lsz=0);
00155 int QueryUsage(XrdOucArgs &Spec);
00156 int QueryXfrQ(XrdOucArgs &Spec);
00157
00158 int Reloc(char *srcLfn, char *Space);
00159 int RelocCP(const char *srcpfn, const char *trgpfn, off_t srcSz);
00160 int RelocWR(const char *outFn, int oFD, char *Buff, size_t BLen, off_t Boff);
00161
00162 int Unlink(const char *Path);
00163 int UnlinkDir(const char *Path, const char *lclPath);
00164 int UnlinkDir(XrdOucNSWalk::NSEnt *&nP, XrdOucNSWalk::NSEnt *&dP);
00165 int UnlinkFile(const char *lclPath);
00166
00167 int VerifyAll(char *path);
00168 char VerifyMP(const char *func, const char *path);
00169
00170 static const char *AuditHelp;
00171 static const char *ChksumHelp;
00172 static const char *FindHelp;
00173 static const char *HelpHelp;
00174 static const char *MakeLFHelp;
00175 static const char *MarkHelp;
00176 static const char *MmapHelp;
00177 static const char *MvHelp;
00178 static const char *PinHelp;
00179 static const char *QueryHelp;
00180 static const char *RelocHelp;
00181 static const char *RemoveHelp;
00182
00183
00184
00185 XrdFrcProxy *frmProxy;
00186 int frmProxz;
00187
00188
00189
00190 char **ArgV;
00191 char *ArgS;
00192 int ArgC;
00193
00194
00195
00196 long long numBytes;
00197 long long numBLost;
00198 int numDirs;
00199 int numFiles;
00200 int numProb;
00201 int numFix;
00202 int finalRC;
00203
00204
00205
00206 XrdCksData CksData;
00207
00208
00209
00210 struct {char All;
00211 char Echo;
00212 char Erase;
00213 char Fix;
00214 char Force;
00215 char Keep;
00216 char ktAlways;
00217 char ktIdle;
00218 char Local;
00219 char MPType;
00220 char Recurse;
00221 char Verbose;
00222 char *Args[2];
00223 uid_t Uid;
00224 gid_t Gid;
00225 time_t KeepTime;
00226 } Opt;
00227 };
00228 namespace XrdFrm
00229 {
00230 extern XrdFrmAdmin Admin;
00231 }
00232 #endif