xrootd
XrdPosixPrepIO.hh
Go to the documentation of this file.
1#ifndef __XRDPOSIXPREPIO_HH__
2#define __XRDPOSIXPREPIO_HH__
3/******************************************************************************/
4/* */
5/* X r d P o s i x P r e p I O . h h */
6/* */
7/* (c) 2016 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 "Xrd/XrdJob.hh"
35
37{
38public:
39
40XrdOucCacheIO *Base() {return this;} // Already defined
41
42XrdOucCacheIO *Detach() {return this;} // Already defined
43
44void Disable();
45
46long long FSize() {return (Init() ? fileP->FSize() : openRC);}
47
48int Fstat(struct stat &buf)
49 {return (Init() ? fileP->Fstat(buf) : openRC);}
50
51bool ioActive() { return false; } // Already defined
52
53int Open() {Init(); return openRC;}
54
55const char *Path() {return fileP->Path();}
56
57int Read (char *Buffer, long long Offset, int Length)
58 {return (Init() ? fileP->Read(Buffer, Offset, Length) : openRC);}
59
60void Read (XrdOucCacheIOCB &iocb, char *buff, long long offs, int rlen)
61 {if (Init(&iocb)) fileP->Read(iocb, buff, offs, rlen);
62 else iocb.Done(openRC);
63 }
64
65int ReadV(const XrdOucIOVec *readV, int n)
66 {return (Init() ? fileP->ReadV(readV, n) : openRC);}
67
68void ReadV(XrdOucCacheIOCB &iocb, const XrdOucIOVec *readV, int rnum)
69 {if (Init(&iocb)) fileP->ReadV(iocb, readV, rnum);
70 else iocb.Done(openRC);
71 }
72
73int Sync() {return (Init() ? fileP->Sync() : openRC);}
74
76 {if (Init(&iocb)) fileP->Sync(iocb);
77 else iocb.Done(openRC);
78 }
79
80int Trunc(long long Offset)
81 {return (Init() ? fileP->Trunc(Offset) : openRC);}
82
83int Write(char *Buffer, long long Offset, int Length)
84 {return (Init() ? fileP->Write(Buffer,Offset,Length) : openRC);}
85
86void Write(XrdOucCacheIOCB &iocb, char *buff, long long offs, int wlen)
87 {if (Init(&iocb)) fileP->Write(iocb, buff, offs, wlen);
88 else iocb.Done(openRC);
89 }
90
93 : fileP(fP), openRC(0), iCalls(0),
94 clFlags(clflags), clMode(clmode) {}
95virtual ~XrdPosixPrepIO() {}
96
97private:
98bool Init(XrdOucCacheIOCB *iocbP=0);
99
103
106};
107#endif
#define stat(a, b)
Definition: XrdPosix.hh:96
Definition: XrdOucCache2.hh:63
Definition: XrdOucCache.hh:94
virtual void Done(int result)=0
Definition: XrdOucCache.hh:128
Definition: XrdPosixFile.hh:60
long long FSize()
Definition: XrdPosixFile.hh:87
int ReadV(const XrdOucIOVec *readV, int n)
int Write(char *Buff, long long Offs, int Len)
int Read(char *Buff, long long Offs, int Len)
int Fstat(struct stat &buf)
int Trunc(long long Offset)
const char * Path()
Definition: XrdPosixFile.hh:110
Definition: XrdPosixPrepIO.hh:37
bool ioActive()
Definition: XrdPosixPrepIO.hh:51
XrdCl::Access::Mode clMode
Definition: XrdPosixPrepIO.hh:105
int ReadV(const XrdOucIOVec *readV, int n)
Definition: XrdPosixPrepIO.hh:65
int iCalls
Definition: XrdPosixPrepIO.hh:102
int Read(char *Buffer, long long Offset, int Length)
Definition: XrdPosixPrepIO.hh:57
XrdOucCacheIO * Detach()
Definition: XrdPosixPrepIO.hh:42
XrdCl::OpenFlags::Flags clFlags
Definition: XrdPosixPrepIO.hh:104
const char * Path()
Definition: XrdPosixPrepIO.hh:55
int openRC
Definition: XrdPosixPrepIO.hh:101
long long FSize()
Definition: XrdPosixPrepIO.hh:46
int Sync()
Definition: XrdPosixPrepIO.hh:73
int Write(char *Buffer, long long Offset, int Length)
Definition: XrdPosixPrepIO.hh:83
void Sync(XrdOucCacheIOCB &iocb)
Definition: XrdPosixPrepIO.hh:75
XrdPosixFile * fileP
Definition: XrdPosixPrepIO.hh:100
XrdOucCacheIO * Base()
Definition: XrdPosixPrepIO.hh:40
void Write(XrdOucCacheIOCB &iocb, char *buff, long long offs, int wlen)
Definition: XrdPosixPrepIO.hh:86
void Read(XrdOucCacheIOCB &iocb, char *buff, long long offs, int rlen)
Definition: XrdPosixPrepIO.hh:60
int Trunc(long long Offset)
Definition: XrdPosixPrepIO.hh:80
bool Init(XrdOucCacheIOCB *iocbP=0)
XrdPosixPrepIO(XrdPosixFile *fP, XrdCl::OpenFlags::Flags clflags, XrdCl::Access::Mode clmode)
Definition: XrdPosixPrepIO.hh:91
virtual ~XrdPosixPrepIO()
Definition: XrdPosixPrepIO.hh:95
void ReadV(XrdOucCacheIOCB &iocb, const XrdOucIOVec *readV, int rnum)
Definition: XrdPosixPrepIO.hh:68
int Open()
Definition: XrdPosixPrepIO.hh:53
int Fstat(struct stat &buf)
Definition: XrdPosixPrepIO.hh:48
Mode
Access mode.
Definition: XrdClFileSystem.hh:123
Flags
Open flags, may be or'd when appropriate.
Definition: XrdClFileSystem.hh:77
Definition: XrdOucIOVec.hh:41