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