xrootd
Loading...
Searching...
No Matches
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
36struct stat;
37class XrdOucIOVec;
38
40{
41public:
42
43//-----------------------------------------------------------------------------
51//-----------------------------------------------------------------------------
52
53int Append(const char *data, off_t offset, int dlen);
54
55//-----------------------------------------------------------------------------
62//-----------------------------------------------------------------------------
63
64int Create(const char *lfn, struct stat &Stat);
65
66//-----------------------------------------------------------------------------
70//-----------------------------------------------------------------------------
71
72int Destroy();
73
74//-----------------------------------------------------------------------------
78//-----------------------------------------------------------------------------
79
81
82//-----------------------------------------------------------------------------
87//-----------------------------------------------------------------------------
88
89const char *FName(bool trim=false);
90
91//-----------------------------------------------------------------------------
95//-----------------------------------------------------------------------------
96
97bool isActive() {return ckpFN != 0;}
98
99//-----------------------------------------------------------------------------
106//-----------------------------------------------------------------------------
107
108 bool Reserve(int dlen, int nseg);
109
110//-----------------------------------------------------------------------------
121//-----------------------------------------------------------------------------
122
123class rInfo
124 {public:
125 friend class XrdOfsCPFile;
126 const char *srcLFN;
127 int64_t fSize;
128 time_t mTime;
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
156static 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
182
183private:
184static char *genCkpPath();
185static int getSrcLfn(const char *cFN, rInfo &rinfo, int fd, int rc);
186
187char *ckpFN;
191};
192#endif
void trim(std::string &str)
#define stat(a, b)
Definition XrdPosix.hh:96
Definition XrdOfsCPFile.hh:124
int64_t fSize
Original size of the source file.
Definition XrdOfsCPFile.hh:127
const char * srcLFN
Pointer to the source filename.
Definition XrdOfsCPFile.hh:126
XrdOucIOVec * DataVec
A vector of data that must be written back.
Definition XrdOfsCPFile.hh:129
void * rBuff
Definition XrdOfsCPFile.hh:135
int DataLen
Number of bytes to write back (may be 0)
Definition XrdOfsCPFile.hh:131
int DataNum
Number of elements in DataVec (may be 0)
Definition XrdOfsCPFile.hh:130
time_t mTime
Original modification time of the source.
Definition XrdOfsCPFile.hh:128
Definition XrdOfsCPFile.hh:40
static char * genCkpPath()
bool Reserve(int dlen, int nseg)
int Append(const char *data, off_t offset, int dlen)
bool isActive()
Definition XrdOfsCPFile.hh:97
int Used(int nseg=0)
int ckpDLen
Definition XrdOfsCPFile.hh:189
XrdOfsCPFile(const char *cfn=0)
int RestoreInfo(rInfo &rinfo, const char *&ewhy)
~XrdOfsCPFile()
Destructor.
char * ckpFN
Definition XrdOfsCPFile.hh:187
int Create(const char *lfn, struct stat &Stat)
int ckpSize
Definition XrdOfsCPFile.hh:190
const char * FName(bool trim=false)
static int getSrcLfn(const char *cFN, rInfo &rinfo, int fd, int rc)
int ckpFD
Definition XrdOfsCPFile.hh:188
static char * Target(const char *ckpfn)
Definition XrdOucIOVec.hh:41