BEGIN {
$AnyEvent::Subprocess::Job::Delegate::MonitorHandle::VERSION
=
'1.102912'
;
}
has
'handle'
=> (
is
=>
'ro'
,
isa
=> Str,
required
=> 1,
);
has
'callbacks'
=> (
traits
=> [
'Array'
],
is
=>
'ro'
,
isa
=> CodeList,
required
=> 1,
coerce
=> 1,
auto_deref
=> 1,
handles
=> {
add_callback
=>
'push'
,
},
);
has
'when'
=> (
is
=>
'ro'
,
isa
=> WhenToCallBack,
required
=> 1,
default
=>
sub
{
'Line'
},
);
sub
parent_setup_hook {
my
(
$self
,
$job
,
$run
) =
@_
;
my
$handle
=
$run
->delegate(
$self
->handle)->handle;
if
(
$self
->
when
eq
'Line'
){
my
$reader
;
$reader
=
sub
{
my
(
$h
,
$l
,
$eol
) =
@_
;
$self
->_run_callbacks(
$l
,
$eol
);
$h
->push_read(
line
=>
$reader
);
};
$handle
->push_read(
line
=>
$reader
);
}
else
{
$handle
->on_read(
sub
{
my
$h
=
shift
;
$self
->_run_callbacks(
delete
$h
->{rbuf} );
return
;
});
}
return
;
}
sub
_run_callbacks {
my
$self
=
shift
;
for
my
$cb
(
$self
->callbacks){
$cb
->(
@_
);
}
return
;
}
sub
build_run_delegates {
my
$self
=
shift
;
return
AnyEvent::Subprocess::Running::Delegate::MonitorHandle->new(
name
=>
$self
->name,
_job_delegate
=>
$self
,
);
}
sub
child_setup_hook {}
sub
child_finalize_hook {}
sub
parent_finalize_hook {}
sub
build_code_args {}
sub
receive_child_result {}
sub
receive_child_error {}
__PACKAGE__->meta->make_immutable;
1;