19 #ifndef SRC_XRDCL_XRDCLASYNCPAGEREADER_HH_
20 #define SRC_XRDCL_XRDCLASYNCPAGEREADER_HH_
29 #include <arpa/inet.h>
51 std::vector<uint32_t> &
digests ) :
63 uint64_t rdoff = chunks.front().offset;
65 for(
auto &ch : chunks )
69 digests.resize( pgcnt );
121 if( !st.IsOK() )
return st;
125 if( st.code ==
suRetry )
return st;
142 value = sysconf(_SC_IOV_MAX);
150 value &= ~uint32_t( 1 );
167 inline void addiov(
char *&buf,
size_t len )
170 iov.back().iov_base = buf;
171 iov.back().iov_len = len;
179 inline void addiov(
char *&buf, uint32_t len, uint32_t &dleft )
181 if( len > dleft ) len = dleft;
201 uint32_t dleft =
dlen;
206 if( dleft > pgspace + dgspace ) dleft = pgspace + dgspace;
224 char* pgbuf =
static_cast<char*
>( ch.
buffer ) +
choff;
228 uint32_t fdglen =
sizeof( uint32_t ) -
dgoff;
229 addiov( dgbuf, fdglen, dleft );
233 addiov( pgbuf, fpglen, dleft );
237 for(
size_t i = 0; i < fullpgs; ++i )
239 addiov( dgbuf,
sizeof( uint32_t ) );
245 uint32_t ldglen =
sizeof( uint32_t );
246 addiov( dgbuf, ldglen, dleft );
255 inline void shift(
void *&buffer,
size_t nbbts )
257 char *buf =
static_cast<char*
>( buffer );
323 if( btsread == 0 )
break;
ServerResponseStatus status
Definition: XProtocol.hh:1300
std::vector< ChunkInfo > ChunkList
List of chunks.
Definition: XrdClXRootDResponses.hh:1046
char * data
Definition: XrdOucIOVec.hh:45
ServerResponseBody_pgRead pgread
Definition: XProtocol.hh:1303
struct ServerResponseBody_Status bdy
Definition: XProtocol.hh:1252
Definition: XProtocol.hh:1298
kXR_int64 offset
Definition: XProtocol.hh:1051
void * buffer
length of the chunk
Definition: XrdClXRootDResponses.hh:941
Definition: XrdOucIOVec.hh:65
kXR_int32 dlen
Definition: XProtocol.hh:1231
static const int PageSize
Definition: XrdSysPageSize.hh:36
Describe a data chunk for vector read.
Definition: XrdClXRootDResponses.hh:907
Request status.
Definition: XrdClXRootDResponses.hh:218
uint64_t offset
Definition: XrdClXRootDResponses.hh:939
union ServerResponseV2::@1 info
const uint16_t suRetry
Definition: XrdClStatus.hh:40
XRootDStatus ReadV(iovec *iov, int iocnt, int &bytesRead)
static int csNum(off_t offs, int count)
Compute the required size of a checksum vector based on offset & length.
A network socket.
Definition: XrdClSocket.hh:42