diff options
author | dakkar <dakkar@sardina.(none)> | 2009-08-06 14:49:44 +0200 |
---|---|---|
committer | dakkar <dakkar@sardina.(none)> | 2009-08-06 14:50:29 +0200 |
commit | fc2e454e91daec9854302431f48b31f2181d03c9 (patch) | |
tree | ed6a0867152a4be8f9b26dc6fd1cbbe49563cd40 /Queue.pm | |
parent | refactor and expose more methods (diff) | |
download | Thread-Queue-Event-fc2e454e91daec9854302431f48b31f2181d03c9.tar.gz Thread-Queue-Event-fc2e454e91daec9854302431f48b31f2181d03c9.tar.bz2 Thread-Queue-Event-fc2e454e91daec9854302431f48b31f2181d03c9.zip |
refactor to roles
Diffstat (limited to 'Queue.pm')
-rw-r--r-- | Queue.pm | 76 |
1 files changed, 0 insertions, 76 deletions
diff --git a/Queue.pm b/Queue.pm deleted file mode 100644 index cd978e5..0000000 --- a/Queue.pm +++ /dev/null @@ -1,76 +0,0 @@ -package Glib::Thread::Queue; -use Moose; -use Glib; -use Thread::Queue; -use Carp; - -has queue => ( - is => 'ro', - isa => 'Thread::Queue', - init_arg => undef, - builder => '_build_queue', - handles => [qw( - enqueue - dequeue - dequeue_nb - pending - peek - insert - extract - )], -); - -has pipes => ( - isa => 'ArrayRef', - is => 'ro', - builder => '_build_pipes', -); - -sub _build_pipes { - my ($main,$thread);pipe($main,$thread); - - return [$main,$thread]; -} - -sub _build_queue { - return Thread::Queue->new(); -} - -sub _pipe_write { - return syswrite $_[0]->pipes->[1],'0'; -} - -sub _pipe_read { - my $foo;sysread $_[0]->pipes->[0],$foo,1; - return $foo; -} - -sub event_fh { - return $_[0]->pipes->[0]; -} - -sub event_fileno { - return fileno($_[0]->event_fh); -} - -after enqueue => \&_pipe_write; - -before dequeue => \&_pipe_read; - -sub add_watch { - my ($self,$sub)=@_; - - Glib::IO->add_watch($self->event_fileno,'in',$sub); -} - -sub signal { - my ($self)=@_; - - croak "Not signaling on an empty queue, would block" - unless $self->pending; - - $self->_pipe_write(); -} - -no Moose; -1; |