XrdCksLoader Class Reference

#include <XrdCksLoad.hh>

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

List of all members.

Classes

struct  csInfo

Public Member Functions

virtual int Calc (const char *Pfn, XrdCksData &Cks, int doSet=1)
virtual int Config (const char *Token, char *Line)
virtual int Del (const char *Pfn, XrdCksData &Cks)
virtual int Get (const char *Pfn, XrdCksData &Cks)
virtual int Init (const char *ConfigFN, const char *AddCalc=0)
virtual char * List (const char *Pfn, 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 *Pfn, XrdCksData &Cks, int myTime=0)
virtual int Ver (const char *Pfn, XrdCksData &Cks)
 XrdCksLoader (XrdSysError *erP, int iosz, XrdVersionInfo *vInfo)
virtual ~XrdCksLoader ()
XrdCksCalcLoad (const char *csName, const char *csParms=0, char *eBuff=0, int eBlen=0, bool orig=false)
 XrdCksLoader (XrdVersionInfo &vInfo, const char *libPath=0)
 ~XrdCksLoader ()
 Destructor.

Protected Member Functions

virtual int Calc (const char *Pfn, time_t &MTime, XrdCksCalc *CksObj)
virtual int ModTime (const char *Pfn, time_t &MTime)

Private Member Functions

int Config (const char *cFN, csInfo &Info)
csInfoFind (const char *Name)
csInfoFind (const char *Name)

Private Attributes

csInfo csTab [csMax]
int csLast
int segSize
XrdVersionInfo * myVersion
char * verMsg
XrdVersionInfo * urVersion
char * ldPath

Static Private Attributes

static const int csMax = 4

Detailed Description

This class defines the checksum loader interface. It is intended to be used by xrootd clients to obtain an instance of a checksum calculation object. This object may be builtin or may come from a shared library.


Constructor & Destructor Documentation

XrdCksLoader::XrdCksLoader ( XrdSysError erP,
int  iosz,
XrdVersionInfo *  vInfo 
)
virtual XrdCksLoader::~XrdCksLoader (  )  [virtual]
XrdCksLoader::XrdCksLoader ( XrdVersionInfo &  vInfo,
const char *  libPath = 0 
)

Constructor

Parameters:
vInfo Is the reference to the version information corresponding to the xrootd version you compiled with. You define this information using the XrdVERSIONINFODEF macro defined in XrdVersion.hh. You must supply your version information and it must be compatible with the loader and any shared libraries that it might load on your behalf.
libPath The path where dynamic checksum calculators are to be found and dynamically loaded, if need be. If libPath is nil then the default loader search order is used. The name of the shared library must follow the naming convention "libXrdCksCalc<csName>.so" where <csName> is the checksum name. So, an sha256 checksum would try to load libXrdCksCalcsha256.so shared library.
XrdCksLoader::~XrdCksLoader (  ) 

Destructor.


Member Function Documentation

virtual int XrdCksLoader::Calc ( const char *  Pfn,
time_t &  MTime,
XrdCksCalc CksObj 
) [protected, virtual]
virtual int XrdCksLoader::Calc ( const char *  Pfn,
XrdCksData Cks,
int  doSet = 1 
) [virtual]

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

Parameters:
Pfn The physical name of the file to be checksumed.
Cks For input, it specifies the checksum algorithm to be used. For output, the checksum value is returned upon success.
doSet When true, the new value must replace any existing value in the Pfn's extended file attributes.
Returns:
Success: zero with Cks structure holding the checksum value. Failure: -errno (see significant error numbers below).

Implements XrdCks.

int XrdCksLoader::Config ( const char *  cFN,
csInfo Info 
) [private]
virtual int XrdCksLoader::Config ( const char *  Token,
char *  Line 
) [virtual]

Parse a configuration directives specific to the checksum manager.

Parameters:
Token Points to the directive that triggered the call.
Line All the characters after the directive.
Returns:
Success: 1 Failure: 0

