diff options
Diffstat (limited to 'src/libs/7zip/unix/CPP/7zip/Common/StreamBinder.h')
-rw-r--r-- | src/libs/7zip/unix/CPP/7zip/Common/StreamBinder.h | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/src/libs/7zip/unix/CPP/7zip/Common/StreamBinder.h b/src/libs/7zip/unix/CPP/7zip/Common/StreamBinder.h new file mode 100644 index 000000000..47743dee2 --- /dev/null +++ b/src/libs/7zip/unix/CPP/7zip/Common/StreamBinder.h @@ -0,0 +1,38 @@ +// StreamBinder.h + +#ifndef __STREAMBINDER_H +#define __STREAMBINDER_H + +#include "../IStream.h" +#include "../../Windows/Synchronization.h" + +class CStreamBinder +{ + NWindows::NSynchronization::CManualResetEventWFMO _allBytesAreWritenEvent; + NWindows::NSynchronization::CManualResetEvent _thereAreBytesToReadEvent; + NWindows::NSynchronization::CManualResetEventWFMO _readStreamIsClosedEvent; + NWindows::NSynchronization::CSynchro * _synchroFor_allBytesAreWritenEvent_and_readStreamIsClosedEvent; + UInt32 _bufferSize; + const void *_buffer; +public: + // bool ReadingWasClosed; + UInt64 ProcessedSize; + CStreamBinder() { _synchroFor_allBytesAreWritenEvent_and_readStreamIsClosedEvent = 0; } + ~CStreamBinder() { + if (_synchroFor_allBytesAreWritenEvent_and_readStreamIsClosedEvent) + delete _synchroFor_allBytesAreWritenEvent_and_readStreamIsClosedEvent; + _synchroFor_allBytesAreWritenEvent_and_readStreamIsClosedEvent = 0; + } + 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 |