ROOT  6.06/08
Reference Guide
Public Types | Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes | Static Private Attributes | Friends | List of all members
XrdProofConn Class Reference

Definition at line 58 of file XrdProofConn.h.

Public Types

enum  ESrvType { kSTError = -1, kSTNone, kSTXProofd, kSTProofd }
 

Public Member Functions

 XrdProofConn (const char *url, char mode='M', int psid=-1, char ver=-1, XrdClientAbsUnsolMsgHandler *uh=0, const char *logbuf=0)
 Constructor. More...
 
virtual ~XrdProofConn ()
 Destructor. More...
 
virtual void Close (const char *opt="")
 Close connection. More...
 
int GetLogConnID () const
 
int GetLowSocket ()
 Return the socket descriptor of the underlying connection. More...
 
int GetOpenError () const
 
int GetServType () const
 
short GetSessionID () const
 
const char * GetUrl ()
 
const char * GetLastErr ()
 
bool IsValid () const
 Test validity of this connection. More...
 
XReqErrorType LowWrite (XPClientRequest *, const void *, int)
 Send request to server (NB: req is marshalled at this point, so we need also the plain reqDataLen) More...
 
virtual int ReadRaw (void *buf, int len, XrdClientPhyConnection *p=0)
 Low level receive call. More...
 
virtual XrdClientMessage * ReadMsg ()
 Pickup message from the queue. More...
 
XrdClientMessage * SendReq (XPClientRequest *req, const void *reqData, char **answData, const char *CmdName, bool notifyerr=1)
 SendReq tries to send a single command for a number of times. More...
 
virtual void SetAsync (XrdClientAbsUnsolMsgHandler *uh, XrdProofConnSender_t=0, void *=0)
 Set handler of unsolicited responses. More...
 
void SetSID (kXR_char *sid)
 Set our stream id, to match against that one in the server's response. More...
 
virtual int WriteRaw (const void *buf, int len, XrdClientPhyConnection *p=0)
 Low level write call. More...
 
virtual UnsolRespProcResult ProcessUnsolicitedMsg (XrdClientUnsolMsgSender *s, XrdClientMessage *m)
 We are here if an unsolicited response comes from a logical conn The response comes in the form of an XrdClientMessage *, that must NOT be destroyed after processing. More...
 

Static Public Member Functions

static void GetRetryParam (int &maxtry, int &timewait)
 Retrieve current values of the retry control parameters, numer of retries and wait time between attempts (in seconds). More...
 
static void SetRetryParam (int maxtry=5, int timewait=2)
 Change values of the retry control parameters, numer of retries and wait time between attempts (in seconds). More...
 

Private Member Functions

XrdSecProtocol * Authenticate (char *plist, int lsiz)
 Negotiate authentication with the remote server. More...
 
bool CheckErrorStatus (XrdClientMessage *, int &, const char *, bool)
 Check error status. More...
 
bool CheckResp (struct ServerResponseHeader *resp, const char *met, bool)
 Checks if the server's response is ours. More...
 
virtual void Connect (int=-1)
 Run the connection attempts: the result is stored in fConnected. More...
 
void ReConnect ()
 Perform a reconnection attempt when a connection is not valid any more. More...
 
virtual int TryConnect (int=-1)
 Connect to remote server. More...
 
ESrvType DoHandShake (XrdClientPhyConnection *p=0)
 Performs initial hand-shake with the server in order to understand which kind of server is there at the other side. More...
 
virtual bool GetAccessToSrv (XrdClientPhyConnection *p=0)
 Gets access to the connected server. More...
 
virtual bool Init (const char *url=0, int=-1)
 Initialization. More...
 
bool Login ()
 This method perform the loggin-in into the server just after the hand-shake. More...
 
bool MatchStreamID (struct ServerResponseHeader *resp)
 Check stream ID matching. More...
 
XrdClientMessage * SendRecv (XPClientRequest *req, const void *reqData, char **answData)
 SendRecv sends a command to the server and to get a response. More...
 
void SetInterrupt ()
 Interrupt the underlying socket. More...
 
void SetConnectInterrupt ()
 Interrupt connection attempts. More...
 
bool ConnectInterrupt ()
 Check if interrupted during connect. More...
 

Private Attributes

char fMode
 
bool fConnected
 
int fLogConnID
 
kXR_unt16 fStreamid
 
int fRemoteProtocol
 
