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

#include <XrdCmsClient.hh>

Inheritance diagram for XrdCmsClient:
Inheritance graph
[legend]

Public Types

enum  Persona { amLocal , amRemote , amTarget }
 

Public Member Functions

virtual void Added (const char *path, int Pend=0)
 
virtual int Configure (const char *cfn, char *Parms, XrdOucEnv *EnvInfo)=0
 
virtual int Forward (XrdOucErrInfo &Resp, const char *cmd, const char *arg1=0, const char *arg2=0, XrdOucEnv *Env1=0, XrdOucEnv *Env2=0)
 
virtual int isRemote ()
 
virtual int Locate (XrdOucErrInfo &Resp, const char *path, int flags, XrdOucEnv *Info=0)=0
 
virtual XrdOucTListManagers ()
 
virtual int Prepare (XrdOucErrInfo &Resp, XrdSfsPrep &pargs, XrdOucEnv *Info=0)
 
virtual void Removed (const char *path)
 
virtual void Resume (int Perm=1)
 
virtual void Suspend (int Perm=1)
 
virtual int Resource (int n)
 
virtual int Reserve (int n=1)
 
virtual int Release (int n=1)
 
virtual int Space (XrdOucErrInfo &Resp, const char *path, XrdOucEnv *Info=0)=0
 
virtual void Utilization (unsigned int util, bool alert=false)
 
 XrdCmsClient (Persona acting)
 
virtual ~XrdCmsClient ()
 Destructor.
 

Protected Attributes

Persona myPersona
 

Member Enumeration Documentation

◆ Persona

Constructor

Parameters
actingThe type of function this object is performing.
Enumerator
amLocal 

Not affiliated with a cluster.

amRemote 

Am a manager and issue redirects.

amTarget 

Am a server and field redirects.

Constructor & Destructor Documentation

◆ XrdCmsClient()

XrdCmsClient::XrdCmsClient ( Persona  acting)
inline

◆ ~XrdCmsClient()

virtual XrdCmsClient::~XrdCmsClient ( )
inlinevirtual

Destructor.

Member Function Documentation

◆ Added()

virtual void XrdCmsClient::Added ( const char *  path,
int  Pend = 0 
)
inlinevirtual

Notify the cms of a newly added file or a file whose state has changed on a data server node.

Parameters
pathThe logical file name.
PendWhen true, the file is scheduled to be present in the future (e.g. copied in).

Reimplemented in XrdCmsFinderRMT, XrdCmsFinderTRG, and XrdCmsRedirLocal.

Referenced by XrdCmsRedirLocal::Added().

◆ Configure()

virtual int XrdCmsClient::Configure ( const char *  cfn,
char *  Parms,
XrdOucEnv EnvInfo 
)
pure virtual

Configure the client object.

Parameters
cfnThe configuration file name.
ParmsAny parameters specified in the cmslib directive. If none, the pointer may be null.
EnvInfoEnvironmental information of the caller.
Returns
Success !0 Failure =0

Implemented in XrdCmsFinderRMT, XrdCmsFinderTRG, and XrdCmsRedirLocal.

◆ Forward()

virtual int XrdCmsClient::Forward ( XrdOucErrInfo Resp,
const char *  cmd,
const char *  arg1 = 0,
const char *  arg2 = 0,
XrdOucEnv Env1 = 0,
XrdOucEnv Env2 = 0 
)
inlinevirtual

Relay a meta-operation to all nodes in the cluster.

This method is only used on manager nodes and is enabled by the ofs.forward directive.

Parameters
RespObject where messages are to be returned.
cmdThe operation being performed (see table below). If it starts with a '+' then a response (2way) is needed. Otherwise, a best-effort is all that is all that is required and success can always be returned.
arg11st argument to cmd.
arg22nd argument to cmd, which may be null if none exists.
Env1Associated environmental information for arg1 (e.g., cgi info which can be retrieved by Env1->Env(<len>)).
Env2Associated environmental information for arg2 (e.g., cgi info which can be retrieved by Env1->Env(<len>)).
     cmd       arg1    arg2           cmd       arg1    arg2
     --------  ------  ------         --------  ------  ------
     [+]chmod  <path>  <mode %o>      [+]rmdir  <path>  0
     [+]mkdir  <path>  <mode %o>      [+]mv     <oldp>  <newp>
     [+]mkpath <path>  <mode %o>      [+]trunc  <path>  <size %lld>
     [+]rm     <path>  0
Returns
As explained under "return conventions".

Reimplemented in XrdCmsFinderRMT, and XrdCmsRedirLocal.

Referenced by XrdCmsRedirLocal::Forward().

◆ isRemote()

virtual int XrdCmsClient::isRemote ( )
inlinevirtual

Check if this client is configured for a manager node.

Returns
!0 Yes, configured as a manager. =0 No.

Reimplemented in XrdCmsRedirLocal.

References amRemote, and myPersona.

Referenced by XrdCmsRedirLocal::isRemote().

◆ Locate()

virtual int XrdCmsClient::Locate ( XrdOucErrInfo Resp,
const char *  path,
int  flags,
XrdOucEnv Info = 0 
)
pure virtual

Retrieve file location information.

Parameters
RespObject where message or response is to be returned.
pathThe logical path whise location is wanted.
flagsOne or more of the following:
     SFS_O_LOCATE  - return the list of servers that have the file.
                     Otherwise, redirect to the best server for the file.
     SFS_O_NOWAIT  - w/ SFS_O_LOCATE return readily available info.
                     Otherwise, select online files only.
     SFS_O_CREAT   - file will be created.
     SFS_O_NOWAIT  - select server if file is online.
     SFS_O_REPLICA - a replica of the file will be made.
     SFS_O_STAT    - only stat() information wanted.
     SFS_O_TRUNC   - file will be truncated.

     For any the the above, additional flags are passed:
     SFS_O_META    - data will not change (inode operation only)
     SFS_O_RESET   - reset cached info and recaculate the location(s).
     SFS_O_WRONLY  - file will be only written    (o/w RDWR   or RDONLY).
     SFS_O_RDWR    - file may be read and written (o/w WRONLY or RDONLY).
