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

#include <XrdSsiFileReq.hh>

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

Public Types

enum  reqState {
  wtReq =0 , xqReq , wtRsp , doRsp ,
  odRsp , erRsp , rsEnd
}
 
enum  rspState {
  isNew =0 , isBegun , isBound , isAbort ,
  isDone , isMax
}
 

Public Member Functions

void Activate (XrdOucBuffer *oP, XrdSfsXioHandle bR, int rSz)
 
void Alert (XrdSsiRespInfoMsg &aMsg)
 Send or receive a server generated alert.
 
void Finalize ()
 
void Finished (XrdSsiRequest &rqstR, const XrdSsiRespInfo &rInfo, bool cancel=false)
 
char * GetRequest (int &rLen)
 
bool ProcessResponse (const XrdSsiErrInfo &eInfo, const XrdSsiRespInfo &resp)
 
XrdSfsXferSize Read (bool &done, char *buffer, XrdSfsXferSize blen)
 
void RelRequestBuffer ()
 
int Send (XrdSfsDio *sfDio, XrdSfsXferSize size)
 
bool WantResponse (XrdOucErrInfo &eInfo)
 
void Done (int &Result, XrdOucErrInfo *cbInfo, const char *path=0)
 
int Same (unsigned long long arg1, unsigned long long arg2)
 
void DoIt ()
 
 XrdSsiFileReq (const char *cID=0)
 
virtual ~XrdSsiFileReq ()
 
bool Finished (bool cancel=false)
 
- Public Member Functions inherited from XrdSsiRequest
bool Finished (bool cancel=false)
 
uint32_t GetDetachTTL ()
 
std::string GetEndPoint ()
 
const char * GetMetadata (int &dlen)
 
const char * GetRequestID ()
 
void GetResponseData (char *buff, int blen)
 
uint16_t GetTimeOut ()
 
virtual void ProcessResponseData (const XrdSsiErrInfo &eInfo, char *buff, int blen, bool last)
 
void ReleaseRequestBuffer ()
 
 XrdSsiRequest (const char *reqid=0, uint16_t tmo=0)
 
- Public Member Functions inherited from XrdOucEICB
 XrdOucEICB ()
 Constructor and destructor.
 
virtual ~XrdOucEICB ()
 
- Public Member Functions inherited from XrdJob
 XrdJob (const char *desc="")
 
virtual ~XrdJob ()
 

Static Public Member Functions

static XrdSsiFileReqAlloc (XrdOucErrInfo *eP, XrdSsiFileResource *rP, XrdSsiFileSess *fP, const char *sn, const char *id, unsigned int rnum)
 
static void SetMax (int mVal)
 

Private Member Functions

void BindDone ()
 
void Dispose ()
 
int Emsg (const char *pfx, int ecode, const char *op)
 
int Emsg (const char *pfx, XrdSsiErrInfo &eObj, const char *op)
 
void Init (const char *cID=0)
 
XrdSfsXferSize readStrmA (XrdSsiStream *strmP, char *buff, XrdSfsXferSize blen)
 
XrdSfsXferSize readStrmP (XrdSsiStream *strmP, char *buff, XrdSfsXferSize blen)
 
int sendStrmA (XrdSsiStream *strmP, XrdSfsDio *sfDio, XrdSfsXferSize blen)
 
void Recycle ()
 
void WakeUp (XrdSsiAlert *aP=0)
 

Private Attributes

XrdSsiMutex frqMutex
 
XrdSsiFileReqnextReq
 
XrdSysSemaphorefinWait
 
XrdOucEICBrespCB
 
unsigned long long respCBarg
 
XrdSsiAlertalrtSent
 
XrdSsiAlertalrtPend
 
XrdSsiAlertalrtLast
 
char * tident
 
const char * sessN
 
XrdOucErrInfocbInfo
 
XrdSsiFileResourcefileR
 
XrdSsiFileSessfileP
 
char * respBuf
 
long long respOff
 
union { 
 
   long long   fileSz 
 
   int   respLen 
 
};  
 
XrdSfsXioHandle sfsBref
 
XrdOucBufferoucBuff
 
XrdSsiStream::BufferstrBuff
 
reqState myState
 
rspState urState
 
int reqSize
 
unsigned int reqID
 
bool haveResp
 
bool respWait
 
bool strmEOF
 
bool schedDone
 
bool isEnding
 
char rID [8]
 

Static Private Attributes

static XrdSysMutex aqMutex
 
static XrdSsiFileReqfreeReq
 
static int freeCnt
 
static int freeMax
 

Additional Inherited Members

- Public Attributes inherited from XrdJob
XrdJobNextJob
 
const char * Comment
 
- Protected Member Functions inherited from XrdSsiRequest
void SetDetachTTL (uint32_t dttl)
 Set the detached request time to live value.
 
void SetRetry (bool onoff)
 
void SetTimeOut (uint16_t tmo)
 
virtual ~XrdSsiRequest ()
 

Member Enumeration Documentation

◆ reqState

