xrootd
Loading...
Searching...
No Matches
Public Member Functions | Private Types | Private Member Functions | Private Attributes | Static Private Attributes | Friends | List of all members
XrdCl::MetalinkRedirector Class Reference

#include <XrdClMetalinkRedirector.hh>

Inheritance diagram for XrdCl::MetalinkRedirector:
Inheritance graph
[legend]
Collaboration diagram for XrdCl::MetalinkRedirector:
Collaboration graph
[legend]

Public Member Functions

 MetalinkRedirector (const std::string &url)
 
virtual ~MetalinkRedirector ()
 Destructor.
 
XRootDStatus Load (ResponseHandler *userHandler)
 
XRootDStatus HandleRequest (const Message *msg, MsgHandler *handler)
 
std::string GetTargetName () const
 Gets the file name as specified in the metalink.
 
std::string GetCheckSum (const std::string &type) const
 
std::vector< std::string > GetSupportedCheckSums () const
 
long long GetSize () const
 
const std::vector< std::string > & GetReplicas ()
 Returns a vector with replicas as given in the meatlink file.
 
virtual int Count (Message &req) const
 Count how many replicas do we have left to try for given request.
 
- Public Member Functions inherited from XrdCl::VirtualRedirector
virtual ~VirtualRedirector ()
 Destructor.
 

Private Types

typedef std::list< std::pair< const Message *, MsgHandler * > > RedirectList
 
typedef std::map< std::string, std::string > CksumMap
 
typedef std::vector< std::string > ReplicaList
 

Private Member Functions

XRootDStatus HandleRequestImpl (const Message *msg, MsgHandler *handler)
 
XRootDStatus Parse (const std::string &metalink)
 
void FinalizeInitialization (const XRootDStatus &status=XRootDStatus())
 
std::shared_ptr< MessageGetResponse (const Message *msg) const
 Generates redirect response for the given request.
 
std::shared_ptr< MessageGetErrorMsg (const Message *msg, const std::string &errMsg, XErrorCode code) const
 Generates error response for the given request.
 
void InitCksum (XrdOucFileInfo **fileInfos)
 Initializes checksum map.
 
void InitReplicas (XrdOucFileInfo **fileInfos)
 Initializes replica list.
 
XRootDStatus GetReplica (const Message &msg, std::string &replica) const
 Get the next replica for the given message.
 
XRootDStatus GetCgiInfo (const Message &msg, const std::string &key, std::string &out) const
 Extracts an element from URL cgi.
 
ReplicaList::const_iterator GetReplica (const Message &msg) const
 Get the next replica for the given message.
 

Private Attributes

RedirectList pPendingRedirects
 
std::string pUrl
 
FilepFile
 
CksumMap pChecksums
 
ReplicaList pReplicas
 
bool pReady
 
XRootDStatus pStatus
 
std::string pTarget
 
long long pFileSize
 
XrdSysMutex pMutex
 

Static Private Attributes

static const std::string LocalFile
 

Friends

class MetalinkOpenHandler
 
class MetalinkReadHandler
 

Detailed Description

An abstraction representing a virtual redirector based on a metalink file

Member Typedef Documentation

◆ CksumMap

typedef std::map<std::string, std::string> XrdCl::MetalinkRedirector::CksumMap
private

◆ RedirectList

typedef std::list< std::pair<const Message*, MsgHandler*> > XrdCl::MetalinkRedirector::RedirectList
private

◆ ReplicaList

typedef std::vector<std::string> XrdCl::MetalinkRedirector::ReplicaList
private

Constructor & Destructor Documentation

◆ MetalinkRedirector()

XrdCl::MetalinkRedirector::MetalinkRedirector ( const std::string &  url)

Constructor

Parameters
url: URL to the metalink file

◆ ~MetalinkRedirector()

virtual XrdCl::MetalinkRedirector::~MetalinkRedirector ( )
virtual

Destructor.

Member Function Documentation

◆ Count()

virtual int XrdCl::MetalinkRedirector::Count ( Message req) const
virtual

Count how many replicas do we have left to try for given request.

Implements XrdCl::VirtualRedirector.

◆ FinalizeInitialization()

void XrdCl::MetalinkRedirector::FinalizeInitialization ( const XRootDStatus status = XRootDStatus())
private

Finalize the initialization process:

  • mark as ready
  • setup the status
  • and handle pending redirects

◆ GetCgiInfo()

XRootDStatus XrdCl::MetalinkRedirector::GetCgiInfo ( const Message msg,
const std::string &  key,
std::string &  out 
) const
private

Extracts an element from URL cgi.

◆ GetCheckSum()

std::string XrdCl::MetalinkRedirector::GetCheckSum ( const std::string &  type) const
inlinevirtual

