@post_loop_do, # subref + args to call at the end of each loop
- $LoopTimeout, # timeout of event loop in milliseconds
+ $loop_timeout, # timeout of event loop in milliseconds
@Timers, # timers
%UniqTimer,
$in_loop,
scalar(@{$cur_runq // []})); # do not vivify cur_runq
$reap_armed = undef;
- $LoopTimeout = -1; # no timeout by default
+ $loop_timeout = -1; # no timeout by default
$Poller = PublicInbox::Select->new;
}
-=head2 C<< CLASS->SetLoopTimeout( $timeout ) >>
-
-Set the loop timeout for the event loop to some value in milliseconds.
-
-A timeout of 0 (zero) means poll forever. A timeout of -1 means poll and return
-immediately.
-
-=cut
-sub SetLoopTimeout { $LoopTimeout = $_[1] + 0 }
-
sub _add_named_timer {
my ($name, $secs, $coderef, @args) = @_;
my $fire_time = now() + $secs;
sub RunTimers {
next_tick();
- return (($nextq || $ToClose) ? 0 : $LoopTimeout) unless @Timers;
+ return (($nextq || $ToClose) ? 0 : $loop_timeout) unless @Timers;
my $now = now();
# timers may enqueue into nextq:
return 0 if ($nextq || $ToClose);
- return $LoopTimeout unless @Timers;
+ return $loop_timeout unless @Timers;
# convert time to an even number of milliseconds, adding 1
# extra, otherwise floating point fun can occur and we'll
# call RunTimers like 20-30 times, each returning a timeout
# of 0.0000212 seconds
- my $timeout = int(($Timers[0][0] - $now) * 1000) + 1;
+ my $t = int(($Timers[0][0] - $now) * 1000) + 1;
# -1 is an infinite timeout, so prefer a real timeout
- ($LoopTimeout < 0 || $LoopTimeout >= $timeout) ? $timeout : $LoopTimeout
+ ($loop_timeout < 0 || $loop_timeout >= $t) ? $t : $loop_timeout
}
sub sig_setmask { sigprocmask(SIG_SETMASK, @_) or die "sigprocmask: $!" }
sig_setmask($oldset) if $oldset;
sigprocmask(SIG_UNBLOCK, unblockset($sig)) or
die "SIG_UNBLOCK: $!";
- PublicInbox::DS->SetLoopTimeout(1000);
+ $loop_timeout = 1000;
}
$_[0] = $sigfd = $sig = undef; # $_[0] == sig
local $in_loop = 1;
my $cb = sub { push @x, \@_ };
my $di = PublicInbox::DirIdle->new($cb);
$di->add_watches(["$tmpdir/a", "$tmpdir/c"], 1);
-PublicInbox::DS->SetLoopTimeout(1000);
+$PublicInbox::DS::loop_timeout = 1000;
my $end = 3 + now;
local @PublicInbox::DS::post_loop_do = (sub { scalar(@x) == 0 && now < $end });
rmdir("$tmpdir/a/b") or xbail "rmdir $!";
my $pid;
my $evfd_re = qr/(?:kqueue|eventpoll)/i;
- PublicInbox::DS->SetLoopTimeout(0);
+ $PublicInbox::DS::loop_timeout = 0;
local @PublicInbox::DS::post_loop_do = (sub { 0 });
# make sure execve closes if we're using fork()
}
my $cb = sub {};
for my $i (0..$n) {
- PublicInbox::DS->SetLoopTimeout(0);
+ $PublicInbox::DS::loop_timeout = 0;
local @PublicInbox::DS::post_loop_do = ($cb);
PublicInbox::DS::event_loop();
PublicInbox::DS->Reset;
# setup the event loop so that it exits at every step
# while we're still doing connect(2)
-PublicInbox::DS->SetLoopTimeout(0);
+$PublicInbox::DS::loop_timeout = 0;
local @PublicInbox::DS::post_loop_do = (\&once);
my $pid = $td->{pid};
if ($^O eq 'linux' && open(my $f, '<', "/proc/$pid/status")) {
# try not to overflow the listen() backlog:
if (!($n % 128) && $DONE != $n) {
diag("nr: ($n) $DONE/$nfd");
- PublicInbox::DS->SetLoopTimeout(-1);
+ $PublicInbox::DS::loop_timeout = -1;
local @PublicInbox::DS::post_loop_do = (sub { $DONE != $n });
# clear the backlog:
PublicInbox::DS::event_loop();
# resume looping
- PublicInbox::DS->SetLoopTimeout(0);
+ $PublicInbox::DS::loop_timeout = 0;
}
}
# run the event loop normally, now:
diag "done?: @".time." $DONE/$nfd";
if ($DONE != $nfd) {
- PublicInbox::DS->SetLoopTimeout(-1);
+ $PublicInbox::DS::loop_timeout = -1;
local @PublicInbox::DS::post_loop_do = (sub { $DONE != $nfd });
PublicInbox::DS::event_loop();
}
# setup the event loop so that it exits at every step
# while we're still doing connect(2)
-PublicInbox::DS->SetLoopTimeout(0);
+$PublicInbox::DS::loop_timeout = 0;
local @PublicInbox::DS::post_loop_do = (\&once);
foreach my $n (1..$nfd) {
# try not to overflow the listen() backlog:
if (!($n % 128) && $n != $DONE) {
diag("nr: ($n) $DONE/$nfd");
- PublicInbox::DS->SetLoopTimeout(-1);
+ $PublicInbox::DS::loop_timeout = -1;
@PublicInbox::DS::post_loop_do = (sub { $DONE != $n });
# clear the backlog:
PublicInbox::DS::event_loop();
# resume looping
- PublicInbox::DS->SetLoopTimeout(0);
+ $PublicInbox::DS::loop_timeout = 0;
@PublicInbox::DS::post_loop_do = (\&once);
}
}
# run the event loop normally, now:
if ($DONE != $nfd) {
- PublicInbox::DS->SetLoopTimeout(-1);
+ $PublicInbox::DS::loop_timeout = -1;
@PublicInbox::DS::post_loop_do = (sub {
diag "done: ".time." $DONE";
$DONE != $nfd;