Home | History | Annotate | Download | only in Common
      1 // LockedStream.h
      2 
      3 #ifndef __LOCKEDSTREAM_H
      4 #define __LOCKEDSTREAM_H
      5 
      6 #include "../../Windows/Synchronization.h"
      7 #include "../../Common/MyCom.h"
      8 #include "../IStream.h"
      9 
     10 class CLockedInStream
     11 {
     12   CMyComPtr<IInStream> _stream;
     13   NWindows::NSynchronization::CCriticalSection _criticalSection;
     14 public:
     15   void Init(IInStream *stream)
     16     { _stream = stream; }
     17   HRESULT Read(UInt64 startPos, void *data, UInt32 size, UInt32 *processedSize);
     18 };
     19 
     20 class CLockedSequentialInStreamImp:
     21   public ISequentialInStream,
     22   public CMyUnknownImp
     23 {
     24   CLockedInStream *_lockedInStream;
     25   UInt64 _pos;
     26 public:
     27   void Init(CLockedInStream *lockedInStream, UInt64 startPos)
     28   {
     29     _lockedInStream = lockedInStream;
     30     _pos = startPos;
     31   }
     32 
     33   MY_UNKNOWN_IMP
     34 
     35   STDMETHOD(Read)(void *data, UInt32 size, UInt32 *processedSize);
     36 };
     37 
     38 #endif
     39