use DXDebug;
use strict;
-use vars qw(%u $dbm $filename %valid);
+use vars qw(%u $dbm $filename %valid $lastoperinterval $lasttime);
%u = ();
$dbm = undef;
$filename = undef;
+$lastoperinterval = 30*24*60*60;
+$lasttime = 0;
# hash of valid elements and a simple prompt
%valid = (
use strict;
+#
+# periodic processing
+#
+sub process
+{
+ if ($main::systime > $lasttime + 15) {
+ $dbm->sync;
+ $lasttime = $main::systime;
+ }
+}
+
#
# close the system
#
{
my $pkg = shift;
my $call = uc shift;
- # $call =~ s/-\d+$//o; # strip ssid
- my $s = $u{$call};
- return $s ? decode($s) : undef;
-}
-
-#
-# get all callsigns in the database
-#
-
-sub get_all_calls
-{
- return (sort keys %u);
+ my $data;
+ unless ($dbm->get($call, $data)) {
+ return decode($data);
+ }
+ return undef;
}
#
{
my $pkg = shift;
my $call = uc shift;
- # $call =~ s/-\d+$//o; # strip ssid
my $dxchan = DXChannel->get($call);
return $dxchan->user if $dxchan;
- return get($pkg, $call);
+ my $data;
+ unless ($dbm->get($call, $data)) {
+ return decode($data);
+ }
+ return undef;
+}
+
+#
+# get all callsigns in the database
+#
+
+sub get_all_calls
+{
+ return (sort keys %u);
}
#
}
delete $self->{annok} if $self->{annok};
delete $self->{dxok} if $self->{dxok};
- $u{$call} = $self->encode();
- $dbm->sync;
+ $dbm->put($call, $self->encode);
}
#
{
my $s = shift;
my $ref;
- $s = '$ref = ' . $s;
- eval $s;
- Log('DXUser', $@) if $@;
- $ref = undef if $@;
+ eval '$ref = ' . $s;
+ if ($@) {
+ dbg('err', $@) if $@;
+ Log('err', $@) if $@;
+ $ref = undef;
+ }
return $ref;
}
for ($dbm->get_dup($call)) {
$dbm->del_dup($call, $_);
}
- $dbm->sync;
}
#
$self->put();
}
+#
+# sync the database
+#
+
+sub sync
+{
+ $dbm->sync;
+}
+
#
# return a list of valid elements
#