repositories
/
deb_libcec.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
cec: mutex in CSerialPort
[deb_libcec.git]
/
src
/
lib
/
util
/
buffer.h
diff --git
a/src/lib/util/buffer.h
b/src/lib/util/buffer.h
index 299b019d4113c2920c3ab183f7d560545696502f..f284131d2ca1c511ea4932be199603e2435b5dad 100644
(file)
--- a/
src/lib/util/buffer.h
+++ b/
src/lib/util/buffer.h
@@
-31,36
+31,49
@@
* http://www.pulse-eight.net/
*/
* http://www.pulse-eight.net/
*/
-#include "threads.h"
+#include "
../platform/
threads.h"
#include <queue>
#include <queue>
-template<typename _BType>
- struct CecBuffer
- {
- public:
- CecBuffer(void) {}
- virtual ~CecBuffer(void) {}
-
- void Push(_BType entry)
+namespace CEC
+{
+ template<typename _BType>
+ 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;
+ };
+};