35 virtual bool good()
const = 0;
39 std::ios_base::seekdir way = std::ios_base::beg) = 0;
40 virtual void read(
char* data,
size_t n) = 0;
41 virtual void read(
char* data,
size_t n,
size_t offset) = 0;
42 virtual std::string
label()
const = 0;
49 virtual bool good()
const = 0;
53 std::ios_base::seekdir way = std::ios_base::beg) = 0;
54 virtual void write(
const char* data,
size_t n) = 0;
55 virtual std::string
label()
const = 0;
62 : fd_(open(file_path.c_str(), O_RDONLY |
O_BINARY)),
63 label_(
std::move(file_path)) {}
73 bool good()
const override {
78 return lseek(fd_, 0, SEEK_CUR);
83 void seek(int64_t off, std::ios_base::seekdir way = std::ios_base::beg)
85 if (way == std::ios_base::beg) {
88 lseek(fd_, off, SEEK_CUR);
94 void read(
char* data,
size_t n)
override;
96 void read(
char* data,
size_t n,
size_t offset)
override;
98 std::string
label()
const override {
99 return "file " + label_;
103 static constexpr size_t batch_size_ = 1 << 25;
114 O_CREAT | O_WRONLY | O_TRUNC |
O_BINARY,
116 label_(
std::move(file_path)) {}
121 std::swap(fd_, other.fd_);
139 return lseek(fd_, 0, SEEK_CUR);
142 void seek(int64_t off, std::ios_base::seekdir way = std::ios_base::beg)
144 if (way == std::ios_base::beg) {
147 lseek(fd_, off, SEEK_CUR);
151 void write(
const char* data,
size_t n)
override {
153 auto m =
::write(fd_, data, std::min(n,
static_cast<size_t>(INT32_MAX)));
155 std::ostringstream msg;
156 msg <<
"[write] Unable to write " << n <<
" bytes to file.";
157 throw std::runtime_error(msg.str());
164 std::string
label()
const override {
165 return "file " + label_;
Definition threadpool.h:35
FileWriter(FileWriter &&other)
Definition load.h:120
FileWriter(std::string file_path)
Definition load.h:111
std::string label() const override
Definition load.h:164
FileWriter & operator=(const FileWriter &)=delete
void seek(int64_t off, std::ios_base::seekdir way=std::ios_base::beg) override
Definition load.h:142
bool good() const override
Definition load.h:134
size_t tell() override
Definition load.h:138
void write(const char *data, size_t n) override
Definition load.h:151
~FileWriter() override
Definition load.h:124
bool is_open() const override
Definition load.h:130
FileWriter(const FileWriter &)=delete
void read(char *data, size_t n, size_t offset) override
size_t tell() override
Definition load.h:77
std::string label() const override
Definition load.h:98
void seek(int64_t off, std::ios_base::seekdir way=std::ios_base::beg) override
Definition load.h:83
bool is_open() const override
Definition load.h:69
void read(char *data, size_t n) override
ParallelFileReader(std::string file_path)
Definition load.h:61
bool good() const override
Definition load.h:73
~ParallelFileReader() override
Definition load.h:65
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.
#define O_BINARY
Definition load.h:23
ThreadPool & thread_pool()