diff options
author | Eric Wong <e@80x24.org> | 2021-09-29 07:40:47 -0500 |
---|---|---|
committer | Eric Wong <e@80x24.org> | 2021-09-29 19:58:08 +0000 |
commit | f7e29ec64a0cbba63c4df244e916848f75bc9346 (patch) | |
tree | d0e5daa08338a30927e64bf463132e56afcd5281 /lib/PublicInbox/IMAP.pm | |
parent | 3850d930f57edf586b384c2eaae2dc03c99cbf72 (diff) | |
download | public-inbox-f7e29ec64a0cbba63c4df244e916848f75bc9346.tar.gz |
add_uniq_timer seems sufficient, and we'll drop the last user of ::later (IMAP) and switch to unique timers.
Diffstat (limited to 'lib/PublicInbox/IMAP.pm')
-rw-r--r-- | lib/PublicInbox/IMAP.pm | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/lib/PublicInbox/IMAP.pm b/lib/PublicInbox/IMAP.pm index 27013ea5..bc34f4fe 100644 --- a/lib/PublicInbox/IMAP.pm +++ b/lib/PublicInbox/IMAP.pm @@ -316,20 +316,19 @@ sub on_inbox_unlock { } } -# called every X minute(s) or so by PublicInbox::DS::later -my $IDLERS = {}; -my $idle_timer; +# called every minute or so by PublicInbox::DS::later +my $IDLERS; # fileno($obj->{sock}) => PublicInbox::IMAP sub idle_tick_all { my $old = $IDLERS; - $IDLERS = {}; + $IDLERS = undef; for my $i (values %$old) { next if ($i->{wbuf} || !exists($i->{-idle_tag})); $i->update_idle_time or next; $IDLERS->{fileno($i->{sock})} = $i; $i->write(\"* OK Still here\r\n"); } - $idle_timer = scalar keys %$IDLERS ? - PublicInbox::DS::later(\&idle_tick_all) : undef; + $IDLERS and + PublicInbox::DS::add_uniq_timer('idle', 60, \&idle_tick_all); } sub cmd_idle ($$) { @@ -346,7 +345,7 @@ sub cmd_idle ($$) { $ibx->subscribe_unlock($fd, $self); $self->{imapd}->idler_start; } - $idle_timer //= PublicInbox::DS::later(\&idle_tick_all); + PublicInbox::DS::add_uniq_timer('idle', 60, \&idle_tick_all); $IDLERS->{$fd} = $self; \"+ idling\r\n" } |