42 const char *XrdXrootdPgwCtl::TraceID =
"pgwCtl";
70 for (
int i = 0; i <
maxIOVN; i += 2)
71 {ioVec[i ].iov_base = csP++;
73 ioVec[i+1].iov_len = pgPageSize;
94 ioVec[1].iov_base = dataBuff;
95 ioVec[1].iov_len = pgPageSize;
99 if (iovRem > iovNum) iovRem -= iovNum;
100 else {iovNum = iovRem;
103 {ioVec[iovNum-1].iov_len = endLen;
111 iovLen = ioVec[iovNum-1].iov_len + (n*
crcSZ);
112 if (n > 1) iovLen += (n-1)*pgPageSize;
131 {ioVec[fixSRD].iov_len = pgPageSize;
147 if (!iovMax)
return "PgwCtl logic error detected; buffer is too small";
153 if (buffP->
buff != dataBuff || buffP->
bsize != dataBLen)
155 dP = dataBuff = buffP->
buff; dataBLen = buffP->
bsize;
156 for (
int i = 1; i < iovMax; i +=2)
157 {ioVec[i].iov_base = dP;
165 ioVec[1].iov_len = layout.
fLen;
172 iovLen = layout.
fLen + ((iovMax/2-1)*pgPageSize) + (iovMax/2*
crcSZ);
173 endLen = layout.
lLen;
179 {ioVec[iovNum-1].iov_len = layout.
lLen;
184 lenLeft = layout.
sockLen - iovLen;
struct ServerResponseBody_Status bdy
off_t bOffset
Buffer offset to apply iov[1].iov_base.
int fLen
Length to use for iov[1].iov_len.
int sockLen
Total number of network bytes the iovec will handle.
const char * eWhy
Reason for failure when zero is returned.
int lLen
Length to use for iov[csnum*2-1].iov_len)
static int recvLayout(Layout &layout, off_t offs, int dlen, int bsz=0)
Compute the layout for an iovec that receives network bytes applying.
ServerResponseStatus resp
static const int maxBSize
const char * Setup(XrdBuffer *buffP, kXR_int64 fOffs, int totlen)
ServerResponseBody_pgWrite info
static const int kXR_pgPageSZ