Imported Upstream version 9.20
[platform/upstream/7zip.git] / CPP / 7zip / Common / LockedStream.cpp
1 // LockedStream.cpp\r
2 \r
3 #include "StdAfx.h"\r
4 \r
5 #include "LockedStream.h"\r
6 \r
7 HRESULT CLockedInStream::Read(UInt64 startPos, void *data, UInt32 size,\r
8   UInt32 *processedSize)\r
9 {\r
10   NWindows::NSynchronization::CCriticalSectionLock lock(_criticalSection);\r
11   RINOK(_stream->Seek(startPos, STREAM_SEEK_SET, NULL));\r
12   return _stream->Read(data, size, processedSize);\r
13 }\r
14 \r
15 STDMETHODIMP CLockedSequentialInStreamImp::Read(void *data, UInt32 size, UInt32 *processedSize)\r
16 {\r
17   UInt32 realProcessedSize = 0;\r
18   HRESULT result = _lockedInStream->Read(_pos, data, size, &realProcessedSize);\r
19   _pos += realProcessedSize;\r
20   if (processedSize != NULL)\r
21     *processedSize = realProcessedSize;\r
22   return result;\r
23 }\r