App-Base
view release on metacpan or search on metacpan
lib/App/Base/Daemon/Supervisor.pm view on Meta::CPAN
package App::Base::Daemon::Foo;
use Moose;
with 'App::Base::Daemon::Supervisor';
sub documentation { return 'foo'; }
sub options { ... }
sub supervised_process {
my $self = shift;
# the main daemon process
while(1) {
# check if supervisor is alive, exit otherwise
$self->ping_supervisor;
# do something
...
}
}
sub supervised_shutdown {
# this is called during shutdown
}
=head1 DESCRIPTION
lib/App/Base/Daemon/Supervisor.pm view on Meta::CPAN
=head1 REQUIRED METHODS
Class consuming this role must implement the following methods:
=cut
=head2 supervised_process
The main daemon subroutine. Inside this subroutine you should periodically
check that supervisor is still alive using I<ping_supervisor> method. If
supervisor exited, daemon should also exit.
=cut
requires 'supervised_process';
=head2 supervised_shutdown
This subroutine is executed then daemon process is shutting down. Put cleanup
code inside.
lib/App/Base/Daemon/Supervisor.pm view on Meta::CPAN
);
has _child_pid => (is => 'rw');
=head1 METHODS
=cut
=head2 $self->ping_supervisor
Should only be called from supervised process. Checks if supervisor is alive
and initiates shutdown if it is not.
=cut
sub ping_supervisor {
my $self = shift;
my $pipe = $self->supervisor_pipe or $self->error("Supervisor pipe is not defined");
say $pipe "ping";
my $pong = <$pipe>;
unless (defined $pong) {
( run in 0.520 second using v1.01-cache-2.11-cpan-df04353d9ac )