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 );
83 strm.next_in = Z_NULL;
85 strm.next_out = Z_NULL;
89 int rc = inflateInit2( &
strm, -MAX_WBITS );
101 std::unique_lock<std::mutex> lck(
mtx );
102 rdreqs.emplace( offset, length, buffer, handler );
108 std::unique_lock<std::mutex> lck(
mtx );
109 rdrsps.emplace( st, offset, std::move( buffer ) );
117 return strm.avail_in != 0;
122 return strm.avail_out != 0;
127 const buffer_t &buffer = std::get<2>( rdrsp );
128 strm.avail_in = buffer.size();
129 strm.next_in = (Bytef*)buffer.data();
134 strm.avail_out = std::get<1>( rdreq );
135 strm.next_out = (Bytef*)std::get<2>( rdreq );
140 return ( std::get<1>( resp ) ==
inabsoff );
160 uInt avail_before =
strm.avail_in;
162 int rc = inflate( &
strm, Z_SYNC_FLUSH );
168 if( !
strm.avail_out )
181 if( !chunk )
return nullptr;
189 if(
rdreqs.empty() )
return;
196 std::get<2>( args ) );
204 std::string msg =
"[zlib] " + func +
" : ";
Definition XrdClAnyObject.hh:33
void Set(Type object, bool own=true)
Definition XrdClAnyObject.hh:59
Handle an async response.
Definition XrdClXRootDResponses.hh:1126
virtual void HandleResponse(XRootDStatus *status, AnyObject *response)
Definition XrdClXRootDResponses.hh:1155
Request status.
Definition XrdClXRootDResponses.hh:219
Utility class for inflating a compressed buffer.
Definition XrdClZipCache.hh:55
std::tuple< uint64_t, uint32_t, void *, ResponseHandler * > read_args_t
Definition XrdClZipCache.hh:62
bool HasInput() const
Definition XrdClZipCache.hh:115
XrdCl::XRootDStatus ToXRootDStatus(int rc, const std::string &func)
Definition XrdClZipCache.hh:202
uint64_t inabsoff
Definition XrdClZipCache.hh:223
void QueueRsp(const XRootDStatus &st, uint64_t offset, buffer_t &&buffer)
Definition XrdClZipCache.hh:106
void Output(const read_args_t &rdreq)
Definition XrdClZipCache.hh:132
bool HasOutput() const
Definition XrdClZipCache.hh:120
~ZipCache()
Definition XrdClZipCache.hh:94
bool Consecutive(const read_resp_t &resp) const
Definition XrdClZipCache.hh:138
std::mutex mtx
Definition XrdClZipCache.hh:222
std::tuple< XRootDStatus, uint64_t, buffer_t > read_resp_t
Definition XrdClZipCache.hh:63
ZipCache()
Definition XrdClZipCache.hh:77
void Decompress()
Definition XrdClZipCache.hh:143
std::priority_queue< read_resp_t, std::vector< read_resp_t >, greater_read_resp_t > resp_queue_t
Definition XrdClZipCache.hh:73
void CallHandler(const XRootDStatus &st)
Definition XrdClZipCache.hh:187
void QueueReq(uint64_t offset, uint32_t length, void *buffer, ResponseHandler *handler)
Definition XrdClZipCache.hh:99
void Input(const read_resp_t &rdrsp)
Definition XrdClZipCache.hh:125
z_stream strm
Definition XrdClZipCache.hh:220
std::vector< char > buffer_t
Definition XrdClZipCache.hh:58
resp_queue_t rdrsps
Definition XrdClZipCache.hh:225
static AnyObject * PkgRsp(ChunkInfo *chunk)
Definition XrdClZipCache.hh:179
std::queue< read_args_t > rdreqs
Definition XrdClZipCache.hh:224
Definition XrdClAction.hh:34
const uint16_t errUnknown
Unknown error.
Definition XrdClStatus.hh:50
const uint16_t stError
An error occurred that could potentially be retried.
Definition XrdClStatus.hh:32
const uint16_t errDataError
data is corrupted
Definition XrdClStatus.hh:63
const uint16_t errInternal
Internal error.
Definition XrdClStatus.hh:56
const uint16_t stOK
Everything went OK.
Definition XrdClStatus.hh:31
const uint16_t errInvalidArgs
Definition XrdClStatus.hh:58
const uint16_t suContinue
Definition XrdClStatus.hh:39
Describe a data chunk for vector read.
Definition XrdClXRootDResponses.hh:917
bool IsOK() const
We're fine.
Definition XrdClStatus.hh:124
Definition XrdClZipCache.hh:66
bool operator()(const read_resp_t &lhs, const read_resp_t &rhs) const
Definition XrdClZipCache.hh:67
An exception for carrying the XRootDStatus of InflCache.
Definition XrdClZipCache.hh:43
XrdCl::XRootDStatus status
Definition XrdClZipCache.hh:48
ZipError(const XrdCl::XRootDStatus &status)
Definition XrdClZipCache.hh:44