package POEDaemon::WheelRun::Watchdog; use strict; use warnings FATAL => 'all'; no warnings 'redefine'; use POE; use POEDaemon; sub states { return $_[0], [qw( watchdog_start watchdog_stop watchdog_childexit watchdog )]; } sub watchdog_start { my $kernel = $_[KERNEL]; $kernel->yield(wheelrun_exec => { prog => [ 'util/watchdog.pl' ], name => 'watchdog', }); } sub watchdog_stop { my $kernel = $_[KERNEL]; $kernel->yield(wheelrun_kill => { wheel_name => 'watchdog' }); } sub watchdog_childexit { my ($kernel, $heap) = @_[KERNEL, HEAP]; unless ($heap->{shutdown}) { $kernel->yield(shutdown => 'watchdog child abnormally terminated'); } } sub watchdog { my ($heap, $line) = @_[HEAP, ARG0]; return unless defined $line; my $wheel = $heap->{wheel_run}->{children_by_name}->{watchdog}->{wheel}; return unless $wheel; #log_enabled && logline "put '%s'", $line; $wheel->put($line); } 1;