55 int XrdPosixFileRH::numFree = 0;
56 int XrdPosixFileRH::maxFree = 100;
64 void *callDoIt(
void *pp)
87 if ((newCB = freeRH)) {freeRH = newCB->next; numFree--;}
98 newCB->result = xResult;
99 newCB->typeIO = typeIO;
100 newCB->csFrc =
false;
114 if (!(status->
IsOK()))
116 else if (typeIO ==
nonIO) result = 0;
117 else if (typeIO ==
isRead)
119 union {uint32_t ubRead;
int ibRead;};
120 response->
Get(cInfo);
121 ubRead = (cInfo ? cInfo->
length : 0);
126 union {uint32_t ubRead;
int ibRead;};
127 response->
Get(pInfo);
132 {
if (!csFrc || pInfo->
GetCksums().size() != 0 || result <= 0)
134 else {uint64_t offs = pInfo->
GetOffset();
137 (ssize_t)offs, ubRead,
145 if (csVec) {csVec->clear(); csVec = 0;}
173 if (numFree >= maxFree)
delete this;
void Get(Type &object)
Retrieve the object being held.
static void csCalc(const char *data, off_t offs, size_t count, uint32_t *csval)
static XrdPosixFileRH * Alloc(XrdOucCacheIOCB *cbp, XrdPosixFile *fp, long long offs, int xResult, ioType typeIO)
void HandleResponse(XrdCl::XRootDStatus *status, XrdCl::AnyObject *response)
void UpdtSize(size_t newsz)
static int Result(const XrdCl::XRootDStatus &Status, XrdOucECMsg &ecMsg, bool retneg1=false)
void Schedule(XrdJob *jp)
static int Run(pthread_t *, void *(*proc)(void *), void *arg, int opts=0, const char *desc=0)
Describe a data chunk for vector read.
uint32_t length
offset in the file
size_t GetNbRepair()
Get number of repaired pages.
std::vector< uint32_t > & GetCksums()
Get the checksums.
uint32_t GetLength() const
Get the data length.
uint64_t GetOffset() const
Get the offset.
void * GetBuffer()
Get the buffer.
bool IsOK() const
We're fine.