mirror of
https://github.com/holub/mame
synced 2025-05-06 06:14:45 +03:00
35 lines
866 B
C++
35 lines
866 B
C++
// 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
|