NAME
UniEvent::FsEvent - cross-platform file/dir monitoring
SYNOPSIS
use UniEvent::FsEvent; # imports constants
my $h = UniEvent::FsEvent->new;
$h->start("/tmp/", RECURSIVE, sub {
my ($handle, $filename, $events, $error_code) = @_;
if ($events & RENAME) {
say "file $filename has been renamed";
}
});
UE::Loop->default->run;
DESCRIPTION
The FsEvent is useful for monitoring individual file events , e.g. when file is renamed, created or when its content was changed. It works on major operational systems, including Windows; however the order of events might be system dependent. This handle uses the best backend for the job on each platform.
The UniEvent::FsEvent is inherited from UniEvent::Handle.
METHODS
All methods of UniEvent::Handle also apply.
create($path, $flags, $callback, [$loop = default])
my $handle = UniEvent::FsEvent->create("my/file", 0, sub { say "hi" });
Creates and starts an fs event handle. Alias for new($loop) + start($path, $flags, $callback).
new([$loop = default])
Constructs new FsEvent handle and binds it to the specified event loop
start($path, [$flags], [$callback])
Starts monitoring file system events on the specified $path, i.e. makes it active for the next even loop iteration. The $path can point to file as well as to directory.
The $flags is a bitmask of (in UE::FsEvent::*):
- RECURSIVE
-
Watch for changes recursively (might not be available on all operating systems)
stop()
Stops monitoring file system events.
callback($sub)
event()
Callback signature:
my ($handle, $filename, $events, $error) = @_;
Where $handle is the FsEvent handle object itself.
$filename is path to the triggered file. If the handle was started with a directory the filename parameter will be a relative path to a file contained in the directory.
The $events parameter is an ORed mask of these flags (in UE::FsEvent::*):
- RENAME
-
When file was moved
- CHANGE
-
When file data (content) or metadata changes (e.g.
mtime).
The $error parameter will be an XS::ErrorCode object if any.
See "EVENT CALLBACKS" in UniEvent
event_listener($delegate, [$weak])
Method on_fs_event will be called.
See "EVENT LISTENER" in UniEvent
path()
Returns the currently monitored path.