InfoAssociated environmental information for arg2 (e.g., cgi info which can be retrieved by Env1->Env(<len>)).
Returns
As explained under "return conventions".

Implemented in XrdCmsRedirLocal, XrdCmsFinderRMT, and XrdCmsFinderTRG.

◆ Managers()

virtual XrdOucTList * XrdCmsClient::Managers ( )
inlinevirtual

Obtain the list of cmsd's being used by a manager node along with their associated index numbers, origin 1.

Returns
The list of cmsd's being used. The list is considered permanent and is not deleted.

Reimplemented in XrdCmsFinderRMT, XrdCmsFinderTRG, and XrdCmsRedirLocal.

Referenced by XrdCmsRedirLocal::Managers().

◆ Prepare()

virtual int XrdCmsClient::Prepare ( XrdOucErrInfo Resp,
XrdSfsPrep pargs,
XrdOucEnv Info = 0 
)
inlinevirtual

Start the preparation of a file for future processing.

Parameters
RespObject where message or response is to be returned.
pargsInformation on which and how to prepare the file.
InfoAssociated environmental information.
Returns
As explained under "return conventions".

Reimplemented in XrdCmsFinderRMT, XrdCmsFinderTRG, and XrdCmsRedirLocal.

Referenced by XrdCmsRedirLocal::Prepare().

◆ Release()

virtual int XrdCmsClient::Release ( int  n = 1)
inlinevirtual

Increases the amount of resource available. When transitioning from a a non-positive to a positive resource amount, perform a resume so that additional clients may be dispatched to this data server.

Parameters
nThe value to add to the resources available (default 1). The total amount is capped by the amount specified by Resource().
Returns
The amount of resource left.

Reimplemented in XrdCmsFinderTRG, and XrdCmsRedirLocal.

Referenced by XrdCmsRedirLocal::Release(), and XrdSsiCms::Release().

◆ Removed()

virtual void XrdCmsClient::Removed ( const char *  path)
inlinevirtual

Notify the cmsd that a file or directory has been deleted. It is only called called on a data server node.

Parameters
pathThe logical file name that was removed.

Reimplemented in XrdCmsFinderRMT, XrdCmsFinderTRG, and XrdCmsRedirLocal.

Referenced by XrdCmsRedirLocal::Removed().

◆ Reserve()

virtual int XrdCmsClient::Reserve ( int  n = 1)
inlinevirtual

Decreases the amount of resources available. When the available resources becomes non-positive, perform a temporary suspend to prevent additional clients from being dispatched to this data server.

Parameters
nThe value by which resources are decreased (default 1).
Returns
The amount of resource left.

Reimplemented in XrdCmsFinderTRG, and XrdCmsRedirLocal.

Referenced by XrdCmsRedirLocal::Reserve(), and XrdSsiCms::Reserve().

◆ Resource()

virtual int XrdCmsClient::Resource ( int  n)
inlinevirtual

Enables the Reserve() & Release() methods.

Parameters
na positive integer that specifies the amount of resource units that are available. It may be reset at any time.
Returns
The previous resource value. This first call returns 0.

Reimplemented in XrdCmsFinderTRG, and XrdCmsRedirLocal.

Referenced by XrdCmsRedirLocal::Resource(), and XrdSsiCms::Resource().

◆ Resume()

virtual void XrdCmsClient::Resume ( int  Perm = 1)
inlinevirtual

Resume service after a suspension.

Parameters
PermWhen true the resume persist across server restarts. Otherwise, it is treated as a temporary request.

Reimplemented in XrdCmsFinderTRG, and XrdCmsRedirLocal.

Referenced by XrdSsiCms::Resume(), and XrdCmsRedirLocal::Resume().

◆ Space()

virtual int XrdCmsClient::Space ( XrdOucErrInfo Resp,
const char *  path,
XrdOucEnv Info = 0 
)
pure virtual

Obtain the overall space usage of a cluster. Called only on manager nodes.

Parameters
RespObject to hold response or error message.
pathAssociated logical path for the space request.
InfoAssociated cgi information for path.
Returns
Space information as defined by the response to kYR_statfs. For a typical implementation see XrdCmsNode::do_StatFS().

Implemented in XrdCmsRedirLocal, XrdCmsFinderTRG, and XrdCmsFinderRMT.

◆ Suspend()

virtual void XrdCmsClient::Suspend ( int  Perm = 1)
inlinevirtual

Suspend service.

Parameters
PermWhen true the suspend persist across server restarts. Otherwise, it is treated as a temporary request.

Reimplemented in XrdCmsFinderTRG, and XrdCmsRedirLocal.

Referenced by XrdSsiCms::Suspend(), and XrdCmsRedirLocal::Suspend().

◆ Utilization()

virtual void XrdCmsClient::Utilization ( unsigned int  util,
bool  alert = false 
)
inlinevirtual

Report utilization of this server. This may be used in lieu of general performance metric reporting. For consistent results use only one method.

Parameters
utilA value from 0 to 100 representing utilization. Values greater than 100 are set to be 100.
alertWhen true the utilization is forcibly report to the cluster managers. Otherwise, reporting is done only when it will significantly change server selection.

Reimplemented in XrdCmsFinderTRG.

Referenced by XrdSsiCms::Utilization().

Member Data Documentation

◆ myPersona

Persona XrdCmsClient::myPersona
protected

Referenced by isRemote().


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