UHD  003.005.000-31-stable
Public Member Functions
uhd::transport::bounded_buffer Class Reference

#include <bounded_buffer.hpp>

List of all members.

Public Member Functions

 bounded_buffer (size_t capacity)
UHD_INLINE bool push_with_haste (const elem_type &elem)
UHD_INLINE bool push_with_pop_on_full (const elem_type &elem)
UHD_INLINE void push_with_wait (const elem_type &elem)
UHD_INLINE bool push_with_timed_wait (const elem_type &elem, double timeout)
UHD_INLINE bool pop_with_haste (elem_type &elem)
UHD_INLINE void pop_with_wait (elem_type &elem)
UHD_INLINE bool pop_with_timed_wait (elem_type &elem, double timeout)

Detailed Description

Implement a templated bounded buffer: Used for passing elements between threads in a producer-consumer model. The bounded buffer implemented waits and timed waits with condition variables. The pop operation blocks on the bounded_buffer to become non empty. The push operation blocks on the bounded_buffer to become non full.


Constructor & Destructor Documentation

uhd::transport::bounded_buffer::bounded_buffer ( size_t  capacity) [inline]

Create a new bounded buffer object.

Parameters:
capacitythe bounded_buffer capacity

Member Function Documentation

UHD_INLINE bool uhd::transport::bounded_buffer::pop_with_haste ( elem_type &  elem) [inline]

Pop an element from the bounded buffer immediately. The element will not be popped when the buffer is empty.

Parameters:
elemthe element reference pop to
Returns:
false when the buffer is empty
UHD_INLINE bool uhd::transport::bounded_buffer::pop_with_timed_wait ( elem_type &  elem,
double  timeout 
) [inline]

Pop an element from the bounded_buffer. Wait until the bounded_buffer becomes non-empty or timeout.

Parameters:
elemthe element reference pop to
timeoutthe timeout in seconds
Returns:
false when the operation times out
UHD_INLINE void uhd::transport::bounded_buffer::pop_with_wait ( elem_type &  elem) [inline]

Pop an element from the bounded_buffer. Wait until the bounded_buffer becomes non-empty.

Parameters:
elemthe element reference pop to
UHD_INLINE bool uhd::transport::bounded_buffer::push_with_haste ( const elem_type &  elem) [inline]

Push a new element into the bounded buffer immediately. The element will not be pushed when the buffer is full.

Parameters:
elemthe element reference pop to
Returns:
false when the buffer is full
UHD_INLINE bool uhd::transport::bounded_buffer::push_with_pop_on_full ( const elem_type &  elem) [inline]

Push a new element into the bounded buffer. If the buffer is full prior to the push, make room by poping the oldest element.

Parameters:
elemthe new element to push
Returns:
true if the element fit without popping for space
UHD_INLINE bool uhd::transport::bounded_buffer::push_with_timed_wait ( const elem_type &  elem,
double  timeout 
) [inline]

Push a new element into the bounded_buffer. Wait until the bounded_buffer becomes non-full or timeout.

Parameters:
elemthe new element to push
timeoutthe timeout in seconds
Returns:
false when the operation times out
UHD_INLINE void uhd::transport::bounded_buffer::push_with_wait ( const elem_type &  elem) [inline]

Push a new element into the bounded_buffer. Wait until the bounded_buffer becomes non-full.

Parameters:
elemthe new element to push

The documentation for this class was generated from the following file:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Defines