19 #ifndef SRC_XRDCL_XRDCLASYNCVECTORREADER_HH_
20 #define SRC_XRDCL_XRDCLASYNCVECTORREADER_HH_
78 this->
chstatus.resize( chunks->size() );
119 log->
Error(
XRootDMsg,
"[%s] ReadRawReadV: No enough data to read "
120 "another chunk header. Discarding %d bytes.",
130 char *buff =
reinterpret_cast<char*
>( &
rdlst );
151 bool chfound =
false;
152 for(
size_t i = 0; i <
chunks->size(); ++i )
155 ( *chunks )[i].length == uint32_t(
rdlst.
rlen ) )
169 log->
Error(
XRootDMsg,
"[%s] ReadRawReadV: Impossible to find chunk "
170 "buffer corresponding to %d bytes at %ld",
173 log->
Dump(
XRootDMsg,
"[%s] ReadRawReadV: Discarding %d bytes",
195 log->
Error(
XRootDMsg,
"[%s] ReadRawReadV: Malformed chunk header: "
196 "reading %d bytes from message would cross the message "
197 "boundary, discarding %d bytes.",
url.
GetHostId().c_str(),
208 char *buff =
static_cast<char*
>( ( *chunks )[
chidx].buffer );
218 log->
Dump(
XRootDMsg,
"[%s] ReadRawReadV: read buffer for chunk %d@%ld",
301 for( uint32_t i = 0; i <
chunks->size(); ++i )
305 ptr->GetChunks().emplace_back( ( *
chunks )[i].offset,
307 size += ( *chunks )[i].length;
309 ptr->SetSize( size );
310 info = ptr.release();
323 while( toBeRead > 0 )
326 Status status = socket.
Read( buffer + shift, toBeRead, btsRead );
331 bytesRead += btsRead;
const uint16_t errInvalidResponse
Definition: XrdClStatus.hh:99
kXR_int64 offset
Definition: XProtocol.hh:656
const uint16_t stOK
Everything went OK.
Definition: XrdClStatus.hh:31
std::vector< ChunkInfo > ChunkList
List of chunks.
Definition: XrdClXRootDResponses.hh:1046
Definition: XProtocol.hh:653
readahead_list rdlst
Definition: XrdClAsyncVectorReader.hh:385
void Warning(uint64_t topic, const char *format,...)
Report a warning.
Status GetVectorReadInfo(VectorReadInfo *&info)
Definition: XrdClAsyncVectorReader.hh:294
const uint16_t suDone
Definition: XrdClStatus.hh:38
kXR_int32 rlen
Definition: XProtocol.hh:655
size_t chlen
Definition: XrdClAsyncVectorReader.hh:382
uint16_t code
Error type, or additional hints on what to do.
Definition: XrdClStatus.hh:146
Definition: XrdClAsyncVectorReader.hh:341
bool sizeerr
Definition: XrdClAsyncVectorReader.hh:344
XRootDStatus Read(Socket &socket, uint32_t &btsret)
Definition: XrdClAsyncVectorReader.hh:88
void Dump(uint64_t topic, const char *format,...)
Print a dump message.
Procedure execution status.
Definition: XrdClStatus.hh:113
const uint64_t XRootDMsg
Definition: XrdClConstants.hh:39
Definition: XrdClAsyncVectorReader.hh:360
static Log * GetLog()
Get default log.
buffer_t discardbuff
Definition: XrdClAsyncVectorReader.hh:388
uint32_t totalbtsrd
Definition: XrdClAsyncVectorReader.hh:378
Object for reading out data from the VectorRead response.
Definition: XrdClAsyncVectorReader.hh:32
const uint16_t stFatal
Fatal error, it's still an error.
Definition: XrdClStatus.hh:33
Stage
Stages of reading out a response from the socket.
Definition: XrdClAsyncVectorReader.hh:356
size_t rdlstlen
Definition: XrdClAsyncVectorReader.hh:386
Request status.
Definition: XrdClXRootDResponses.hh:218
Stage readstage
Definition: XrdClAsyncVectorReader.hh:368
bool done
Definition: XrdClAsyncVectorReader.hh:345
virtual ~AsyncVectorReader()
Destructor.
Definition: XrdClAsyncVectorReader.hh:58
Status ReadBytesAsync(Socket &socket, char *buffer, uint32_t toBeRead, uint32_t &bytesRead)
Definition: XrdClAsyncVectorReader.hh:320
std::string GetHostId() const
Get the host part of the URL (user:password@host:port)
Definition: XrdClURL.hh:94
AsyncVectorReader(const URL &url)
Definition: XrdClAsyncVectorReader.hh:40
size_t choff
Definition: XrdClAsyncVectorReader.hh:381
ChunkList * chunks
Definition: XrdClAsyncVectorReader.hh:375
Definition: XrdClAsyncVectorReader.hh:362
size_t rdlstoff
Definition: XrdClAsyncVectorReader.hh:384
std::vector< char > buffer_t
Definition: XrdClAsyncVectorReader.hh:351
ChunkStatus()
Definition: XrdClAsyncVectorReader.hh:343
Vector read info.
Definition: XrdClXRootDResponses.hh:1051
URL representation.
Definition: XrdClURL.hh:30
void Error(uint64_t topic, const char *format,...)
Report an error.
uint32_t dlen
Definition: XrdClAsyncVectorReader.hh:377
Definition: XrdClAsyncVectorReader.hh:359
Definition: XrdClAsyncVectorReader.hh:361
size_t chidx
Definition: XrdClAsyncVectorReader.hh:380
const uint16_t suRetry
Definition: XrdClStatus.hh:40
const URL & url
Definition: XrdClAsyncVectorReader.hh:373
XRootDStatus Read(char *buffer, size_t size, int &bytesRead)
bool IsOK() const
We're fine.
Definition: XrdClStatus.hh:123
void SetDataLength(int dlen)
Sets response data length.
Definition: XrdClAsyncVectorReader.hh:65
void SetChunkList(ChunkList *chunks)
Sets the chunk list with user buffers.
Definition: XrdClAsyncVectorReader.hh:75
A network socket.
Definition: XrdClSocket.hh:42
Handle diagnostics.
Definition: XrdClLog.hh:100
std::vector< ChunkStatus > chstatus
Definition: XrdClAsyncVectorReader.hh:376
Definition: XrdClAsyncVectorReader.hh:358