Main Page | Modules | Namespace List | Class Hierarchy | Class List | Directories | File List | Namespace Members | Class Members | File Members

ark::AsyncProducer< T, DestQueuePolicy, ProductDescPolicy, _CreationPolicy > Class Template Reference

#include <AsyncProducer.h>

List of all members.

Public Types

typedef _CreationPolicy< ProductDescPolicy > CreationPolicy
typedef ProductDescPolicy::Description ProductDesc
typedef DestQueuePolicy< T
>::Overflow 
OverflowError

Public Member Functions

 AsyncProducer ()
 ~AsyncProducer ()
virtual void startProduction ()
virtual void stopProduction (bool waitForDone=false)
bool productionLoopOnce ()
void productionLoop ()
virtual T produce (typename boost::add_reference< ProductDesc >::type desc)=0
virtual void whileNotProducing ()
virtual void handleOverflow (OverflowError &err)

Private Types

typedef boost::mutex::scoped_lock scoped_lock

Private Attributes

boost::shared_ptr< boost::thread > _producerThread
boost::mutex _exitProductionMutex
Atomic< bool > _doExitProduction

Static Private Attributes

static const unsigned _timeoutNanos = 10000

template<typename T, template< class > class DestQueuePolicy = ARK_ASYNC_PRODUCER_DEFAULT_DEST_QUEUE_POLICY, class ProductDescPolicy = ARK_ASYNC_PRODUCER_DEFAULT_DESCRIPTION_POLICY, template< class > class _CreationPolicy = ARK_ASYNC_PRODUCER_DEFAULT_CREATION_POLICY>
class ark::AsyncProducer< T, DestQueuePolicy, ProductDescPolicy, _CreationPolicy >


Member Typedef Documentation

template<typename T, template< class > class DestQueuePolicy = ARK_ASYNC_PRODUCER_DEFAULT_DEST_QUEUE_POLICY, class ProductDescPolicy = ARK_ASYNC_PRODUCER_DEFAULT_DESCRIPTION_POLICY, template< class > class _CreationPolicy = ARK_ASYNC_PRODUCER_DEFAULT_CREATION_POLICY>
typedef _CreationPolicy<ProductDescPolicy> ark::AsyncProducer< T, DestQueuePolicy, ProductDescPolicy, _CreationPolicy >::CreationPolicy
 

template<typename T, template< class > class DestQueuePolicy = ARK_ASYNC_PRODUCER_DEFAULT_DEST_QUEUE_POLICY, class ProductDescPolicy = ARK_ASYNC_PRODUCER_DEFAULT_DESCRIPTION_POLICY, template< class > class _CreationPolicy = ARK_ASYNC_PRODUCER_DEFAULT_CREATION_POLICY>
typedef DestQueuePolicy<T>::Overflow ark::AsyncProducer< T, DestQueuePolicy, ProductDescPolicy, _CreationPolicy >::OverflowError
 

template<typename T, template< class > class DestQueuePolicy = ARK_ASYNC_PRODUCER_DEFAULT_DEST_QUEUE_POLICY, class ProductDescPolicy = ARK_ASYNC_PRODUCER_DEFAULT_DESCRIPTION_POLICY, template< class > class _CreationPolicy = ARK_ASYNC_PRODUCER_DEFAULT_CREATION_POLICY>
typedef ProductDescPolicy::Description ark::AsyncProducer< T, DestQueuePolicy, ProductDescPolicy, _CreationPolicy >::ProductDesc
 

template<typename T, template< class > class DestQueuePolicy = ARK_ASYNC_PRODUCER_DEFAULT_DEST_QUEUE_POLICY, class ProductDescPolicy = ARK_ASYNC_PRODUCER_DEFAULT_DESCRIPTION_POLICY, template< class > class _CreationPolicy = ARK_ASYNC_PRODUCER_DEFAULT_CREATION_POLICY>
typedef boost::mutex::scoped_lock ark::AsyncProducer< T, DestQueuePolicy, ProductDescPolicy, _CreationPolicy >::scoped_lock [private]
 


Constructor & Destructor Documentation

