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