Upload 2.0.2
[physicsfs] / lzma / CPP / 7zip / Common / StreamBinder.h
1 // StreamBinder.h
2
3 #ifndef __STREAMBINDER_H
4 #define __STREAMBINDER_H
5
6 #include "../IStream.h"
7 #include "../../Windows/Synchronization.h"
8
9 class CStreamBinder
10 {
11   NWindows::NSynchronization::CManualResetEvent _allBytesAreWritenEvent;
12   NWindows::NSynchronization::CManualResetEvent _thereAreBytesToReadEvent;
13   NWindows::NSynchronization::CManualResetEvent _readStreamIsClosedEvent;
14   UInt32 _bufferSize;
15   const void *_buffer;
16 public:
17   // bool ReadingWasClosed;
18   UInt64 ProcessedSize;
19   CStreamBinder() {}
20   HRes CreateEvents();
21
22   void CreateStreams(ISequentialInStream **inStream, 
23       ISequentialOutStream **outStream);
24   HRESULT Read(void *data, UInt32 size, UInt32 *processedSize);
25   void CloseRead();
26
27   HRESULT Write(const void *data, UInt32 size, UInt32 *processedSize);
28   void CloseWrite();
29   void ReInit();
30 };
31
32 #endif