X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;ds=sidebyside;f=src%2Flib%2Futil%2Fbuffer.h;h=f284131d2ca1c511ea4932be199603e2435b5dad;hb=b1f5095277970600e999f0ba268b1ea11e778614;hp=299b019d4113c2920c3ab183f7d560545696502f;hpb=abbca718e0f6b5a20170561beeacafa0b5852500;p=deb_libcec.git diff --git a/src/lib/util/buffer.h b/src/lib/util/buffer.h index 299b019..f284131 100644 --- a/src/lib/util/buffer.h +++ b/src/lib/util/buffer.h @@ -31,36 +31,49 @@ * http://www.pulse-eight.net/ */ -#include "threads.h" +#include "../platform/threads.h" #include -template - struct CecBuffer - { - public: - CecBuffer(void) {} - virtual ~CecBuffer(void) {} - - void Push(_BType entry) +namespace CEC +{ + template + struct CecBuffer { - CLockObject lock(&mutex); - buffer.push(entry); - } + public: + CecBuffer(int iMaxSize = 100) + { + m_maxSize = iMaxSize; + } + virtual ~CecBuffer(void) {} - bool Pop(_BType &entry) - { - bool bReturn(false); - CLockObject lock(&mutex); - if (buffer.size() > 0) + 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 = buffer.front(); - buffer.pop(); - bReturn = true; + bool bReturn(false); + CLockObject lock(&m_mutex); + if (m_buffer.size() > 0) + { + entry = m_buffer.front(); + m_buffer.pop(); + bReturn = true; + } + return bReturn; } - return bReturn; - } - private: - std::queue<_BType> buffer; - CMutex mutex; - }; + private: + int m_maxSize; + std::queue<_BType> m_buffer; + CMutex m_mutex; + }; +};