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()