summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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;