int fServerProto
 
ESrvType fServerType
 
short fSessionID
 
XrdOucString fUser
 
XrdOucString fHost
 
int fPort
 
XrdOucString fLastErrMsg
 
XErrorCode fLastErr
 
char fCapVer
 
XrdOucString fLoginBuffer
 
XrdSysRecMutexfMutex
 
XrdSysRecMutexfConnectInterruptMtx
 
bool fConnectInterrupt
 
XrdClientPhyConnection * fPhyConn
 
int fOpenSockFD
 
XrdClientAbsUnsolMsgHandler * fUnsolMsgHandler
 
XrdProofConnSender_t fSender
 
voidfSenderArg
 
XrdClientUrlInfo fUrl
 

Static Private Attributes

static XrdClientConnectionMgr * fgConnMgr = 0
 
static int fgMaxTry = 5
 
static int fgTimeWait = 2
 
static XrdSysPluginfgSecPlugin = 0
 
static voidfgSecGetProtocol = 0
 

Friends

class TXSocket
 
class TXUnixSocket
 
class XrdProofPhyConn
 

#include <XrdProofConn.h>

+ Inheritance diagram for XrdProofConn:
+ Collaboration diagram for XrdProofConn:

Member Enumeration Documentation

§ ESrvType

Enumerator
kSTError 
kSTNone 
kSTXProofd 
kSTProofd 

Definition at line 66 of file XrdProofConn.h.

Constructor & Destructor Documentation

§ XrdProofConn()

XrdProofConn::XrdProofConn ( const char *  url,
char  m = 'M',
int  psid = -1,
char  capver = -1,
XrdClientAbsUnsolMsgHandler *  uh = 0,
const char *  logbuf = 0 
)

Constructor.

Open the connection to a remote XrdProofd instance. The mode 'm' indicates the role of this connection: 'a' Administrator; used by an XPD to contact the head XPD 'i' Internal; used by a TXProofServ to call back its creator (see XrdProofUnixConn) 'M' Client contacting a top master 'm' Top master contacting a submaster 's' Master contacting a slave The buffer 'logbuf' is a null terminated string to be sent over at login. In case of need, internally it is overwritten with a token needed during redirection.

Definition at line 112 of file XrdProofConn.cxx.

§ ~XrdProofConn()

XrdProofConn::~XrdProofConn ( )
virtual

Destructor.

Definition at line 292 of file XrdProofConn.cxx.

Member Function Documentation

§ Authenticate()

XrdSecProtocol * XrdProofConn::Authenticate ( char *  plist,
int  plsiz 
)
private

Negotiate authentication with the remote server.

Tries in turn all available protocols proposed by the server (in plist), starting from the first.

Definition at line 1264 of file XrdProofConn.cxx.

Referenced by Login().

§ CheckErrorStatus()

bool XrdProofConn::CheckErrorStatus ( XrdClientMessage *  mex,
int &  Retry,
const char *  CmdName,
bool  notifyerr 
)
private

Check error status.

Definition at line 811 of file XrdProofConn.cxx.

Referenced by SendReq().

§ CheckResp()

bool XrdProofConn::CheckResp ( struct ServerResponseHeader *  resp,
const char *  method,
bool  notifyerr 
)
private

Checks if the server's response is ours.

If the response's status is "OK" returns 1; if the status is "redirect", it means that the max number of redirections has been achieved, so returns 0.

Definition at line 727 of file XrdProofConn.cxx.

Referenced by SendReq().

§ Close()

void XrdProofConn::Close ( const char *  opt = "")
virtual

Close connection.

Reimplemented in XrdProofPhyConn.

Definition at line 422 of file XrdProofConn.cxx.

Referenced by TXSocket::Close(), Connect(), GetAccessToSrv(), TXUnixSocket::Reconnect(), ReConnect(), and ~XrdProofConn().

§ Connect()

void XrdProofConn::Connect ( int  = -1)
privatevirtual

Run the connection attempts: the result is stored in fConnected.

Reimplemented in XrdProofPhyConn.

Definition at line 201 of file XrdProofConn.cxx.

Referenced by Init(), TXUnixSocket::Reconnect(), and ReConnect().

§ ConnectInterrupt()

bool XrdProofConn::ConnectInterrupt ( )
private

Check if interrupted during connect.

Definition at line 1462 of file XrdProofConn.cxx.

Referenced by Connect().

§ DoHandShake()

XrdProofConn::ESrvType XrdProofConn::DoHandShake ( XrdClientPhyConnection *  p = 0)
private

Performs initial hand-shake with the server in order to understand which kind of server is there at the other side.

Definition at line 965 of file XrdProofConn.cxx.

Referenced by XrdProofPhyConn::GetAccessToSrv(), and GetAccessToSrv().

§ GetAccessToSrv()

bool XrdProofConn::GetAccessToSrv ( XrdClientPhyConnection *  p = 0)
privatevirtual

Gets access to the connected server.

The login and authorization steps are performed here.

Reimplemented in XrdProofPhyConn.

Definition at line 879 of file XrdProofConn.cxx.

Referenced by Connect().

§ GetLastErr()

const char* XrdProofConn::GetLastErr ( )
inline

§ GetLogConnID()

int XrdProofConn::GetLogConnID ( ) const
inline

§ GetLowSocket()

int XrdProofConn::GetLowSocket ( )

Return the socket descriptor of the underlying connection.

Definition at line 1067 of file XrdProofConn.cxx.

Referenced by GetLogConnID(), and TXSocket::GetLowSocket().

§ GetOpenError()

int XrdProofConn::GetOpenError ( ) const
inline

§ GetRetryParam()

void XrdProofConn::GetRetryParam ( int &  maxtry,
int &  timewait 
)
static

Retrieve current values of the retry control parameters, numer of retries and wait time between attempts (in seconds).

Definition at line 140 of file XrdProofConn.cxx.

Referenced by XrdProofPhyConn::Connect(), GetLastErr(), TXUnixSocket::Reconnect(), and ReConnect().

§ GetServType()

int XrdProofConn::GetServType ( ) const
inline

§ GetSessionID()

short XrdProofConn::GetSessionID ( ) const
inline

Definition at line 144 of file XrdProofConn.h.

Referenced by TXSocket::GetClientIDSize(), and TXSocket::GetSessionID().

§ GetUrl()

const char* XrdProofConn::GetUrl ( )
inline

Definition at line 145 of file XrdProofConn.h.

§ Init()

bool XrdProofConn::Init ( const char *  url = 0,
int  = -1 
)
privatevirtual

Initialization.

Reimplemented in XrdProofPhyConn.

Definition at line 159 of file XrdProofConn.cxx.

Referenced by XrdProofConn().

§ IsValid()

bool XrdProofConn::IsValid ( ) const

§ Login()

bool XrdProofConn::Login ( )
private

This method perform the loggin-in into the server just after the hand-shake.

It also calls the Authenticate() method

Definition at line 1076 of file XrdProofConn.cxx.

Referenced by XrdProofPhyConn::GetAccessToSrv(), and GetAccessToSrv().

§ LowWrite()

XReqErrorType XrdProofConn::LowWrite ( XPClientRequest req,
const void reqData,
int  reqDataLen 
)

Send request to server (NB: req is marshalled at this point, so we need also the plain reqDataLen)

Definition at line 777 of file XrdProofConn.cxx.

Referenced by XrdProofdNetMgr::BroadcastCtrlC(), TXSocket::CtrlC(), GetLastErr(), TXSocket::Ping(), TXSocket::RemoteTouch(), and SendRecv().

§ MatchStreamID()

bool XrdProofConn::MatchStreamID ( struct ServerResponseHeader *  resp)
private

Check stream ID matching.

Definition at line 756 of file XrdProofConn.cxx.

Referenced by CheckResp().

§ ProcessUnsolicitedMsg()

UnsolRespProcResult XrdProofConn::ProcessUnsolicitedMsg ( XrdClientUnsolMsgSender *  s,
XrdClientMessage *  m 
)
virtual

We are here if an unsolicited response comes from a logical conn The response comes in the form of an XrdClientMessage *, that must NOT be destroyed after processing.

It is destroyed by the first sender. Remember that we are in a separate thread, since unsolicited responses are asynchronous by nature.

Definition at line 452 of file XrdProofConn.cxx.

Referenced by GetLastErr().

§ ReadMsg()

XrdClientMessage * XrdProofConn::ReadMsg ( )
virtual

Pickup message from the queue.

Reimplemented in XrdProofPhyConn.

Definition at line 515 of file XrdProofConn.cxx.

Referenced by GetLastErr(), and SendRecv().

