xrootd
Classes | Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | Protected Member Functions | Protected Attributes | Private Member Functions | Private Attributes | Static Private Attributes
XrdClientConn Class Reference

#include <XrdClientConn.hh>

Collaboration diagram for XrdClientConn:
Collaboration graph
[legend]

List of all members.

Classes

struct  SessionIDInfo

Public Types

enum  ESrvErrorHandlerRetval {
  kSEHRReturnMsgToCaller = 0, kSEHRBreakLoop = 1, kSEHRContinue = 2, kSEHRReturnNoMsgToCaller = 3,
  kSEHRRedirLimitReached = 4
}
enum  EThreeStateReadHandler { kTSRHReturnMex = 0, kTSRHReturnNullMex = 1, kTSRHContinue = 2 }

Public Member Functions

 XrdClientConn ()
virtual ~XrdClientConn ()
bool CacheWillFit (long long bytes)
bool CheckHostDomain (XrdOucString hostToCheck)
short Connect (XrdClientUrlInfo Host2Conn, XrdClientAbsUnsolMsgHandler *unsolhandler)
void Disconnect (bool ForcePhysicalDisc)
virtual bool GetAccessToSrv ()
XReqErrorType GoBackToRedirector ()
XrdOucString GetClientHostDomain ()
long GetDataFromCache (const void *buffer, long long begin_offs, long long end_offs, bool PerfCalc, XrdClientIntvList &missingblks, long &outstandingblks)
bool SubmitDataToCache (XrdClientMessage *xmsg, long long begin_offs, long long end_offs)
bool SubmitRawDataToCache (const void *buffer, long long begin_offs, long long end_offs)
void SubmitPlaceholderToCache (long long begin_offs, long long end_offs)
void RemoveAllDataFromCache (bool keepwriteblocks=true)
void RemoveDataFromCache (long long begin_offs, long long end_offs, bool remove_overlapped=false)
void RemovePlaceholdersFromCache ()
void PrintCache ()
bool GetCacheInfo (int &size, long long &bytessubmitted, long long &byteshit, long long &misscount, float &missrate, long long &readreqcnt, float &bytesusefulness)
void SetCacheSize (int CacheSize)
void SetCacheRmPolicy (int RmPolicy)
void UnPinCacheBlk (long long begin_offs, long long end_offs)
int GetLogConnID () const
ERemoteServerType GetServerType () const
kXR_unt16 GetStreamID () const
XrdClientUrlInfo * GetLBSUrl ()
XrdClientUrlInfo * GetMetaUrl ()
XrdClientUrlInfo GetCurrentUrl ()
XrdClientUrlInfo GetRedirUrl ()
XErrorCode GetOpenError () const
virtual XReqErrorType GoToAnotherServer (XrdClientUrlInfo &newdest)
virtual XReqErrorType GoToMetaManager ()
bool IsConnected () const
bool IsPhyConnConnected ()
void ClearLastServerError ()
UnsolRespProcResult ProcessAsynResp (XrdClientMessage *unsolmsg)
virtual bool SendGenCommand (ClientRequest *req, const void *reqMoreData, void **answMoreDataAllocated, void *answMoreData, bool HasToAlloc, char *CmdName, int substreamid=0)
int GetOpenSockFD () const
void SetClientHostDomain (const char *src)
void SetConnected (bool conn)
void SetOpenError (XErrorCode err)
int GetParallelStreamToUse (int reqsperstream)
int GetParallelStreamCount ()
void SetRedirHandler (XrdClientAbs *rh)
void SetRequestedDestHost (char *newh, kXR_int32 port)
void SetREQPauseState (kXR_int32 wsec)
void SetREQDelayedConnectState (kXR_int32 wsec)
void SetSID (kXR_char *sid)
void SetUrl (XrdClientUrlInfo thisUrl)
XReqErrorType WriteToServer_Async (ClientRequest *req, const void *reqMoreData, int substreamid=0)
void GetSessionID (SessionIDInfo &sess)
long GetServerProtocol ()
short GetMaxRedirCnt () const
void SetMaxRedirCnt (short mx)
short GetRedirCnt () const
bool DoWriteSoftCheckPoint ()
bool DoWriteHardCheckPoint ()
void UnPinCacheBlk ()
void SetOpTimeLimit (int delta_secs)
bool IsOpTimeLimitElapsed (time_t timenow)

Static Public Member Functions

static XrdClientPhyConnection * GetPhyConn (int LogConnID)
static XrdClientConnectionMgr * GetConnectionMgr ()
static void DelSessionIDRepo ()

