AnyEvent-Proc
view release on metacpan or search on metacpan
lib/AnyEvent/Proc.pm view on Meta::CPAN
in => $wIN,
out => $rOUT,
err => $rERR,
map { ( "$_" => $_->A ) } @xhs,
},
pid => $pid,
listeners => {
exit => delete $options{on_exit},
ttl_exceed => delete $options{on_ttl_exceed},
},
eol => "\n",
cv => $cv,
alive => 1,
waiter => $waiter,
waiters => {
in => [],
out => [],
err => [],
map { ( "$_" => [] ) } @xhs
},
reapers => [],
} => ref $class
|| $class;
map { $_->{proc} = $self } @xhs;
{
my $eol = quotemeta $self->_eol;
$self->{reol} = delete $options{reol} || qr{$eol};
}
if ( $options{ttl} ) {
$self->{timer} = AnyEvent->timer(
after => delete $options{ttl},
cb => sub {
return unless $self->alive;
$self->kill;
$self->_emit('ttl_exceed');
}
lib/AnyEvent/Proc.pm view on Meta::CPAN
sub in { shift->_geth('in') }
sub out { shift->_geth('out') }
sub err { shift->_geth('err') }
sub _geth {
shift->{handles}->{ pop() };
}
sub _eol { shift->{eol} }
sub _reol { shift->{reol} }
sub _emit {
my ( $self, $name, @args ) = @_;
AE::log debug => "trapped $name";
if ( exists $self->{listeners}->{$name}
and defined $self->{listeners}->{$name} )
{
$self->{listeners}->{$name}->( $self, @args );
}
}
lib/AnyEvent/Proc.pm view on Meta::CPAN
$ok = 1;
}
catch {
AE::log warn => $_;
};
$ok;
}
sub writeln {
my ( $self, @lines ) = @_;
$self->write( $_ . $self->_eol ) for @lines;
$self;
}
sub pipe {
my $self = shift;
my $peer = pop;
my $what = ( pop || 'out' );
if ( ref $what ) {
$what = "$what";
}
lib/AnyEvent/Proc.pm view on Meta::CPAN
$ok = 1;
}
catch {
AE::log note => "cannot unshift_read from std$what: $_";
};
$ok;
}
sub _readline {
my ( $self, $what, $sub ) = @_;
$self->_push_read( $what => line => $self->_reol, $sub );
}
sub _readchunk {
my ( $self, $what, $bytes, $sub ) = @_;
$self->_push_read( $what => chunk => $bytes => $sub );
}
sub _sub_cb {
my ($cb) = @_;
sub { $cb->( $_[1] ) }
lib/AnyEvent/Proc.pm view on Meta::CPAN
$ok = 1;
}
catch {
AE::log note => $_;
};
$ok;
}
sub writeln {
my ( $self, @lines ) = @_;
my $eol = $self->{proc}->_eol;
$self->write( $_ . $eol ) for @lines;
$self;
}
sub pull { die 'UNIMPLEMENTED' }
1;
package # hidden
AnyEvent::Proc::TiedScalar;
( run in 1.375 second using v1.01-cache-2.11-cpan-8f98c5d2c55 )