summaryrefslogtreecommitdiff
path: root/lib/Thread/Task/Role/Conduit.pm
blob: 1ffbd04f50758907d1d9988cba96811555a96dd4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
use 5.008003;
use MooseX::Declare;
 
role Thread::Task::Role::Conduit {
    use MooseX::Types::Moose qw(ClassName);
    use Thread::Task::Types qw(Manager_T);
    use Carp;
 
    requires 'signal';
 
    has manager => (
        isa => Manager_T,
        is => 'ro',
        required => 0,
        writer => '_set_manager',
        predicate => '_has_manager',
    );
 
    method conduit_init(Manager_T $manager) {
        $self->_set_manager($manager);
    }
 
    before signal {
        if (!$self->_has_manager) {
            croak "Can't signal without a manager";
        }
    }
}
 
1;