From c2d0c48a19f33c5145350c52d115c4b8b17a8a54 Mon Sep 17 00:00:00 2001 From: dakkar Date: Sun, 11 Jul 2010 21:01:28 +0100 Subject: now it compiles --- .gitignore | 2 ++ Makefile.PL | 4 ++-- lib/Thread/Task.pm | 8 ++++---- lib/Thread/Task/Handle.pm | 20 ++++++++++---------- lib/Thread/Task/Manager.pm | 2 +- lib/Thread/Task/Role/Task.pm | 10 +++++++--- lib/Thread/Task/Thread.pm | 10 +++++----- 7 files changed, 31 insertions(+), 25 deletions(-) diff --git a/.gitignore b/.gitignore index 6a3638d..1d29729 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,7 @@ /Makefile /Makefile.old +/META.yml +/MANIFEST /blib/ /pm_to_blib /inc/ diff --git a/Makefile.PL b/Makefile.PL index 2086bd5..4e38e2e 100644 --- a/Makefile.PL +++ b/Makefile.PL @@ -1,4 +1,4 @@ -use inc:Module::Install; +use inc::Module::Install; use strict; use warnings; @@ -6,13 +6,13 @@ name 'Thread-Task'; license 'perl'; author 'Gianni Ceccarelli '; requires 'perl' => '5.008003'; +version '0.001'; requires 'Moose' => '1.00'; requires 'MooseX::Types' => '0.22'; requires 'MooseX::Types::Structured' => '0.23'; requires 'threads' => '1.71'; requires 'threads::shared' => '1.26'; -requires 'Thread::Queue::Event' => 0; requires 'namespace::autoclean' => 0; requires 'MooseX::Declare' => '0.33'; requires 'MooseX::Singleton' => '0.22'; diff --git a/lib/Thread/Task.pm b/lib/Thread/Task.pm index 9966634..35976c6 100644 --- a/lib/Thread/Task.pm +++ b/lib/Thread/Task.pm @@ -2,8 +2,8 @@ use 5.008003; use MooseX::Declare; class Thread::Task { - use MooseX::Types::Moose qw(Object); - use Thread::Task::Types qw(Handle_T); + use MooseX::Types::Moose qw(ClassName Str Int); + use Thread::Task::Types qw(Handle_T Task_T); require Storable; @@ -36,7 +36,7 @@ class Thread::Task { clearer => 'clear_handle', ); - around BUILDARGS (Class $class,@rest) { + around BUILDARGS(ClassName $class: @rest) { my $params = $class->$orig(@rest); if (exists $params->{owner}) { @@ -90,7 +90,7 @@ class Thread::Task { Storable::nfreeze($self); } - method from_string(Class $class: Str $serialization) { + method from_string(ClassName $class: Str $serialization) { my $self=Storable::nthaw($serialization); my $self_class=$self->meta->name; unless ($self_class eq $class) { diff --git a/lib/Thread/Task/Handle.pm b/lib/Thread/Task/Handle.pm index b7012f4..5dfcd40 100644 --- a/lib/Thread/Task/Handle.pm +++ b/lib/Thread/Task/Handle.pm @@ -4,7 +4,7 @@ use MooseX::Declare; class Thread::Task::Handle { use TryCatch; - use MooseX::Types::Moose qw(Object Bool Int); + use MooseX::Types::Moose qw(ClassName Int ArrayRef); use Thread::Task::Types qw(Handle_T Worker_T Task_T Finished_ET); use Thread::Task::Exception::Finished; @@ -36,8 +36,8 @@ class Thread::Task::Handle { try { $self->task->prepare; } - catch (Finished_ET) { - die $@; + catch (Finished_ET $e) { + die $e; } catch { die Thread::Task::Exception::Finished->new(msg=>$@); @@ -48,8 +48,8 @@ class Thread::Task::Handle { try { $self->task->finish; } - catch (Finished_ET) { - die $@; + catch (Finished_ET $e) { + die $e; } catch { die Thread::Task::Exception::Finished->new(msg=>$@); @@ -62,7 +62,7 @@ class Thread::Task::Handle { $self->task->run; $self->task->clear_handle; } - catch (Finished_ET) { + catch (Finished_ET $e) { } catch ($e) { $self->task->clear_handle; @@ -76,11 +76,11 @@ class Thread::Task::Handle { return [ $self->hid, $self->task->meta->name, - $task->as_string, + $self->task->as_string, ]; } - method from_array(Class $class: ArrayRef $array) { + method from_array(ClassName $class: ArrayRef $array) { my ($hid,$task_class,$task_serialized)=@$array; Class::MOP::load_class($task_class); @@ -96,7 +96,7 @@ class Thread::Task::Handle { ); } - method on_message($method,@args) { + method on_message(Str $method, @args) { unless ($self->task->can($method)) { return; } @@ -118,7 +118,7 @@ class Thread::Task::Handle { $self->message('__STOPPED__'); } - method on_stopped(Task_T $new_task) { + method on_stopped(Task_T $new_task, @args) { $self->task->_update($new_task); try { diff --git a/lib/Thread/Task/Manager.pm b/lib/Thread/Task/Manager.pm index e969edc..f94aba6 100644 --- a/lib/Thread/Task/Manager.pm +++ b/lib/Thread/Task/Manager.pm @@ -4,7 +4,7 @@ use MooseX::Declare; class Thread::Task::Manager { use TryCatch; - use MooseX::Types::Moose qw(Object Bool Int); + use MooseX::Types::Moose qw(Object Bool Int ArrayRef HashRef); use Thread::Task::Types qw(Handle_T Worker_T Task_T Conduit_T Finished_ET); use MooseX::Singleton; diff --git a/lib/Thread/Task/Role/Task.pm b/lib/Thread/Task/Role/Task.pm index 61f9cbe..f7b3ccc 100644 --- a/lib/Thread/Task/Role/Task.pm +++ b/lib/Thread/Task/Role/Task.pm @@ -3,10 +3,11 @@ use MooseX::Declare; role Thread::Task::Role::Task { use MooseX::Types::Moose qw(Int); + use Thread::Task::Types qw(Task_T); require Scalar::Util; my $SEQUENCE = 0; - my %INDEX = 0; + my %INDEX = (); has task_revision => ( isa => Int, @@ -36,11 +37,14 @@ role Thread::Task::Role::Task { return $INDEX{$task_rev}; } - method task_request(:$task, %params) { + method task_request(%params) { + my $task = delete $params{task} + or die 'No task class passed'; + Class::MOP::load_class($task); $task->isa('Thread::Task') or die "Bad class $task, not a Thread::Task"; - $class->new(owner=>$self,%params)->schedule; + $task->new(owner=>$self,%params)->schedule; } method task_response(Task_T $task) { diff --git a/lib/Thread/Task/Thread.pm b/lib/Thread/Task/Thread.pm index 401992a..d3fa27a 100644 --- a/lib/Thread/Task/Thread.pm +++ b/lib/Thread/Task/Thread.pm @@ -5,7 +5,7 @@ class Thread::Task::Thread { use threads; use threads::shared; - use MooseX::Types::Moose qw(Int); + use MooseX::Types::Moose qw(ClassName Int); use Thread::Task::Types qw(Handle_T Worker_T Task_T Finished_ET Queue_T); @@ -19,12 +19,12 @@ class Thread::Task::Thread { my $SINGLETON; - method master(Class $class:) { + method master(ClassName $class:) { $SINGLETON or $class->new->spawn; } - method import(Class $class: @rest) { + method import(ClassName $class: @rest) { if (@rest && defined $rest[0] && $rest[0] eq ':master') { $class->master; } @@ -110,14 +110,14 @@ class Thread::Task::Thread { try { $self->$method(@$method); } - catch (Finished_ET) { + catch (Finished_ET $e) { last; } } return; } - method start_child(Thread_T $thread) { + method start_child($thread) { $thread->spawn; return; } -- cgit v1.2.3