From Code to Community: Sponsoring The Perl and Raku Conference 2025 Learn more

#pragma once
#include "HandleImpl.h"
namespace panda { namespace unievent { namespace backend {
struct IFsEventImplListener {
virtual void handle_fs_event (const string_view& file, int events, const std::error_code&) = 0;
};
struct FsEventImpl : HandleImpl {
struct Event {
static constexpr int RENAME = 1;
static constexpr int CHANGE = 2;
};
struct Flags {
static constexpr int RECURSIVE = 1;
};
IFsEventImplListener* listener;
FsEventImpl (LoopImpl* loop, IFsEventImplListener* lst) : HandleImpl(loop), listener(lst) {}
virtual std::error_code start (string_view path, unsigned flags) = 0;
virtual std::error_code stop () = 0;
void handle_fs_event (const string_view& file, int events, const std::error_code& err) noexcept {
ltry([&]{ listener->handle_fs_event(file, events, err); });
}
};
}}}