}
sub new {
- my ($class, $dirs, $cb, $gone) = @_;
+ my ($class, $cb) = @_;
my $self = bless { cb => $cb }, $class;
my $inot;
if ($ino_cls) {
require PublicInbox::FakeInotify;
$inot = PublicInbox::FakeInotify->new; # starts timer
}
-
- # Linux::Inotify2->watch or similar
- my $fl = $MAIL_IN;
- $fl |= $MAIL_GONE if $gone;
- $inot->watch($_, $fl) for @$dirs;
$self->{inot} = $inot;
- PublicInbox::FakeInotify::poll_once($self) if !$ino_cls;
$self;
}
USR2 => \&noop,
};
require PublicInbox::DirIdle;
- local $dir_idle = PublicInbox::DirIdle->new([$sock_dir], sub {
+ local $dir_idle = PublicInbox::DirIdle->new(sub {
# just rely on wakeup to hit PostLoopCallback set below
dir_idle_handler($_[0]) if $_[0]->fullname ne $path;
- }, 1);
+ });
+ $dir_idle->add_watches([$sock_dir]);
PublicInbox::DS->SetPostLoopCallback(sub {
my ($dmap, undef) = @_;
if (@st = defined($path) ? stat($path) : ()) {
};
require PublicInbox::DirIdle;
# inotify_create + EPOLL_CTL_ADD
- PublicInbox::DirIdle->new([keys %{$self->{mdmap}}], $cb);
+ my $dir_idle = PublicInbox::DirIdle->new($cb);
+ $dir_idle->add_watches([keys %{$self->{mdmap}}]);
}
sub net_cb { # NetReader::(nntp|imap)_each callback
make_path("$tmpdir/a/b", "$tmpdir/c");
my @x;
my $cb = sub { push @x, \@_ };
-my $di = PublicInbox::DirIdle->new(["$tmpdir/a", "$tmpdir/c"], $cb, 1);
+my $di = PublicInbox::DirIdle->new($cb);
+$di->add_watches(["$tmpdir/a", "$tmpdir/c"], 1);
PublicInbox::DS->SetLoopTimeout(1000);
my $end = 3 + now;
PublicInbox::DS->SetPostLoopCallback(sub { scalar(@x) == 0 && now < $end });