Public Attributes

int fLastDataBytesRecv
int fLastDataBytesSent
XErrorCode fOpenError
XrdOucString fRedirOpaque
struct ServerResponseHeader LastServerResp
struct ServerResponseBody_Error LastServerError
XrdOucString fRedirCGI

Protected Member Functions

void SetLogConnID (int cid)
void SetStreamID (kXR_unt16 sid)

Protected Attributes

XrdClientAbsUnsolMsgHandler * fUnsolMsgHandler
XrdClientUrlInfo fUrl
XrdClientUrlInfo * fLBSUrl
XrdClientUrlInfo fREQUrl
short fGlobalRedirCnt

Private Member Functions

bool CheckErrorStatus (XrdClientMessage *, short &, char *)
void CheckPort (int &port)
void CheckREQPauseState ()
void CheckREQConnectWaitState ()
bool CheckResp (struct ServerResponseHeader *resp, const char *method)
XrdClientMessage * ClientServerCmd (ClientRequest *req, const void *reqMoreData, void **answMoreDataAllocated, void *answMoreData, bool HasToAlloc, int substreamid=0)
XrdSecProtocol * DoAuthentication (char *plist, int plsiz)
ERemoteServerType DoHandShake (short log)
bool DoLogin ()
bool DomainMatcher (XrdOucString dom, XrdOucString domlist)
XrdOucString GetDomainToMatch (XrdOucString hostname)
ESrvErrorHandlerRetval HandleServerError (XReqErrorType &, XrdClientMessage *, ClientRequest *)
bool MatchStreamid (struct ServerResponseHeader *ServerResponse)
bool PanicClose ()
XrdOucString ParseDomainFromHostname (XrdOucString hostname)
XrdClientMessage * ReadPartialAnswer (XReqErrorType &, size_t &, ClientRequest *, bool, void **, EThreeStateReadHandler &)
XReqErrorType WriteToServer (ClientRequest *req, const void *reqMoreData, short LogConnID, int substreamid=0)
bool WaitResp (int secsmax)

Private Attributes

bool fConnected
bool fGettingAccessToSrv
time_t fGlobalRedirLastUpdateTimestamp
int fLogConnID
kXR_unt16 fPrimaryStreamid
short fMaxGlobalRedirCnt
XrdClientReadCache * fMainReadCache
time_t fOpTimeLimit
XrdClientAbs * fRedirHandler
XrdOucString fRedirInternalToken
XrdSysCondVar * fREQWaitResp
ServerResponseBody_Attn_asynresp * fREQWaitRespData
time_t fREQWaitTimeLimit
XrdSysCondVar * fREQWait
time_t fREQConnectWaitTimeLimit
XrdSysCondVar * fREQConnectWait
long fServerProto
ERemoteServerType fServerType
SessionIDInfo mySessionID
int fOpenSockFD
XrdSysCondVar * fWriteWaitAck
XrdClientVector< ClientRequest > fWriteReqsToRetry
XrdClientUrlInfo * fMetaUrl
bool fLBSIsMeta

Static Private Attributes

static XrdOucString fgClientHostDomain
static XrdSysMutex fSessionIDRMutex
static XrdOucHash< SessionIDInfo > fSessionIDRepo
static XrdClientConnectionMgr * fgConnectionMgr = 0

Member Enumeration Documentation

Enumerator:
kSEHRReturnMsgToCaller 
kSEHRBreakLoop 
kSEHRContinue 
kSEHRReturnNoMsgToCaller 
kSEHRRedirLimitReached 
Enumerator:
kTSRHReturnMex 
kTSRHReturnNullMex 
kTSRHContinue 

Constructor & Destructor Documentation

XrdClientConn::XrdClientConn ( )
XrdClientConn::~XrdClientConn ( )
virtual

Member Function Documentation

