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 +
" : ";
XrdCl::XRootDStatus ToXRootDStatus(int rc, const std::string &func)
Definition: XrdClZipCache.hh:202
void Output(const read_args_t &rdreq)
Definition: XrdClZipCache.hh:132
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:224
resp_queue_t rdrsps
Definition: XrdClZipCache.hh:225
const uint16_t errUnknown
Unknown error.
Definition: XrdClStatus.hh:50
std::vector< char > buffer_t
Definition: XrdClZipCache.hh:58
z_stream strm
Definition: XrdClZipCache.hh:220
std::tuple< XRootDStatus, uint64_t, buffer_t > read_resp_t
Definition: XrdClZipCache.hh:63
bool operator()(const read_resp_t &lhs, const read_resp_t &rhs) const
Definition: XrdClZipCache.hh:67
void Decompress()
Definition: XrdClZipCache.hh:143
bool HasInput() const
Definition: XrdClZipCache.hh:115
XrdCl::XRootDStatus status
Definition: XrdClZipCache.hh:48
void CallHandler(const XRootDStatus &st)
Definition: XrdClZipCache.hh:187
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
An exception for carrying the XRootDStatus of InflCache.
Definition: XrdClZipCache.hh:42
uint64_t inabsoff
Definition: XrdClZipCache.hh:223
bool Consecutive(const read_resp_t &resp) const
Definition: XrdClZipCache.hh:138
const uint16_t suContinue
Definition: XrdClStatus.hh:39
void QueueRsp(const XRootDStatus &st, uint64_t offset, buffer_t &&buffer)
Definition: XrdClZipCache.hh:106
Handle an async response.
Definition: XrdClXRootDResponses.hh:1116
virtual void HandleResponse(XRootDStatus *status, AnyObject *response)
Definition: XrdClXRootDResponses.hh:1146
ZipCache()
Definition: XrdClZipCache.hh:77
void QueueReq(uint64_t offset, uint32_t length, void *buffer, ResponseHandler *handler)
Definition: XrdClZipCache.hh:99
bool HasOutput() const
Definition: XrdClZipCache.hh:120
const uint16_t errInternal
Internal error.
Definition: XrdClStatus.hh:56
ZipError(const XrdCl::XRootDStatus &status)
Definition: XrdClZipCache.hh:44
void Input(const read_resp_t &rdrsp)
Definition: XrdClZipCache.hh:125
std::mutex mtx
Definition: XrdClZipCache.hh:222
std::tuple< uint64_t, uint32_t, void *, ResponseHandler * > read_args_t
Definition: XrdClZipCache.hh:62
Definition: XrdClZipCache.hh:65
bool IsOK() const
We're fine.
Definition: XrdClStatus.hh:123
~ZipCache()
Definition: XrdClZipCache.hh:94
Utility class for inflating a compressed buffer.
Definition: XrdClZipCache.hh:54
static AnyObject * PkgRsp(ChunkInfo *chunk)
Definition: XrdClZipCache.hh:179