[Catalyst-commits] r14285 -
CatalystX-Restarter-GTK/trunk/lib/CatalystX/Restarter
dd070 at dev.catalyst.perl.org
dd070 at dev.catalyst.perl.org
Fri Apr 27 07:40:14 GMT 2012
Author: dd070
Date: 2012-04-27 07:40:14 +0000 (Fri, 27 Apr 2012)
New Revision: 14285
Modified:
CatalystX-Restarter-GTK/trunk/lib/CatalystX/Restarter/GTK.pm
Log:
Added icons, fixed bug of pid=0, updated Makefile.PL
Modified: CatalystX-Restarter-GTK/trunk/lib/CatalystX/Restarter/GTK.pm
===================================================================
--- CatalystX-Restarter-GTK/trunk/lib/CatalystX/Restarter/GTK.pm 2012-04-09 14:08:00 UTC (rev 14284)
+++ CatalystX-Restarter-GTK/trunk/lib/CatalystX/Restarter/GTK.pm 2012-04-27 07:40:14 UTC (rev 14285)
@@ -1,4 +1,5 @@
package CatalystX::Restarter::GTK;
+use 5.8;
use Moose;
use MooseX::Types::Moose qw(Int Str);
use Try::Tiny qw(try catch);
@@ -11,7 +12,7 @@
use IO::Handle qw();
use namespace::autoclean;
-our $VERSION = '0.05';
+our $VERSION = '0.06';
extends 'Catalyst::Restarter';
@@ -60,9 +61,30 @@
default => 1
);
+has server_watcher => (
+ is => 'rw'
+);
+
+sub start_server_watcher {
+ my $self = shift;
+ my $pid = shift;
+
+ $self->_child($pid);
+ # Detect server process termination.
+ my $server_watcher = AnyEvent->child(
+ pid => $self->_child,
+ cb => sub {
+ $self->notify_win('stopped');
+ $self->_child(0);
+ }
+ );
+ $self->server_watcher($server_watcher);
+}
+
sub run_and_watch {
my ($self) = @_;
-
+
+
my $sem = IPC::Semaphore->new(IPC_PRIVATE, 1, S_IRWXU | IPC_CREAT)
or croak "Can not create semaphore $!";
@@ -80,19 +102,10 @@
$parent_sock->autoflush(1);
require AnyEvent;
-
+
$self->win_pid($pid);
$self->parent_sock($parent_sock);
- # Detect server process termination.
- my $child_server = AnyEvent->child(
- pid => $self->_child,
- cb => sub {
- $self->notify_win('stopped');
- $self->_child(0);
- }
- );
-
# Detect window process termination
my $child_win = AnyEvent->child(
pid => $self->win_pid,
@@ -236,8 +249,8 @@
if($pid) {
close $writer;
- $self->_child($pid);
-
+ $self->start_server_watcher($pid);
+
# Read console output from forked server and send to win proc
$self->srv_reader(AnyEvent->io(
fh => $reader,
@@ -248,7 +261,7 @@
}
}
));
-
+
$self->notify_win('starting');
$sentry->dismiss;
$sem->op(0, 1, 0);
@@ -514,6 +527,10 @@
Dhaval Dhanani L<mailto:dhaval070 at gmail.com>
+=head1 CONTRIBUTOR
+
+Sapan Shah L<mailto:sapangshah at gmail.com>
+
=head1 LICENCE
This library is free software. You can redistribute it and/or modify it under the same terms as Perl itself.
More information about the Catalyst-commits
mailing list