diff options
author | dakkar <dakkar@sardina.(none)> | 2009-08-05 17:15:54 +0200 |
---|---|---|
committer | dakkar <dakkar@sardina.(none)> | 2009-08-05 17:15:54 +0200 |
commit | 7bd517fa3e76570c63879470394a82059b573329 (patch) | |
tree | 92f11769080f328e0a01eb9af0595308a4bd6360 | |
parent | prefix messages with thread ids (diff) | |
download | Thread-Queue-Event-7bd517fa3e76570c63879470394a82059b573329.tar.gz Thread-Queue-Event-7bd517fa3e76570c63879470394a82059b573329.tar.bz2 Thread-Queue-Event-7bd517fa3e76570c63879470394a82059b573329.zip |
refactor and expose more methods
-rw-r--r-- | Queue.pm | 31 |
1 files changed, 21 insertions, 10 deletions
@@ -36,20 +36,31 @@ sub _build_queue { return Thread::Queue->new(); } -after enqueue => sub { - my ($self)=shift; - syswrite $self->pipes->[1],'0'; -}; +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 => sub { - my ($self)=shift; - my $foo;sysread $self->pipes->[0],$foo,1; -}; +before dequeue => \&_pipe_read; sub add_watch { my ($self,$sub)=@_; - Glib::IO->add_watch(fileno($self->pipes->[0]),'in',$sub); + Glib::IO->add_watch($self->event_fileno,'in',$sub); } sub signal { @@ -58,7 +69,7 @@ sub signal { croak "Not signaling on an empty queue, would block" unless $self->pending; - syswrite $self->pipes->[1],'0'; + $self->_pipe_write(); } no Moose; |