cec: added CEC command that were received by the adapter in a buffer that can be...
[deb_libcec.git] / src / lib / util / buffer.h
index 299b019d4113c2920c3ab183f7d560545696502f..4379f8de020e70d3406bdca248a72a422701101c 100644 (file)
@@ -38,29 +38,34 @@ template<typename _BType>
   struct CecBuffer
   {
   public:
-    CecBuffer(void) {}
+    CecBuffer(int iMaxSize = 100) {}
     virtual ~CecBuffer(void) {}
 
-    void Push(_BType entry)
+    bool Push(_BType entry)
     {
-      CLockObject lock(&mutex);
-      buffer.push(entry);
+      CLockObject lock(&m_mutex);
+      if (m_buffer.size() == m_maxSize)
+        return false;
+
+      m_buffer.push(entry);
+      return true;
     }
 
     bool Pop(_BType &entry)
     {
       bool bReturn(false);
-      CLockObject lock(&mutex);
-      if (buffer.size() > 0)
+      CLockObject lock(&m_mutex);
+      if (m_buffer.size() > 0)
       {
-        entry = buffer.front();
-        buffer.pop();
+        entry = m_buffer.front();
+        m_buffer.pop();
         bReturn = true;
       }
       return bReturn;
     }
 
   private:
-    std::queue<_BType> buffer;
-    CMutex             mutex;
+    int                m_maxSize;
+    std::queue<_BType> m_buffer;
+    CMutex             m_mutex;
   };