X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;ds=sidebyside;f=src%2Flib%2Fplatform%2Futil%2Fbuffer.h;h=8777661df1c4e6942f937905126b868c2d2cce1f;hb=46dfe6c479beeded3b4df937567ff93ec94cc0a8;hp=ce6029c622cda793261f8de667e1cdc2af5c2ebc;hpb=b492c10e731625d7c000654de2372b54339f7c8d;p=deb_libcec.git diff --git a/src/lib/platform/util/buffer.h b/src/lib/platform/util/buffer.h index ce6029c..8777661 100644 --- a/src/lib/platform/util/buffer.h +++ b/src/lib/platform/util/buffer.h @@ -40,24 +40,32 @@ namespace PLATFORM struct SyncedBuffer { public: - SyncedBuffer(size_t iMaxSize = 100) - { - m_maxSize = iMaxSize; - } + SyncedBuffer(size_t iMaxSize = 100) : + m_maxSize(iMaxSize) {} virtual ~SyncedBuffer(void) { - CLockObject lock(m_mutex, true); Clear(); } void Clear(void) { + CLockObject lock(m_mutex); while (!m_buffer.empty()) m_buffer.pop(); } - size_t Size(void) const { return m_buffer.size(); } + size_t Size(void) + { + CLockObject lock(m_mutex); + return m_buffer.size(); + } + + bool IsEmpty(void) + { + CLockObject lock(m_mutex); + return m_buffer.empty(); + } bool Push(_BType entry) { @@ -82,6 +90,18 @@ namespace PLATFORM return bReturn; } + bool Peek(_BType &entry) + { + bool bReturn(false); + CLockObject lock(m_mutex); + if (!m_buffer.empty()) + { + entry = m_buffer.front(); + bReturn = true; + } + return bReturn; + } + private: size_t m_maxSize; std::queue<_BType> m_buffer;