From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on dcvr.yhbt.net X-Spam-Level: X-Spam-Status: No, score=-4.0 required=3.0 tests=ALL_TRUSTED,BAYES_00 shortcircuit=no autolearn=ham autolearn_force=no version=3.4.2 Received: from localhost (dcvr.yhbt.net [127.0.0.1]) by dcvr.yhbt.net (Postfix) with ESMTP id 898C61F934 for ; Sun, 3 Jan 2021 02:06:17 +0000 (UTC) From: Eric Wong To: meta@public-inbox.org Subject: [PATCH 1/7] ipc: some documentation comments Date: Sun, 3 Jan 2021 02:06:11 +0000 Message-Id: <20210103020617.15719-2-e@80x24.org> In-Reply-To: <20210103020617.15719-1-e@80x24.org> References: <20210103020617.15719-1-e@80x24.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit List-Id: Fix some comments and add some short summary descriptions to hopefully make things easier-to-follow. --- lib/PublicInbox/IPC.pm | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/lib/PublicInbox/IPC.pm b/lib/PublicInbox/IPC.pm index 288a8c94..79cd34fe 100644 --- a/lib/PublicInbox/IPC.pm +++ b/lib/PublicInbox/IPC.pm @@ -10,7 +10,7 @@ use Socket qw(AF_UNIX SOCK_STREAM); use Carp qw(confess croak); use PublicInbox::Sigfd; my ($enc, $dec); -# ->imports at BEGIN turns serial_*_with_object into custom ops on 5.14+ +# ->imports at BEGIN turns sereal_*_with_object into custom ops on 5.14+ # and eliminate method call overhead BEGIN { eval { @@ -71,9 +71,10 @@ sub ipc_worker_loop ($$) { } } +# starts a worker if Sereal or Storable is installed sub ipc_worker_spawn { my ($self, $ident, $oldset) = @_; - return unless $enc; + return unless $enc; # no Sereal or Storable my $pid = $self->{-ipc_worker_pid}; confess "BUG: already spawned PID:$pid" if $pid; confess "BUG: already have worker socket" if $self->{-ipc_sock}; @@ -108,15 +109,17 @@ sub ipc_worker_reap { # dwaitpid callback warn "PID:$pid died with \$?=$?\n" if $?; } -# for base class, override in superclasses +# for base class, override in sub classes sub ipc_atfork_parent {} sub ipc_atfork_child {} +# should only be called inside the worker process sub ipc_worker_exit { my (undef, $code) = @_; exit($code); } +# idempotent, can be called regardless of whether worker is active or not sub ipc_worker_stop { my ($self) = @_; my $pid; @@ -147,6 +150,7 @@ sub ipc_lock_init { $self->{-ipc_lock} //= bless { lock_path => $f }, 'PublicInbox::Lock' } +# call $self->$sub(@args), on a worker if ipc_worker_spawn was used sub ipc_do { my ($self, $sub, @args) = @_; if (my $s1 = $self->{-ipc_sock}) {