template<typename T, template< class > class DestQueuePolicy = ARK_ASYNC_PRODUCER_DEFAULT_DEST_QUEUE_POLICY, class ProductDescPolicy = ARK_ASYNC_PRODUCER_DEFAULT_DESCRIPTION_POLICY, template< class > class _CreationPolicy = ARK_ASYNC_PRODUCER_DEFAULT_CREATION_POLICY>
ark::AsyncProducer< T, DestQueuePolicy, ProductDescPolicy, _CreationPolicy >::AsyncProducer  )  [inline]
 

template<typename T, template< class > class DestQueuePolicy = ARK_ASYNC_PRODUCER_DEFAULT_DEST_QUEUE_POLICY, class ProductDescPolicy = ARK_ASYNC_PRODUCER_DEFAULT_DESCRIPTION_POLICY, template< class > class _CreationPolicy = ARK_ASYNC_PRODUCER_DEFAULT_CREATION_POLICY>
ark::AsyncProducer< T, DestQueuePolicy, ProductDescPolicy, _CreationPolicy >::~AsyncProducer  )  [inline]
 


Member Function Documentation

template<typename T, template< class > class DestQueuePolicy = ARK_ASYNC_PRODUCER_DEFAULT_DEST_QUEUE_POLICY, class ProductDescPolicy = ARK_ASYNC_PRODUCER_DEFAULT_DESCRIPTION_POLICY, template< class > class _CreationPolicy = ARK_ASYNC_PRODUCER_DEFAULT_CREATION_POLICY>
virtual void ark::AsyncProducer< T, DestQueuePolicy, ProductDescPolicy, _CreationPolicy >::handleOverflow OverflowError err  )  [inline, virtual]
 

handleOverflow Handles an overflow in the communication channels. It is highly recommended that you implement this method if your objects of type T do not fully conform to RAII, and you need to release a system handle, or deallocate some memory that would ordinarily be used by the consumer. Otherwise failure could result in resource leaks.

Parameters:
err An error object whose type is defined by the DestQueuePolicy

template<typename T, template< class > class DestQueuePolicy = ARK_ASYNC_PRODUCER_DEFAULT_DEST_QUEUE_POLICY, class ProductDescPolicy = ARK_ASYNC_PRODUCER_DEFAULT_DESCRIPTION_POLICY, template< class > class _CreationPolicy = ARK_ASYNC_PRODUCER_DEFAULT_CREATION_POLICY>
virtual T ark::AsyncProducer< T, DestQueuePolicy, ProductDescPolicy, _CreationPolicy >::produce typename boost::add_reference< ProductDesc >::type  desc  )  [pure virtual]
 

produce Override this to produce something of type T.

Parameters:
desc A description of the object to produce

template<typename T, template< class > class DestQueuePolicy = ARK_ASYNC_PRODUCER_DEFAULT_DEST_QUEUE_POLICY, class ProductDescPolicy = ARK_ASYNC_PRODUCER_DEFAULT_DESCRIPTION_POLICY, template< class > class _CreationPolicy = ARK_ASYNC_PRODUCER_DEFAULT_CREATION_POLICY>
void ark::AsyncProducer< T, DestQueuePolicy, ProductDescPolicy, _CreationPolicy >::productionLoop  )  [inline]
 

productionLoop Runs the production loop continously, until _doExit is true.

See also:
productionLoopOnce()

template<typename T, template< class > class DestQueuePolicy = ARK_ASYNC_PRODUCER_DEFAULT_DEST_QUEUE_POLICY, class ProductDescPolicy = ARK_ASYNC_PRODUCER_DEFAULT_DESCRIPTION_POLICY, template< class > class _CreationPolicy = ARK_ASYNC_PRODUCER_DEFAULT_CREATION_POLICY>
bool ark::AsyncProducer< T, DestQueuePolicy, ProductDescPolicy, _CreationPolicy >::productionLoopOnce  )  [inline]
 

productionLoopOnce Goes through one production iteration, and returns true if it succeeded in producing AND sending a product.

Returns:
True if a product was successfully created and sent
See also:
productionLoop()

template<typename T, template< class > class DestQueuePolicy = ARK_ASYNC_PRODUCER_DEFAULT_DEST_QUEUE_POLICY, class ProductDescPolicy = ARK_ASYNC_PRODUCER_DEFAULT_DESCRIPTION_POLICY, template< class > class _CreationPolicy = ARK_ASYNC_PRODUCER_DEFAULT_CREATION_POLICY>
virtual void ark::AsyncProducer< T, DestQueuePolicy, ProductDescPolicy, _CreationPolicy >::startProduction  )  [inline, virtual]
 

