#pragma once #include #include "c10/macros/Macros.h" #include "caffe2/serialize/read_adapter_interface.h" namespace caffe2 { namespace serialize { // this is a reader implemented by std::istream class TORCH_API IStreamAdapter final : public ReadAdapterInterface { public: C10_DISABLE_COPY_AND_ASSIGN(IStreamAdapter); explicit IStreamAdapter(std::istream* istream); size_t size() const override; size_t read(uint64_t pos, void* buf, size_t n, const char* what = "") const override; ~IStreamAdapter() override; private: std::istream* istream_; void validate(const char* what) const; }; } // namespace serialize } // namespace caffe2