Enumerator
wtReq 
xqReq 
wtRsp 
doRsp 
odRsp 
erRsp 
rsEnd 

◆ rspState

Enumerator
isNew 
isBegun 
isBound 
isAbort 
isDone 
isMax 

Constructor & Destructor Documentation

◆ XrdSsiFileReq()

XrdSsiFileReq::XrdSsiFileReq ( const char *  cID = 0)
inline

References Init().

◆ ~XrdSsiFileReq()

virtual XrdSsiFileReq::~XrdSsiFileReq ( )
inlinevirtual

References tident.

Member Function Documentation

◆ Activate()

void XrdSsiFileReq::Activate ( XrdOucBuffer oP,
XrdSfsXioHandle  bR,
int  rSz 
)

◆ Alert()

void XrdSsiFileReq::Alert ( XrdSsiRespInfoMsg aMsg)
virtual

Send or receive a server generated alert.

The Alert() method is used server-side to send one or more alerts before a response is posted (alerts afterwards are ignored). To avoid race conditions, server-side alerts should be sent via the Responder's Alert() method. Clients must implement this method in order to receive alerts.

Parameters
aMsgReference to the message object containing the alert message. Non-positive alert lengths cause the alert call to be ignored. You should call the message RecycleMsg() method once you have consumed the message to release its resources.

Reimplemented from XrdSsiRequest.

◆ Alloc()

static XrdSsiFileReq * XrdSsiFileReq::Alloc ( XrdOucErrInfo eP,
XrdSsiFileResource rP,
XrdSsiFileSess fP,
const char *  sn,
const char *  id,
unsigned int  rnum 
)
static

◆ BindDone()

void XrdSsiFileReq::BindDone ( )
privatevirtual

Reimplemented from XrdSsiRequest.

◆ Dispose()

void XrdSsiFileReq::Dispose ( )
privatevirtual

Reimplemented from XrdSsiRequest.

◆ DoIt()

void XrdSsiFileReq::DoIt ( )
virtual

Implements XrdJob.

◆ Done()

void XrdSsiFileReq::Done ( int &  Result,
XrdOucErrInfo eInfo,
const char *  Path = 0 
)
virtual

Invoke a callback after an operation completes.

Parameters
Result- the original function's result (may be changed).
eInfo- Associated error information. The eInfo object may not be modified until it's own callback Done() method is called, if supplied. If the callback function in eInfo is zero, then the eInfo object is deleted by the invoked callback. Otherwise, that method must be invoked by this callback function after the actual callback message is sent. This allows the callback requestor to do post-processing and be asynchronous being assured that the callback completed.
Path- Optionally, the path related to thid request. It is used for tracing and detailed monitoring purposes.

Implements XrdOucEICB.

◆ Emsg() [1/2]

int XrdSsiFileReq::Emsg ( const char *  pfx,
int  ecode,
const char *  op 
)
private

◆ Emsg() [2/2]

int XrdSsiFileReq::Emsg ( const char *  pfx,
XrdSsiErrInfo eObj,
const char *  op 
)
private

◆ Finalize()

void XrdSsiFileReq::Finalize ( )

◆ Finished() [1/2]

bool XrdSsiRequest::Finished ( bool  cancel = false)

Indicate that request processing has been finished. This method calls XrdSsiResponder::Finished() on the associated responder object.

Note: This method locks the object's recursive mutex.

Parameters
cancelFalse -> the request/response sequence completed normally. True -> the request/response sequence aborted because of an error or the client cancelled the request.
Returns
true Finish accepted. Request object may be reclaimed.
false Finish cannot be accepted because this request object is not bound to a responder. This indicates a logic error.

◆ Finished() [2/2]

void XrdSsiFileReq::Finished ( XrdSsiRequest rqstR,
const XrdSsiRespInfo rInfo,
bool  cancel = false 
)
inline

◆ GetRequest()

char * XrdSsiFileReq::GetRequest ( int &  dlen)
virtual

Obtain the request data sent by a client.

This method is duplicated in XrdSsiResponder to allow calling consistency.

Parameters
dlenholds the length of the request after the call.
Returns
=0 No request data available, dlen has been set to zero.
!0 Pointer to the buffer holding the request, dlen has the length

Implements XrdSsiRequest.

◆ Init()

void XrdSsiFileReq::Init ( const char *  cID = 0)
private

Referenced by XrdSsiFileReq().

◆ ProcessResponse()

bool XrdSsiFileReq::ProcessResponse ( const XrdSsiErrInfo eInfo,
const XrdSsiRespInfo rInfo 
)
virtual

Notify request that a response is ready to be processed. This method must be supplied by the request object's implementation.

Parameters
eInfoError information. You can check if an error occurred using eInfo.hasError() or eInfo.isOK().
rInfoRaw response information.
Returns
true Response processed.
false Response could not be processed, the request is not active.

Implements XrdSsiRequest.

◆ Read()

XrdSfsXferSize XrdSsiFileReq::Read ( bool &  done,
char *  buffer,
XrdSfsXferSize  blen 
)

