xrootd
Loading...
Searching...
No Matches
Public Member Functions | Protected Attributes | List of all members
XrdCksWrapper Class Reference

#include <XrdCksWrapper.hh>

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

Public Member Functions

virtual int Calc (const char *Xfn, XrdCksData &Cks, int doSet=1)
 
virtual int Calc (const char *Xfn, XrdCksData &Cks, XrdCksPCB *pcbP, int doSet=1)
 
virtual int Del (const char *Xfn, XrdCksData &Cks)
 
virtual int Get (const char *Xfn, XrdCksData &Cks)
 
virtual int Config (const char *Token, char *Line)
 
virtual int Init (const char *ConfigFN, const char *DfltCalc=0)
 
virtual char * List (const char *Xfn, char *Buff, int Blen, char Sep=' ')
 
virtual const char * Name (int seqNum=0)
 
virtual XrdCksCalcObject (const char *name)
 
virtual int Size (const char *Name=0)
 
virtual int Set (const char *Xfn, XrdCksData &Cks, int myTime=0)
 
virtual int Ver (const char *Xfn, XrdCksData &Cks)
 
virtual int Ver (const char *Xfn, XrdCksData &Cks, XrdCksPCB *pcbP)
 
 XrdCksWrapper (XrdCks &prevPI, XrdSysError *errP)
 
virtual ~XrdCksWrapper ()
 Destructor.
 
- Public Member Functions inherited from XrdCks
 XrdCks (XrdSysError *erP)
 Constructor.
 
virtual ~XrdCks ()
 Destructor.
 

Protected Attributes

XrdCkscksPI
 
- Protected Attributes inherited from XrdCks
XrdSysErroreDest
 

Detailed Description

This class defines the wrapper for the checksum management interface. It should be used as the base class for a stacked plugin. When used that way, the shared library holding the plugin must define a "C" entry point named XrdCksAdd2() as described at the end of this include file. Note you pass a reference to the previous plugin-in in the plug-in chain as a constructor argument as supplied to the XrdCksAdd2() function. Override the methods you wish to wrap. Methods that are not overridden are forwarded to the previous plug-in.

Constructor & Destructor Documentation

◆ XrdCksWrapper()

XrdCksWrapper::XrdCksWrapper ( XrdCks prevPI,
XrdSysError errP 
)
inline

Constructor

Parameters
prevPIReference to the antecedent plugin.
errPPointer to error message object

◆ ~XrdCksWrapper()

virtual XrdCksWrapper::~XrdCksWrapper ( )
inlinevirtual

Destructor.

Member Function Documentation

◆ Calc() [1/2]

virtual int XrdCksWrapper::Calc ( const char *  Xfn,
XrdCksData Cks,
int  doSet = 1 
)
inlinevirtual

Calculate a new checksum for a physical file using the checksum algorithm named in the Cks parameter.

Parameters
XfnThe logical or physical name of the file to be checksumed.
CksFor input, it specifies the checksum algorithm to be used. For output, the checksum value is returned upon success.
doSetWhen true, the new value must replace any existing value in the Xfn's extended file attributes.
pcbPIn the second form, the pointer to the callback object. A nil pointer does not invoke any callback.
Returns
Success: zero with Cks structure holding the checksum value. Failure: -errno (see significant error numbers below).

Implements XrdCks.

References XrdCks::Calc(), and cksPI.

Referenced by Calc().

◆ Calc() [2/2]

virtual int XrdCksWrapper::Calc ( const char *  Xfn,
XrdCksData Cks,
XrdCksPCB pcbP,
int  doSet = 1 
)
inlinevirtual

Reimplemented from XrdCks.

References Calc().

◆ Config()

virtual int XrdCksWrapper::Config ( const char *  Token,
char *  Line 
)
inlinevirtual

Parse a configuration directives specific to the checksum manager.

Parameters
TokenPoints to the directive that triggered the call.
LineAll the characters after the directive.
Returns
Success: 1 Failure: 0

Implements XrdCks.

References cksPI, and XrdCks::Config().

◆ Del()

virtual int XrdCksWrapper::Del ( const char *  Xfn,
XrdCksData Cks 
)
inlinevirtual

Delete the checksum from the Xfn's xattrs.

Parameters
XfnThe logical or physical name of the file to be checksumed.
CksSpecifies the checksum type to delete.
Returns
Success: 0 Failure: -errno (see significant error numbers below).

Implements XrdCks.

References cksPI, and XrdCks::Del().

◆ Get()

virtual int XrdCksWrapper::Get ( const char *  Xfn,
XrdCksData Cks 
)
inlinevirtual

Retreive the checksum from the Xfn's xattrs and return it and indicate whether or not it is stale (i.e. the file modification has changed or the name and length are not the expected values).

