AnyEvent-Subprocess
view release on metacpan or search on metacpan
lib/AnyEvent/Subprocess/DefaultDelegates.pm view on Meta::CPAN
),
$class->new(
name => "${prefix}stderr",
direction => 'r',
replace => \*STDERR,
),
);
});
register_delegate( 'CommHandle' => sub {
my $args = shift || {};
my $name = $args->{name} || 'comm';
return AnyEvent::Subprocess::Job::Delegate::Handle->new(
name => $name,
direction => 'rw',
pass_to_child => 1,
);
});
register_delegate( 'Pty' => sub {
my $args = shift || {};
$args->{name} ||= 'pty';
if(delete $args->{stderr}){
$args->{redirect_handles} = [
\*STDIN,
\*STDOUT,
\*STDERR,
];
}
return AnyEvent::Subprocess::Job::Delegate::Pty->new(%$args);
});
register_delegate( 'CompletionCondvar' => sub {
my $args = shift || {};
$args->{name} ||= 'completion_condvar';
return AnyEvent::Subprocess::Job::Delegate::CompletionCondvar->new(%$args);
});
register_delegate( 'Callback' => sub {
my $args = shift || {};
$args->{name} ||= 'callback';
return AnyEvent::Subprocess::Job::Delegate::Callback->new(%$args);
});
register_delegate( 'Capture' => sub {
my $args = shift || {};
confess 'need handle' unless $args->{handle};
$args->{name} ||= $args->{handle} . '_capture';
return AnyEvent::Subprocess::Job::Delegate::CaptureHandle->new(%$args);
});
register_delegate( 'MonitorHandle' => sub {
my $args = shift || {};
confess 'need handle' unless $args->{handle};
confess 'need callbacks' unless $args->{callbacks} || $args->{callback};
my $handle = $args->{handle};
$args->{name} ||= $handle . '_monitor';
$args->{callbacks} ||= $args->{callback};
delete $args->{callback};
return AnyEvent::Subprocess::Job::Delegate::MonitorHandle->new(%$args);
});
register_delegate('PrintError' => sub {
my $args = shift || {};
$args->{name} ||= 'error_printer';
return AnyEvent::Subprocess::Job::Delegate::PrintError->new(%$args);
});
register_delegate( 'Timeout', sub {
my $args = shift;
return AnyEvent::Subprocess::Job::Delegate::Timeout->new(
name => $args->{name} || 'timeout',
time_limit => $args->{time_limit} || $args->{timeout},
kill_with => $args->{kill_with} || 9,
);
});
1;
=pod
=head1 NAME
AnyEvent::Subprocess::DefaultDelegates - sets up default delegate name/builder mappings
=head1 VERSION
version 1.102912
=head1 DELEGATES PROVIDED
=head2 Handle
Provides connections to an arbitrary filehandle / fd / pipe / socket /
etc.
See L<AnyEvent::Subprocess::Job::Delegate::Handle>
=head2 StandardHandles
Provides connections to the child's STDIN/STDOUT/STDERR handles.
Delegates are named stdin/stdout/stderr. Optional arg prefix adds a
prefix string to the delegates' names.
=head2 CommHandle
Provides a (bidirectional) socket to be shared between the child and
parent. Optional arg name provides delegate name (so you can have
more than one, if desired).
Optional arg name controls name; defaults to 'comm.
=head2 Pty
( run in 2.876 seconds using v1.01-cache-2.11-cpan-97f6503c9c8 )