XRootD
Loading...
Searching...
No Matches
XrdEc::sync_queue< Element > Struct Template Reference

#include <XrdEcUtilities.hh>

Collaboration diagram for XrdEc::sync_queue< Element >:

Classes

struct  wait_interrupted

Public Member Functions

 sync_queue ()
Element dequeue ()
bool dequeue (Element &e)
bool empty ()
void enqueue (Element &&element)
void interrupt ()

Detailed Description

template<typename Element>
struct XrdEc::sync_queue< Element >

Definition at line 168 of file XrdEcUtilities.hh.


Class Documentation

◆ XrdEc::sync_queue::wait_interrupted

struct XrdEc::sync_queue::wait_interrupted
template<typename Element>
struct XrdEc::sync_queue< Element >::wait_interrupted

Definition at line 173 of file XrdEcUtilities.hh.

Collaboration diagram for XrdEc::sync_queue< Element >::wait_interrupted:

Constructor & Destructor Documentation

◆ sync_queue()

template<typename Element>
XrdEc::sync_queue< Element >::sync_queue ( )
inline

Definition at line 178 of file XrdEcUtilities.hh.

178 : interrupted( false )
179 {
180 }

Member Function Documentation

◆ dequeue() [1/2]

template<typename Element>
Element XrdEc::sync_queue< Element >::dequeue ( )
inline

Definition at line 196 of file XrdEcUtilities.hh.

197 {
199 while( elements.empty() )
200 {
201 cv.wait( lck );
202 if( interrupted ) throw wait_interrupted();
203 }
204 Element element = std::move( elements.front() );
205 elements.pop();
206 return element;
207 }

◆ dequeue() [2/2]

template<typename Element>
bool XrdEc::sync_queue< Element >::dequeue ( Element & e)
inline

Definition at line 213 of file XrdEcUtilities.hh.

214 {
216 if( elements.empty() ) return false;
217 e = std::move( elements.front() );
218 elements.pop();
219 return true;
220 }

◆ empty()

template<typename Element>
bool XrdEc::sync_queue< Element >::empty ( )
inline

Definition at line 225 of file XrdEcUtilities.hh.

226 {
228 return elements.empty();
229 }

◆ enqueue()

template<typename Element>
void XrdEc::sync_queue< Element >::enqueue ( Element && element)
inline

Definition at line 185 of file XrdEcUtilities.hh.

186 {
188 elements.push( std::move( element ) );
189 cv.notify_all();
190 }

◆ interrupt()

template<typename Element>
void XrdEc::sync_queue< Element >::interrupt ( )
inline

Definition at line 234 of file XrdEcUtilities.hh.

235 {
236 interrupted = true;
237 cv.notify_all();
238 }

The documentation for this struct was generated from the following file: