UHD  003.004.002-0-unknown
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros
Public Member Functions
uhd::transport::bounded_buffer< elem_type > Class Template 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

template<typename elem_type>
class uhd::transport::bounded_buffer< elem_type >

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

template<typename elem_type >
uhd::transport::bounded_buffer< elem_type >::bounded_buffer ( size_t  capacity)
inline

Create a new bounded buffer object.

Parameters:
capacitythe bounded_buffer capacity

Member Function Documentation

template<typename elem_type >
UHD_INLINE bool uhd::transport::bounded_buffer< elem_type >::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
template<typename elem_type >
UHD_INLINE bool uhd::transport::bounded_buffer< elem_type >::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
template<typename elem_type >
UHD_INLINE void uhd::transport::bounded_buffer< elem_type >::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
template<typename elem_type >
UHD_INLINE bool uhd::transport::bounded_buffer< elem_type >::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
template<typename elem_type >
UHD_INLINE bool uhd::transport::bounded_buffer< elem_type >::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
template<typename elem_type >
UHD_INLINE bool uhd::transport::bounded_buffer< elem_type >::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
template<typename elem_type >
UHD_INLINE void uhd::transport::bounded_buffer< elem_type >::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: