xrootd
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Public Attributes | Static Public Attributes | List of all members
XrdOucCache Class Referenceabstract

#include <XrdOucCache.hh>

Inheritance diagram for XrdOucCache:
Inheritance graph
[legend]
Collaboration diagram for XrdOucCache:
Collaboration graph
[legend]

Public Types

enum  LFP_Reason { ForAccess =0 , ForInfo , ForPath }
 
enum  XeqCmd { xeqNoop = 0 }
 

Public Member Functions

virtual XrdOucCacheIOAttach (XrdOucCacheIO *ioP, int opts=0)=0
 
virtual int LocalFilePath (const char *url, char *buff=0, int blen=0, LFP_Reason why=ForAccess, bool forall=false)
 
virtual int Prepare (const char *url, int oflags, mode_t mode)
 
virtual int Rename (const char *oldp, const char *newp)
 
virtual int Rmdir (const char *dirp)
 
virtual int Stat (const char *url, struct stat &sbuff)
 
virtual int Truncate (const char *path, off_t size)
 
virtual int Unlink (const char *path)
 
virtual int Xeq (XeqCmd cmd, char *arg, int arglen)
 
 XrdOucCache (const char *ctype)
 
virtual ~XrdOucCache ()
 Destructor.
 

Public Attributes

XrdOucCacheStats Statistics
 
const char CacheType [8]
 A 1-to-7 character cache type identifier (usually pfc or rmc).
 

Static Public Attributes

static const int optFIS = 0x0001
 File is structured (e.g. root file)
 
static const int optRW = 0x0004
 File is read/write (o/w read/only)
 
static const int optNEW = 0x0014
 File is new -> optRW (o/w read or write)
 
static const int optWIN = 0x0024
 File is new -> optRW use write-in cache.
 

Detailed Description

The XrdOucCache class is used to define a cache. The cache is associated with one or more XrdOucCacheIO objects using the Attach() method.

Member Enumeration Documentation

◆ LFP_Reason

Get the path to a file that is complete in the local cache. By default, the file must be complete in the cache (i.e. no blocks are missing). This can be overridden. Thes path can be used to access the file on the local node.

Parameters
url- Pointer to the url of interest.
buff- Pointer to a buffer to receive the local path to the file. If nil, no path is returned.
blen- Length of the buffer, buff. If zero, no path is returned.
why- One of the LFP_Reason enums describing the call: ForAccess - the path will be used to access the file. If the file is complete, the system will delay purging the file for a configurable window, should a purge be imminent. A null path is returned for any non-zero return code. ForInfo - same as ForAccess except that purging will not be delayed if imminent. A path is always returned, if possible. Otherwise the first byte of any supplied buffer is set to 0. ForPath - Only the path is wanted and no checks need be performed. The only possible errors are -EINVAL and -ENAMETOOLONG.
forall- When ForAccess is specified: when true makes the file world readable; otherwise, only group readable. The parameter is ignored unless "why" is ForAccess and a local file path is requested to be returned.
Returns
0 - the file is complete and the local path to the file is in the buffer, if it has been supllied.
<0 - the request could not be fulfilled. The return value is -errno describing why. If a buffer was supplied and a path could be generated it is returned only if "why" is ForInfo or ForPath. Otherwise, a null path is returned.

Common return codes are: -EINVAL an argument is invalid. -EISDIR target is a directory not a file. -ENAMETOOLONG buffer not big enough to hold path. -ENOENT file not in cache -ENOTSUP method not implemented -EREMOTE file is incomplete

Returns
>0 - Reserved for future use.
Enumerator
ForAccess 
ForInfo 
ForPath 

◆ XeqCmd

Perform special operation on the cache.

Parameters
cmd- The operation to be performed.
arg- The operation argument(s).
arglen- The length of arg.
Returns
Success: 0
Failure: -errno
Enumerator
xeqNoop 

Constructor & Destructor Documentation

◆ XrdOucCache()

XrdOucCache::XrdOucCache ( const char *  ctype)
inline

Constructor

Parameters
ctype- A 1-to-7 character cache type identifier.

References CacheType.

◆ ~XrdOucCache()

virtual XrdOucCache::~XrdOucCache ( )
inlinevirtual

Destructor.

Member Function Documentation

◆ Attach()

virtual XrdOucCacheIO * XrdOucCache::Attach ( XrdOucCacheIO ioP,
int  opts = 0 
)
pure virtual

