dol: initial dol commit
[jump.git] / dol / src / dol / visitor / PipeAndFilter / lib / WindowedFifo.h
diff --git a/dol/src/dol/visitor/PipeAndFilter/lib/WindowedFifo.h b/dol/src/dol/visitor/PipeAndFilter/lib/WindowedFifo.h
new file mode 100644 (file)
index 0000000..edab527
--- /dev/null
@@ -0,0 +1,41 @@
+#ifndef _WINDOWEDFIFO_H_\r
+#define _WINDOWEDFIFO_H_\r
+\r
+#include "Mutex.h"\r
+#include "Condition.h"\r
+\r
+class WindowedFifo {\r
+    public:\r
+        WindowedFifo(char* name, unsigned size);\r
+        virtual ~WindowedFifo();\r
+\r
+        virtual unsigned reserve(void** destination, unsigned len);\r
+        virtual void release();\r
+\r
+        virtual unsigned capture(void** destination, unsigned len);\r
+        virtual void consume();\r
+\r
+        virtual unsigned used() const;\r
+        virtual unsigned unused() const;\r
+        virtual unsigned size() const;\r
+        virtual char* getName() const;\r
+\r
+    protected:\r
+        char *_buffer;\r
+        unsigned _head;\r
+        unsigned _tail;\r
+        unsigned _headRoom;\r
+        unsigned _tailRoom;\r
+        unsigned _size;\r
+        unsigned _use;\r
+        unsigned _writeReserve;  
+        unsigned _readReserve; 
+        //bool _isFull;\r
+        bool _isHeadReserved;\r
+        bool _isTailReserved;\r
+        char *_name;\r
+        Mutex *_mutex;\r
+        Condition *_readCondition, *_writeCondition;\r
+};\r
+\r
+#endif\r