1 // LimitedStreams.cpp
2 
3 #include "StdAfx.h"
4 
5 #include "LimitedStreams.h"
6 #include "../../Common/Defs.h"
7 
Init(ISequentialInStream * stream,UInt64 streamSize)8 void CLimitedSequentialInStream::Init(ISequentialInStream *stream, UInt64 streamSize)
9 {
10   _stream = stream;
11   _size = streamSize;
12 }
13 
Read(void * data,UInt32 size,UInt32 * processedSize)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 
25