X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=lib%2FZOOM%2FIRSpy%2FUtils.pm;h=53e53fc033060711888dcf04c922243958eb48c3;hb=4f36c963da80271ffea671999e41aaa04ea9a36f;hp=4fd7677fdc2a860b7070b00c2b3cc74640222ce3;hpb=6f7f7355b5144a08194d144b4b9bb2f1d0c035af;p=irspy-moved-to-github.git diff --git a/lib/ZOOM/IRSpy/Utils.pm b/lib/ZOOM/IRSpy/Utils.pm index 4fd7677..53e53fc 100644 --- a/lib/ZOOM/IRSpy/Utils.pm +++ b/lib/ZOOM/IRSpy/Utils.pm @@ -181,6 +181,7 @@ sub cql_target { } return "rec.id=" . cql_quote($id); + #return "rec.id_raw=" . cql_quote($id); } @@ -284,13 +285,14 @@ sub _irspy_identifier2target { confess "_irspy_identifier2target(): id is undefined" if !defined $id; - my($protocol, $target) = ($id =~ /(.*?):(.*)/); + my($prefix, $protocol, $target) = ($id =~ /([^:]*,)?(.*?):(.*)/); + $prefix ||= ""; if (uc($protocol) eq "Z39.50" || uc($protocol) eq "TCP") { - return "tcp:$target"; + return "${prefix}tcp:$target"; } elsif (uc($protocol) eq "SRU") { - return "sru=get,http:$target"; + return "${prefix}sru=get,http:$target"; } elsif (uc($protocol) eq "SRW") { - return "sru=srw,http:$target"; + return "${prefix}sru=srw,http:$target"; } warn "_irspy_identifier2target($id): unrecognised protocol '$protocol'"; @@ -812,11 +814,21 @@ sub calc_reliability_string { sub calc_reliability_stats { my($xc) = @_; + my $sixtyDaysAgo = time() - 60*24*60*60; + my $iso60DA = isodate($sixtyDaysAgo); my @allpings = $xc->findnodes("i:status/i:probe"); - my $nall = @allpings; + + my($nall, $nok) = (0, 0); + foreach my $node (@allpings) { + my $ok = $xc->findvalue('@ok', $node); + my $when = $node->to_literal(); + #warn "$when cmp $iso60DA == ", ($when cmp $iso60DA), "\n"; + next if $when lt $iso60DA; + $nall++; + $nok += !!$ok; + } + return (0, 0, 0) if $nall == 0; - my @okpings = $xc->findnodes('i:status/i:probe[@ok = "1"]'); - my $nok = @okpings; my $percent = int(100*$nok/$nall + 0.5); return ($nok, $nall, $percent); }