-
package ZOOM::IRSpy;
use 5.008;
}
-my $_reliabilityField = {
+my $_specialFields = {
reliability => [ reliability => 0,
- "Calculated reliability of server",
- "e:serverInfo/e:reliability" ],
+ "Calculated reliability of server",
+ "e:serverInfo/e:reliability" ],
+ udb => [ udb => 0,
+ "Access Name (Unique DB)",
+ "e:databaseInfo/i:udb" ],
};
sub _rewrite_zeerex_record {
# Add reliability score
my $xc = irspy_xpath_context($rec);
my($nok, $nall, $percent) = calc_reliability_stats($xc);
- modify_xml_document($xc, $_reliabilityField, { reliability => $percent });
+ modify_xml_document($xc, $_specialFields, { reliability => $percent });
+
+ if (!defined $oldid) {
+ # New record: generate a UDB for it.
+ modify_xml_document($xc, $_specialFields, { udb => _next_udb() });
+ }
my $p = $conn->package();
$p->option(action => "specialUpdate");
}
+sub _next_udb {
+ use IndexData::Utils::PersistentCounter;
+
+ my $file = $ENV{IRSPY_COUNTER_FILE}
+ or die "no IRSPY_COUNTER_FILE in environment";
+ my $counter = new IndexData::Utils::PersistentCounter($file)
+ or die "can't open counter file '$file': $!";
+ my $val = $counter->next()
+ or die "can't get counter value from '$file': $!";
+ return "irspy-$val";
+}
+
+
sub _delete_record {
my($conn, $id) = @_;