bool XrdClientConn::CacheWillFit ( long long  bytes)
inline
bool XrdClientConn::CheckErrorStatus ( XrdClientMessage *  mex,
short &  Retry,
char *  CmdName 
)
private
bool XrdClientConn::CheckHostDomain ( XrdOucString  hostToCheck)
void XrdClientConn::CheckPort ( int &  port)
private
void XrdClientConn::CheckREQConnectWaitState ( )
private
void XrdClientConn::CheckREQPauseState ( )
private
bool XrdClientConn::CheckResp ( struct ServerResponseHeader *  resp,
const char *  method 
)
private
void XrdClientConn::ClearLastServerError ( )
inline
XrdClientMessage * XrdClientConn::ClientServerCmd ( ClientRequest *  req,
const void *  reqMoreData,
void **  answMoreDataAllocated,
void *  answMoreData,
bool  HasToAlloc,
int  substreamid = 0 
)
private
short XrdClientConn::Connect ( XrdClientUrlInfo  Host2Conn,
XrdClientAbsUnsolMsgHandler *  unsolhandler 
)
static void XrdClientConn::DelSessionIDRepo ( )
inlinestatic
void XrdClientConn::Disconnect ( bool  ForcePhysicalDisc)
XrdSecProtocol * XrdClientConn::DoAuthentication ( char *  plist,
int  plsiz 
)
private
ERemoteServerType XrdClientConn::DoHandShake ( short  log)
private
bool XrdClientConn::DoLogin ( )
private
bool XrdClientConn::DomainMatcher ( XrdOucString  dom,
XrdOucString  domlist 
)
private
bool XrdClientConn::DoWriteHardCheckPoint ( )
bool XrdClientConn::DoWriteSoftCheckPoint ( )
bool XrdClientConn::GetAccessToSrv ( )
virtual
bool XrdClientConn::GetCacheInfo ( int &  size,
long long &  bytessubmitted,
long long &  byteshit,
long long &  misscount,
float &  missrate,
long long &  readreqcnt,
float &  bytesusefulness 
)
inline
XrdOucString XrdClientConn::GetClientHostDomain ( )
inline

References fgClientHostDomain.

static XrdClientConnectionMgr* XrdClientConn::GetConnectionMgr ( )
inlinestatic

References fgConnectionMgr.

XrdClientUrlInfo XrdClientConn::GetCurrentUrl ( )
inline
long XrdClientConn::GetDataFromCache ( const void *  buffer,
long long  begin_offs,
long long  end_offs,
bool  PerfCalc,
XrdClientIntvList &  missingblks,
long &  outstandingblks 
)
XrdOucString XrdClientConn::GetDomainToMatch ( XrdOucString  hostname)
private
XrdClientUrlInfo* XrdClientConn::GetLBSUrl ( )
inline

References fLBSUrl.

Referenced by XrdClient::TryOpen().

int XrdClientConn::GetLogConnID ( ) const
inline
short XrdClientConn::GetMaxRedirCnt ( ) const
inline
XrdClientUrlInfo* XrdClientConn::GetMetaUrl ( )
inline

References fMetaUrl.

Referenced by XrdClient::TryOpen().

XErrorCode XrdClientConn::GetOpenError ( ) const
inline

References fOpenError.

int XrdClientConn::GetOpenSockFD ( ) const
inline

References fOpenSockFD.

int XrdClientConn::GetParallelStreamCount ( )
int XrdClientConn::GetParallelStreamToUse ( int  reqsperstream)
XrdClientPhyConnection * XrdClientConn::GetPhyConn ( int  LogConnID)
static
short XrdClientConn::GetRedirCnt ( ) const
inline

References fGlobalRedirCnt.

Referenced by XrdClient::Open(), and XrdClient::TryOpen().

XrdClientUrlInfo XrdClientConn::GetRedirUrl ( )
inline

References fREQUrl.

long XrdClientConn::GetServerProtocol ( )
inline
ERemoteServerType XrdClientConn::GetServerType ( ) const
inline
void XrdClientConn::GetSessionID ( SessionIDInfo &  sess)
inline
kXR_unt16 XrdClientConn::GetStreamID ( ) const
inline
XReqErrorType XrdClientConn::GoBackToRedirector ( )
XReqErrorType XrdClientConn::GoToAnotherServer ( XrdClientUrlInfo &  newdest)
virtual
XReqErrorType XrdClientConn::GoToMetaManager ( )
virtual
XrdClientConn::ESrvErrorHandlerRetval XrdClientConn::HandleServerError ( XReqErrorType &  errorType,
XrdClientMessage *  xmsg,
ClientRequest *  req 
)
private
bool XrdClientConn::IsConnected ( ) const
inline
bool XrdClientConn::IsOpTimeLimitElapsed ( time_t  timenow)
bool XrdClientConn::IsPhyConnConnected ( )
bool XrdClientConn::MatchStreamid ( struct ServerResponseHeader *  ServerResponse)
private
bool XrdClientConn::PanicClose ( )
private
XrdOucString XrdClientConn::ParseDomainFromHostname ( XrdOucString  hostname)
private
void XrdClientConn::PrintCache ( )
inline
UnsolRespProcResult XrdClientConn::ProcessAsynResp ( XrdClientMessage *  unsolmsg)
XrdClientMessage * XrdClientConn::ReadPartialAnswer ( XReqErrorType &  errorType,
size_t &  TotalBlkSize,
ClientRequest *  req,
bool  HasToAlloc,
void **  tmpMoreData,
EThreeStateReadHandler &  what_to_do 
)
private
void XrdClientConn::RemoveAllDataFromCache ( bool  keepwriteblocks = true)
inline
void XrdClientConn::RemoveDataFromCache ( long long  begin_offs,
long long  end_offs,
bool  remove_overlapped = false 
)
inline
void XrdClientConn::RemovePlaceholdersFromCache ( )
inline
bool XrdClientConn::SendGenCommand ( ClientRequest *  req,
const void *  reqMoreData,
void **  answMoreDataAllocated,
void *  answMoreData,
bool  HasToAlloc,
char *  CmdName,
int  substreamid = 0 
)
virtual

