1#pragma once
2
3#include <istream>
4
5#include "c10/macros/Macros.h"
6#include "caffe2/serialize/read_adapter_interface.h"
7
8namespace caffe2 {
9namespace serialize {
10
11// this is a reader implemented by std::istream
12class 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