1 package MooseX::Runnable::Invocation::Plugin::Restart;
3 use MooseX::Types::Moose qw(Str);
5 use namespace::autoclean;
7 with 'MooseX::Runnable::Invocation::Plugin::Restart::Base';
9 has 'completion_condvar' => (
11 isa => 'AnyEvent::CondVar',
13 default => sub { AnyEvent->condvar },
16 has 'kill_signal' => (
20 default => sub { 'INT' },
23 has 'restart_signal' => (
27 default => sub { 'HUP' },
30 after '_restart_parent_setup' => sub {
34 $kw = AnyEvent->signal( signal => $self->kill_signal, cb => sub {
37 $self->completion_condvar->send(0); # parent exit code
40 $rw = AnyEvent->signal( signal => $self->restart_signal, cb => sub {
41 $rw = $rw; # closes over $rw and prevents it from being GC'd
48 print {*STDERR} "Control pid is $$\n";
49 return $self->completion_condvar->wait;