19 enum class UVFsEventFlags: std::underlying_type_t<uv_fs_event_flags> {
20 WATCH_ENTRY = UV_FS_EVENT_WATCH_ENTRY,
21 STAT = UV_FS_EVENT_STAT,
22 RECURSIVE = UV_FS_EVENT_RECURSIVE
26 enum class UVFsEvent: std::underlying_type_t<uv_fs_event> {
42 : filename{pathname}, flags{std::move(events)}
79 static void startCallback(uv_fs_event_t *handle,
const char *filename,
int events,
int status) {
81 if(status) { fsEvent.publish(
ErrorEvent{status}); }
82 else { fsEvent.publish(
FsEventEvent{filename,
static_cast<std::underlying_type_t<details::UVFsEvent>
>(events)}); }
86 using Watch = details::UVFsEvent;
87 using Event = details::UVFsEventFlags;
96 return initialize(&uv_fs_event_init);
117 invoke(&uv_fs_event_start,
get(), &startCallback, path.data(), flags);
137 void start(std::string path, Event flag) {
145 invoke(&uv_fs_event_stop,
get());
153 return details::tryRead(&uv_fs_event_getpath,
get());
Flags< details::UVFsEvent > flags
Detected events all in one.
bool init()
Initializes the handle.
std::string path() noexcept
Gets the path being monitored.
const char * filename
The path to the file being monitored.
void start(std::string path, Event flag)
Starts watching the specified path.
void stop()
Stops polling the file descriptor.
The FsEventHandle handle.
void start(std::string path, Flags< Event > flags=Flags< Event >{})
Starts watching the specified path.