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