diff options
Diffstat (limited to '3rdparty/lzma/CPP/7zip/Common/StreamBinder.h')
-rw-r--r-- | 3rdparty/lzma/CPP/7zip/Common/StreamBinder.h | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/3rdparty/lzma/CPP/7zip/Common/StreamBinder.h b/3rdparty/lzma/CPP/7zip/Common/StreamBinder.h new file mode 100644 index 00000000000..f3fb53228dd --- /dev/null +++ b/3rdparty/lzma/CPP/7zip/Common/StreamBinder.h @@ -0,0 +1,34 @@ +// StreamBinder.h + +#ifndef __STREAM_BINDER_H +#define __STREAM_BINDER_H + +#include "../../Windows/Synchronization.h" + +#include "../IStream.h" + +class CStreamBinder +{ + NWindows::NSynchronization::CManualResetEvent _canWrite_Event; + NWindows::NSynchronization::CManualResetEvent _canRead_Event; + NWindows::NSynchronization::CManualResetEvent _readingWasClosed_Event; + bool _waitWrite; + UInt32 _bufSize; + const void *_buf; +public: + UInt64 ProcessedSize; + + WRes CreateEvents(); + void CreateStreams(ISequentialInStream **inStream, ISequentialOutStream **outStream); + void ReInit(); + HRESULT Read(void *data, UInt32 size, UInt32 *processedSize); + HRESULT Write(const void *data, UInt32 size, UInt32 *processedSize); + void CloseRead() { _readingWasClosed_Event.Set(); } + void CloseWrite() + { + // _bufSize must be = 0 + _canRead_Event.Set(); + } +}; + +#endif |