75 int flags = 0,
int mode = 0644);
93 [[nodiscard]] uv_file
file()
const;
124 std::string_view path);
163 std::string_view path,
164 uv_fs_event_flags flags);
185 std::optional<std::coroutine_handle<>>
handle_;
Definition bounded_queue.h:23
static MultiPromise< DirEnt > readAll(const Loop &loop, std::string_view path)
Read all directory entries of the given directory.
Definition fs.cc:184
uv_dir_t * dir_
Definition fs.h:66
Promise< void > close()
Close the directory.
Definition fs.cc:199
Directory & operator=(const Directory &)=delete
uv_loop_t * loop_
Definition fs.h:65
Promise< std::vector< DirEnt > > read(unsigned count=64)
Read up to count directory entries.
Definition fs.cc:156
static Promise< Directory > open(const Loop &loop, std::string_view path)
Open a directory for reading.
Definition fs.cc:145
Directory(const Directory &)=default
static Promise< void > mkdir(const Loop &loop, std::string_view path, int mode=0755)
Create a directory.
Definition fs.cc:122
~Directory()
Definition fs.cc:113
static Promise< void > rmdir(const Loop &loop, std::string_view path)
Remove a directory. It must be empty.
Definition fs.cc:134
Directory(uv_loop_t *loop, uv_dir_t *dir)
Definition fs.h:63
A file descriptor.
Definition fs.h:70
Promise< size_t > read(std::string &buffer, int64_t offset=-1)
Definition fs.cc:231
uv_loop_t * loop_
Definition fs.h:101
static Promise< void > unlink(const Loop &loop, std::string_view path)
Definition fs.cc:221
Promise< size_t > write(std::string_view buffer, int64_t offset=-1)
Definition fs.cc:249
File(uv_loop_t *loop, uv_file file)
Definition fs.h:99
uv_file file_
Definition fs.h:102
static Promise< File > open(const Loop &loop, std::string_view path, int flags=0, int mode=0644)
Definition fs.cc:207
uv_file file() const
Access the libuv file handle.
Definition fs.cc:267
Promise< void > close()
Close a file asynchronously.
Definition fs.cc:272
MultiPromise< FileEvent > watch_()
Definition fs.cc:338
MultiPromise< FileEvent > watch()
Definition fs.cc:331
FsWatch & operator=(const FsWatch &)=delete
FsWatch(FsWatch &&)=default
FsWatch(const FsWatch &)=delete
FsWatch & operator=(FsWatch &&)=default
static Promise< FsWatch > createRecursive(const Loop &loop, std::string_view path)
Definition fs.cc:299
Promise< void > close()
Definition fs.cc:354
Promise< void > stopWatch(MultiPromise< FileEvent > watcher)
Definition fs.cc:348
std::unique_ptr< uv_fs_event_t > uv_handle_
Definition fs.h:190
static Promise< FsWatch > create(const Loop &loop, std::string_view path)
Definition fs.cc:295
static Promise< FsWatch > createWithFlag(const Loop &loop, std::string_view path, uv_fs_event_flags flags)
Definition fs.cc:304
~FsWatch()
Definition fs.cc:285
static void onFsWatcherEvent(uv_fs_event_t *handle, const char *path, int events, uv_status status)
Definition fs.cc:359
FsWatch()
Definition fs.cc:283
Definition multipromise.h:133
int uv_status
Result of a libuv operation, an errno error code.
Definition internal_utils.h:22
Definition async_work.cc:17
uv_dirent_type_t type
Definition fs.h:40
std::string name
Definition fs.h:39
uv_status status
Definition fs.h:140
std::string path
Definition fs.h:138
FileEvent(uv_status s)
Definition fs.h:131
FileEvent(std::string p, uv_fs_event e)
Definition fs.h:129
FileEvent & operator=(const FileEvent &)=default
FileEvent & operator=(FileEvent &&)=default
uv_fs_event events
Definition fs.h:139
FileEvent(FileEvent &&)=default
FileEvent(const FileEvent &)=default
bool await_ready() const
Definition fs.cc:377
void schedule()
Definition fs.cc:392
void await_suspend(std::coroutine_handle<> handle)
Definition fs.cc:381
static constexpr unsigned defaultCapacity
Definition fs.h:172
BoundedQueue< FileEvent > events_
Definition fs.h:186
void stop()
Definition fs.cc:400
void addError(uv_status status)
Definition fs.cc:405
void addEvent(FileEvent event)
Definition fs.cc:412
FsWatchAwaiter_()
Definition fs.cc:375
std::optional< std::coroutine_handle<> > handle_
Definition fs.h:185
bool await_resume()
Definition fs.cc:386
bool stopped_
Definition fs.h:187