xrootd
|
#include <XrdOucCache2.hh>
Public Member Functions | |
virtual int | Fstat (struct stat &sbuff) |
virtual const char * | Location () |
virtual void | Read (XrdOucCacheIOCB &iocb, char *buff, long long offs, int rlen) |
virtual void | ReadV (XrdOucCacheIOCB &iocb, const XrdOucIOVec *readV, int rnum) |
virtual void | Sync (XrdOucCacheIOCB &iocb) |
virtual void | Update (XrdOucCacheIO2 &iocp) |
virtual void | Write (XrdOucCacheIOCB &iocb, char *buff, long long offs, int wlen) |
virtual | ~XrdOucCacheIO2 () |
virtual int | Read (char *Buffer, long long Offset, int Length)=0 |
virtual int | ReadV (const XrdOucIOVec *readV, int n) |
virtual int | Sync ()=0 |
virtual int | Write (char *Buffer, long long Offset, int Length)=0 |
![]() | |
virtual long long | FSize ()=0 |
virtual const char * | Path ()=0 |
virtual int | Read (char *Buffer, long long Offset, int Length)=0 |
virtual int | ReadV (const XrdOucIOVec *readV, int n) |
virtual int | Sync ()=0 |
virtual int | Trunc (long long Offset)=0 |
virtual int | Write (char *Buffer, long long Offset, int Length)=0 |
virtual XrdOucCacheIO * | Base () |
virtual XrdOucCacheIO * | Detach () |
virtual bool | ioActive () |
virtual void | Preread (long long Offset, int Length, int Opts=0) |
virtual void | Preread (aprParms &Parms) |
virtual | ~XrdOucCacheIO () |
Additional Inherited Members | |
![]() | |
XrdOucCacheStats | Statistics |
![]() | |
static const int | SingleUse = 0x0001 |
This class is an extension of the original XrdOucCache class and provides async I/O support, defered open and I/O decoupling. It is loaded as a cache plugin by the POSIX package via the proxy directive
pss.cache -2 <path>
Without the "-2" the original version is loaded. Implementation of a cache is similar between versions (see XrdOucCache.hh for details). The only difference is this version requires additional methods to be implemented and uses an asynchrnous callback mechanism to return the results. The XrdOucCacheIO2 object is responsible for interacting with the original data source/target. It can be used with or without a front-end cache. It an extension of the XrdOucCacheIO class which defines base methods.
|
inlinevirtual |
|
inlinevirtual |
Perform an fstat() operation (defaults to passthrough).
sbuff | reference to the stat buffer to be filled in. Only fields st_size, st_blocks, st_mtime (st_atime and st_ctime may be set to st_mtime), st_ino, and st_mode need to be set. All other fields are preset and should not be changed. |
Reimplemented in XrdFileCache::IOEntireFile, XrdPosixFile, XrdFileCache::IOFileBlock, XrdPosixCacheBCIO, and XrdPosixPrepIO.
Referenced by XrdPosixCacheBCIO::Fstat().
|
inlinevirtual |
Get the file's location (i.e. endpoint hostname and port)
Reimplemented in XrdPosixFile, and XrdPosixCacheBCIO.
Referenced by XrdPosixCacheBCIO::Location().
virtual int XrdOucCacheIO::Read |
Perform an asynchronous read (defaults to synchrnous).
iocb | reference to the callback object that receives the result. All results are returned via this object's Done() method. If the caller holds any locks they must be recursive locks as the callback may occur on the calling thread. Done() is passed < 0 - Read failed, value is -errno. >=0 - Read succeeded, value is number of bytes read. |
buff | pointer to the buffer to receive the results. The buffer must remain valid until the callback is invoked. |
offs | the offset into the file. |
rlen | the number of bytes to read. |
|
inlinevirtual |
Reimplemented in XrdPosixFile, and XrdPosixPrepIO.
References XrdOucCacheIOCB::Done().
|
inline |
Perform an asynchronous vector read (defaults to synchrnous).
iocb | reference to the callback object that receives the result. All results are returned via this object's Done() method. If the caller holds any locks they must be recursive locks as the callback may occur on the calling thread. Done() is passed < 0 - ReadV failed, value is -errno. >=0 - ReadV succeeded, value is number of bytes read. |
readV | pointer to a vector of read requests. |
rnum | the number of elements in the vector. |
|
inlinevirtual |
Reimplemented in XrdPosixFile, and XrdPosixPrepIO.
References XrdOucCacheIOCB::Done().
virtual int XrdOucCacheIO::Sync |
Perform an asynchronous fsync() operation (defaults to synchronous).
iocb | reference to the callback object that receives the result. All results are returned via this object's Done() method. If the caller holds any locks they must be recursive locks as the callback may occur on the calling thread. Done() is passed <0 - Sync failed, value is -errno. =0 - Sync succeeded. |
|
inlinevirtual |
Reimplemented in XrdPosixFile, and XrdPosixPrepIO.
References XrdOucCacheIOCB::Done(), and Sync().
Referenced by Sync().
|
inlinevirtual |
Update the originally passed XrdOucCacheIO2 object with the object passed. All future uses underlying XrdOucCacheIO2 object must now use this object. Update() is called when Prepare() indicated that the file should not be physically opened and a file method was invoked in the XrdOucCacheIO2 passed to Attach(). When this occurs, the file is actually opened and Update() called to replace the original XrdOucCacheIO2 object with one that uses the newly opened file.
iocp | reference to the new XrdOucCacheIO2 object. |
Reimplemented in XrdFileCache::IO.
virtual int XrdOucCacheIO::Write |
Perform an asynchronous write (defaults to synchronous).
iocb | reference to the callback object that receives the result. All results are returned via this object's Done() method. If the caller holds any locks they must be recursive locks as the callback may occur on the calling thread. < 0 - Write failed, value is -errno. >=0 - Write succeeded, value is number of bytes written. |
buff | pointer to the buffer holding the contents. The buffer must remain valid until the callback is invoked. |
offs | the offset into the file. |
wlen | the number of bytes to write |
|
inlinevirtual |
Reimplemented in XrdPosixFile, and XrdPosixPrepIO.
References XrdOucCacheIOCB::Done().