1#ifndef _XRDOSSCSIRANGES_H
2#define _XRDOSSCSIRANGES_H
38#include <condition_variable>
51 std::condition_variable
cv;
120 std::unique_lock<std::mutex> lck(
rmtx_);
125 if ((*itr)->start <= end && start <= (*itr)->end)
127 if (!(rdonly && (*itr)->rdonly))
147 std::unique_lock<std::mutex> l(rp->
mtx);
156 std::lock_guard<std::mutex> guard(
rmtx_);
168 if ((*itr)->start <= rp->
end && rp->
start <= (*itr)->end)
170 if (!(rp->
rdonly && (*itr)->rdonly))
172 std::unique_lock<std::mutex> l((*itr)->mtx);
173 (*itr)->nBlockedBy--;
174 if ((*itr)->nBlockedBy == 0)
176 (*itr)->cv.notify_one();
Definition XrdOssCsiPages.hh:47
Definition XrdOssCsiRanges.hh:58
const std::pair< off_t, off_t > & getTrackinglens() const
Definition XrdOssCsiRanges.hh:71
std::pair< off_t, off_t > trackingsizes_
Definition XrdOssCsiRanges.hh:95
XrdOssCsiPages * pages_
Definition XrdOssCsiRanges.hh:94
void SetTrackingInfo(XrdOssCsiPages *p, const std::pair< off_t, off_t > &tsizes, bool locked)
Definition XrdOssCsiRanges.hh:76
XrdOssCsiRange_s * rp_
Definition XrdOssCsiRanges.hh:93
void SetRange(XrdOssCsiRanges *r, XrdOssCsiRange_s *rp)
Definition XrdOssCsiRanges.hh:63
bool trackinglenlocked_
Definition XrdOssCsiRanges.hh:96
XrdOssCsiRangeGuard()
Definition XrdOssCsiRanges.hh:60
XrdOssCsiRanges * r_
Definition XrdOssCsiRanges.hh:92
Definition XrdOssCsiRanges.hh:101
std::mutex rmtx_
Definition XrdOssCsiRanges.hh:187
void Wait(XrdOssCsiRange_s *rp)
Definition XrdOssCsiRanges.hh:145
void RemoveRange(XrdOssCsiRange_s *rp)
Definition XrdOssCsiRanges.hh:154
void AddRange(const off_t start, const off_t end, XrdOssCsiRangeGuard &rg, bool rdonly)
Definition XrdOssCsiRanges.hh:118
~XrdOssCsiRanges()
Definition XrdOssCsiRanges.hh:105
XrdOssCsiRange_s * AllocRange()
Definition XrdOssCsiRanges.hh:192
XrdOssCsiRange_s * allocList_
Definition XrdOssCsiRanges.hh:189
std::list< XrdOssCsiRange_s * > ranges_
Definition XrdOssCsiRanges.hh:188
XrdOssCsiRanges()
Definition XrdOssCsiRanges.hh:103
void RecycleRange(XrdOssCsiRange_s *rp)
Definition XrdOssCsiRanges.hh:202
Definition XrdOssCsiRanges.hh:45
std::mutex mtx
Definition XrdOssCsiRanges.hh:50
bool rdonly
Definition XrdOssCsiRanges.hh:48
int nBlockedBy
Definition XrdOssCsiRanges.hh:49
XrdOssCsiRange_s * next
Definition XrdOssCsiRanges.hh:52
off_t start
Definition XrdOssCsiRanges.hh:46
off_t end
Definition XrdOssCsiRanges.hh:47
std::condition_variable cv
Definition XrdOssCsiRanges.hh:51