Implemented in XrdPfc::Cache, XrdRmcReal, and XrdPfc::Cache.

◆ LocalFilePath()

virtual int XrdOucCache::LocalFilePath ( const char *  url,
char *  buff = 0,
int  blen = 0,
LFP_Reason  why = ForAccess,
bool  forall = false 
)
inlinevirtual

Reimplemented in XrdPfc::Cache.

◆ Prepare()

virtual int XrdOucCache::Prepare ( const char *  url,
int  oflags,
mode_t  mode 
)
inlinevirtual

Prepare the cache for a file open request. This method is called prior to actually opening a file. This method is meant to allow defering an open request or implementing the full I/O stack in the cache layer.

Parameters
url- Pointer to the url about to be opened.
oflags- Standard Unix open flags (see open(2)).
mode- Standard mode flags if file is being created.
Returns
<0 Error has occurred, return value is -errno; fail open request. The error code -EUSERS may be returned to trigger overload recovery as specified by the xrootd.fsoverload directive. No other method should return this error code. =0 Continue with open() request. >0 Defer open but treat the file as actually being open.

Reimplemented in XrdPfc::Cache.

◆ Rename()

virtual int XrdOucCache::Rename ( const char *  oldp,
const char *  newp 
)
inlinevirtual

Rename a file in the cache.

Parameters
oldp- the existing path to be renamed.
newp- the new name it is to have.
Returns
Success: 0
Failure: -errno

◆ Rmdir()

virtual int XrdOucCache::Rmdir ( const char *  dirp)
inlinevirtual

Remove a directory from the cache.

Parameters
dirp- the existing directory path to be removed.
Returns
Success: 0
Failure: -errno

◆ Stat()

virtual int XrdOucCache::Stat ( const char *  url,
struct stat sbuff 
)
inlinevirtual

Perform a stat() operation (defaults to passthrough).

Parameters
urlpointer to the url whose stat information is wanted.
sbuffreference 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.
Returns
<0 - Stat failed, value is -errno. =0 - Stat succeeded, sbuff holds stat information. >0 - Stat could not be done, forward operation to next level.

Reimplemented in XrdPfc::Cache.

◆ Truncate()

virtual int XrdOucCache::Truncate ( const char *  path,
off_t  size 
)
inlinevirtual

Truncate a file in the cache to a specified size.

Parameters
path- the path of the file to truncate.
size- the size in bytes it is to have.
Returns
Success: 0
Failure: -errno

◆ Unlink()

virtual int XrdOucCache::Unlink ( const char *  path)
inlinevirtual

Remove a file from the cache.

Parameters
path- the path of the file to be removed.
Returns
Success: 0
Failure: -errno

Reimplemented in XrdPfc::Cache.

◆ Xeq()

virtual int XrdOucCache::Xeq ( XeqCmd  cmd,
char *  arg,
int  arglen 
)
inlinevirtual

Member Data Documentation

◆ CacheType

const char XrdOucCache::CacheType[8]

A 1-to-7 character cache type identifier (usually pfc or rmc).

Referenced by XrdOucCache().

◆ optFIS

const int XrdOucCache::optFIS = 0x0001
static

File is structured (e.g. root file)

Obtain a new XrdOucCacheIO object that fronts an existing XrdOucCacheIO with this cache. Upon success a pointer to a new XrdOucCacheIO object is returned and must be used to read and write data with the cache interposed. Upon failure, the original XrdOucCacheIO object is returned with errno set. You can continue using the object without any cache. The new cache should use the methods in the passed CacheIO object to perform I/O operatios.

Parameters
ioPPointer to the current CacheIO object used for I/O.
optsCache options as defined below. When specified, they override the default options associated with the cache, except for optRW, optNEW, and optWIN which are valid only for a r/w cache.
Returns
Pointer to a new XrdOucCacheIO object (success) or the original XrdOucCacheIO object (failure) with errno set.

◆ optNEW

const int XrdOucCache::optNEW = 0x0014
static

File is new -> optRW (o/w read or write)

◆ optRW

const int XrdOucCache::optRW = 0x0004
static

File is read/write (o/w read/only)

◆ optWIN

const int XrdOucCache::optWIN = 0x0024
static

File is new -> optRW use write-in cache.

◆ Statistics

XrdOucCacheStats XrdOucCache::Statistics

The following holds statistics for the cache itself. It is updated as associated cacheIO objects are deleted and their statistics are added.


The documentation for this class was generated from the following file: