| 787 | } |
| 788 | |
| 789 | class BlockDecompressionStream : public DecompressionStream { |
| 790 | public: |
| 791 | BlockDecompressionStream(std::unique_ptr<SeekableInputStream> inStream, size_t blockSize, |
| 792 | MemoryPool& pool, ReaderMetrics* metrics); |
| 793 | |
| 794 | virtual ~BlockDecompressionStream() override {} |
| 795 | virtual std::string getName() const override = 0; |
| 796 | |
| 797 | protected: |
| 798 | virtual void NextDecompress(const void** data, int* size, size_t availableSize) override; |
| 799 | |
| 800 | virtual uint64_t decompress(const char* input, uint64_t length, char* output, |
| 801 | size_t maxOutputLength) = 0; |
| 802 | |
| 803 | private: |
| 804 | // may need to stitch together multiple input buffers; |
| 805 | // to give snappy a contiguous block |
| 806 | DataBuffer<char> inputDataBuffer_; |
| 807 | }; |
| 808 | |
| 809 | BlockDecompressionStream::BlockDecompressionStream(std::unique_ptr<SeekableInputStream> inStream, |
| 810 | size_t blockSize, MemoryPool& pool, |