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);\
89 XeqUnBind ForceUnBind;
98 rsvd1(0), rsvd2(0), rsvd3(0)
117 {reqP->rrMutex->
Lock();
118 if (reqP->theRespond ==
this)
119 {reqP->theRespond = &ForceUnBind;
121 }
else if (reqP->theRespond == 0)
142 if (reqP) reqP->
Alert(aMsg);
156 rqstR.rrMutex->
Lock();
158 rqstR.theRespond =
this;
218 reqP->rrMutex->
Lock();
219 reqP->Resp.
mdata = buff;
220 reqP->Resp.
mdlen = blen;
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)
void Clr()
Reset and clear error information.
void Set(const char *eMsg=0, int eNum=0, int eArg=0)
const std::string & Get(int &eNum) const
static void Dispose(XrdSsiRequest &reqR)
virtual void Alert(XrdSsiRespInfoMsg &aMsg)
Send or receive a server generated alert.
void ReleaseRequestBuffer()
virtual char * GetRequest(int &dlen)=0
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.
virtual void Finished(XrdSsiRequest &rqstR, const XrdSsiRespInfo &rInfo, bool cancel=false)=0
static const int MaxMetaDataSZ
2MB metadata limit
void Alert(XrdSsiRespInfoMsg &aMsg)
int mdlen
Metadata length.
const char * mdata
-> Metadata about response.