-# Copyright (C) 2020-2021 all contributors <meta@public-inbox.org>
+# Copyright (C) all contributors <meta@public-inbox.org>
# License: AGPL-3.0+ <https://www.gnu.org/licenses/agpl-3.0.txt>
# connects public-inbox processes to PublicInbox::Gcf2::loop()
use PublicInbox::Spawn qw(spawn);
use Socket qw(AF_UNIX SOCK_STREAM);
use PublicInbox::Syscall qw(EPOLLIN EPOLLET);
+use PublicInbox::DS qw(awaitpid);
# fields:
# sock => socket to Gcf2::loop
# The rest of these fields are compatible with what PublicInbox::Git
# pid.owner => process which spawned {pid}
# in => same as {sock}, for compatibility with PublicInbox::Git
# inflight => array (see PublicInbox::Git)
-# cat_rbuf => scalarref, may be non-existent or empty
+# rbuf => scalarref, may be non-existent or empty
sub new {
my ($rdr) = @_;
my $self = bless {}, __PACKAGE__;
$rdr->{0} = $rdr->{1} = $s2;
my $cmd = [$^X, qw[-MPublicInbox::Gcf2 -e PublicInbox::Gcf2::loop]];
$self->{'pid.owner'} = $$;
- $self->{pid} = spawn($cmd, $env, $rdr);
+ awaitpid($self->{pid} = spawn($cmd, $env, $rdr), undef);
$s1->blocking(0);
$self->{inflight} = [];
$self->{in} = $s1;
# ensure PublicInbox::Git::cat_async_step never calls cat_async_retry
sub alternates_changed {}
-# DS->EventLoop will call this
+# DS::event_loop will call this
sub event_step {
my ($self) = @_;
$self->flush_write;
return $self->close unless $self->{in}; # process died
# ok, more to do, requeue for fairness
- $self->requeue if @$inflight || exists($self->{cat_rbuf});
+ $self->requeue if @$inflight || exists($self->{rbuf});
}
}
sub DESTROY {
my ($self) = @_;
- delete $self->{sock}; # if outside EventLoop
+ delete $self->{sock}; # if outside event_loop
PublicInbox::Git::DESTROY($self);
}