#include <XrdCmsParser.hh>
Definition at line 45 of file XrdCmsParser.hh.
◆ XrdCmsParser()
XrdCmsParser::XrdCmsParser |
( |
| ) |
|
Definition at line 254 of file XrdCmsParser.cc.
266 vecArgs[
kYR_mv] = fwdArgB;
269 vecArgs[
kYR_rm] = fwdArgC;
272 vecArgs[
kYR_rm] = fwdArgC;
References XrdCms::kYR_avail, XrdCms::kYR_chmod, XrdCms::kYR_gone, XrdCms::kYR_have, XrdCms::kYR_load, XrdCms::kYR_locate, XrdCms::kYR_login, XrdCms::kYR_mkdir, XrdCms::kYR_mkpath, XrdCms::kYR_mv, XrdCms::kYR_prepadd, XrdCms::kYR_prepdel, XrdCms::kYR_rm, XrdCms::kYR_rmdir, XrdCms::kYR_select, XrdCms::kYR_state, XrdCms::kYR_statfs, XrdCms::kYR_trunc, and XrdCms::kYR_try.
◆ ~XrdCmsParser()
XrdCmsParser::~XrdCmsParser |
( |
| ) |
|
|
inline |
◆ Decode()
Definition at line 291 of file XrdCmsParser.cc.
295 static const int mvsz =
static_cast<int>(
sizeof(
kXR_unt32));
297 int Result, msgval, msglen, dlen = dBuff->
DataLen();
299 const char *Mgr = (Man ? Man :
"?");
300 char *msg, *data = dBuff->
Buffer();
308 if (dlen < mvsz) {msgval = 0; msg = (
char *)
""; msglen = 0;}
309 else {memcpy(&uval, data, mvsz);
310 msgval =
static_cast<int>(ntohl(uval));
311 if (dlen == mvsz) {msg = (
char *)
""; msglen = 0;}
312 else {msg = data+mvsz; msglen = dlen - mvsz;}
320 TRACE(Redirect, Mgr <<
" redirects " <<User <<
" to "
321 <<msg <<
':' <<msgval <<
' ' <<
Path);
324 TRACE(Redirect, Mgr <<
" delays " <<User <<
' ' <<msgval <<
' ' <<
Path);
327 TRACE(Redirect, Mgr <<
" idles " <<User <<
' ' <<msgval <<
' ' <<
Path);
330 TRACE(Redirect, Mgr <<
" sent " <<User <<
" '" <<msg <<
"' " <<
Path);
334 {myBuff->
SetLen(msglen, (msglen ? mvsz : 0));
341 if (msgval) msgval = -
mapError(msgval);
342 TRACE(Redirect, Mgr <<
" gave " <<User <<
" err " <<msgval
343 <<
" '" <<msg <<
"' " <<
Path);
346 msg = (
char *)
"Redirector protocol error";
347 TRACE(Redirect, User <<
" given error msg '"
348 <<msg <<
"' due to " << Mgr <<
' ' <<
Path);
static int mapError(const char *ecode)
XrdOucBuffer * Highjack(int bPsz=0)
void SetLen(int dataL, int dataO=0)
const char * getErrData()
int setErrInfo(int code, const char *emsg)
const char * getErrUser()
static const size_t Max_Error_Len
References XrdOucBuffer::Buffer(), XrdOucBuffer::DataLen(), EPNAME, XrdOucErrInfo::getErrData(), XrdOucErrInfo::getErrUser(), XrdOucBuffer::Highjack(), XrdCms::kYR_data, XrdCms::kYR_error, XrdCms::kYR_redirect, XrdCms::kYR_wait, XrdCms::kYR_waitresp, XrdOucEI::Max_Error_Len, Path, XrdCms::CmsRRHdr::rrCode, XrdOucErrInfo::setErrInfo(), XrdOucBuffer::SetLen(), SFS_DATA, SFS_ERROR, SFS_REDIRECT, SFS_STALL, SFS_STARTED, and TRACE.
Referenced by XrdCmsClientMsg::Reply().
◆ mapError() [1/2]
int XrdCmsParser::mapError |
( |
const char * |
ecode | ) |
|
|
static |
Definition at line 361 of file XrdCmsParser.cc.
363 if (!strcmp(
"ENOENT", ecode))
return ENOENT;
364 if (!strcmp(
"EEXIST", ecode))
return EEXIST;
365 if (!strcmp(
"EPERM", ecode))
return EPERM;
366 if (!strcmp(
"EACCES", ecode))
return EACCES;
367 if (!strcmp(
"EIO", ecode))
return EIO;
368 if (!strcmp(
"ENOMEM", ecode))
return ENOMEM;
369 if (!strcmp(
"ENOSPC", ecode))
return ENOSPC;
370 if (!strcmp(
"ENAMETOOLONG", ecode))
return ENAMETOOLONG;
371 if (!strcmp(
"ENETUNREACH", ecode))
return ENETUNREACH;
372 if (!strcmp(
"ENOTBLK", ecode))
return ENOTBLK;
373 if (!strcmp(
"EISDIR", ecode))
return EISDIR;
◆ mapError() [2/2]
int XrdCmsParser::mapError |
( |
int |
ecode | ) |
|
|
static |
Definition at line 377 of file XrdCmsParser.cc.
394 default:
return EINVAL;
References XrdCms::kYR_EACCES, XrdCms::kYR_EIO, XrdCms::kYR_EISDIR, XrdCms::kYR_ENAMETOOLONG, XrdCms::kYR_ENETUNREACH, XrdCms::kYR_ENOENT, XrdCms::kYR_ENOMEM, XrdCms::kYR_ENOSPC, XrdCms::kYR_ENOTBLK, XrdCms::kYR_EPERM, XrdCms::kYR_FSError, XrdCms::kYR_noReplicas, XrdCms::kYR_RWConflict, and XrdCms::kYR_SrvError.
◆ Pack()
int XrdCmsParser::Pack |
( |
int |
rnum, |
|
|
struct iovec * |
iovP, |
|
|
struct iovec * |
iovE, |
|
|
char * |
Base, |
|
|
char * |
Work |
|
) |
| |
|
static |
Definition at line 402 of file XrdCmsParser.cc.
413 if ((iovcnt =
Pup.
Pack(iovP, iovE, PArgs, Base, Work)))
return iovcnt;
414 else reason =
"too much data for code";
415 else reason =
"invalid request code -";
420 sprintf(buff,
"%d", rnum);
421 Say.Emsg(
"Pack",
"Unable to pack request;", reason, buff);
XrdOucPup XrdCmsParser::Pup & Say
static XrdOucPupArgs * PupArgs(int rnum)
static int Pack(struct iovec **, const char *, unsigned short &buff)
References XrdSysError::Emsg(), and XrdCms::Say.
Referenced by XrdCmsFinderRMT::Forward(), XrdCmsFinderRMT::Locate(), XrdCmsFinderRMT::Prepare(), and XrdCmsFinderRMT::Space().
◆ Parse() [1/2]
int XrdCmsParser::Parse |
( |
int |
rnum, |
|
|
const char * |
Aps, |
|
|
const char * |
Apt, |
|
|
XrdCmsRRData * |
Data |
|
) |
| |
|
inline |
◆ Parse() [2/2]
◆ PupArgs()
◆ Pup
The documentation for this class was generated from the following files: