298 {
299
300 if( !status->
IsOK() )
301 {
303 delete this;
304 return;
305 }
306
307
308
309 ChunkInfo *chunk = 0;
310 rdresp->Get(chunk);
311
312 std::vector<uint32_t> cksums;
313 if( isChannelEncrypted )
314 {
317 ++nbpages;
318 cksums.reserve( nbpages );
319
320 size_t size = chunk->length;
321 char *buffer = reinterpret_cast<char*>( chunk->buffer );
322
323 for( size_t pg = 0; pg < nbpages; ++pg )
324 {
326 if( pgsize > size ) pgsize = size;
328 cksums.push_back( crcval );
329 buffer += pgsize;
330 size -= pgsize;
331 }
332 }
333
334 PageInfo *pages = new PageInfo(chunk->offset, chunk->length, chunk->buffer, std::move(cksums));
335 delete rdresp;
336 AnyObject *response = new AnyObject();
337 response->Set( pages );
339
340 delete this;
341 }
virtual void HandleResponse(XRootDStatus *status, AnyObject *response)
static uint32_t Calc32C(const void *data, size_t count, uint32_t prevcs=0)
static const int PageSize
bool IsOK() const
We're fine.