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();
std::mutex mtx
Definition: XrdOssCsiRanges.hh:50
int nBlockedBy
Definition: XrdOssCsiRanges.hh:49
bool rdonly
Definition: XrdOssCsiRanges.hh:48
off_t end
Definition: XrdOssCsiRanges.hh:47
std::pair< off_t, off_t > trackingsizes_
Definition: XrdOssCsiRanges.hh:95
void SetRange(XrdOssCsiRanges *r, XrdOssCsiRange_s *rp)
Definition: XrdOssCsiRanges.hh:63
XrdOssCsiRange_s * allocList_
Definition: XrdOssCsiRanges.hh:189
Definition: XrdOssCsiRanges.hh:100
XrdOssCsiRanges * r_
Definition: XrdOssCsiRanges.hh:92
const std::pair< off_t, off_t > & getTrackinglens() const
Definition: XrdOssCsiRanges.hh:71
void AddRange(const off_t start, const off_t end, XrdOssCsiRangeGuard &rg, bool rdonly)
Definition: XrdOssCsiRanges.hh:118
std::list< XrdOssCsiRange_s * > ranges_
Definition: XrdOssCsiRanges.hh:188
Definition: XrdOssCsiRanges.hh:44
XrdOssCsiRange_s * rp_
Definition: XrdOssCsiRanges.hh:93
void RecycleRange(XrdOssCsiRange_s *rp)
Definition: XrdOssCsiRanges.hh:202
bool trackinglenlocked_
Definition: XrdOssCsiRanges.hh:96
Definition: XrdOssCsiPages.hh:45
Definition: XrdOssCsiRanges.hh:57
XrdOssCsiPages * pages_
Definition: XrdOssCsiRanges.hh:94
XrdOssCsiRangeGuard()
Definition: XrdOssCsiRanges.hh:60
XrdOssCsiRange_s * AllocRange()
Definition: XrdOssCsiRanges.hh:192
off_t start
Definition: XrdOssCsiRanges.hh:46
XrdOssCsiRanges()
Definition: XrdOssCsiRanges.hh:103
void SetTrackingInfo(XrdOssCsiPages *p, const std::pair< off_t, off_t > &tsizes, bool locked)
Definition: XrdOssCsiRanges.hh:76
std::mutex rmtx_
Definition: XrdOssCsiRanges.hh:187
~XrdOssCsiRanges()
Definition: XrdOssCsiRanges.hh:105
std::condition_variable cv
Definition: XrdOssCsiRanges.hh:51
XrdOssCsiRange_s * next
Definition: XrdOssCsiRanges.hh:52
void RemoveRange(XrdOssCsiRange_s *rp)
Definition: XrdOssCsiRanges.hh:154
void Wait(XrdOssCsiRange_s *rp)
Definition: XrdOssCsiRanges.hh:145