XRootD
XrdOfsCPFile.hh
Go to the documentation of this file.
1 #ifndef __XRDOFSCPFILE_HH__
2 #define __XRDOFSCPFILE_HH__
3 /******************************************************************************/
4 /* */
5 /* X r d O f s C P F i l e . h h */
6 /* */
7 /* (c) 2020 by the Board of Trustees of the Leland Stanford, Jr., University */
8 /* All Rights Reserved */
9 /* Produced by Andrew Hanushevsky for Stanford University under contract */
10 /* DE-AC02-76-SFO0515 with the Department of Energy */
11 /* */
12 /* This file is part of the XRootD software suite. */
13 /* */
14 /* XRootD is free software: you can redistribute it and/or modify it under */
15 /* the terms of the GNU Lesser General Public License as published by the */
16 /* Free Software Foundation, either version 3 of the License, or (at your */
17 /* option) any later version. */
18 /* */
19 /* XRootD is distributed in the hope that it will be useful, but WITHOUT */
20 /* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or */
21 /* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public */
22 /* License for more details. */
23 /* */
24 /* You should have received a copy of the GNU Lesser General Public License */
25 /* along with XRootD in a file called COPYING.LESSER (LGPL license) and file */
26 /* COPYING (GPL license). If not, see <http://www.gnu.org/licenses/>. */
27 /* */
28 /* The copyright holder's institutional names and contributor's names may not */
29 /* be used to endorse or promote products derived from this software without */
30 /* specific prior written permission of the institution or contributor. */
31 /******************************************************************************/
32 
33 #include <cstdint>
34 #include <ctime>
35 
36 struct stat;
37 class XrdOucIOVec;
38 
40 {
41 public:
42 
43 //-----------------------------------------------------------------------------
51 //-----------------------------------------------------------------------------
52 
53 int Append(const char *data, off_t offset, int dlen);
54 
55 //-----------------------------------------------------------------------------
62 //-----------------------------------------------------------------------------
63 
64 int Create(const char *lfn, struct stat &Stat);
65 
66 //-----------------------------------------------------------------------------
70 //-----------------------------------------------------------------------------
71 
72 int Destroy();
73 
74 //-----------------------------------------------------------------------------
78 //-----------------------------------------------------------------------------
79 
80 int ErrState();
81 
82 //-----------------------------------------------------------------------------
87 //-----------------------------------------------------------------------------
88 
89 const char *FName(bool trim=false);
90 
91 //-----------------------------------------------------------------------------
95 //-----------------------------------------------------------------------------
96 
97 bool isActive() {return ckpFN != 0;}
98 
99 //-----------------------------------------------------------------------------
106 //-----------------------------------------------------------------------------
107 
108  bool Reserve(int dlen, int nseg);
109 
110 //-----------------------------------------------------------------------------
121 //-----------------------------------------------------------------------------
122 
123 class rInfo
124  {public:
125  friend class XrdOfsCPFile;
126  const char *srcLFN;
127  int64_t fSize;
128  time_t mTime;
130  int DataNum;
131  int DataLen;
132  rInfo();
133  ~rInfo();
134  private:
135  void *rBuff;
136  };
137 
138  int RestoreInfo(rInfo &rinfo, const char *&ewhy);
139 
140 //-----------------------------------------------------------------------------
144 //-----------------------------------------------------------------------------
145 
146  int Sync();
147 
148 //-----------------------------------------------------------------------------
154 //-----------------------------------------------------------------------------
155 
156 static char *Target(const char *ckpfn);
157 
158 //-----------------------------------------------------------------------------
164 //-----------------------------------------------------------------------------
165 
166  int Used(int nseg=0);
167 
168 //-----------------------------------------------------------------------------
173 //-----------------------------------------------------------------------------
174 
175  XrdOfsCPFile(const char *cfn=0);
176 
177 //-----------------------------------------------------------------------------
179 //-----------------------------------------------------------------------------
180 
181  ~XrdOfsCPFile();
182 
183 private:
184 static char *genCkpPath();
185 static int getSrcLfn(const char *cFN, rInfo &rinfo, int fd, int rc);
186 
187 char *ckpFN;
188 int ckpFD;
189 int ckpDLen;
190 int ckpSize;
191 };
192 #endif
struct stat Stat
Definition: XrdCks.cc:49
void trim(std::string &str)
Definition: XrdHttpReq.cc:76
int stat(const char *path, struct stat *buf)
int64_t fSize
Original size of the source file.
const char * srcLFN
Pointer to the source filename.
XrdOucIOVec * DataVec
A vector of data that must be written back.
int DataLen
Number of bytes to write back (may be 0)
int DataNum
Number of elements in DataVec (may be 0)
time_t mTime
Original modification time of the source.
bool Reserve(int dlen, int nseg)
static char * Target(const char *ckpfn)
int Append(const char *data, off_t offset, int dlen)
bool isActive()
Definition: XrdOfsCPFile.hh:97
int Used(int nseg=0)
XrdOfsCPFile(const char *cfn=0)
int RestoreInfo(rInfo &rinfo, const char *&ewhy)
~XrdOfsCPFile()
Destructor.
int Create(const char *lfn, struct stat &Stat)
const char * FName(bool trim=false)