References CheckErrorStatus(), CheckREQPauseState(), CheckResp(), ClientServerCmd(), convertRequestIdToChar(), ServerResponseHeader::dlen, Error, FALSE, fGlobalRedirCnt, XrdClientMessage::fHdr, fMaxGlobalRedirCnt, fOpenError, fREQWaitRespData, fUrl, XrdClientMessage::GetData(), GetServerProtocol(), ClientRequest::header, XrdClientUrlInfo::Host, Info, XrdClientMessage::IsError(), IsOpTimeLimitElapsed(), XrdClientDebug::kHIDEBUG, kXR_bind, kXR_close, kXR_error, kXR_maxReqRetry, kXR_ok, kXR_open, kXR_read, kXR_refresh, kXR_retstat, kXR_sync, kXR_wait, kXR_waitresp, kXR_write, LastServerResp, ClientRequest::open, ClientOpenRequest::options, XrdClientUrlInfo::Port, ClientRequestHdr::requestid, ServerResponseBody_Attn_asynresp::respdata, ServerResponseBody_Attn_asynresp::resphdr, ServerResponseHeader::status, TRUE, and WaitResp().

Referenced by XrdClientAdmin::Chmod(), XrdClient::Close(), XrdClientAdmin::DirList_low(), DoAuthentication(), DoLogin(), DoWriteSoftCheckPoint(), XrdClientMStream::EstablishParallelStreams(), XrdClientAdmin::GetChecksum(), XrdClientAdmin::GetSpaceInfo(), XrdClientAdmin::LocalLocate(), XrdClient::LowOpen(), XrdClientAdmin::Mkdir(), XrdClientAdmin::Mv(), XrdClientAdmin::Prepare(), XrdClientAdmin::Protocol(), XrdClientAbs::Query(), XrdClient::Read(), XrdClientReadV::ReqReadV(), XrdClientAdmin::Rm(), XrdClientAdmin::Rmdir(), XrdClientAdmin::Stat(), XrdClient::Stat(), XrdClientAdmin::Stat_vfs(), XrdClient::Sync(), XrdClientAdmin::SysStatX(), XrdClientAdmin::Truncate(), XrdClient::Truncate(), and XrdClient::Write().

void XrdClientConn::SetCacheRmPolicy ( int  RmPolicy)
inline
void XrdClientConn::SetCacheSize ( int  CacheSize)
inline
void XrdClientConn::SetClientHostDomain ( const char *  src)
inline

References fgClientHostDomain.

void XrdClientConn::SetConnected ( bool  conn)
inline

References fConnected.

void XrdClientConn::SetLogConnID ( int  cid)
inlineprotected

References fLogConnID.

void XrdClientConn::SetMaxRedirCnt ( short  mx)
inline

References fMaxGlobalRedirCnt.

void XrdClientConn::SetOpenError ( XErrorCode  err)
inline

References fOpenError.

void XrdClientConn::SetOpTimeLimit ( int  delta_secs)
void XrdClientConn::SetRedirHandler ( XrdClientAbs *  rh)
inline
void XrdClientConn::SetREQDelayedConnectState ( kXR_int32  wsec)
inline
void XrdClientConn::SetREQPauseState ( kXR_int32  wsec)
inline
void XrdClientConn::SetRequestedDestHost ( char *  newh,
kXR_int32  port 
)
inline
void XrdClientConn::SetSID ( kXR_char *  sid)
void XrdClientConn::SetStreamID ( kXR_unt16  sid)
inlineprotected

References fPrimaryStreamid.

