00001 #ifndef __SFS_GPFILE_H__ 00002 #define __SFS_GPFILE_H__ 00003 /******************************************************************************/ 00004 /* */ 00005 /* X r d S f s G P F i l e . h h */ 00006 /* */ 00007 /* (c) 2019 by the Board of Trustees of the Leland Stanford, Jr., University */ 00008 /* Produced by Andrew Hanushevsky for Stanford University under contract */ 00009 /* DE-AC02-76-SFO0515 with the Department of Energy */ 00010 /* */ 00011 /* This file is part of the XRootD software suite. */ 00012 /* */ 00013 /* XRootD is free software: you can redistribute it and/or modify it under */ 00014 /* the terms of the GNU Lesser General Public License as published by the */ 00015 /* Free Software Foundation, either version 3 of the License, or (at your */ 00016 /* option) any later version. */ 00017 /* */ 00018 /* XRootD is distributed in the hope that it will be useful, but WITHOUT */ 00019 /* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or */ 00020 /* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public */ 00021 /* License for more details. */ 00022 /* */ 00023 /* You should have received a copy of the GNU Lesser General Public License */ 00024 /* along with XRootD in a file called COPYING.LESSER (LGPL license) and file */ 00025 /* COPYING (GPL license). If not, see <http://www.gnu.org/licenses/>. */ 00026 /* */ 00027 /* The copyright holder's institutional names and contributor's names may not */ 00028 /* be used to endorse or promote products derived from this software without */ 00029 /* specific prior written permission of the institution or contributor. */ 00030 /******************************************************************************/ 00031 00032 class XrdSfsGPInfo; 00033 00034 class XrdSfsGPFile 00035 { 00036 public: 00037 00038 uint16_t opts; 00039 static const uint16_t delegate = 0x0008; 00040 static const uint16_t keepErr = 0x0004; 00041 static const uint16_t mkPath = 0x0002; 00042 static const uint16_t replace = 0x0001; 00043 static const uint16_t useTLS = 0x0080; 00044 static const uint16_t verCKS = 0x0040; 00045 00046 uint16_t rsvd1; 00047 uint8_t pingsec; 00048 uint8_t sources; 00049 uint8_t streams; 00050 uint8_t rsvd2; 00051 00052 union { 00053 XrdSfsGPInfo *gpfInfo; 00054 uint32_t gpfID; 00055 }; 00056 00057 const char *src; 00058 const char *dst; 00059 const char *lclCGI; 00060 const char *csType; 00061 const char *csVal; 00062 const char *tident; 00063 00064 void *rsvd3; 00065 00066 //----------------------------------------------------------------------------- 00077 //----------------------------------------------------------------------------- 00078 00079 virtual void Finished(int rc, const char *emsg=0) = 0; 00080 00081 //----------------------------------------------------------------------------- 00087 //----------------------------------------------------------------------------- 00088 00089 enum GPFState {gpfPend = 0, 00090 gpfXfr, 00091 gpfCSV 00092 }; 00093 00094 virtual void Status(GPFState state, uint32_t cpct, uint64_t bytes) = 0; 00095 00096 //----------------------------------------------------------------------------- 00098 //----------------------------------------------------------------------------- 00099 00100 XrdSfsGPFile(const char *tid="") 00101 : opts(0), rsvd1(0), 00102 pingsec(0), sources(0), streams(0), rsvd2(0), 00103 gpfInfo(0), src(0), dst(0), lclCGI(0), 00104 csType(0), csVal(0), tident(tid), rsvd3(0) {} 00105 virtual ~XrdSfsGPFile() {} 00106 }; 00107 #endif