◆ readStrmA()

XrdSfsXferSize XrdSsiFileReq::readStrmA ( XrdSsiStream strmP,
char *  buff,
XrdSfsXferSize  blen 
)
private

◆ readStrmP()

XrdSfsXferSize XrdSsiFileReq::readStrmP ( XrdSsiStream strmP,
char *  buff,
XrdSfsXferSize  blen 
)
private

◆ Recycle()

void XrdSsiFileReq::Recycle ( )
private

◆ RelRequestBuffer()

void XrdSsiFileReq::RelRequestBuffer ( )
virtual

Release the request buffer. Use this method to optimize storage use; this is especially relevant for long-running requests. If the request buffer has been consumed and is no longer needed, early return of the buffer will minimize memory usage. This method is also invoked via XrdSsiResponder.

Note: This method is called with the object's recursive mutex locked when it is invoked via XrdSsiResponder's ReleaseRequestBuffer().

Reimplemented from XrdSsiRequest.

◆ Same()

int XrdSsiFileReq::Same ( unsigned long long  arg1,
unsigned long long  arg2 
)
inlinevirtual

Determine if two callback arguments refer to the same client.

Parameters
arg1- The first callback argument.
arg2- The second callback argument.
Returns
!0 - The arguments refer to the same client.
=0 - The arguments refer to the different clients.

Implements XrdOucEICB.

◆ Send()

int XrdSsiFileReq::Send ( XrdSfsDio sfDio,
XrdSfsXferSize  size 
)

◆ sendStrmA()

int XrdSsiFileReq::sendStrmA ( XrdSsiStream strmP,
XrdSfsDio sfDio,
XrdSfsXferSize  blen 
)
private

◆ SetMax()

static void XrdSsiFileReq::SetMax ( int  mVal)
inlinestatic

References freeMax.

◆ WakeUp()

void XrdSsiFileReq::WakeUp ( XrdSsiAlert aP = 0)
private

◆ WantResponse()

bool XrdSsiFileReq::WantResponse ( XrdOucErrInfo eInfo)

Member Data Documentation

◆ [union]

union { ... } XrdSsiFileReq

◆ alrtLast

XrdSsiAlert* XrdSsiFileReq::alrtLast
private

◆ alrtPend

XrdSsiAlert* XrdSsiFileReq::alrtPend
private

◆ alrtSent

XrdSsiAlert* XrdSsiFileReq::alrtSent
private

◆ aqMutex

XrdSysMutex XrdSsiFileReq::aqMutex
staticprivate

◆ cbInfo

XrdOucErrInfo* XrdSsiFileReq::cbInfo
private

◆ fileP

XrdSsiFileSess* XrdSsiFileReq::fileP
private

◆ fileR

XrdSsiFileResource* XrdSsiFileReq::fileR
private

◆ fileSz

long long XrdSsiFileReq::fileSz

◆ finWait

XrdSysSemaphore* XrdSsiFileReq::finWait
private

◆ freeCnt

int XrdSsiFileReq::freeCnt
staticprivate

◆ freeMax

int XrdSsiFileReq::freeMax
staticprivate

Referenced by SetMax().

◆ freeReq

XrdSsiFileReq* XrdSsiFileReq::freeReq
staticprivate

◆ frqMutex

XrdSsiMutex XrdSsiFileReq::frqMutex
private

◆ haveResp

bool XrdSsiFileReq::haveResp
private

◆ isEnding

bool XrdSsiFileReq::isEnding
private

◆ myState

reqState XrdSsiFileReq::myState
private

◆ nextReq

XrdSsiFileReq* XrdSsiFileReq::nextReq
private

◆ oucBuff

XrdOucBuffer* XrdSsiFileReq::oucBuff
private

◆ reqID

unsigned int XrdSsiFileReq::reqID
private

◆ reqSize

int XrdSsiFileReq::reqSize
private

◆ respBuf

char* XrdSsiFileReq::respBuf
private

◆ respCB

XrdOucEICB* XrdSsiFileReq::respCB
private

◆ respCBarg

unsigned long long XrdSsiFileReq::respCBarg
private

◆ respLen

int XrdSsiFileReq::respLen

◆ respOff

long long XrdSsiFileReq::respOff
private

◆ respWait

bool XrdSsiFileReq::respWait
private

◆ rID

char XrdSsiFileReq::rID[8]
private

◆ schedDone

bool XrdSsiFileReq::schedDone
private

◆ sessN

const char* XrdSsiFileReq::sessN
private

◆ sfsBref

XrdSfsXioHandle XrdSsiFileReq::sfsBref
private

◆ strBuff

XrdSsiStream::Buffer* XrdSsiFileReq::strBuff
private

◆ strmEOF

bool XrdSsiFileReq::strmEOF
private

◆ tident

char* XrdSsiFileReq::tident
private

Referenced by ~XrdSsiFileReq().

◆ urState

rspState XrdSsiFileReq::urState
private

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