1*da0073e9SAndroid Build Coastguard Worker #pragma once 2*da0073e9SAndroid Build Coastguard Worker 3*da0073e9SAndroid Build Coastguard Worker #include <fstream> 4*da0073e9SAndroid Build Coastguard Worker #include <memory> 5*da0073e9SAndroid Build Coastguard Worker #include <c10/macros/Macros.h> 6*da0073e9SAndroid Build Coastguard Worker 7*da0073e9SAndroid Build Coastguard Worker #include "caffe2/serialize/istream_adapter.h" 8*da0073e9SAndroid Build Coastguard Worker #include "caffe2/serialize/read_adapter_interface.h" 9*da0073e9SAndroid Build Coastguard Worker 10*da0073e9SAndroid Build Coastguard Worker namespace caffe2 { 11*da0073e9SAndroid Build Coastguard Worker namespace serialize { 12*da0073e9SAndroid Build Coastguard Worker 13*da0073e9SAndroid Build Coastguard Worker class TORCH_API FileAdapter final : public ReadAdapterInterface { 14*da0073e9SAndroid Build Coastguard Worker public: 15*da0073e9SAndroid Build Coastguard Worker C10_DISABLE_COPY_AND_ASSIGN(FileAdapter); 16*da0073e9SAndroid Build Coastguard Worker explicit FileAdapter(const std::string& file_name); 17*da0073e9SAndroid Build Coastguard Worker size_t size() const override; 18*da0073e9SAndroid Build Coastguard Worker size_t read(uint64_t pos, void* buf, size_t n, const char* what = "") 19*da0073e9SAndroid Build Coastguard Worker const override; 20*da0073e9SAndroid Build Coastguard Worker ~FileAdapter() override; 21*da0073e9SAndroid Build Coastguard Worker 22*da0073e9SAndroid Build Coastguard Worker private: 23*da0073e9SAndroid Build Coastguard Worker // An RAII Wrapper for a FILE pointer. Closes on destruction. 24*da0073e9SAndroid Build Coastguard Worker struct RAIIFile { 25*da0073e9SAndroid Build Coastguard Worker FILE* fp_; 26*da0073e9SAndroid Build Coastguard Worker explicit RAIIFile(const std::string& file_name); 27*da0073e9SAndroid Build Coastguard Worker ~RAIIFile(); 28*da0073e9SAndroid Build Coastguard Worker }; 29*da0073e9SAndroid Build Coastguard Worker 30*da0073e9SAndroid Build Coastguard Worker RAIIFile file_; 31*da0073e9SAndroid Build Coastguard Worker // The size of the opened file in bytes 32*da0073e9SAndroid Build Coastguard Worker uint64_t size_; 33*da0073e9SAndroid Build Coastguard Worker }; 34*da0073e9SAndroid Build Coastguard Worker 35*da0073e9SAndroid Build Coastguard Worker } // namespace serialize 36*da0073e9SAndroid Build Coastguard Worker } // namespace caffe2 37