1// StreamBinder.h 2 3#ifndef __STREAMBINDER_H 4#define __STREAMBINDER_H 5 6#include "../IStream.h" 7#include "../../Windows/Synchronization.h" 8 9class CStreamBinder 10{ 11 NWindows::NSynchronization::CManualResetEvent _allBytesAreWritenEvent; 12 NWindows::NSynchronization::CManualResetEvent _thereAreBytesToReadEvent; 13 NWindows::NSynchronization::CManualResetEvent _readStreamIsClosedEvent; 14 UInt32 _bufferSize; 15 const void *_buffer; 16public: 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 33