Initial MooseX::Workers based wrapper script
Chris Andrews [Fri, 1 May 2009 15:31:37 +0000 (16:31 +0100)]
testapp/script/testapp_stomp_workers.pl [new file with mode: 0644]

diff --git a/testapp/script/testapp_stomp_workers.pl b/testapp/script/testapp_stomp_workers.pl
new file mode 100644 (file)
index 0000000..960c7bd
--- /dev/null
@@ -0,0 +1,46 @@
+package Manager;
+use Moose;
+with qw(MooseX::Workers);
+
+BEGIN { 
+       $ENV{CATALYST_ENGINE} = 'Stomp';
+       require Catalyst::Engine::Stomp;
+}  
+
+use FindBin;
+use lib "$FindBin::Bin/../lib";
+
+sub run {
+       my $self = shift;
+       for my $i (1..4) {
+               $self->spawn( sub { 
+                                     require TestApp;
+                                     TestApp->run();
+                             } );
+       }
+        POE::Kernel->run();
+}
+
+# Implement our Interface
+sub worker_manager_start { warn 'started worker manager' }
+sub worker_manager_stop  { warn 'stopped worker manager' }
+sub max_workers_reached  { warn 'maximum worker count reached' }
+
+sub worker_stdout  { shift; warn join ' ', @_; }
+sub worker_stderr  { shift; warn join ' ', @_; }
+sub worker_error   { shift; warn join ' ', @_; }
+sub worker_done    {
+       my $self = shift;
+       warn "restarting";
+       $self->spawn( sub { 
+                             require TestApp;
+                             TestApp->run();
+                     } );
+}
+sub worker_started { shift; warn join ' ', @_; }
+sub sig_child      { shift; warn join ' ', @_; }
+no Moose;
+
+my $manager = Manager->new();
+$manager->run();
+