$self;
}
+sub add_watches {
+ my ($self, $dirs, $gone) = @_;
+ my $fl = $MAIL_IN | ($gone ? $MAIL_GONE : 0);
+ my @ret;
+ for my $d (@$dirs) {
+ my $w = $self->{inot}->watch($d, $fl) or next;
+ push @ret, $w;
+ }
+ PublicInbox::FakeInotify::poll_once($self) if !$ino_cls;
+ @ret
+}
+
+sub rm_watches {
+ my ($self, $dir) = @_;
+ my $inot = $self->{inot};
+ if (my $cb = $inot->can('rm_watches')) { # TODO for fake watchers
+ $cb->($inot, $dir);
+ }
+}
+
sub event_step {
my ($self) = @_;
my $cb = $self->{cb};
warn "$self->{inot}->read err: $@\n" if $@;
}
+sub force_close {
+ my ($self) = @_;
+ my $inot = delete $self->{inot} // return;
+ if ($inot->can('fh')) { # Linux::Inotify2 2.3+
+ close($inot->fh) or warn "CLOSE ERROR: $!";
+ } elsif ($inot->isa('Linux::Inotify2')) {
+ require PublicInbox::LI2Wrap;
+ PublicInbox::LI2Wrap::wrapclose($inot);
+ }
+}
+
1;