Commit | Line | Data |
2eced271 |
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 |