NAME
Reflex::POE::Wheel::Run - Represent POE::Wheel::Run as a Reflex class.
VERSION
version 0.050
SYNOPSIS
Unfortunately there isn't a concise, completely executable example for the synopsis at this time. Please see eg-07-wheel-run.pl and eg-08-observer-trait.pl in the distribution's eg directory for longer but fully executable ones.
has child => (
traits => ['Reflex::Trait::Observed'],
isa => 'Reflex::POE::Wheel::Run|Undef',
is => 'rw',
);
sub BUILD {
my $self = shift;
$self->child(
Reflex::POE::Wheel::Run->new(
Program => "$^X -wle 'print qq[pid(\$\$) moo(\$_)] for 1..10; exit'",
)
);
}
sub on_child_stdout {
my ($self, $args) = @_;
print "stdout: $args->{output}\n";
}
sub on_child_close {
my ($self, $args) = @_;
print "child closed all output\n";
}
sub on_child_signal {
my ($self, $args) = @_;
print "child $args->{pid} exited: $args->{exit}\n";
$self->child(undef);
}
DESCRIPTION
Reflex::POE::Wheel::Run represents an enhanced POE::Wheel::Run object. It will manage a child process, and it will also wait for (and report on) the corresponding SIGCHLD.
This module delegates to POE::Wheel::Run for most of its implementation. Please refer to that module for implementation details.
Public Methods
This class adds public methods specific to POE::Wheel::Run's operation. However, common methods like put() are both implemented and documented in the base Reflex::POE::Wheel class.
kill
kill() passes its arguments to POE::Wheel::Run's kill() method.
Public Events
Objects of this class emit all of POE::Wheel::Run's events, albeit renamed into Reflex-friendly forms. Generally these forms are determined by removing the "Event" suffix and lowercasing what remains. POE::Wheel::Run's StdinEvent becomes "stdin", and so on.
stdin
See POE::Wheel::Run's StdinEvent. Within Reflex, this event comes with only one parameter: "wheel_id". This is the POE::Wheel::Run object's ID.
stdout
See POE::Wheel::Run's StdoutEvent. Reflex includes two parameters: "wheel_id" and "output". The latter parameter contains data the child process wrote to its STDOUT handle.
stderr
See POE::Wheel::Run's StderrEvent. Reflex includes two parameters: "wheel_id" and "output". The latter parameter contains data the child process wrote to its STDERR handle.
error
See POE::Wheel::Run's ErrorEvent. Reflex maps the wheel's parameters to: "operation", "errnum", "errstr", "wheel_id" and "handle_name", respectively.
closed
See POE::Wheel::Run's CloseEvent. Reflex includes only one parameter for this event: "wheel_id".
CAVEATS
This class could further be improved so that it doesn't report SIGCHLD until all the child's output has been received and processed. This would resolve a long-standing nondeterminism in the timing of on_child_close() vs. on_child_signal().
SEE ALSO
Reflex Reflex::POE::Event Reflex::POE::Postback Reflex::POE::Session Reflex::POE::Wheel
"ACKNOWLEDGEMENTS" in Reflex "ASSISTANCE" in Reflex "AUTHORS" in Reflex "BUGS" in Reflex "BUGS" in Reflex "CONTRIBUTORS" in Reflex "COPYRIGHT" in Reflex "LICENSE" in Reflex "TODO" in Reflex