X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Flib%2Futil%2Fbuffer.h;h=ded4001dac43586d92fac960938de629195f6b65;hb=994dbaaa5c1f32810f3b4266caf5d6dd72e21718;hp=4379f8de020e70d3406bdca248a72a422701101c;hpb=825ddb962b0515e1efb06bb10a1cbb74cde803f8;p=deb_libcec.git diff --git a/src/lib/util/buffer.h b/src/lib/util/buffer.h index 4379f8d..ded4001 100644 --- a/src/lib/util/buffer.h +++ b/src/lib/util/buffer.h @@ -31,41 +31,59 @@ * http://www.pulse-eight.net/ */ -#include "threads.h" +#include "../platform/threads.h" #include -template - struct CecBuffer - { - public: - CecBuffer(int iMaxSize = 100) {} - virtual ~CecBuffer(void) {} - - bool Push(_BType entry) +namespace CEC +{ + template + struct CecBuffer { - CLockObject lock(&m_mutex); - if (m_buffer.size() == m_maxSize) - return false; + public: + CecBuffer(unsigned int iMaxSize = 100) + { + m_maxSize = iMaxSize; + } - m_buffer.push(entry); - return true; - } + virtual ~CecBuffer(void) + { + Clear(); + } - bool Pop(_BType &entry) - { - bool bReturn(false); - CLockObject lock(&m_mutex); - if (m_buffer.size() > 0) + void Clear(void) + { + while (!m_buffer.empty()) + m_buffer.pop(); + } + + int Size(void) const { return m_buffer.size(); } + + bool Push(_BType entry) + { + CLockObject lock(&m_mutex); + if (m_buffer.size() == m_maxSize) + return false; + + m_buffer.push(entry); + return true; + } + + bool Pop(_BType &entry) { - entry = m_buffer.front(); - m_buffer.pop(); - bReturn = true; + bool bReturn(false); + CLockObject lock(&m_mutex); + if (!m_buffer.empty()) + { + entry = m_buffer.front(); + m_buffer.pop(); + bReturn = true; + } + return bReturn; } - return bReturn; - } - private: - int m_maxSize; - std::queue<_BType> m_buffer; - CMutex m_mutex; - }; + private: + unsigned int m_maxSize; + std::queue<_BType> m_buffer; + CMutex m_mutex; + }; +};