38#define SSI_VAL_RESPONSE spMutex.Lock();\
40 {spMutex.UnLock(); return notActive;}\
41 reqP->rrMutex->Lock();\
42 if (reqP->theRespond != this)\
43 {reqP->rrMutex->UnLock(); spMutex.UnLock();\
46 if (reqP->Resp.rType)\
47 {reqP->rrMutex->UnLock(); spMutex.UnLock();\
51#define SSI_XEQ_RESPONSE if (reqP->onClient)\
52 {XrdSsiRequest *rX = reqP;\
53 reqP->rrMutex->UnLock(); spMutex.UnLock();\
54 return (rX->ProcessResponse(rX->errInfo,rX->Resp)\
55 ? wasPosted : notActive);\
57 bool isOK = reqP->ProcessResponse(reqP->errInfo,\
59 reqP->rrMutex->UnLock(); spMutex.UnLock();\
60 return (isOK ? wasPosted : notActive);\
98 rsvd1(0), rsvd2(0), rsvd3(0)
117 {reqP->rrMutex->Lock();
118 if (reqP->theRespond ==
this)
119 {reqP->theRespond = &ForceUnBind;
120 reqP->rrMutex->UnLock();
121 }
else if (reqP->theRespond == 0)
122 {reqP->rrMutex->UnLock();
142 if (reqP) reqP->Alert(aMsg);
156 rqstR.rrMutex->
Lock();
158 rqstR.theRespond =
this;
185 if (reqP)
return reqP->GetRequest(dlen);
201 if (reqP) reqP->ReleaseRequestBuffer();
218 reqP->rrMutex->Lock();
219 reqP->Resp.mdata = buff;
220 reqP->Resp.mdlen = blen;
221 reqP->rrMutex->UnLock();
239 reqP->errInfo.Set(
eMsg, eNum);
240 reqP->Resp.eMsg = reqP->errInfo.Get(reqP->Resp.eNum).c_str();
261 reqP->Resp.buff = buff;
262 reqP->Resp.blen = blen;
281 reqP->Resp.fdnum = fdnum;
282 reqP->Resp.fsize = fsize;
302 reqP->Resp.strmP = strmP;
320 if (!reqP)
return false;
324 reqP->rrMutex->Lock();
325 if (reqP->theRespond != 0)
326 {reqP->rrMutex->UnLock();
332 reqP->rrMutex->UnLock();
void Clr()
Reset and clear error information.
static void Dispose(XrdSsiRequest &reqR)
virtual void RecycleMsg(bool sent=true)=0
char * GetRequest(int &dlen)
Status SetResponse(const char *buff, int blen)
void BindRequest(XrdSsiRequest &rqstR)
Status SetErrResponse(const char *eMsg, int eNum)
Status SetMetadata(const char *buff, int blen)
virtual ~XrdSsiResponder()
void ReleaseRequestBuffer()
@ wasPosted
Success: The response was successfully posted.
static const int MaxMetaDataSZ
2MB metadata limit
void Alert(XrdSsiRespInfoMsg &aMsg)
friend class XrdSsiRequest