package MooseX::Daemonize::Pid;
use strict; # because Kwalitee is pedantic
use Moose;
+use Moose::Util::TypeConstraints;
+
+coerce 'MooseX::Daemonize::Pid'
+ => from 'Int'
+ => via { MooseX::Daemonize::Pid->new( pid => $_ ) };
our $VERSION = '0.01';
has 'pid' => (
- is => 'rw',
- isa => 'Int',
- lazy => 1,
- default => sub { $$ }
+ is => 'rw',
+ isa => 'Int',
+ lazy => 1,
+ clearer => 'clear_pid',
+ predicate => 'has_pid',
+ default => sub { $$ }
);
sub is_running { kill(0, (shift)->pid) ? 1 : 0 }
=head1 NAME
MooseX::Daemonize::Pid - PID management for MooseX::Daemonize
-
-=head1 SYNOPSIS
=head1 DESCRIPTION
+This is a very basic Pid management object, it doesn't do all that
+much, and mostly just serves as a base class for L<MooseX::Daemonize::Pid::File>.
+
=head1 ATTRIBUTES
-=over
+=over 4
-=item pid Int
+=item I<pid Int>
=back
=head1 METHODS
-=over
+=over 4
+
+=item B<clear_pid>
+
+This will clear the value of the I<pid> attribute. It is useful for making sure
+that the parent process does not have a bad value stored in it.
-=item is_running
+=item B<has_pid>
+
+This is a predicate method to tell you if your I<pid> attribute has
+been initialized yet.
+
+=item B<is_running>
+
+This checks to see if the I<pid> is running.
=item meta()
This module is free software; you can redistribute it and/or
modify it under the same terms as Perl itself. See L<perlartistic>.
-
=head1 DISCLAIMER OF WARRANTY
BECAUSE THIS SOFTWARE IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY