tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

InStreamWithCRC.cpp (1247B)


      1 // InStreamWithCRC.cpp
      2 
      3 #include "StdAfx.h"
      4 
      5 #include "InStreamWithCRC.h"
      6 
      7 STDMETHODIMP CSequentialInStreamWithCRC::Read(void *data, UInt32 size, UInt32 *processedSize)
      8 {
      9  UInt32 realProcessed = 0;
     10  HRESULT result = S_OK;
     11  if (_stream)
     12    result = _stream->Read(data, size, &realProcessed);
     13  _size += realProcessed;
     14  if (size != 0 && realProcessed == 0)
     15    _wasFinished = true;
     16  _crc = CrcUpdate(_crc, data, realProcessed);
     17  if (processedSize)
     18    *processedSize = realProcessed;
     19  return result;
     20 }
     21 
     22 STDMETHODIMP CInStreamWithCRC::Read(void *data, UInt32 size, UInt32 *processedSize)
     23 {
     24  UInt32 realProcessed = 0;
     25  HRESULT result = S_OK;
     26  if (_stream)
     27    result = _stream->Read(data, size, &realProcessed);
     28  _size += realProcessed;
     29  /*
     30  if (size != 0 && realProcessed == 0)
     31    _wasFinished = true;
     32  */
     33  _crc = CrcUpdate(_crc, data, realProcessed);
     34  if (processedSize)
     35    *processedSize = realProcessed;
     36  return result;
     37 }
     38 
     39 STDMETHODIMP CInStreamWithCRC::Seek(Int64 offset, UInt32 seekOrigin, UInt64 *newPosition)
     40 {
     41  if (seekOrigin != STREAM_SEEK_SET || offset != 0)
     42    return E_FAIL;
     43  _size = 0;
     44  _crc = CRC_INIT_VAL;
     45  return _stream->Seek(offset, seekOrigin, newPosition);
     46 }