startProduction Starts the producer thread. Always invoke this at the end of a subclasses override.

See also:
stopProduction()

isProducing()

template<typename T, template< class > class DestQueuePolicy = ARK_ASYNC_PRODUCER_DEFAULT_DEST_QUEUE_POLICY, class ProductDescPolicy = ARK_ASYNC_PRODUCER_DEFAULT_DESCRIPTION_POLICY, template< class > class _CreationPolicy = ARK_ASYNC_PRODUCER_DEFAULT_CREATION_POLICY>
virtual void ark::AsyncProducer< T, DestQueuePolicy, ProductDescPolicy, _CreationPolicy >::stopProduction bool  waitForDone = false  )  [inline, virtual]
 

stopProduction Stops the producer thread, waiting until the thread is done if 'waitForDone' is true. Always invoke this at the end of a subclasses override.

See also:
startProduction()

isProducing()

template<typename T, template< class > class DestQueuePolicy = ARK_ASYNC_PRODUCER_DEFAULT_DEST_QUEUE_POLICY, class ProductDescPolicy = ARK_ASYNC_PRODUCER_DEFAULT_DESCRIPTION_POLICY, template< class > class _CreationPolicy = ARK_ASYNC_PRODUCER_DEFAULT_CREATION_POLICY>
virtual void ark::AsyncProducer< T, DestQueuePolicy, ProductDescPolicy, _CreationPolicy >::whileNotProducing  )  [inline, virtual]
 

whileNotProducing Override this if you want to do some work when the production is idle.


Member Data Documentation

template<typename T, template< class > class DestQueuePolicy = ARK_ASYNC_PRODUCER_DEFAULT_DEST_QUEUE_POLICY, class ProductDescPolicy = ARK_ASYNC_PRODUCER_DEFAULT_DESCRIPTION_POLICY, template< class > class _CreationPolicy = ARK_ASYNC_PRODUCER_DEFAULT_CREATION_POLICY>
Atomic<bool> ark::AsyncProducer< T, DestQueuePolicy, ProductDescPolicy, _CreationPolicy >::_doExitProduction [private]
 

template<typename T, template< class > class DestQueuePolicy = ARK_ASYNC_PRODUCER_DEFAULT_DEST_QUEUE_POLICY, class ProductDescPolicy = ARK_ASYNC_PRODUCER_DEFAULT_DESCRIPTION_POLICY, template< class > class _CreationPolicy = ARK_ASYNC_PRODUCER_DEFAULT_CREATION_POLICY>
boost::mutex ark::AsyncProducer< T, DestQueuePolicy, ProductDescPolicy, _CreationPolicy >::_exitProductionMutex [private]
 

template<typename T, template< class > class DestQueuePolicy = ARK_ASYNC_PRODUCER_DEFAULT_DEST_QUEUE_POLICY, class ProductDescPolicy = ARK_ASYNC_PRODUCER_DEFAULT_DESCRIPTION_POLICY, template< class > class _CreationPolicy = ARK_ASYNC_PRODUCER_DEFAULT_CREATION_POLICY>
boost::shared_ptr<boost::thread> ark::AsyncProducer< T, DestQueuePolicy, ProductDescPolicy, _CreationPolicy >::_producerThread [private]
 

template<typename T, template< class > class DestQueuePolicy = ARK_ASYNC_PRODUCER_DEFAULT_DEST_QUEUE_POLICY, class ProductDescPolicy = ARK_ASYNC_PRODUCER_DEFAULT_DESCRIPTION_POLICY, template< class > class _CreationPolicy = ARK_ASYNC_PRODUCER_DEFAULT_CREATION_POLICY>
const unsigned ark::AsyncProducer< T, DestQueuePolicy, ProductDescPolicy, _CreationPolicy >::_timeoutNanos = 10000 [static, private]
 


The documentation for this class was generated from the following file:
Generated on Tue Sep 6 14:54:39 2005 for Arkonnekt Sound by  doxygen 1.4.4