22  virtual bool good() 
const = 0;
 
   26      std::ios_base::seekdir way = std::ios_base::beg) = 0;
 
   27  virtual void read(
char* data, 
size_t n) = 0;
 
   28  virtual void read(
char* data, 
size_t n, 
size_t offset) = 0;
 
   29  virtual std::string 
label() 
const = 0;
 
 
   36  virtual bool good() 
const = 0;
 
   40      std::ios_base::seekdir way = std::ios_base::beg) = 0;
 
   41  virtual void write(
const char* data, 
size_t n) = 0;
 
   42  virtual std::string 
label() 
const = 0;
 
 
   49      : fd_(open(file_path.c_str(), O_RDONLY)), label_(
std::move(file_path)) {}
 
 
   59  bool good()
 const override {
 
 
   64    return lseek(fd_, 0, SEEK_CUR);
 
 
   67  void seek(int64_t, std::ios_base::seekdir = std::ios_base::beg)
 override {
 
   68    throw std::runtime_error(
"[ParallelFileReader::seek] Not allowed");
 
 
   73  void read(
char* data, 
size_t n) 
override;
 
   75  void read(
char* data, 
size_t n, 
size_t offset) 
override;
 
   77  std::string 
label()
 const override {
 
   78    return "file " + label_;
 
 
   82  static constexpr size_t batch_size_ = 1 << 25;
 
 
   91      : fd_(open(file_path.c_str(), O_CREAT | O_WRONLY | O_TRUNC, 0644)),
 
   92        label_(
std::move(file_path)) {}
 
 
  107    return lseek(fd_, 0, SEEK_CUR);
 
 
  110  void seek(int64_t off, std::ios_base::seekdir way = std::ios_base::beg)
 
  112    if (way == std::ios_base::beg) {
 
  115      lseek(fd_, off, SEEK_CUR);
 
 
  119  void write(
const char* data, 
size_t n)
 override {
 
  121      auto m = 
::write(fd_, data, std::min(n, 
static_cast<size_t>(INT32_MAX)));
 
  123        std::ostringstream msg;
 
  124        msg << 
"[write] Unable to write " << n << 
" bytes to file.";
 
  125        throw std::runtime_error(msg.str());
 
 
  132  std::string 
label()
 const override {
 
  133    return "file " + label_;
 
 
 
 
Definition threadpool.h:35
 
FileWriter(std::string file_path)
Definition load.h:90
 
std::string label() const override
Definition load.h:132
 
void seek(int64_t off, std::ios_base::seekdir way=std::ios_base::beg) override
Definition load.h:110
 
bool good() const override
Definition load.h:102
 
size_t tell() override
Definition load.h:106
 
void write(const char *data, size_t n) override
Definition load.h:119
 
~FileWriter() override
Definition load.h:94
 
bool is_open() const override
Definition load.h:98
 
void read(char *data, size_t n, size_t offset) override
 
size_t tell() override
Definition load.h:63
 
std::string label() const override
Definition load.h:77
 
bool is_open() const override
Definition load.h:55
 
void read(char *data, size_t n) override
 
void seek(int64_t, std::ios_base::seekdir=std::ios_base::beg) override
Definition load.h:67
 
ParallelFileReader(std::string file_path)
Definition load.h:48
 
bool good() const override
Definition load.h:59
 
~ParallelFileReader() override
Definition load.h:51
 
virtual bool good() const =0
 
virtual void read(char *data, size_t n, size_t offset)=0
 
virtual bool is_open() const =0
 
virtual ~Reader()=default
 
virtual std::string label() const =0
 
virtual void seek(int64_t off, std::ios_base::seekdir way=std::ios_base::beg)=0
 
virtual void read(char *data, size_t n)=0
 
virtual bool good() const =0
 
virtual ~Writer()=default
 
virtual std::string label() const =0
 
virtual bool is_open() const =0
 
virtual void seek(int64_t off, std::ios_base::seekdir way=std::ios_base::beg)=0
 
virtual void write(const char *data, size_t n)=0
 
array std(const array &a, bool keepdims, int ddof=0, StreamOrDevice s={})
Computes the standard deviation of the elements of an array.
 
ThreadPool & thread_pool()