-# $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;
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();
}
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);
$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 {