istream_adapter.h 669 B

123456789101112131415161718192021222324252627
  1. #pragma once
  2. #include <istream>
  3. #include "c10/macros/Macros.h"
  4. #include "caffe2/serialize/read_adapter_interface.h"
  5. namespace caffe2 {
  6. namespace serialize {
  7. // this is a reader implemented by std::istream
  8. class TORCH_API IStreamAdapter final : public ReadAdapterInterface {
  9. public:
  10. C10_DISABLE_COPY_AND_ASSIGN(IStreamAdapter);
  11. explicit IStreamAdapter(std::istream* istream);
  12. size_t size() const override;
  13. size_t read(uint64_t pos, void* buf, size_t n, const char* what = "")
  14. const override;
  15. ~IStreamAdapter() override;
  16. private:
  17. std::istream* istream_;
  18. void validate(const char* what) const;
  19. };
  20. } // namespace serialize
  21. } // namespace caffe2