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;