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