dbf8cf7d3c1b35b16ec4d0c8e094f91d1fcdfda9
[gitmo/MooseX-Daemonize.git] / lib / MooseX / Daemonize / Pid.pm
1 package MooseX::Daemonize::Pid;
2 use strict;    # because Kwalitee is pedantic
3 use Moose;
4 use Moose::Util::TypeConstraints;
5 our $VERSION   = '0.11';
6
7 coerce 'MooseX::Daemonize::Pid'
8     => from 'Int'
9         => via { MooseX::Daemonize::Pid->new( pid => $_ ) };
10
11
12 has 'pid' => (
13     is        => 'rw',
14     isa       => 'Int',
15     lazy      => 1,
16     clearer   => 'clear_pid',
17     predicate => 'has_pid',
18     default   => sub { $$ }
19 );
20
21 sub is_running { kill(0, (shift)->pid) ? 1 : 0 }
22
23 1;
24
25 __END__
26
27 =pod
28
29 =head1 NAME
30
31 MooseX::Daemonize::Pid - PID management for MooseX::Daemonize
32
33 =head1 DESCRIPTION
34
35 This is a very basic Pid management object, it doesn't do all that
36 much, and mostly just serves as a base class for L<MooseX::Daemonize::Pid::File>.
37
38 =head1 ATTRIBUTES
39
40 =over 4
41
42 =item I<pid Int>
43
44 =back
45
46 =head1 METHODS
47
48 =over 4
49
50 =item B<clear_pid>
51
52 This will clear the value of the I<pid> attribute. It is useful for making sure
53 that the parent process does not have a bad value stored in it.
54
55 =item B<has_pid>
56
57 This is a predicate method to tell you if your I<pid> attribute has
58 been initialized yet.
59
60 =item B<is_running>
61
62 This checks to see if the I<pid> is running.
63
64 =item meta()
65
66 The C<meta()> method from L<Class::MOP::Class>
67
68 =back
69
70 =head1 DEPENDENCIES
71
72 Obviously L<Moose>
73
74 =head1 INCOMPATIBILITIES
75
76 None reported.
77
78 =head1 BUGS AND LIMITATIONS
79
80 No bugs have been reported.
81
82 Please report any bugs or feature requests to
83 C<bug-acme-dahut-call@rt.cpan.org>, or through the web interface at
84 L<http://rt.cpan.org>.
85
86 =head1 AUTHOR
87
88 Stevan Little  C<< <stevan.little@iinteractive.com> >>
89
90 =head1 LICENCE AND COPYRIGHT
91
92 Copyright (c) 2007-2010, Chris Prather C<< <perigrin@cpan.org> >>. All rights
93 reserved.
94
95 This module is free software; you can redistribute it and/or
96 modify it under the same terms as Perl itself. See L<perlartistic>.
97
98 =head1 DISCLAIMER OF WARRANTY
99
100 BECAUSE THIS SOFTWARE IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
101 FOR THE SOFTWARE, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
102 OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
103 PROVIDE THE SOFTWARE "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
104 EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
105 WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE
106 ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE SOFTWARE IS WITH
107 YOU. SHOULD THE SOFTWARE PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL
108 NECESSARY SERVICING, REPAIR, OR CORRECTION.
109
110 IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
111 WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
112 REDISTRIBUTE THE SOFTWARE AS PERMITTED BY THE ABOVE LICENCE, BE
113 LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL,
114 OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE
115 THE SOFTWARE (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
116 RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
117 FAILURE OF THE SOFTWARE TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
118 SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
119 SUCH DAMAGES.
120
121 =cut