|
1 // LimitedStreams.cpp |
|
2 |
|
3 #include "StdAfx.h" |
|
4 |
|
5 #include "LimitedStreams.h" |
|
6 #include "../../Common/Defs.h" |
|
7 |
|
8 void CLimitedSequentialInStream::Init(ISequentialInStream *stream, UInt64 streamSize) |
|
9 { |
|
10 _stream = stream; |
|
11 _size = streamSize; |
|
12 } |
|
13 |
|
14 STDMETHODIMP CLimitedSequentialInStream::Read(void *data, UInt32 size, UInt32 *processedSize) |
|
15 { |
|
16 UInt32 processedSizeReal; |
|
17 UInt32 sizeToRead = UInt32(MyMin(_size, UInt64(size))); |
|
18 HRESULT result = _stream->Read(data, sizeToRead, &processedSizeReal); |
|
19 _size -= processedSizeReal; |
|
20 if(processedSize != NULL) |
|
21 *processedSize = processedSizeReal; |
|
22 return result; |
|
23 } |
|
24 |