#!/usr/bin/perl
package POE::Component::Supervisor::Supervised::Proc;
use Moose;
use POE::Component::Supervisor::Handle::Proc;
use namespace::clean -except => 'meta';
with qw(POE::Component::Supervisor::Supervised);
has '+handle_class' => ( default => "POE::Component::Supervisor::Handle::Proc" );
__PACKAGE__->_inherit_attributes_from_handle_class;
sub is_abnormal_exit {
my ( $self, %args ) = @_;
my $exit_code = $args{exit_code};
return ( defined($exit_code) and $exit_code != 0 );
}
__PACKAGE__
__END__
=pod
=head1 NAME
POE::Component::Supervisor::Supervised::Proc - A supervision descriptor for UNIX processes.
=head1 SYNOPSIS
use POE;
use POE::Component::Supervisor;
use POE::Component::Supervisor::Supervised::Proc;
POE::Component::Supervisor->new(
children => [
POE::Component::Supervisor::Supervised::Proc->new(
program => [qw(memcached -m 64)],
restart_policy => "permanent",
),
],
);
$poe_kernel->run;
=head1 DESCRIPTION
This is a factory object that creates L<POE::Component::Supervisor::Handle::Proc> objects.
=head1 ATTRIBUTES
See also L<POE::Component::Supervisor::Handle::Proc/ATTRIBUTES>, all of the
documented attributes that apply to handle creation are borrowed by this class.
=over 4
=item handle_class
The class to instantiate.
Defaults to L<POE::Component::Supervisor::Handle::Proc>.
Note that attributes are inherited only from
L<POE::Component::Supervisor::Handle::Proc>. If your handle class requires
additional attributes, you must subclass your own C<Supervised> variant.
The C<_inherit_attributes_from_handle_class> method can then be invoked on your
subclass to reinherit all the attributes. Read the source of
L<POE::Component::Supervisor::Supervised> for more details.
=back
=head1 METHODS
See also L<POE::Component::Supervisor::Supervised/METHODS>.
=over 4
=item spawn
Called by L<POE::Component::Supervisor> when a new instance of the child
process should be spawned.
=item is_abnormal_exit
Used by C<should_restart>. See L<POE::Component::Supervisor::Supervised> for
details.
Returns true if the C<exit_code> argument is not equal to 0.
=back
=cut