summaryrefslogtreecommitdiff
path: root/t/lib/Test/Conduit.pm
blob: 02454e76ab25062416ba46cb646e139bb5a3eb0d (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;
 
class Test::Conduit with Thread::Task::Role::Conduit {
    use Thread::Queue;
    use Thread::Task::Types qw(Queue_T);
 
    has queue => (
        isa => Queue_T,
        is => 'ro',
        init_arg => undef,
        default => sub { Thread::Queue->new },
        handles => {
            signal => 'enqueue',
            pop => 'dequeue',
        },
    );
 
    method runloop() {
        while (my $msg=$self->pop) {
            $self->manager->on_signal($msg);
        }
    }
 
    method runonce() {
        $self->manager->on_signal($self->pop);
    }
}
 
1;