§ ReadRaw()

int XrdProofConn::ReadRaw ( void buf,
int  len,
XrdClientPhyConnection *  p = 0 
)
virtual

Low level receive call.

Reimplemented in XrdProofPhyConn.

Definition at line 949 of file XrdProofConn.cxx.

Referenced by DoHandShake(), and GetLastErr().

§ ReConnect()

void XrdProofConn::ReConnect ( )
private

Perform a reconnection attempt when a connection is not valid any more.

Definition at line 316 of file XrdProofConn.cxx.

Referenced by TXSocket::Reconnect(), and SendReq().

§ SendRecv()

XrdClientMessage * XrdProofConn::SendRecv ( XPClientRequest req,
const void reqData,
char **  answData 
)
private

SendRecv sends a command to the server and to get a response.

The header of the last response is returned as pointer to a XrdClientMessage. The data, if any, are returned in *answData; if *answData == 0 in input, the buffer is internally allocated and must be freed by the caller. If (*answData != 0) the program assumes that the caller has allocated enough bytes to contain the reply.

Definition at line 528 of file XrdProofConn.cxx.

Referenced by SendReq().

§ SendReq()

XrdClientMessage * XrdProofConn::SendReq ( XPClientRequest req,
const void reqData,
char **  answData,
const char *  CmdName,
bool  notifyerr = 1 
)

§ SetAsync()

void XrdProofConn::SetAsync ( XrdClientAbsUnsolMsgHandler *  uh,
XrdProofConnSender_t  sender = 0,
void arg = 0 
)
virtual

Set handler of unsolicited responses.

Reimplemented in XrdProofPhyConn.

Definition at line 501 of file XrdProofConn.cxx.

Referenced by TXSocket::Close(), GetLastErr(), XrdProofdNetMgr::Send(), TXSocket::SetSessionID(), and TryConnect().

§ SetConnectInterrupt()

void XrdProofConn::SetConnectInterrupt ( )
private

Interrupt connection attempts.

Definition at line 1453 of file XrdProofConn.cxx.

Referenced by ~XrdProofConn().

§ SetInterrupt()

void XrdProofConn::SetInterrupt ( )
private

Interrupt the underlying socket.

Definition at line 1444 of file XrdProofConn.cxx.

Referenced by TXSocket::Recv(), and TXSocket::SetInterrupt().

§ SetRetryParam()

void XrdProofConn::SetRetryParam ( int  maxtry = 5,
int  timewait = 2 
)
static

Change values of the retry control parameters, numer of retries and wait time between attempts (in seconds).

Definition at line 150 of file XrdProofConn.cxx.

Referenced by XrdProofdNetMgr::Config(), GetLastErr(), TXSocket::InitEnvs(), TXUnixSocket::Reconnect(), and ReConnect().

§ SetSID()

void XrdProofConn::SetSID ( kXR_char *  sid)

§ TryConnect()

int XrdProofConn::TryConnect ( int  = -1)
privatevirtual

Connect to remote server.

Reimplemented in XrdProofPhyConn.

Definition at line 343 of file XrdProofConn.cxx.

Referenced by Connect().

§ WriteRaw()

int XrdProofConn::WriteRaw ( const void buf,
int  len,
XrdClientPhyConnection *  p = 0 
)
virtual

Low level write call.

Reimplemented in XrdProofPhyConn.

Definition at line 934 of file XrdProofConn.cxx.

Referenced by DoHandShake(), GetAccessToSrv(), GetLastErr(), LowWrite(), and TXProofMgr::PutFile().

Friends And Related Function Documentation

§ TXSocket

friend class TXSocket
friend

Definition at line 60 of file XrdProofConn.h.

§ TXUnixSocket

friend class TXUnixSocket
friend

Definition at line 61 of file XrdProofConn.h.

§ XrdProofPhyConn

friend class XrdProofPhyConn
friend

Definition at line 62 of file XrdProofConn.h.

Member Data Documentation

§ fCapVer

char XrdProofConn::fCapVer
private

Definition at line 84 of file XrdProofConn.h.

Referenced by Login().

§ fConnected

bool XrdProofConn::fConnected
private

§ fConnectInterrupt

bool XrdProofConn::fConnectInterrupt
private

Definition at line 91 of file XrdProofConn.h.

Referenced by ConnectInterrupt(), and SetConnectInterrupt().

§ fConnectInterruptMtx

