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;
214 std::get<2>( args ) );
222 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:1037
virtual void HandleResponse(XRootDStatus *status, AnyObject *response)
Definition: XrdClXRootDResponses.hh:1066
Request status.
Definition: XrdClXRootDResponses.hh:215
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:134
XrdCl::XRootDStatus ToXRootDStatus(int rc, const std::string &func)
Definition: XrdClZipCache.hh:220
uint64_t inabsoff
Definition: XrdClZipCache.hh:241
void QueueRsp(const XRootDStatus &st, uint64_t offset, buffer_t &&buffer)
Definition: XrdClZipCache.hh:125
static AnyObject * PkgRsp(ChunkInfo *chunk)
Definition: XrdClZipCache.hh:198
void Output(const read_args_t &rdreq)
Definition: XrdClZipCache.hh:151
bool HasOutput() const
Definition: XrdClZipCache.hh:139
~ZipCache()
Definition: XrdClZipCache.hh:113
bool Consecutive(const read_resp_t &resp) const
Definition: XrdClZipCache.hh:157
std::mutex mtx
Definition: XrdClZipCache.hh:240
std::tuple< XRootDStatus, uint64_t, buffer_t > read_resp_t
Definition: XrdClZipCache.hh:63
ZipCache()
Definition: XrdClZipCache.hh:96
void Decompress()
Definition: XrdClZipCache.hh:162
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:206
void QueueReq(uint64_t offset, uint32_t length, void *buffer, ResponseHandler *handler)
Definition: XrdClZipCache.hh:118
void Input(const read_resp_t &rdrsp)
Definition: XrdClZipCache.hh:144
z_stream strm
Definition: XrdClZipCache.hh:238
std::vector< char > buffer_t
Definition: XrdClZipCache.hh:58
resp_queue_t rdrsps
Definition: XrdClZipCache.hh:243
std::queue< read_args_t > rdreqs
Definition: XrdClZipCache.hh:242
Definition: XrdClAnyObject.hh:26
const uint16_t errUnknown
Unknown error.
Definition: XrdClStatus.hh:49
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:62
const uint16_t errInternal
Internal error.
Definition: XrdClStatus.hh:55
const uint16_t stOK
Everything went OK.
Definition: XrdClStatus.hh:31
const uint16_t errInvalidArgs
Definition: XrdClStatus.hh:57
const uint16_t suContinue
Definition: XrdClStatus.hh:39
Describe a data chunk for vector read.
Definition: XrdClXRootDResponses.hh:904
bool IsOK() const
We're fine.
Definition: XrdClStatus.hh:120
Definition: XrdClZipCache.hh:78
buffer_t buffer
Definition: XrdClZipCache.hh:92
uint64_t offset
Definition: XrdClZipCache.hh:91
void HandleResponse(XRootDStatus *status, AnyObject *response)
Definition: XrdClZipCache.hh:83
ZipCache & self
Definition: XrdClZipCache.hh:93
ReadHandler(uint64_t offset, uint32_t length, ZipCache &self)
Definition: XrdClZipCache.hh:79
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