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;
CStreamBinder()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
33