From: Mike Taylor Date: Tue, 18 Jul 2006 11:43:55 +0000 (+0000) Subject: Implement the "pod_omit" option. X-Git-Tag: CPAN-v1.02~54^2~1137 X-Git-Url: http://lists.indexdata.dk/?a=commitdiff_plain;h=a10bf5f0f34ee0f552b0a69af7fdfba249a0ba3c;p=irspy-moved-to-github.git Implement the "pod_omit" option. Current simple version screws up the rs[$i] indexes. --- diff --git a/lib/ZOOM/Pod.pm b/lib/ZOOM/Pod.pm index 23c714d..d532b40 100644 --- a/lib/ZOOM/Pod.pm +++ b/lib/ZOOM/Pod.pm @@ -1,4 +1,4 @@ -# $Id: Pod.pm,v 1.13 2006-06-21 14:31:24 mike Exp $ +# $Id: Pod.pm,v 1.14 2006-07-18 11:43:55 mike Exp $ package ZOOM::Pod; @@ -265,6 +265,10 @@ indicates whether C should continue (return-value 0) or return immediately (any other value). Exception-handling callbacks may of course re-throw the exception. +Connections that have the C option set are omitted from +consideration. This is useful if, for example, a connection that is +part of a pod is known to have encountered an unrecoverable error. + =cut sub wait { @@ -272,8 +276,21 @@ sub wait { my($arg) = @_; my $res = 0; - while ((my $i = ZOOM::event($this->{conn})) != 0) { - my $conn = $this->{conn}->[$i-1]; + + my @conn; + foreach my $conn (@{ $this->{conn} }) { + if (!$conn->option("pod_omit")) { + push @conn, $conn; + } else { + # If we don't push anything onto @conn, then the index $i + # will be meaningless in the loop below, and the + # references to $rs[$i] will be wrong. Ouch. + push @conn, undef; + } + } + + while ((my $i = ZOOM::event(\@conn)) != 0) { + my $conn = $conn[$i-1]; my $ev = $conn->last_event(); my $evstr = ZOOM::event_str($ev); ZOOM::Log::log("pod", "connection ", $i-1, ": event $ev ($evstr)");