// StreamBinder.h | |
#ifndef __STREAMBINDER_H | |
#define __STREAMBINDER_H | |
#include "../IStream.h" | |
#include "../../Windows/Synchronization.h" | |
class CStreamBinder | |
{ | |
NWindows::NSynchronization::CManualResetEvent _allBytesAreWritenEvent; | |
NWindows::NSynchronization::CManualResetEvent _thereAreBytesToReadEvent; | |
NWindows::NSynchronization::CManualResetEvent _readStreamIsClosedEvent; | |
UInt32 _bufferSize; | |
const void *_buffer; | |
public: | |
// bool ReadingWasClosed; | |
UInt64 ProcessedSize; | |
CStreamBinder() {} | |
HRes CreateEvents(); | |
void CreateStreams(ISequentialInStream **inStream, | |
ISequentialOutStream **outStream); | |
HRESULT Read(void *data, UInt32 size, UInt32 *processedSize); | |
void CloseRead(); | |
HRESULT Write(const void *data, UInt32 size, UInt32 *processedSize); | |
void CloseWrite(); | |
void ReInit(); | |
}; | |
#endif |