123456789101112131415161718192021222324252627282930313233343536 |
- #pragma once
- #include <fstream>
- #include <memory>
- #include <c10/macros/Macros.h>
- #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
|