25 #ifndef SRC_XRDZIP_XRDZIPINFLCACHE_HH_ 26 #define SRC_XRDZIP_XRDZIPINFLCACHE_HH_ 62 typedef std::tuple<uint64_t, uint32_t, void*, ResponseHandler*>
read_args_t;
63 typedef std::tuple<XRootDStatus, uint64_t, buffer_t>
read_resp_t;
69 return std::get<1>( lhs ) > std::get<1>( rhs );
100 strm.opaque = Z_NULL;
102 strm.next_in = Z_NULL;
104 strm.next_out = Z_NULL;
108 int rc = inflateInit2( &
strm, -MAX_WBITS );
120 std::unique_lock<std::mutex> lck(
mtx );
121 rdreqs.emplace( offset, length, buffer, handler );
127 std::unique_lock<std::mutex> lck(
mtx );
128 rdrsps.emplace( st, offset, std::move( buffer ) );
136 return strm.avail_in != 0;
141 return strm.avail_out != 0;
146 const buffer_t &buffer = std::get<2>( rdrsp );
147 strm.avail_in = buffer.size();
148 strm.next_in = (Bytef*)buffer.data();
153 strm.avail_out = std::get<1>( rdreq );
154 strm.next_out = (Bytef*)std::get<2>( rdreq );
159 return ( std::get<1>( resp ) ==
inabsoff );
179 uInt avail_before =
strm.avail_in;
181 int rc = inflate( &
strm, Z_SYNC_FLUSH );
187 if( !
strm.avail_out )
200 if( !chunk )
return nullptr;
208 if(
rdreqs.empty() )
return;
215 std::get<2>( args ) );
223 std::string msg =
"[zlib] " + func +
" : ";
XrdCl::XRootDStatus ToXRootDStatus(int rc, const std::string &func)
Definition: XrdClZipCache.hh:221
void Output(const read_args_t &rdreq)
Definition: XrdClZipCache.hh:151
Definition: XrdClAnyObject.hh:32
const uint16_t stOK
Everything went OK.
Definition: XrdClStatus.hh:31
const uint16_t errInvalidArgs
Definition: XrdClStatus.hh:58
std::priority_queue< read_resp_t, std::vector< read_resp_t >, greater_read_resp_t > resp_queue_t
Definition: XrdClZipCache.hh:73
std::queue< read_args_t > rdreqs
Definition: XrdClZipCache.hh:243
resp_queue_t rdrsps
Definition: XrdClZipCache.hh:244
const uint16_t errUnknown
Unknown error.
Definition: XrdClStatus.hh:50
bool HasInput() const
Definition: XrdClZipCache.hh:134
bool IsOK() const
We're fine.
Definition: XrdClStatus.hh:122
std::vector< char > buffer_t
Definition: XrdClZipCache.hh:58
z_stream strm
Definition: XrdClZipCache.hh:239
std::tuple< XRootDStatus, uint64_t, buffer_t > read_resp_t
Definition: XrdClZipCache.hh:63
void Decompress()
Definition: XrdClZipCache.hh:162
void HandleResponse(XRootDStatus *status, AnyObject *response)
Definition: XrdClZipCache.hh:83
uint64_t offset
Definition: XrdClZipCache.hh:91
ReadHandler(uint64_t offset, uint32_t length, ZipCache &self)
Definition: XrdClZipCache.hh:79
XrdCl::XRootDStatus status
Definition: XrdClZipCache.hh:48
ZipCache & self
Definition: XrdClZipCache.hh:93
void CallHandler(const XRootDStatus &st)
Definition: XrdClZipCache.hh:206
const uint16_t errDataError
data is corrupted
Definition: XrdClStatus.hh:63
void Set(Type object, bool own=true)
Definition: XrdClAnyObject.hh:59
Describe a data chunk for vector read.
Definition: XrdClXRootDResponses.hh:907
const uint16_t stError
An error occurred that could potentially be retried.
Definition: XrdClStatus.hh:32
Request status.
Definition: XrdClXRootDResponses.hh:218
Definition: XrdClAnyObject.hh:25
An exception for carrying the XRootDStatus of InflCache.
Definition: XrdClZipCache.hh:42
uint64_t inabsoff
Definition: XrdClZipCache.hh:242
Definition: XrdClZipCache.hh:77
const uint16_t suContinue
Definition: XrdClStatus.hh:39
bool HasOutput() const
Definition: XrdClZipCache.hh:139
void QueueRsp(const XRootDStatus &st, uint64_t offset, buffer_t &&buffer)
Definition: XrdClZipCache.hh:125
Handle an async response.
Definition: XrdClXRootDResponses.hh:1040
virtual void HandleResponse(XRootDStatus *status, AnyObject *response)
Definition: XrdClXRootDResponses.hh:1070
ZipCache()
Definition: XrdClZipCache.hh:96
void QueueReq(uint64_t offset, uint32_t length, void *buffer, ResponseHandler *handler)
Definition: XrdClZipCache.hh:118
bool Consecutive(const read_resp_t &resp) const
Definition: XrdClZipCache.hh:157
const uint16_t errInternal
Internal error.
Definition: XrdClStatus.hh:56
ZipError(const XrdCl::XRootDStatus &status)
Definition: XrdClZipCache.hh:44
bool operator()(const read_resp_t &lhs, const read_resp_t &rhs) const
Definition: XrdClZipCache.hh:67
void Input(const read_resp_t &rdrsp)
Definition: XrdClZipCache.hh:144
std::mutex mtx
Definition: XrdClZipCache.hh:241
std::tuple< uint64_t, uint32_t, void *, ResponseHandler * > read_args_t
Definition: XrdClZipCache.hh:62
Definition: XrdClZipCache.hh:65
buffer_t buffer
Definition: XrdClZipCache.hh:92
~ZipCache()
Definition: XrdClZipCache.hh:113
Utility class for inflating a compressed buffer.
Definition: XrdClZipCache.hh:54
static AnyObject * PkgRsp(ChunkInfo *chunk)
Definition: XrdClZipCache.hh:198