diff options
Diffstat (limited to 'lib/Thread/Task/Handle.pm')
-rw-r--r-- | lib/Thread/Task/Handle.pm | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/lib/Thread/Task/Handle.pm b/lib/Thread/Task/Handle.pm index 5dfcd40..5cb2eed 100644 --- a/lib/Thread/Task/Handle.pm +++ b/lib/Thread/Task/Handle.pm @@ -7,6 +7,7 @@ class Thread::Task::Handle { 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; + use MooseX::MultiMethods; require Scalar::Util; @@ -16,7 +17,6 @@ class Thread::Task::Handle { isa => Int, is => 'ro', default => sub { ++$SEQUENCE }, - init_arg => undef, ); has task => ( @@ -32,6 +32,10 @@ class Thread::Task::Handle { init_arg => undef, ); + multi method BUILDARGS(ClassName $class: Task_T $task) { + return $class->next::method({task=>$task}); + } + method prepare() { try { $self->task->prepare; @@ -86,7 +90,7 @@ class Thread::Task::Handle { return $class->new( hid=>$hid, - task=>Thread::Task->from_string($task_serialized), + task=>$task_class->from_string($task_serialized), ); } |