Upload 2.0.2
[physicsfs] / lzma / CPP / 7zip / Common / LockedStream.h
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