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