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