summaryrefslogtreecommitdiff
path: root/lib/Thread/Task/Handle.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Thread/Task/Handle.pm')
-rw-r--r--lib/Thread/Task/Handle.pm8
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),
);
}