summaryrefslogtreecommitdiff
path: root/lib/Thread/Task/Role/Task.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Thread/Task/Role/Task.pm')
-rw-r--r--lib/Thread/Task/Role/Task.pm10
1 files changed, 7 insertions, 3 deletions
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) {