file_adapter.h 866 B

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