Home | History | Annotate | Download | only in Common
      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
     33