xref: /aosp_15_r20/external/pytorch/caffe2/serialize/istream_adapter.h (revision da0073e96a02ea20f0ac840b70461e3646d07c45)
1 #pragma once
2 
3 #include <istream>
4 
5 #include "c10/macros/Macros.h"
6 #include "caffe2/serialize/read_adapter_interface.h"
7 
8 namespace caffe2 {
9 namespace serialize {
10 
11 // this is a reader implemented by std::istream
12 class TORCH_API IStreamAdapter final : public ReadAdapterInterface {
13  public:
14   C10_DISABLE_COPY_AND_ASSIGN(IStreamAdapter);
15   explicit IStreamAdapter(std::istream* istream);
16   size_t size() const override;
17   size_t read(uint64_t pos, void* buf, size_t n, const char* what = "")
18       const override;
19   ~IStreamAdapter() override;
20 
21  private:
22   std::istream* istream_;
23   void validate(const char* what) const;
24 };
25 
26 } // namespace serialize
27 } // namespace caffe2
28