#include "caffe2/serialize/file_adapter.h"
#include <c10/util/Exception.h>
#include "caffe2/core/common.h"

namespace caffe2 {
namespace serialize {

FileAdapter::FileAdapter(const std::string& file_name) {
  file_stream_.open(file_name, std::ifstream::in | std::ifstream::binary);
  if (!file_stream_) {
    AT_ERROR("open file failed, file path: ", file_name);
  }
  istream_adapter_ = caffe2::make_unique<IStreamAdapter>(&file_stream_);
}

size_t FileAdapter::size() const {
  return istream_adapter_->size();
}

size_t FileAdapter::read(uint64_t pos, void* buf, size_t n, const char* what)
    const {
  return istream_adapter_->read(pos, buf, n, what);
}

FileAdapter::~FileAdapter() {}

} // namespace serialize
} // namespace caffe2
