42340729778465e9e622afc658191c38ff776737
[gitmo/MooseX-Daemonize.git] / lib / MooseX / Daemonize / PidFile.pm
1 package MooseX::Daemonize::PidFile;
2 use strict;    # because Kwalitee is pedantic
3 use Moose;
4 use MooseX::Types::Path::Class;
5
6 our $VERSION = '0.01';
7
8 has 'pid' => (
9     is      => 'rw',
10     isa     => 'Int',
11     lazy    => 1,
12     default => sub { 
13         my $self = shift;
14         $self->does_file_exist
15             ? $self->file->slurp(chomp => 1)
16             : $$
17     }
18 );
19
20 has 'file' => (
21     is       => 'ro',
22     isa      => 'Path::Class::File',
23     coerce   => 1,
24     required => 1,
25     handles  => [ 'remove' ]
26 );
27
28 sub does_file_exist { -s (shift)->file }
29
30 sub write {
31     my $self = shift;
32     $self->file->openw->print($self->pid);
33 }
34
35 sub running {
36     my $self = shift;
37     $self->does_file_exist
38         ? (kill(0, $self->pid) ? 1 : 0)
39         : 0;
40 }
41
42 1;
43
44 __END__
45
46 =pod
47
48 =head1 NAME
49
50 MooseX::Daemonize::PidFile - PID file management for MooseX::Daemonize
51
52 =head1 SYNOPSIS
53      
54 =head1 DESCRIPTION
55
56 =head1 ATTRIBUTES
57
58 =over
59
60 =item pid Int
61
62 =item file Path::Class::File | Str
63
64 =back
65
66 =head1 METHODS 
67
68 =over
69
70 =item remove
71
72 =item write
73
74 =item does_file_exist
75
76 =item running
77
78 =item meta()
79
80 The C<meta()> method from L<Class::MOP::Class>
81
82 =back
83
84 =head1 DEPENDENCIES
85
86 Obviously L<Moose>
87
88 =head1 INCOMPATIBILITIES
89
90 None reported.
91
92 =head1 BUGS AND LIMITATIONS
93
94 No bugs have been reported.
95
96 Please report any bugs or feature requests to
97 C<bug-acme-dahut-call@rt.cpan.org>, or through the web interface at
98 L<http://rt.cpan.org>.
99
100 =head1 AUTHOR
101
102 Stevan Little  C<< <stevan@cpan.org> >>
103
104 =head1 LICENCE AND COPYRIGHT
105
106 Copyright (c) 2007, Chris Prather C<< <perigrin@cpan.org> >>. All rights 
107 reserved.
108
109 This module is free software; you can redistribute it and/or
110 modify it under the same terms as Perl itself. See L<perlartistic>.
111
112
113 =head1 DISCLAIMER OF WARRANTY
114
115 BECAUSE THIS SOFTWARE IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
116 FOR THE SOFTWARE, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
117 OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
118 PROVIDE THE SOFTWARE "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
119 EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
120 WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE
121 ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE SOFTWARE IS WITH
122 YOU. SHOULD THE SOFTWARE PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL
123 NECESSARY SERVICING, REPAIR, OR CORRECTION.
124
125 IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
126 WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
127 REDISTRIBUTE THE SOFTWARE AS PERMITTED BY THE ABOVE LICENCE, BE
128 LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL,
129 OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE
130 THE SOFTWARE (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
131 RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
132 FAILURE OF THE SOFTWARE TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
133 SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
134 SUCH DAMAGES.
135
136 =cut