X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FMooseX%2FDaemonize%2FWithPidFile.pm;h=0df77381584cf680d68e3022e20f76b9d8681c96;hb=df3c463b810bb63cbf295a8e822dc887844b9a0b;hp=b5aa510e5f63204734390d8282b53563bfa06a25;hpb=8ac4733fe6918fb1449262f56b5c371315c6cfb8;p=gitmo%2FMooseX-Daemonize.git diff --git a/lib/MooseX/Daemonize/WithPidFile.pm b/lib/MooseX/Daemonize/WithPidFile.pm index b5aa510..0df7738 100644 --- a/lib/MooseX/Daemonize/WithPidFile.pm +++ b/lib/MooseX/Daemonize/WithPidFile.pm @@ -1,27 +1,168 @@ package MooseX::Daemonize::WithPidFile; -use strict; +use strict; # cause Perl::Critic errors are annoying +use MooseX::Getopt; # to load the Getopt metaclass use Moose::Role; use MooseX::Daemonize::Pid::File; our $VERSION = 0.01; +with 'MooseX::Daemonize::Core'; + requires 'init_pidfile'; has pidfile => ( + # NOTE: + # this should always be accessible + # from the command line IMO + # - SL + metaclass => 'Getopt', isa => 'MooseX::Daemonize::Pid::File', is => 'rw', lazy => 1, - required => 1, coerce => 1, predicate => 'has_pidfile', builder => 'init_pidfile', ); +after 'daemonize' => sub { + my $self = shift; + # NOTE: + # make sure that we do not have + # any bad PID values stashed around + # - SL + $self->pidfile->clear_pid; + if ($self->is_daemon) { + $self->pidfile->write; + } +}; + 1; __END__ =pod -=cut \ No newline at end of file +=head1 NAME + +MooseX::Daemonize::WithPidFile - A Role with the core daemonization and pidfile management + +=head1 SYNOPSIS + + package My::Daemon; + use Moose; + + with 'MooseX::Daemonize::WithPidFile'; + + sub start { + my $self = shift; + # daemonize me ... + $self->daemonize; # << this will write the pidfile for you + # return from the parent,... + return unless $self->is_daemon; + # but continue on in the child (daemon) + } + +=head1 DESCRIPTION + +This is a slightly extended basic daemonization Role, it provides +Pidfile management along with the core daemonization features +found in L. + +=head1 ATTRIBUTES + +=over + +=item I rw, isa => MooseX::Daemonize::Pid::File)> + +This attribute holds the L object used +to manage the Pidfile. It will initialize the object using the +C method (which is required by this role). + +=back + +=head1 REQUIRED METHODS + +=over 4 + +=item I + +This method is used to build the I attribute's object. It should +return a L object. + +=item B + +This is a predicate method to tell you if your I attribute has +been initialized yet. + +=back + +=head1 METHODS + +=over 4 + +=item B + +This adds an C method modifier to the C method (from +L) and handles writing your Pidfile for you. + +=item B + +The C method from L + +=back + +=head1 DEPENDENCIES + +L, L and L + +=head1 INCOMPATIBILITIES + +None reported. + +=head1 BUGS AND LIMITATIONS + +No bugs have been reported. + +Please report any bugs or feature requests to +C, or through the web interface at +L. + +=head1 AUTHOR + +Stevan Little C<< >> + +=head1 LICENCE AND COPYRIGHT + +Copyright (c) 2007-2008, Chris Prather C<< >>. All rights +reserved. + +Portions heavily borrowed from L which is copyright Earl Hood. + +This module is free software; you can redistribute it and/or +modify it under the same terms as Perl itself. See L. + +=head1 DISCLAIMER OF WARRANTY + +BECAUSE THIS SOFTWARE IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE SOFTWARE, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE SOFTWARE "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER +EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE +ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE SOFTWARE IS WITH +YOU. SHOULD THE SOFTWARE PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL +NECESSARY SERVICING, REPAIR, OR CORRECTION. + +IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE SOFTWARE AS PERMITTED BY THE ABOVE LICENCE, BE +LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL, +OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE +THE SOFTWARE (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE SOFTWARE TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + +=cut