45 void ToMsgCB(
int iovcnt,
struct iovec *
iov)
50 for (
int i = 2; i < iovcnt; i++) n +=
iov[i].iov_len;
54 for (
int i = 2; i < iovcnt; i++)
55 msg.append((
const char *)
iov[i].iov_base,
iov[i].iov_len);
57 msgCB((
const char *)
iov[1].iov_base, msg.c_str(),
true);
78 const char *fmt1, *fmt2, *fmt3;
83 if (usr) fmt1 =
"%s ";
84 else {usr =
"", fmt1 =
"%s";}
85 if (epn) fmt2 =
"%s_%s: ";
86 else {epn =
""; fmt2 =
"%s%s: ";}
88 else {txt =
""; fmt3 =
"";}
89 sprintf(fmt,
"%s%s%s", fmt1, fmt2, fmt3);
94 n = snprintf(pBuff,
sizeof(pBuff), fmt, usr, iName, epn, txt);
95 if (n >= (
int)
sizeof(pBuff)) n =
sizeof(pBuff)-1;
99 ioVec[0].iov_base = 0; ioVec[0].iov_len = 0;
100 ioVec[1].iov_base = pBuff; ioVec[1].iov_len = n;
123 if (vPnt >= iovMax) vPnt = iovMax-1;
124 ioVec[vPnt] .iov_base = (
char *)
"\n";
125 ioVec[vPnt++].iov_len = 1;
129 if (logP) logP->
Put(vPnt, ioVec);
130 else if (
msgCB) ToMsgCB(vPnt, ioVec);
131 else {
static XrdSysLogger tLog(XrdSysFD_Dup(STDERR_FILENO), 0);
132 tLog.
Put(vPnt, ioVec);
152 {ioVec[vPnt] .iov_base = (
char *)
"True";
153 ioVec[vPnt++].iov_len = 4;
155 ioVec[vPnt] .iov_base = (
char *)
"False";
156 ioVec[vPnt++].iov_len = 5;
168 static char hv[] =
"0123456789abcdef";
172 if (vPnt < iovMax && dFree > 1)
175 {ioVec[vPnt].iov_base = (
char *)(&dBuff[dPnt]);
177 {ioVec[vPnt++].iov_len = 2;
178 dBuff[dPnt++] = hv[(val >> 4) & 0x0f];
179 dBuff[dPnt++] = hv[ val & 0xf0];
181 }
else if (doFmt &
Xrd::oct && dFree > 2) {
182 ioVec[vPnt++].iov_len = 3;
183 dBuff[dPnt+2] = hv[val & 0x07]; val >>= 3;
184 dBuff[dPnt+1] = hv[val & 0x07]; val >>= 3;
185 dBuff[dPnt+1] = hv[val & 0x03];
190 if (doFmt & doOne) doFmt =
Xrd::dec;
192 ioVec[vPnt] .iov_base = (
char *)(&dBuff[dPnt]);
193 ioVec[vPnt++].iov_len = 1;
194 dBuff[dPnt++] = val; dFree--;
210 {ioVec[vPnt] .iov_base = (
char *)val;
211 ioVec[vPnt++].iov_len = strlen(val);
222 return (*
this << val.c_str());
231 static const int xSz =
sizeof(
"-32768");
235 if (dFree >= xSz && vPnt < iovMax)
236 {
const char *fmt = (doFmt ? (doFmt &
Xrd::hex ?
"%hx" :
"%ho") :
"%hd");
237 int n = snprintf(&dBuff[dPnt], dFree, fmt, val);
238 if (n > dFree) dFree = 0;
239 else {ioVec[vPnt] .iov_base = &dBuff[dPnt];
240 ioVec[vPnt++].iov_len = n;
241 dPnt += n; dFree -= n;
244 if (doFmt & doOne) doFmt =
Xrd::dec;
254 static const int xSz =
sizeof(
"-2147483648");
258 if (dFree >= xSz && vPnt < iovMax)
259 {
const char *fmt = (doFmt ? (doFmt &
Xrd::hex ?
"%x" :
"%o") :
"%d");
260 int n = snprintf(&dBuff[dPnt], dFree, fmt, val);
261 if (n > dFree) dFree = 0;
262 else {ioVec[vPnt] .iov_base = &dBuff[dPnt];
263 ioVec[vPnt++].iov_len = n;
264 dPnt += n; dFree -= n;
267 if (doFmt & doOne) doFmt =
Xrd::dec;
280 if (
sizeof(
long) > 4)
return *this<<static_cast<long long>(val);
281 else return *this<<static_cast<int>(val);
290 static const int xSz =
sizeof(
"-9223372036854775808");
294 if (dFree >= xSz && vPnt < iovMax)
295 {
const char *fmt = (doFmt ? (doFmt &
Xrd::hex ?
"%llx" :
"%llo") :
"%lld");
296 int n = snprintf(&dBuff[dPnt], dFree, fmt, val);
297 if (n > dFree) dFree = 0;
298 else {ioVec[vPnt] .iov_base = &dBuff[dPnt];
299 ioVec[vPnt++].iov_len = n;
300 dPnt += n; dFree -= n;
303 if (doFmt & doOne) doFmt =
Xrd::dec;
313 static const int xSz =
sizeof(
"65535");
317 if (dFree >= xSz && vPnt < iovMax)
318 {
const char *fmt = (doFmt ? (doFmt &
Xrd::hex ?
"%hx" :
"%ho") :
"%hu");
319 int n = snprintf(&dBuff[dPnt], dFree, fmt, val);
320 if (n > dFree) dFree = 0;
321 else {ioVec[vPnt] .iov_base = &dBuff[dPnt];
322 ioVec[vPnt++].iov_len = n;
323 dPnt += n; dFree -= n;
326 if (doFmt & doOne) doFmt =
Xrd::dec;
336 static const int xSz =
sizeof(
"4294967295");
340 if (dFree >= xSz && vPnt < iovMax)
341 {
const char *fmt = (doFmt ? (doFmt &
Xrd::hex ?
"%x" :
"%o") :
"%u");
342 int n = snprintf(&dBuff[dPnt], dFree, fmt, val);
343 if (n > dFree) dFree = 0;
344 else {ioVec[vPnt] .iov_base = &dBuff[dPnt];
345 ioVec[vPnt++].iov_len = n;
346 dPnt += n; dFree -= n;
349 if (doFmt & doOne) doFmt =
Xrd::dec;
362 if (
sizeof(
long) > 4)
return *this<<static_cast<unsigned long long>(val);
363 else return *this<<static_cast<unsigned int>(val);
372 static const int xSz =
sizeof(
"18446744073709551615");
376 if (dFree >= xSz && vPnt < iovMax)
377 {
const char *fmt = (doFmt ? (doFmt &
Xrd::hex ?
"%llx" :
"%llo") :
"%llu");
378 int n = snprintf(&dBuff[dPnt], dFree, fmt, val);
379 if (n > dFree) dFree = 0;
380 else {ioVec[vPnt] .iov_base = &dBuff[dPnt];
381 ioVec[vPnt++].iov_len = n;
382 dPnt += n; dFree -= n;
385 if (doFmt & doOne) doFmt =
Xrd::dec;
395 static const int xSz =
sizeof(
void *)*2+1;
399 if (dFree >= xSz && vPnt < iovMax)
400 {
int n = snprintf(&dBuff[dPnt], dFree,
"%p", val);
401 if (n > dFree) dFree = 0;
402 else {ioVec[vPnt] .iov_base = &dBuff[dPnt];
403 ioVec[vPnt++].iov_len = n;
404 dPnt += n; dFree -= n;
426 n = snprintf(tmp,
sizeof(tmp),
"%Lg", val);
430 if (dFree > n && n < (
int)
sizeof(tmp))
431 {ioVec[vPnt] .iov_base = &dBuff[dPnt];
432 ioVec[vPnt++].iov_len = n;
433 strcpy(&dBuff[dPnt], tmp);
434 dPnt += n; dFree -= n;
void Put(int iovcnt, struct iovec *iov)
XrdSysTrace & Beg(const char *usr=0, const char *epn=0, const char *txt=0)
void(* msgCB_t)(const char *tid, const char *msg, bool dbgmsg)
XrdSysTrace & operator<<(bool val)
void SetLogger(XrdSysLogger *logp)
XrdSsiLogger::MCB_t * msgCB