32 #include <sys/types.h>
74 void DoIt() {myMutex.Lock();
75 if ( isActive) SetErrResponse(eTxt, eNum);
76 if (!isActive)
delete this;
77 else {isActive =
false;
87 if (!isActive)
delete this;
88 else {isActive =
false;
95 reqP(rP), eTxt(
emsg), eNum(
ec), isActive(true)
101 if (eTxt) free(eTxt);
119 static char hv[] =
"0123456789abcdef";
126 strcpy(xbuff,
"...");
140 if (ilen*2 < olen) *xbuff = 0;
141 else {ilen = (olen-1)/2;
142 strcpy(xbuff,
"...");
147 for (
int i = 0; i < ilen; i++) {
148 *oP++ = hv[(ibuff[i] >> 4) & 0x0f];
149 *oP++ = hv[ ibuff[i] & 0x0f];
169 if (ecode < 0) ecode = -ecode;
170 if (!path) path =
"???";
182 eDest.setErrInfo(ecode, buffer);
198 return MapErr(Status.
errNo);
203 eText = Status.
ToStr();
204 return (Status.
errNo ? Status.
errNo : EFAULT);
static XrdSysError eDest(0,"crypto_")
int emsg(int rc, char *msg)
virtual void Finished(XrdSsiRequest &rqstR, const XrdSsiRespInfo &rInfo, bool cancel=false)
PostError(XrdSsiRequest *rP, char *emsg, int ec)
static int mapError(int rc)
const std::string & GetErrorMessage() const
Get error message.
std::string ToStr() const
Convert to string.
static int Format(char *buff, int blen, int ecode, const char *etxt1, const char *etxt2=0)
void Schedule(XrdJob *jp)
void Set(const char *eMsg=0, int eNum=0, int eArg=0)
static void SetMutex(XrdSsiRequest *rP, XrdSsiMutex *mP)
static int GetErr(XrdCl::XRootDStatus &Status, std::string &eText)
static int Emsg(const char *pfx, int ecode, const char *op, const char *path, XrdOucErrInfo &eDest)
static char * b2x(const char *ibuff, int ilen, char *obuff, int olen, char xbuff[4])
static void RetErr(XrdSsiRequest &reqP, const char *eTxt, int eNum)
static int MapErr(int xEnum)
static void SetErr(XrdCl::XRootDStatus &Status, XrdSsiErrInfo &eInfo)
int Emsg(const char *esfx, int ecode, const char *text1, const char *text2=0)
const uint16_t errErrorResponse
uint16_t code
Error type, or additional hints on what to do.
uint32_t errNo
Errno, if any.