Commit | Line | Data |
2eced271 |
1 | package MooseX::Daemonize::PidFile; |
2 | use strict; # because Kwalitee is pedantic |
3 | use Moose; |
d9e417f4 |
4 | |
5 | use MooseX::Daemonize::Types; |
2eced271 |
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 |