25 #ifndef SRC_XRDEC_XRDECUTILITIES_HH_
26 #define SRC_XRDEC_XRDECUTILITIES_HH_
38 #include <condition_variable>
90 IOError(
const IOError &err ) noexcept : st( err.st ), msg( err.st.ToString() )
100 msg = err.st.ToString();
114 virtual const char*
what() const noexcept
167 template<
typename Element>
187 std::unique_lock<std::mutex> lck( mtx );
188 elements.push( std::move( element ) );
198 std::unique_lock<std::mutex> lck( mtx );
199 while( elements.empty() )
204 Element element = std::move( elements.front() );
215 std::unique_lock<std::mutex> lck( mtx );
216 if( elements.empty() )
return false;
217 e = std::move( elements.front() );
227 std::unique_lock<std::mutex> lck( mtx );
228 return elements.empty();
241 std::queue<Element> elements;
243 std::condition_variable cv;
244 std::atomic<bool> interrupted;
251 inline static size_t fntoblk(
const std::string &fn )
253 size_t end = fn.rfind(
'.' );
254 size_t begin = fn.rfind(
'.', end - 1 ) + 1;
255 size_t len = end - begin;
256 return std::stoul( fn.substr( begin, len ) );
Handle an async response.
Generic I/O exception, wraps up XrdCl::XRootDStatus (.
IOError(const IOError &err) noexcept
Copy constructor.
IOError & operator=(const IOError &err) noexcept
Assigment operator.
const XrdCl::XRootDStatus & Status() const
IOError(const XrdCl::XRootDStatus &st) noexcept
virtual ~IOError()
Destructor.
virtual const char * what() const noexcept
overloaded
std::vector< stripe_t > stripes_t
All stripes in a block.
static size_t fntoblk(const std::string &fn)
void ScheduleHandler(uint64_t offset, uint32_t size, void *buffer, XrdCl::ResponseHandler *handler)
std::vector< char > buffer_t
a buffer type
A buffer with stripe data and info on validity.
stripe_t(char *buffer, bool valid)
void enqueue(Element &&element)