chunked_input_stream.h 595 B

1234567891011121314151617181920212223242526272829
  1. #pragma once
  2. #include "ref.h"
  3. #include <util/stream/zerocopy.h>
  4. namespace NYT {
  5. ////////////////////////////////////////////////////////////////////////////////
  6. class TChunkedInputStream
  7. : public IZeroCopyInput
  8. {
  9. public:
  10. explicit TChunkedInputStream(std::vector<TSharedRef> blocks);
  11. size_t DoNext(const void** ptr, size_t len) override;
  12. private:
  13. const std::vector<TSharedRef> Blocks_;
  14. size_t Index_ = 0;
  15. size_t Position_ = 0;
  16. void SkipCompletedBlocks();
  17. };
  18. ////////////////////////////////////////////////////////////////////////////////
  19. } // namespace NYT