Parameters
XfnThe logical or physical name of the file to be checksumed.
CksFor input, it specifies the checksum type to return. For output, the checksum value is returned upon success.
Returns
Success: The length of the binary checksum in the Cks structure. Failure: -errno (see significant error numbers below).

Implements XrdCks.

References cksPI, and XrdCks::Get().

◆ Init()

virtual int XrdCksWrapper::Init ( const char *  ConfigFN,
const char *  DfltCalc = 0 
)
inlinevirtual

Fully initialize the manager which includes loading any plugins.

Parameters
ConfigFNPoints to the configuration file path.
DfltCalcIs the default checksum and should be defaulted if NULL. The default implementation defaults this to adler32. A default is only needed should the checksum name in the XrdCksData object be omitted.
Returns
Success: 1 Failure: 0

Implements XrdCks.

References cksPI, and XrdCks::Init().

◆ List()

virtual char * XrdCksWrapper::List ( const char *  Xfn,
char *  Buff,
int  Blen,
char  Sep = ' ' 
)
inlinevirtual

List names of the checksums associated with a Xfn or all supported ones.

Parameters
XfnThe logical or physical file name whose checksum names are to be returned. When Xfn is null, return all supported checksum algorithm names.
BuffPoints to a buffer, at least 64 bytes in length, to hold a "Sep" separated list of checksum names.
BlenThe length of the buffer.
SepThe separation character to be used between adjacent names.
Returns
Success: Pointer to Buff holding at least one checksum name. Failure: A nil pointer is returned.

Implements XrdCks.

References cksPI, and XrdCks::List().

◆ Name()

virtual const char * XrdCksWrapper::Name ( int  seqNum = 0)
inlinevirtual

Get the name of the checksums associated with a sequence number. Note that Name() may be called prior to final config to see if there are any chksums to configure and avoid unintended errors.

Parameters
seqNumThe sequence number. Zero signifies the default name. Higher numbers are alternates.
Returns
Success: Pointer to the name. Failure: A nil pointer is returned (no more alternates exist).

Implements XrdCks.

References cksPI, and XrdCks::Name().

Referenced by Size().

◆ Object()

virtual XrdCksCalc * XrdCksWrapper::Object ( const char *  name)
inlinevirtual

Get a new XrdCksCalc object that can calculate the checksum corresponding to the specified name or the default object if name is a null pointer. The object can be used to compute checksums on the fly. The object's Recycle() method must be used to delete it.

Parameters
nameThe name of the checksum algorithm. If null, use the default one.
Returns
Success: A pointer to the object is returned. Failure: Zero if no corresponding object exists.

Reimplemented from XrdCks.

References cksPI, and XrdCks::Object().

◆ Set()

virtual int XrdCksWrapper::Set ( const char *  Xfn,
XrdCksData Cks,
int  myTime = 0 
)
inlinevirtual

Set a file's checksum in the extended attributes along with the file's mtime and the time of setting.

Parameters
XfnThe logical or physical name of the file to be set.
CksSpecifies the checksum name and value.
myTimeWhen true then the fmTime and gmTime in the Cks structure are to be used; as opposed to the current time.
Returns
Success: zero is returned. Failure: -errno (see significant error numbers below).

Implements XrdCks.

References cksPI, and XrdCks::Set().

◆ Size()

virtual int XrdCksWrapper::Size ( const char *  Name = 0)
inlinevirtual

Get the binary length of the checksum with the corresponding name.

Parameters
NameThe checksum algorithm name. If null, use the default name.
Returns
Success: checksum length. Failure: Zero if the checksum name does not exist.

Implements XrdCks.

References cksPI, Name(), and XrdCks::Size().

◆ Ver() [1/2]

virtual int XrdCksWrapper::Ver ( const char *  Xfn,
XrdCksData Cks 
)
inlinevirtual

Retreive the checksum from the Xfn's xattrs and compare it to the supplied checksum. If the checksum is not available or is stale, a new checksum is calculated and written to the extended attributes.

Parameters
XfnThe logical or physical name of the file to be verified.
CksSpecifies the checksum name and value.
pcbPIn the second form, the pointer to the callback object. A nil pointer does not invoke any callback.
Returns
Success: True Failure: False (the checksums do not match) or -errno indicating that verification could not be performed (see significant error numbers below).

Implements XrdCks.

References cksPI, and XrdCks::Ver().

Referenced by Ver().

◆ Ver() [2/2]

virtual int XrdCksWrapper::Ver ( const char *  Xfn,
XrdCksData Cks,
XrdCksPCB pcbP 
)
inlinevirtual

Reimplemented from XrdCks.

References Ver().

Member Data Documentation

◆ cksPI

XrdCks& XrdCksWrapper::cksPI
protected

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