summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordakkar <dakkar@sardina.(none)>2009-08-05 17:15:54 +0200
committerdakkar <dakkar@sardina.(none)>2009-08-05 17:15:54 +0200
commit7bd517fa3e76570c63879470394a82059b573329 (patch)
tree92f11769080f328e0a01eb9af0595308a4bd6360
parentprefix messages with thread ids (diff)
downloadThread-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.pm31
1 files changed, 21 insertions, 10 deletions
diff --git a/Queue.pm b/Queue.pm
index bf83a0d..cd978e5 100644
--- a/Queue.pm
+++ b/Queue.pm
@@ -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;