dol: initial dol commit
[jump.git] / dol / src / dol / visitor / PipeAndFilter / lib / WindowedFifo.h
1 #ifndef _WINDOWEDFIFO_H_\r
2 #define _WINDOWEDFIFO_H_\r
3 \r
4 #include "Mutex.h"\r
5 #include "Condition.h"\r
6 \r
7 class WindowedFifo {\r
8     public:\r
9         WindowedFifo(char* name, unsigned size);\r
10         virtual ~WindowedFifo();\r
11 \r
12         virtual unsigned reserve(void** destination, unsigned len);\r
13         virtual void release();\r
14 \r
15         virtual unsigned capture(void** destination, unsigned len);\r
16         virtual void consume();\r
17 \r
18         virtual unsigned used() const;\r
19         virtual unsigned unused() const;\r
20         virtual unsigned size() const;\r
21         virtual char* getName() const;\r
22 \r
23     protected:\r
24         char *_buffer;\r
25         unsigned _head;\r
26         unsigned _tail;\r
27         unsigned _headRoom;\r
28         unsigned _tailRoom;\r
29         unsigned _size;\r
30         unsigned _use;\r
31         unsigned _writeReserve;  
32         unsigned _readReserve; 
33         //bool _isFull;\r
34         bool _isHeadReserved;\r
35         bool _isTailReserved;\r
36         char *_name;\r
37         Mutex *_mutex;\r
38         Condition *_readCondition, *_writeCondition;\r
39 };\r
40 \r
41 #endif\r