| #include "caffe2/serialize/istream_adapter.h" |
| #include <c10/util/Exception.h> |
| IStreamAdapter::IStreamAdapter(std::istream* istream) : istream_(istream) {} |
| size_t IStreamAdapter::size() const { |
| auto prev_pos = istream_->tellg(); |
| validate("getting the current position"); |
| istream_->seekg(0, istream_->end); |
| validate("seeking to end"); |
| auto result = istream_->tellg(); |
| validate("getting size"); |
| istream_->seekg(prev_pos); |
| validate("seeking to the original position"); |
| size_t IStreamAdapter::read(uint64_t pos, void* buf, size_t n, const char* what) |
| istream_->read(static_cast<char*>(buf), n); |
| void IStreamAdapter::validate(const char* what) const { |
| AT_ERROR("istream reader failed: ", what, "."); |
| // NOLINTNEXTLINE(modernize-use-equals-default) |
| IStreamAdapter::~IStreamAdapter() {} |