![]() |
MAK RTIspy API Documentation for HLA Evolved
|
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