diff options
author | Eric Wong <e@80x24.org> | 2023-10-04 03:49:14 +0000 |
---|---|---|
committer | Eric Wong <e@80x24.org> | 2023-10-04 17:46:30 +0000 |
commit | 2f946a02bc324612febdfe31604b79e0196a215f (patch) | |
tree | a225827b35718f40cd0d6c50d584895e211a5ae1 /lib/PublicInbox/DS.pm | |
parent | 1cbad18d329faad67c85f4d56f79afc80a2c80c4 (diff) | |
download | public-inbox-2f946a02bc324612febdfe31604b79e0196a215f.tar.gz |
It's shared by both by lei and public-facing daemons in using the ->busy callback.
Diffstat (limited to 'lib/PublicInbox/DS.pm')
-rw-r--r-- | lib/PublicInbox/DS.pm | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/lib/PublicInbox/DS.pm b/lib/PublicInbox/DS.pm index c476311b..ecfb581d 100644 --- a/lib/PublicInbox/DS.pm +++ b/lib/PublicInbox/DS.pm @@ -233,6 +233,16 @@ sub enqueue_reap () { $reap_armed //= requeue(\&reap_pids) } sub in_loop () { $in_loop } +# use inside @post_loop_do, returns number of busy clients +sub close_non_busy () { + my $n = 0; + for my $s (values %DescriptorMap) { + # close as much as possible, early as possible + ($s->busy ? ++$n : $s->close) if $s->can('busy'); + } + $n; +} + # Internal function: run the post-event callback, send read events # for pushed-back data, and close pending connections. returns 1 # if event loop should continue, or 0 to shut it all down. |