NAME
Proc::Application::Daemon - daemon class based on Proc::Application;
SYNOPSIS
package Program;
use Proc::Application::Daemon;
use base qw(Proc::Application::Daemon);
sub handler
{
my ( $his, $clientSocket ) = @_;
$this->socket->print ( 'Done' );
$this->log->warning ( 'warning' );
die "Error";
}
package main;
Program->new->run();
DESCRIPTION
daemon class based on Proc::Application;
new
A construtror, setup childs and childCount
options
Add mode (fork|single|prefork=[count]) and socket (domain=unix|inet|ssl:all_io::socket:: parameter) options
processSocketCreate
Handler for socket option. Create new socket and store it to $object->{socket}
processModeParameter
Child for 'prefork=count' mode and setup preforkCount option
socket
Return a client socket from $object->{socket}
mainSocket
Return a main daemon socket from $object->{socket}
done
You must return 'true' for end main loop
mainHandler
Call handler() method with $cliendSocket atrument, log the errors of execution and close client socket at exit
handler
Real work method, get $this and $clientSocket argumentds.
childs
Return a hash reference of childs with keys with pids
processSigChild
SIGCHLD processor. Get a child pid by waitpid() and delete it from childs()
forkFunction
Get three code refs ( for run at parent, child and error fork sitiations ), fork process and execute parameters functions. Store pid of new process at childs(), exit(0) at child after execute of child function, log fork error and sleep(1) after fork error. funtions
threadFunction
realMain
Main loop. accept() the new connection, and fork (if fork more) and pass execution to mainHandler
main
Prefork processes if prefork mode, loop up for preforked childs count and call realMain()
DESTROY
Send TERM signal to all childs and call parent DESTROY()
Log Debug Error Fatal Run Options
for compatibility with Net::Daemon