#pragma once #include #include #include #include "caffe2/serialize/istream_adapter.h" #include "caffe2/serialize/read_adapter_interface.h" namespace caffe2 { namespace serialize { class TORCH_API FileAdapter final : public ReadAdapterInterface { public: C10_DISABLE_COPY_AND_ASSIGN(FileAdapter); explicit FileAdapter(const std::string& file_name); size_t size() const override; size_t read(uint64_t pos, void* buf, size_t n, const char* what = "") const override; ~FileAdapter() override; private: // An RAII Wrapper for a FILE pointer. Closes on destruction. struct RAIIFile { FILE* fp_; explicit RAIIFile(const std::string& file_name); ~RAIIFile(); }; RAIIFile file_; // The size of the opened file in bytes uint64_t size_; }; } // namespace serialize } // namespace caffe2