From c2d0c48a19f33c5145350c52d115c4b8b17a8a54 Mon Sep 17 00:00:00 2001 From: dakkar Date: Sun, 11 Jul 2010 21:01:28 +0100 Subject: now it compiles --- 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 +++++----- 5 files changed, 27 insertions(+), 23 deletions(-) (limited to 'lib/Thread') 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