void XrdClientConn::SetUrl ( XrdClientUrlInfo  thisUrl)
inline

References fUrl.

Referenced by XrdClientAdmin::Connect(), and XrdClient::Open().

bool XrdClientConn::SubmitDataToCache ( XrdClientMessage *  xmsg,
long long  begin_offs,
long long  end_offs 
)
void XrdClientConn::SubmitPlaceholderToCache ( long long  begin_offs,
long long  end_offs 
)
inline
bool XrdClientConn::SubmitRawDataToCache ( const void *  buffer,
long long  begin_offs,
long long  end_offs 
)
void XrdClientConn::UnPinCacheBlk ( long long  begin_offs,
long long  end_offs 
)
inline
void XrdClientConn::UnPinCacheBlk ( )

Referenced by DoWriteSoftCheckPoint().

bool XrdClientConn::WaitResp ( int  secsmax)
private
XReqErrorType XrdClientConn::WriteToServer ( ClientRequest *  req,
const void *  reqMoreData,
short  LogConnID,
int  substreamid = 0 
)
private
XReqErrorType XrdClientConn::WriteToServer_Async ( ClientRequest *  req,
const void *  reqMoreData,
int  substreamid = 0 
)

Member Data Documentation

bool XrdClientConn::fConnected
private
XrdOucString XrdClientConn::fgClientHostDomain
staticprivate
XrdClientConnectionMgr * XrdClientConn::fgConnectionMgr = 0
staticprivate

Referenced by GetConnectionMgr(), and XrdClientConn().

bool XrdClientConn::fGettingAccessToSrv
private
short XrdClientConn::fGlobalRedirCnt
protected
time_t XrdClientConn::fGlobalRedirLastUpdateTimestamp
private

Referenced by XrdClientConn().

int XrdClientConn::fLastDataBytesRecv

Referenced by ReadPartialAnswer().

int XrdClientConn::fLastDataBytesSent

Referenced by WriteToServer().

bool XrdClientConn::fLBSIsMeta
private

Referenced by DoHandShake(), and GoToMetaManager().

XrdClientUrlInfo* XrdClientConn::fLBSUrl
protected
int XrdClientConn::fLogConnID
private
XrdClientReadCache* XrdClientConn::fMainReadCache
private
short XrdClientConn::fMaxGlobalRedirCnt
private
XrdClientUrlInfo* XrdClientConn::fMetaUrl
private
XErrorCode XrdClientConn::fOpenError
int XrdClientConn::fOpenSockFD
private
time_t XrdClientConn::fOpTimeLimit
private
kXR_unt16 XrdClientConn::fPrimaryStreamid
private
XrdOucString XrdClientConn::fRedirCGI

Referenced by doCp_xrd3xrd(), and HandleServerError().

XrdClientAbs* XrdClientConn::fRedirHandler
private
XrdOucString XrdClientConn::fRedirInternalToken
private

Referenced by DoLogin(), and HandleServerError().

XrdOucString XrdClientConn::fRedirOpaque
XrdSysCondVar* XrdClientConn::fREQConnectWait
private
time_t XrdClientConn::fREQConnectWaitTimeLimit
private
XrdClientUrlInfo XrdClientConn::fREQUrl
protected
XrdSysCondVar* XrdClientConn::fREQWait
private
XrdSysCondVar* XrdClientConn::fREQWaitResp
private
ServerResponseBody_Attn_asynresp* XrdClientConn::fREQWaitRespData
private
time_t XrdClientConn::fREQWaitTimeLimit
private
long XrdClientConn::fServerProto
private
ERemoteServerType XrdClientConn::fServerType
private
XrdOucHash< XrdClientConn::SessionIDInfo > XrdClientConn::fSessionIDRepo
staticprivate

Referenced by DelSessionIDRepo(), and DoLogin().

XrdSysMutex XrdClientConn::fSessionIDRMutex
staticprivate

Referenced by DelSessionIDRepo(), and DoLogin().

XrdClientAbsUnsolMsgHandler* XrdClientConn::fUnsolMsgHandler
protected
XrdClientUrlInfo XrdClientConn::fUrl
protected
XrdClientVector<ClientRequest> XrdClientConn::fWriteReqsToRetry
private
XrdSysCondVar* XrdClientConn::fWriteWaitAck
private
struct ServerResponseBody_Error XrdClientConn::LastServerError
struct ServerResponseHeader XrdClientConn::LastServerResp
SessionIDInfo XrdClientConn::mySessionID
private

Referenced by DoLogin(), and GetSessionID().


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