Tervel  1.0.0
A collection of wait-free containers and algorithms.
Public Member Functions | Public Attributes | Static Public Attributes | List of all members
tervel::containers::wf::RingBuffer< T >::BufferOp Class Referenceabstract

#include <ring_buffer_op.h>

Inheritance diagram for tervel::containers::wf::RingBuffer< T >::BufferOp:
tervel::util::OpRecord tervel::util::memory::hp::Element tervel::containers::wf::RingBuffer< T >::DequeueOp< T > tervel::containers::wf::RingBuffer< T >::EnqueueOp< T >

Public Member Functions

 BufferOp (RingBuffer< T > *rb)
 
 ~BufferOp ()
 
virtual void * associate (Helper *h)=0
 
bool privAssociate (Helper *h)
 
bool valid (Helper *h)
 
void fail ()
 
bool isFail (Helper *&h)
 
HelpergetHelper ()
 
bool notDone ()
 
 DISALLOW_COPY_AND_ASSIGN (BufferOp)
 
- Public Member Functions inherited from tervel::util::OpRecord
 OpRecord ()
 
virtual void help_complete ()=0
 Implementations of this function that upon its return the operation described in the OpRecord has been completed. More...
 
bool on_watch (std::atomic< void * > *address, void *expected)
 This function is used to achieve a strong watch on an Element. More...
 
bool on_is_watched ()
 This function is used to check a strong watch on an Element. More...
 
void on_unwatch ()
 This function is used to remove a strong watch on an Element. More...
 
- Public Member Functions inherited from tervel::util::memory::hp::Element
 Element ()
 
virtual ~Element ()
 
void safe_delete (bool no_check=false, ElementList *const element_list=tervel::tl_thread_info->get_hp_element_list())
 This function is used to free a hazard pointer protected object if it is safe to do so OR add it to a list to be freed later. More...
 

Public Attributes

RingBuffer< T > * rb_
 
std::atomic< Helper * > helper_ {nullptr}
 

Static Public Attributes

static constexpr Helperfail_val_ = reinterpret_cast<Helper *>(0x1L)
 

Constructor & Destructor Documentation

template<typename T>
tervel::containers::wf::RingBuffer< T >::BufferOp::BufferOp ( RingBuffer< T > *  rb)
inline
template<typename T>
tervel::containers::wf::RingBuffer< T >::BufferOp::~BufferOp ( )
inline

Member Function Documentation

template<typename T>
virtual void* tervel::containers::wf::RingBuffer< T >::BufferOp::associate ( Helper h)
pure virtual
template<typename T>
tervel::containers::wf::RingBuffer< T >::BufferOp::DISALLOW_COPY_AND_ASSIGN ( BufferOp  )
template<typename T>
void tervel::containers::wf::RingBuffer< T >::BufferOp::fail ( )
inline
template<typename T>
Helper* tervel::containers::wf::RingBuffer< T >::BufferOp::getHelper ( )
inline
template<typename T>
bool tervel::containers::wf::RingBuffer< T >::BufferOp::isFail ( Helper *&  h)
inline
template<typename T>
bool tervel::containers::wf::RingBuffer< T >::BufferOp::notDone ( )
inline
template<typename T>
bool tervel::containers::wf::RingBuffer< T >::BufferOp::privAssociate ( Helper h)
inline
template<typename T>
bool tervel::containers::wf::RingBuffer< T >::BufferOp::valid ( Helper h)
inline

Member Data Documentation

template<typename T>
constexpr Helper* tervel::containers::wf::RingBuffer< T >::BufferOp::fail_val_ = reinterpret_cast<Helper *>(0x1L)
static
template<typename T>
std::atomic<Helper *> tervel::containers::wf::RingBuffer< T >::BufferOp::helper_ {nullptr}
template<typename T>
RingBuffer<T>* tervel::containers::wf::RingBuffer< T >::BufferOp::rb_

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