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