tor-browser

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

InStreamWithCRC.h (1615B)


      1 // InStreamWithCRC.h
      2 
      3 #ifndef __IN_STREAM_WITH_CRC_H
      4 #define __IN_STREAM_WITH_CRC_H
      5 
      6 #include "../../../../C/7zCrc.h"
      7 
      8 #include "../../../Common/MyCom.h"
      9 
     10 #include "../../IStream.h"
     11 
     12 class CSequentialInStreamWithCRC:
     13  public ISequentialInStream,
     14  public CMyUnknownImp
     15 {
     16 public:
     17  MY_UNKNOWN_IMP
     18 
     19  STDMETHOD(Read)(void *data, UInt32 size, UInt32 *processedSize);
     20 private:
     21  CMyComPtr<ISequentialInStream> _stream;
     22  UInt64 _size;
     23  UInt32 _crc;
     24  bool _wasFinished;
     25 public:
     26  void SetStream(ISequentialInStream *stream) { _stream = stream;  }
     27  void Init()
     28  {
     29    _size = 0;
     30    _wasFinished = false;
     31    _crc = CRC_INIT_VAL;
     32  }
     33  void ReleaseStream() { _stream.Release(); }
     34  UInt32 GetCRC() const { return CRC_GET_DIGEST(_crc); }
     35  UInt64 GetSize() const { return _size; }
     36  bool WasFinished() const { return _wasFinished; }
     37 };
     38 
     39 class CInStreamWithCRC:
     40  public IInStream,
     41  public CMyUnknownImp
     42 {
     43 public:
     44  MY_UNKNOWN_IMP1(IInStream)
     45 
     46  STDMETHOD(Read)(void *data, UInt32 size, UInt32 *processedSize);
     47  STDMETHOD(Seek)(Int64 offset, UInt32 seekOrigin, UInt64 *newPosition);
     48 private:
     49  CMyComPtr<IInStream> _stream;
     50  UInt64 _size;
     51  UInt32 _crc;
     52  // bool _wasFinished;
     53 public:
     54  void SetStream(IInStream *stream) { _stream = stream;  }
     55  void Init()
     56  {
     57    _size = 0;
     58    // _wasFinished = false;
     59    _crc = CRC_INIT_VAL;
     60  }
     61  void ReleaseStream() { _stream.Release(); }
     62  UInt32 GetCRC() const { return CRC_GET_DIGEST(_crc); }
     63  UInt64 GetSize() const { return _size; }
     64  // bool WasFinished() const { return _wasFinished; }
     65 };
     66 
     67 #endif