X-Git-Url: http://jsfdemo.indexdata.com/?a=blobdiff_plain;f=lib%2FZOOM%2FIRSpy.pm;h=fa0885c3c846c04695d9910c98b9ee0abc4da840;hb=8d298affbccb42d0659e8461a20e8db83c877459;hp=ff85deca30081982311f72aa518df10e35c9c7d4;hpb=b3054bdd6afae46b4e5a7aae904ea3b4adff821a;p=irspy-moved-to-github.git diff --git a/lib/ZOOM/IRSpy.pm b/lib/ZOOM/IRSpy.pm index ff85dec..fa0885c 100644 --- a/lib/ZOOM/IRSpy.pm +++ b/lib/ZOOM/IRSpy.pm @@ -1,4 +1,4 @@ -# $Id: IRSpy.pm,v 1.55 2006-12-18 15:32:32 mike Exp $ +# $Id: IRSpy.pm,v 1.58 2007-02-05 13:28:51 mike Exp $ package ZOOM::IRSpy; @@ -248,15 +248,22 @@ sub _render_record { sub _irspy_to_zeerex { my ($this, $conn) = @_; my $irspy_doc = $conn->record()->{zeerex}->ownerDocument; - #open FH, '>/tmp/irspy_orig.xml'; - #print FH $irspy_doc->toString(); - #close FH; + my $save_xml = 0; + + if ($save_xml) { + unlink('/tmp/irspy_orig.xml'); + open FH, '>/tmp/irspy_orig.xml'; + print FH $irspy_doc->toString(); + close FH; + } my %params = (); my $result = $this->{irspy_to_zeerex_style}->transform($irspy_doc, %params); - - #open FH, '>/tmp/irspy_transformed.xml'; - #print FH $result->toString(); - #close FH; + if ($save_xml) { + unlink('/tmp/irspy_transformed.xml'); + open FH, '>/tmp/irspy_transformed.xml'; + print FH $result->toString(); + close FH; + } return $result->documentElement(); } @@ -397,7 +404,11 @@ sub check { my $i0 = ZOOM::event(\@conn); $this->log("irspy_event", "ZOOM_event(", scalar(@conn), " connections) = $i0"); - last if $i0 == 0 || $i0 == -3; # no events or no connections + if ($i0 == -3 || $i0 == 0) { + # no connections left, or no events on those that remain + $this->log("irspy", "no events remain"); + last; + } my $conn = $conn[$i0-1]; my $ev = $conn->last_event(); my $evstr = ZOOM::event_str($ev); @@ -498,15 +509,22 @@ sub check { $this->log("irspy", "$conn still has ZOOM-C level tasks queued: see below"); $finished = 0; } + my $ev = $conn->peek_event(); + if ($ev != 0) { # Or ZOOM::Event::ZEND? + my $evstr = ZOOM::event_str($ev); + $this->log("irspy", "$conn has event $ev ($evstr) waiting"); + $finished = 0; + } if (!$conn->option("rewrote_record")) { $this->log("irspy", "$conn did not rewrite its ZeeRex record"); $finished = 0; } } - # This really shouldn't be necessary, but it's belt and braces + # This really shouldn't be necessary, and in practice it rarely + # helps, but it's belt and braces if (!$finished) { - if (++$nruns < 10) { + if (++$nruns < 3) { $this->log("irspy", "back into main loop, ${nruns}th time"); goto ROUND_AND_ROUND_WE_GO; } else {