Implements XrdCks.

virtual int XrdCksLoader::Del ( const char *  Pfn,
XrdCksData Cks 
) [virtual]

Delete the checksum from the Pfn's xattrs.

Returns:
Success: 0 Failure: -errno (see significant error numbers below).

Implements XrdCks.

csInfo* XrdCksLoader::Find ( const char *  Name  )  [private]
csInfo* XrdCksLoader::Find ( const char *  Name  )  [private]
virtual int XrdCksLoader::Get ( const char *  Pfn,
XrdCksData Cks 
) [virtual]

Retreive the checksum from the Pfn'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:
Pfn The physical name of the file to be checksumed.
Cks For 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.

virtual int XrdCksLoader::Init ( const char *  ConfigFN,
const char *  DfltCalc = 0 
) [virtual]

Fully initialize the manager which includes loading any plugins.

Parameters:
ConfigFN Points to the configuration file path.
DfltCalc Is 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.

virtual char* XrdCksLoader::List ( const char *  Pfn,
char *  Buff,
int  Blen,
char  Sep = ' ' 
) [virtual]

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

Parameters:
Pfn The name of the physical file whose checksum names are to be returned. When Pfn is null, return all supported checksum algorithm names.
Buff Points to a buffer, at least 64 bytes in length, to hold a "Sep" separated list of checksum names.
Blen The length of the buffer.
Sep The 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.

XrdCksCalc* XrdCksLoader::Load ( const char *  csName,
const char *  csParms = 0,
char *  eBuff = 0,
int  eBlen = 0,
bool  orig = false 
)

Get a new XrdCksCalc object that can calculate the checksum corresponding to the specified name. The object can be used to compute checksums on the fly. The object's Recycle() method must be used to delete it. The adler32, crc32, and md5 checksums are natively supported. Up to five more checksum algorithms can be loaded from shared libraries.

Parameters:
csNme The name of the checksum algorithm (e.g. md5).
csParms Any parameters that might be needed by the checksum algorithm should it be loaded from a shared library.
eBuff Optional pointer to a buffer to receive the reason for a load failure as a null terminated string.
eBlen The length of the buffer.
orig Returns the original object not a new instance of it. This is usually used by CksManager during an autoload.
Returns:
Success: A pointer to a new checksum calculation object. Failure: Zero if the corresponding checksum object could not be loaded. If eBuff was supplied, it holds the reason.
virtual int XrdCksLoader::ModTime ( const char *  Pfn,
time_t &  MTime 
) [protected, virtual]
virtual const char* XrdCksLoader::Name ( int  seqNum = 0  )  [virtual]

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:
seqNum The 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.

virtual XrdCksCalc* XrdCksLoader::Object ( const char *  name  )  [virtual]

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:
name The 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.

virtual int XrdCksLoader::Set ( const char *  Pfn,
XrdCksData Cks,
int  myTime = 0 
) [virtual]

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

Parameters:
Pfn The physical name of the file to be set.
Cks Specifies the checksum name and value.
myTime When 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.

virtual int XrdCksLoader::Size ( const char *  Name = 0  )  [virtual]

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

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

Implements XrdCks.

virtual int XrdCksLoader::Ver ( const char *  Pfn,
XrdCksData Cks 
) [virtual]

Retreive the checksum from the Pfn'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:
Pfn The physical name of the file to be verified.
Cks Specifies the checksum name and value.
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.


Member Data Documentation

int XrdCksLoader::csLast [private]
static const int XrdCksLoader::csMax = 4 [static, private]
char* XrdCksLoader::ldPath [private]
XrdVersionInfo* XrdCksLoader::myVersion [private]
int XrdCksLoader::segSize [private]
XrdVersionInfo* XrdCksLoader::urVersion [private]
char* XrdCksLoader::verMsg [private]

The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

Generated on 5 Apr 2019 for xrootd by  doxygen 1.6.1