XrdSysRecMutex* XrdProofConn::fConnectInterruptMtx
private

Definition at line 90 of file XrdProofConn.h.

Referenced by ConnectInterrupt(), SetConnectInterrupt(), XrdProofConn(), and ~XrdProofConn().

§ fgConnMgr

XrdClientConnectionMgr * XrdProofConn::fgConnMgr = 0
staticprivate

Definition at line 104 of file XrdProofConn.h.

Referenced by Close(), Init(), ReadMsg(), ReadRaw(), SetAsync(), TryConnect(), and WriteRaw().

§ fgMaxTry

int XrdProofConn::fgMaxTry = 5
staticprivate

Definition at line 106 of file XrdProofConn.h.

Referenced by Connect(), GetRetryParam(), SendReq(), and SetRetryParam().

§ fgSecGetProtocol

void * XrdProofConn::fgSecGetProtocol = 0
staticprivate

Definition at line 110 of file XrdProofConn.h.

Referenced by Authenticate().

§ fgSecPlugin

XrdSysPlugin * XrdProofConn::fgSecPlugin = 0
staticprivate

Definition at line 109 of file XrdProofConn.h.

Referenced by Authenticate().

§ fgTimeWait

int XrdProofConn::fgTimeWait = 2
staticprivate

Definition at line 107 of file XrdProofConn.h.

Referenced by Connect(), GetRetryParam(), and SetRetryParam().

§ fHost

XrdOucString XrdProofConn::fHost
private

Definition at line 80 of file XrdProofConn.h.

Referenced by Authenticate(), XrdProofPhyConn::Init(), Init(), Login(), and TXSocket::TXSocket().

§ fLastErr

XErrorCode XrdProofConn::fLastErr
private

§ fLastErrMsg

XrdOucString XrdProofConn::fLastErrMsg
private

§ fLogConnID

int XrdProofConn::fLogConnID
private

§ fLoginBuffer

XrdOucString XrdProofConn::fLoginBuffer
private

Definition at line 86 of file XrdProofConn.h.

Referenced by Login().

§ fMode

char XrdProofConn::fMode
private

Definition at line 70 of file XrdProofConn.h.

Referenced by Login().

§ fMutex

XrdSysRecMutex* XrdProofConn::fMutex
private

§ fOpenSockFD

int XrdProofConn::fOpenSockFD
private

Definition at line 95 of file XrdProofConn.h.

§ fPhyConn

XrdClientPhyConnection* XrdProofConn::fPhyConn
private

§ fPort

int XrdProofConn::fPort
private

Definition at line 81 of file XrdProofConn.h.

Referenced by Connect(), XrdProofPhyConn::Init(), Init(), and TXSocket::TXSocket().

§ fRemoteProtocol

int XrdProofConn::fRemoteProtocol
private

§ fSender

XrdProofConnSender_t XrdProofConn::fSender
private

Definition at line 99 of file XrdProofConn.h.

Referenced by ProcessUnsolicitedMsg(), and SetAsync().

§ fSenderArg

void* XrdProofConn::fSenderArg
private

Definition at line 100 of file XrdProofConn.h.

Referenced by ProcessUnsolicitedMsg(), and SetAsync().

§ fServerProto

int XrdProofConn::fServerProto
private

Definition at line 75 of file XrdProofConn.h.

§ fServerType

ESrvType XrdProofConn::fServerType
private

Definition at line 76 of file XrdProofConn.h.

Referenced by XrdProofPhyConn::GetAccessToSrv(), GetAccessToSrv(), and GetServType().

§ fSessionID

short XrdProofConn::fSessionID
private

Definition at line 78 of file XrdProofConn.h.

Referenced by GetSessionID(), and Login().

§ fStreamid

kXR_unt16 XrdProofConn::fStreamid
private

§ fUnsolMsgHandler

XrdClientAbsUnsolMsgHandler* XrdProofConn::fUnsolMsgHandler
private

Definition at line 97 of file XrdProofConn.h.

Referenced by XrdProofPhyConn::TryConnect(), and TryConnect().

§ fUrl

XrdClientUrlInfo XrdProofConn::fUrl
private

§ fUser

XrdOucString XrdProofConn::fUser
private

Definition at line 79 of file XrdProofConn.h.

Referenced by XrdProofPhyConn::Init(), Init(), Login(), and TXSocket::TXSocket().


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