# License: AGPL-3.0+ <https://www.gnu.org/licenses/agpl-3.0.txt>
# fields:
-# pi_config: PublicInbox::Config ref
# inot: Linux::Inotify2-like object
# pathmap => { inboxdir => [ ibx, watch1, watch2, watch3... ] } mapping
package PublicInbox::InboxIdle;
$cur->[0] = $ibx;
my $lock = "$dir/".($ibx->version >= 2 ? 'inbox.lock' : 'ssoma.lock');
- my $w = $cur->[1] = $inot->watch($lock, $IN_MODIFY);
- $self->{on_unlock}->{$w->name} = $ibx;
+ if (my $w = $cur->[1] = $inot->watch($lock, $IN_MODIFY)) {
+ $self->{on_unlock}->{$w->name} = $ibx;
+ } else {
+ warn "E: ".ref($inot)."->watch($lock, IN_MODIFY) failed: $!\n";
+ }
# TODO: detect deleted packs (and possibly other files)
}
sub refresh {
- my ($self, $pi_config) = @_;
- $pi_config->each_inbox(\&in2_arm, $self);
+ my ($self, $pi_cfg) = @_;
+ $pi_cfg->each_inbox(\&in2_arm, $self);
}
sub new {
- my ($class, $pi_config) = @_;
+ my ($class, $pi_cfg) = @_;
my $self = bless {}, $class;
my $inot;
if ($ino_cls) {
$self->{inot} = $inot;
$self->{pathmap} = {}; # inboxdir => [ ibx, watch1, watch2, watch3...]
$self->{on_unlock} = {}; # lock path => ibx
- refresh($self, $pi_config);
+ refresh($self, $pi_cfg);
PublicInbox::FakeInotify::poll_once($self) if !$ino_cls;
$self;
}