package POEDaemon::WheelRun::OWServer; use strict; use warnings FATAL => 'all'; no warnings 'redefine'; use POE; use POEDaemon; sub states { return $_[0], [qw( owserver_start owserver_stop owserver_childexit )]; } sub owserver_start { my ($kernel, $heap) = @_[KERNEL, HEAP]; log_enabled && logline 'event fired'; my $port = cfg->{onewire_port}; unless ($port) { log_enabled && logline 'no port'; return; } my $prog = [ 'util/owserver.sh', $port, ]; log_enabled && logline 'wheelrun_exec'; $kernel->yield(wheelrun_exec => { prog => $prog, name => 'owserver', }); } sub owserver_stop { my $kernel = $_[KERNEL]; $kernel->yield(wheelrun_kill => { wheel_name => 'owserver' }); } sub owserver_childexit { my ($kernel, $heap) = @_[KERNEL, HEAP]; unless ($heap->{shutdown}) { $kernel->yield(shutdown => 'owserver child abnormally terminated'); } } 1;