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