xrootd
|
00001 00002 // // 00003 // XrdCpWorkLst // 00004 // // 00005 // Author: Fabrizio Furano (INFN Padova, 2004) // 00006 // // 00007 // A class implementing a list of cp to do for XrdCp // 00008 // // 00010 00011 // $Id$ 00012 00013 #include <sys/types.h> 00014 #include "XrdClient/XrdClientAdmin.hh" 00015 #include "XrdClient/XrdClient.hh" 00016 00017 class XrdSysDir; 00018 void PrintLastServerError(XrdClient *cli); 00019 bool PedanticOpen4Write(XrdClient *cli, kXR_unt16 mode, kXR_unt16 options); 00020 00021 class XrdCpWorkLst { 00022 00023 vecString fWorkList; 00024 int fWorkIt; 00025 00026 XrdClientAdmin *xrda_src, *xrda_dst; 00027 00028 XrdOucString fSrc, fDest; 00029 bool fDestIsDir, fSrcIsDir; 00030 00031 public: 00032 00033 XrdCpWorkLst(); 00034 ~XrdCpWorkLst(); 00035 00036 // Sets the source path for the file copy 00037 int SetSrc(XrdClient **srccli, XrdOucString url, 00038 XrdOucString urlopaquedata, bool do_recurse); 00039 00040 // Sets the destination of the file copy 00041 int SetDest(XrdClient **xrddest, const char *url, 00042 const char *urlopaquedata, 00043 kXR_unt16 xrdopenflags); 00044 00045 inline void GetDest(XrdOucString &dest, bool& isdir) { 00046 dest = fDest; 00047 isdir = fDestIsDir; 00048 } 00049 00050 inline void GetSrc(XrdOucString &src, bool& isdir) { 00051 src = fSrc; 00052 isdir = fSrcIsDir; 00053 } 00054 00055 00056 // Actually builds the worklist 00057 int BuildWorkList_xrd(XrdOucString url, XrdOucString opaquedata); 00058 int BuildWorkList_loc(XrdSysDir *dir, XrdOucString pat); 00059 00060 bool GetCpJob(XrdOucString &src, XrdOucString &dest); 00061 00062 };