MAK RTIspy API Documentation for HLA Evolved
vlThreadSafeBufferQueue.h
Go to the documentation of this file.
00001 /*******************************************************************************
00002 ** Copyright (c) 2005 MaK Technologies, Inc.
00003 ** All rights reserved.
00004 *******************************************************************************/
00005 /*******************************************************************************
00006 ** $RCSfile: vlThreadSafeBufferQueue.h,v $ $Revision: 1.3 $ $State: Exp $
00007 *******************************************************************************/
00008 
00011 
00012 #ifndef DtThreadSafeBufferQueue_H_
00013 #define DtThreadSafeBufferQueue_H_
00014 
00015 #include <vlutil/vlMutex.h>
00016 #include <deque>
00017 
00018 
00029 template< class T >
00030 class DtThreadSafeBufferQueue
00031 {
00032 public:
00033 
00034    typedef std::vector<T>      Buffer;
00035    typedef std::deque<Buffer*> BufferQueue; 
00036    
00038    DtThreadSafeBufferQueue( unsigned int initialBufferSize = 1000,
00039                             unsigned int initialBufferCount = 10 );
00040 
00042    virtual ~DtThreadSafeBufferQueue();
00043 
00045    virtual inline void push( const T* buff, unsigned int size );
00046 
00048    virtual inline void push( Buffer buff );
00049 
00053    virtual inline std::auto_ptr< Buffer > pop();
00054 
00056    virtual inline void releaseBuffer( std::auto_ptr< Buffer > buff );
00057    
00058    virtual inline size_t size() const;
00059 
00060 protected:
00061 
00063    BufferQueue myQueue;
00064    BufferQueue myFreeBuffers;
00065    
00067    mutable MAKRti::DtMutex myLock;
00068    
00069 };
00070 
00072 #define DtThreadSafeBufferQueue_Inl_
00073 #include "vlThreadSafeBufferQueue.inl"
00074 #undef DtThreadSafeBufferQueue_Inl_
00075    
00076 #endif //! DtThreadSafeBufferQueue_H_
00077 
00078 
00079 

Document ID: Generated on Thu Jun 14 14:15:04 EDT 2012 from SVN revision 116116
Copyright © 2005-2012 VT MÄK Inc. All Rights Reserved (www.mak.com)