MAK RTIspy API Documentation for HLA 1.3
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
List of all members | Public Types | Public Member Functions | Protected Attributes
DtThreadSafeBufferQueue< T > Class Template Reference

Very simple wrapper that provides thread-safe access to a basic queue of buffers. More...

+ Inheritance diagram for DtThreadSafeBufferQueue< T >:
+ Collaboration diagram for DtThreadSafeBufferQueue< T >:

Public Types

typedef std::vector< T > Buffer
 
typedef std::deque< Buffer * > BufferQueue
 

Public Member Functions

 DtThreadSafeBufferQueue (unsigned int initialBufferSize=1000, unsigned int initialBufferCount=10)
 Ctor. More...
 
virtual ~DtThreadSafeBufferQueue ()
 Dtor. More...
 
virtual void push (const T *buff, unsigned int size)
 Push a copy of a T[] of size elements onto the back of the queue. More...
 
virtual void push (Buffer buff)
 Push a copy of a buffer onto the back of the queue. More...
 
virtual DtUniquePtr< Bufferpop ()
 Pop the next buffer from the front of the queue Popper assumes ownership of popped buffer. More...
 
virtual void releaseBuffer (DtUniquePtr< Buffer > buff)
 Return ownership of a buffer to the Queue for re-use. More...
 
virtual size_t size () const
 

Protected Attributes

BufferQueue myQueue
 Data Members. More...
 
BufferQueue myFreeBuffers
 
MAKRti::DtMutex myLock
 Lock for critical section access. More...
 

Detailed Description

template<class T>
class DtThreadSafeBufferQueue< T >

Very simple wrapper that provides thread-safe access to a basic queue of buffers.

Queue always makes a complete copy of the pushed buffer. Each buffer element must be copyable. Ownership of popped buffers is assumed by the "popper". Popped buffers may be released to return ownership to the Queue for reuse.

Warning
Passing a buffer of pointers will break the Thread-Safety guarantee.
This class is definitely not an STL compliant template and it is
not 100% exception safe (lock may remain locked)

Member Typedef Documentation

template<class T>
typedef std::vector<T> DtThreadSafeBufferQueue< T >::Buffer
template<class T>
typedef std::deque<Buffer*> DtThreadSafeBufferQueue< T >::BufferQueue

Constructor & Destructor Documentation

template<class T>
DtThreadSafeBufferQueue< T >::DtThreadSafeBufferQueue ( unsigned int  initialBufferSize = 1000,
unsigned int  initialBufferCount = 10 
)

Ctor.

template<class T>
virtual DtThreadSafeBufferQueue< T >::~DtThreadSafeBufferQueue ( )
virtual

Dtor.

Member Function Documentation

template<class T>
virtual DtUniquePtr< Buffer > DtThreadSafeBufferQueue< T >::pop ( )
inlinevirtual

Pop the next buffer from the front of the queue Popper assumes ownership of popped buffer.

Returns 0 if queue is empty

template<class T>
virtual void DtThreadSafeBufferQueue< T >::push ( const T *  buff,
unsigned int  size 
)
inlinevirtual

Push a copy of a T[] of size elements onto the back of the queue.

template<class T>
virtual void DtThreadSafeBufferQueue< T >::push ( Buffer  buff)
inlinevirtual

Push a copy of a buffer onto the back of the queue.

template<class T>
virtual void DtThreadSafeBufferQueue< T >::releaseBuffer ( DtUniquePtr< Buffer buff)
inlinevirtual

Return ownership of a buffer to the Queue for re-use.

template<class T>
virtual size_t DtThreadSafeBufferQueue< T >::size ( ) const
inlinevirtual

Member Data Documentation

template<class T>
BufferQueue DtThreadSafeBufferQueue< T >::myFreeBuffers
protected
template<class T>
MAKRti::DtMutex DtThreadSafeBufferQueue< T >::myLock
mutableprotected

Lock for critical section access.

template<class T>
BufferQueue DtThreadSafeBufferQueue< T >::myQueue
protected

Data Members.


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

Document ID: Generated on Wed Jul 8 16:20:32 EDT 2026 from SVN revision 291616
Copyright © 2005-2025 MAK Technologies Inc. All Rights Reserved (www.mak.com)