![]() |
XRootD
|
#include <XrdSsiRequest.hh>
Public Member Functions | |
XrdSsiRequest (const char *reqid=0, uint16_t tmo=0) | |
bool | Finished (bool cancel=false) |
uint32_t | GetDetachTTL () |
std::string | GetEndPoint () |
const char * | GetMetadata (int &dlen) |
virtual char * | GetRequest (int &dlen)=0 |
const char * | GetRequestID () |
void | GetResponseData (char *buff, int blen) |
uint16_t | GetTimeOut () |
virtual bool | ProcessResponse (const XrdSsiErrInfo &eInfo, const XrdSsiRespInfo &rInfo)=0 |
virtual void | ProcessResponseData (const XrdSsiErrInfo &eInfo, char *buff, int blen, bool last) |
void | ReleaseRequestBuffer () |
Protected Member Functions | |
virtual | ~XrdSsiRequest () |
virtual void | Alert (XrdSsiRespInfoMsg &aMsg) |
Send or receive a server generated alert. More... | |
virtual void | RelRequestBuffer () |
void | SetDetachTTL (uint32_t dttl) |
Set the detached request time to live value. More... | |
void | SetRetry (bool onoff) |
void | SetTimeOut (uint16_t tmo) |
Friends | |
class | XrdSsiResponder |
class | XrdSsiRRAgent |
Definition at line 70 of file XrdSsiRequest.hh.
XrdSsiRequest::XrdSsiRequest | ( | const char * | reqid = 0 , |
uint16_t | tmo = 0 |
||
) |
Constructor
reqid | Pointer to a request ID that can be used to group requests. See ProcessResponseData() and RestartDataReponse(). If reqid is nil then held responses are placed in the global queue. The pointer must be valid for the life of this object. |
tmo | The request initiation timeout value 0 equals default). |
Definition at line 56 of file XrdSsiRequest.cc.
|
inlineprotectedvirtual |
Destructor. This object can only be deleted by the object creator. Once the object is passed to XrdSsiService::ProcessRequest() it may only be deleted after Finished() is called to allow the service to reclaim any resources allocated for the request object.
Definition at line 297 of file XrdSsiRequest.hh.
|
inlineprotectedvirtual |
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.
aMsg | Reference 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 in XrdSsiFileReq.
Definition at line 238 of file XrdSsiRequest.hh.
References XrdSsiRespInfoMsg::RecycleMsg().
Referenced by XrdSsiRRAgent::Alert(), and XrdSsiResponder::Alert().
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.
cancel | False -> the request/response sequence completed normally. True -> the request/response sequence aborted because of an error or the client cancelled the request. |
Definition at line 115 of file XrdSsiRequest.cc.
References XrdSsiResponder::Finished(), XrdSsiMutex::Lock(), and XrdSsiMutex::UnLock().
|
inline |
Obtain the detached request time to live value. If the value is non-zero, the request is detached. Otherwise, it is an attached request and requires a live TCP connection during it execution.
Definition at line 101 of file XrdSsiRequest.hh.
std::string XrdSsiRequest::GetEndPoint | ( | ) |
Obtain the endpoint host name.
Definition at line 142 of file XrdSsiRequest.cc.
const char * XrdSsiRequest::GetMetadata | ( | int & | dlen | ) |
Obtain the metadata associated with a response.
Note: This method locks the object's recursive mutex.
dlen | holds the length of the metadata after the call. |
Definition at line 153 of file XrdSsiRequest.cc.
References XrdSsiRespInfo::mdata, and XrdSsiRespInfo::mdlen.
|
pure virtual |
Obtain the request data sent by a client.
This method is duplicated in XrdSsiResponder to allow calling consistency.
dlen | holds the length of the request after the call. |
Implemented in XrdSsiFileReq.
Referenced by XrdSsiResponder::GetRequest(), and XrdSsiTaskReal::SendRequest().
|
inline |
Get the request ID established at object creation time.
Definition at line 147 of file XrdSsiRequest.hh.
Referenced by XrdSsiTaskReal::RequestID().
void XrdSsiRequest::GetResponseData | ( | char * | buff, |
int | blen | ||
) |
Asynchronously obtain response data. This is a helper method that allows a client to deal with a passive stream response. This method also handles data response, albeit inefficiently by copying the data response. However, this allows for uniform response processing regardless of response type.
buff | pointer to the buffer to receive the data. The buffer must remain valid until ProcessResponseData() is called. |
blen | the length of the buffer (i.e. maximum that can be returned). |
Definition at line 164 of file XrdSsiRequest.cc.
References ENODATA, XrdSsiRespInfo::isData, XrdSsiRespInfo::isStream, ProcessResponseData(), XrdSsiRespInfo::rType, and XrdSsiErrInfo::Set().
|
inline |
Get timeout for initiating the request.
Definition at line 168 of file XrdSsiRequest.hh.
Referenced by XrdSsiSessReal::Provision().
|
pure virtual |
Notify request that a response is ready to be processed. This method must be supplied by the request object's implementation.
eInfo | Error information. You can check if an error occurred using eInfo.hasError() or eInfo.isOK(). |
rInfo | Raw response information. |
Implemented in XrdSsiFileReq.
|
inlinevirtual |
Handle incoming async stream data or error. This method is called by a stream object after a successful GetResponseData() or an asynchronous stream SetBuff() call.
eInfo | Error information. You can check if an error occurred using eInfo.hasError() or eInfo.isOK(). |
buff | Pointer to the buffer given to XrdSsiStream::SetBuff(). |
blen | The number of bytes in buff or an error indication if blen < 0. |
last | true This is the last stream segment, no more data remains. false More data may remain in the stream. |
Definition at line 198 of file XrdSsiRequest.hh.
Referenced by GetResponseData().
void XrdSsiRequest::ReleaseRequestBuffer | ( | ) |
Release the request buffer of the request bound to this object. This method duplicates the protected method RelRequestBuffer() and exists here for calling safety and consistency relative to the responder.
Definition at line 187 of file XrdSsiRequest.cc.
References RelRequestBuffer().
Referenced by XrdSsiResponder::ReleaseRequestBuffer().
|
inlineprotectedvirtual |
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 in XrdSsiFileReq.
Definition at line 251 of file XrdSsiRequest.hh.
Referenced by ReleaseRequestBuffer().
|
inlineprotected |
Set the detached request time to live value.
By default, requests are executed in the foreground (i.e. during its execution, if the TCP connection drops, the request is automatically cancelled. When a non-zero time to live is set, the request is executed in the background (i.e. detached) and no persistent TCP connection is required. You must use the XrdSsiService::Attach() method to foreground such a request within the number of seconds specified for dttl or the request is automatically cancelled. The value must be set before passing the request to XrdSsiService::ProcessRequest(). Once the request is started, a request handle is returned which can be passed to XrdSsiService::Attach().
dttl | The detach time to live value. |
Definition at line 269 of file XrdSsiRequest.hh.
|
protected |
Set request retry notification. If a non-default value is desired, it must be set prior to calling XrdSsiService::ProcessRequest(). This is a one-time request and retry mode is turned off in the request object afterwards.
onoff | True to turn retry on and false to turn it off. |
Definition at line 197 of file XrdSsiRequest.cc.
|
inlineprotected |
Set timeout for initiating the request. If a non-default value is desired, it must be set prior to calling XrdSsiService::ProcessRequest().
tmo | The timeout value. |
Definition at line 288 of file XrdSsiRequest.hh.
|
friend |
Definition at line 73 of file XrdSsiRequest.hh.
|
friend |
Definition at line 74 of file XrdSsiRequest.hh.