casa::sdfiller::ProducerConsumerModelContext< DataType, BufferSize > Class Template Reference

implementation of producer consumer model More...

#include <PThreadUtil.h>

List of all members.

Public Types

typedef
ProducerConsumerModelContext
< DataType, BufferSize > 
_Context

Public Member Functions

 ProducerConsumerModelContext (DataType const terminator)
 constructor
 ~ProducerConsumerModelContext ()
 destructor

Static Public Member Functions

static void produce (_Context *context, DataType item)
 production function
static bool consume (_Context *context, DataType *item)
 consumption function return false if no more products available otherwise return true
static void complete_production (_Context *context)
 it should be called when production complete
template<class T >
static void locked_print (T msg, _Context *context)
 utility

Private Member Functions

int lock ()
int unlock ()
int try_lock ()
int producer_wait ()
int producer_signal ()
int consumer_wait ()
int consumer_signal ()
bool buffer_is_full ()
bool buffer_is_empty ()
void producer_next ()
void consumer_next ()
void push_product (DataType item)
void pop_product (DataType *item)

Private Attributes

DataType const end_of_production_
 terminator data (product == end_of_production_) indicates that production is completed.
DataType buffer_ [BufferSize]
ssize_t num_product_in_buffer_
ssize_t producer_index_
ssize_t consumer_index_
Mutex mutex_
PCondition consumer_condition_
PCondition producer_condition_

Detailed Description

template<class DataType, ssize_t BufferSize>
class casa::sdfiller::ProducerConsumerModelContext< DataType, BufferSize >

implementation of producer consumer model

Definition at line 103 of file PThreadUtil.h.


Member Typedef Documentation

template<class DataType , ssize_t BufferSize>
typedef ProducerConsumerModelContext<DataType, BufferSize> casa::sdfiller::ProducerConsumerModelContext< DataType, BufferSize >::_Context

Definition at line 105 of file PThreadUtil.h.


Constructor & Destructor Documentation

template<class DataType , ssize_t BufferSize>
casa::sdfiller::ProducerConsumerModelContext< DataType, BufferSize >::ProducerConsumerModelContext ( DataType const   terminator  )  [inline]

constructor

std::cout << "end_of_production = " << end_of_production_ << std::endl;

Definition at line 160 of file PThreadUtil.h.

template<class DataType , ssize_t BufferSize>
casa::sdfiller::ProducerConsumerModelContext< DataType, BufferSize >::~ProducerConsumerModelContext (  )  [inline]

destructor

Definition at line 168 of file PThreadUtil.h.


Member Function Documentation

template<class DataType , ssize_t BufferSize>
bool casa::sdfiller::ProducerConsumerModelContext< DataType, BufferSize >::buffer_is_empty (  )  [inline, private]
template<class DataType , ssize_t BufferSize>
bool casa::sdfiller::ProducerConsumerModelContext< DataType, BufferSize >::buffer_is_full (  )  [inline, private]
template<class DataType , ssize_t BufferSize>
static void casa::sdfiller::ProducerConsumerModelContext< DataType, BufferSize >::complete_production ( _Context context  )  [inline, static]
template<class DataType , ssize_t BufferSize>
static bool casa::sdfiller::ProducerConsumerModelContext< DataType, BufferSize >::consume ( _Context context,
DataType *  item 
) [inline, static]
template<class DataType , ssize_t BufferSize>
void casa::sdfiller::ProducerConsumerModelContext< DataType, BufferSize >::consumer_next (  )  [inline, private]
template<class DataType , ssize_t BufferSize>
int casa::sdfiller::ProducerConsumerModelContext< DataType, BufferSize >::consumer_signal (  )  [inline, private]
template<class DataType , ssize_t BufferSize>
int casa::sdfiller::ProducerConsumerModelContext< DataType, BufferSize >::consumer_wait (  )  [inline, private]
template<class DataType , ssize_t BufferSize>
int casa::sdfiller::ProducerConsumerModelContext< DataType, BufferSize >::lock (  )  [inline, private]
template<class DataType , ssize_t BufferSize>
template<class T >
static void casa::sdfiller::ProducerConsumerModelContext< DataType, BufferSize >::locked_print ( msg,
_Context context 
) [inline, static]
template<class DataType , ssize_t BufferSize>
void casa::sdfiller::ProducerConsumerModelContext< DataType, BufferSize >::pop_product ( DataType *  item  )  [inline, private]
template<class DataType , ssize_t BufferSize>
static void casa::sdfiller::ProducerConsumerModelContext< DataType, BufferSize >::produce ( _Context context,
DataType  item 
) [inline, static]
template<class DataType , ssize_t BufferSize>
void casa::sdfiller::ProducerConsumerModelContext< DataType, BufferSize >::producer_next (  )  [inline, private]
template<class DataType , ssize_t BufferSize>
int casa::sdfiller::ProducerConsumerModelContext< DataType, BufferSize >::producer_signal (  )  [inline, private]
template<class DataType , ssize_t BufferSize>
int casa::sdfiller::ProducerConsumerModelContext< DataType, BufferSize >::producer_wait (  )  [inline, private]
template<class DataType , ssize_t BufferSize>
void casa::sdfiller::ProducerConsumerModelContext< DataType, BufferSize >::push_product ( DataType  item  )  [inline, private]
template<class DataType , ssize_t BufferSize>
int casa::sdfiller::ProducerConsumerModelContext< DataType, BufferSize >::try_lock (  )  [inline, private]
template<class DataType , ssize_t BufferSize>
int casa::sdfiller::ProducerConsumerModelContext< DataType, BufferSize >::unlock (  )  [inline, private]

Member Data Documentation

template<class DataType , ssize_t BufferSize>
DataType casa::sdfiller::ProducerConsumerModelContext< DataType, BufferSize >::buffer_[BufferSize] [private]
template<class DataType , ssize_t BufferSize>
PCondition casa::sdfiller::ProducerConsumerModelContext< DataType, BufferSize >::consumer_condition_ [private]
template<class DataType , ssize_t BufferSize>
ssize_t casa::sdfiller::ProducerConsumerModelContext< DataType, BufferSize >::consumer_index_ [private]
template<class DataType , ssize_t BufferSize>
DataType const casa::sdfiller::ProducerConsumerModelContext< DataType, BufferSize >::end_of_production_ [private]

terminator data (product == end_of_production_) indicates that production is completed.

Definition at line 239 of file PThreadUtil.h.

Referenced by casa::sdfiller::ProducerConsumerModelContext< DataType, BufferSize >::complete_production(), and casa::sdfiller::ProducerConsumerModelContext< DataType, BufferSize >::consume().

template<class DataType , ssize_t BufferSize>
Mutex casa::sdfiller::ProducerConsumerModelContext< DataType, BufferSize >::mutex_ [private]
template<class DataType , ssize_t BufferSize>
ssize_t casa::sdfiller::ProducerConsumerModelContext< DataType, BufferSize >::num_product_in_buffer_ [private]
template<class DataType , ssize_t BufferSize>
PCondition casa::sdfiller::ProducerConsumerModelContext< DataType, BufferSize >::producer_condition_ [private]
template<class DataType , ssize_t BufferSize>
ssize_t casa::sdfiller::ProducerConsumerModelContext< DataType, BufferSize >::producer_index_ [private]

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

Generated on 31 Aug 2016 for casa by  doxygen 1.6.1