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