[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