-sub once_init () {
- my $self = fields::new('PublicInbox::EvCleanup');
- my ($r, $w);
-
- # This is a dummy pipe which is always writable so it can always
- # fires in the next event loop iteration.
- pipe($r, $w) or die "pipe: $!";
- fcntl($w, 1031, 4096) if $^O eq 'linux'; # 1031: F_SETPIPE_SZ
- $self->SUPER::new($w);
- $self->{rd} = $r; # never read, since we never write..
- $self;
-}
-
-sub _run_all ($) {
- my ($q) = @_;
-
- my $run = $q->[0];
- $q->[0] = [];
- $q->[1] = undef;
- $_->() foreach @$run;
-}
-
-# ensure PublicInbox::DS::ToClose processing after timers fire
-sub _asap_close () { $asapq->[1] ||= _asap_timer() }
-
-sub _run_asap () { _run_all($asapq) }
-sub _run_next () {
- _run_all($nextq);
- _asap_close();
-}
-