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