The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Reflex::POE::Wheel::Run - Represent POE::Wheel::Run as a Reflex class.

VERSION

version 0.070

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

Moose::Manual::Concepts

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