Returns the checksum of the given type if specified in the metalink file, or an empty string otherwise

Implements XrdCl::VirtualRedirector.

References pChecksums.

◆ GetErrorMsg()

std::shared_ptr< Message > XrdCl::MetalinkRedirector::GetErrorMsg ( const Message msg,
const std::string &  errMsg,
XErrorCode  code 
) const
private

Generates error response for the given request.

◆ GetReplica() [1/2]

ReplicaList::const_iterator XrdCl::MetalinkRedirector::GetReplica ( const Message msg) const
private

Get the next replica for the given message.

◆ GetReplica() [2/2]

XRootDStatus XrdCl::MetalinkRedirector::GetReplica ( const Message msg,
std::string &  replica 
) const
private

Get the next replica for the given message.

◆ GetReplicas()

const std::vector< std::string > & XrdCl::MetalinkRedirector::GetReplicas ( )
inlinevirtual

Returns a vector with replicas as given in the meatlink file.

Implements XrdCl::VirtualRedirector.

References pReplicas.

◆ GetResponse()

std::shared_ptr< Message > XrdCl::MetalinkRedirector::GetResponse ( const Message msg) const
private

Generates redirect response for the given request.

◆ GetSize()

long long XrdCl::MetalinkRedirector::GetSize ( ) const
inlinevirtual

Returns the file size if specified in the metalink file, otherwise a negative number

Implements XrdCl::VirtualRedirector.

References pFileSize.

◆ GetSupportedCheckSums()

std::vector< std::string > XrdCl::MetalinkRedirector::GetSupportedCheckSums ( ) const
inlinevirtual

Returns the first (in alphabetical order) checksum type available in the metalink file, if no checksum is available returns an empty string

Implements XrdCl::VirtualRedirector.

References pChecksums.

◆ GetTargetName()

std::string XrdCl::MetalinkRedirector::GetTargetName ( ) const
inlinevirtual

Gets the file name as specified in the metalink.

Implements XrdCl::VirtualRedirector.

References pTarget.

◆ HandleRequest()

XRootDStatus XrdCl::MetalinkRedirector::HandleRequest ( const Message msg,
MsgHandler handler 
)
virtual

If the MetalinkRedirector is initialized creates an instant redirect response, otherwise queues the request until initialization is done.

Implements XrdCl::VirtualRedirector.

◆ HandleRequestImpl()

XRootDStatus XrdCl::MetalinkRedirector::HandleRequestImpl ( const Message msg,
MsgHandler handler 
)
private

Creates an instant redirect response for the given message or an error response if there are no more replicas to try. The virtual response is being handled by the given handler in the thread-pool.

◆ InitCksum()

void XrdCl::MetalinkRedirector::InitCksum ( XrdOucFileInfo **  fileInfos)
private

Initializes checksum map.

◆ InitReplicas()

void XrdCl::MetalinkRedirector::InitReplicas ( XrdOucFileInfo **  fileInfos)
private

Initializes replica list.

◆ Load()

XRootDStatus XrdCl::MetalinkRedirector::Load ( ResponseHandler userHandler)
virtual

Initializes the object with the content of the metalink file

Parameters
userHandler: the response handler provided by end user

Implements XrdCl::VirtualRedirector.

◆ Parse()

XRootDStatus XrdCl::MetalinkRedirector::Parse ( const std::string &  metalink)
private

Parses the metalink file

Parameters
metalink: the content of the metalink file

Friends And Related Symbol Documentation

◆ MetalinkOpenHandler

friend class MetalinkOpenHandler
friend

◆ MetalinkReadHandler

friend class MetalinkReadHandler
friend

Member Data Documentation

◆ LocalFile

const std::string XrdCl::MetalinkRedirector::LocalFile
staticprivate

◆ pChecksums

CksumMap XrdCl::MetalinkRedirector::pChecksums
private

◆ pFile

File* XrdCl::MetalinkRedirector::pFile
private

◆ pFileSize

long long XrdCl::MetalinkRedirector::pFileSize
private

Referenced by GetSize().

◆ pMutex

XrdSysMutex XrdCl::MetalinkRedirector::pMutex
private

◆ pPendingRedirects

RedirectList XrdCl::MetalinkRedirector::pPendingRedirects
private

◆ pReady

bool XrdCl::MetalinkRedirector::pReady
private

◆ pReplicas

ReplicaList XrdCl::MetalinkRedirector::pReplicas
private

Referenced by GetReplicas().

◆ pStatus

XRootDStatus XrdCl::MetalinkRedirector::pStatus
private

◆ pTarget

std::string XrdCl::MetalinkRedirector::pTarget
private

Referenced by GetTargetName().

◆ pUrl

std::string XrdCl::MetalinkRedirector::pUrl
private

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