projects
/
spider.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fix an ordering problem with node checking
[spider.git]
/
perl
/
DXUser.pm
diff --git
a/perl/DXUser.pm
b/perl/DXUser.pm
index ce26c291c7919a1b0874c709b09f1f53ddc918f2..ddcbc954da3248e74be2fa276b9e3b3709a26eff 100644
(file)
--- a/
perl/DXUser.pm
+++ b/
perl/DXUser.pm
@@
-16,6
+16,13
@@
use IO::File;
use DXDebug;
use strict;
use DXDebug;
use strict;
+
+use vars qw($VERSION $BRANCH);
+$VERSION = sprintf( "%d.%03d", q$Revision$ =~ /(\d+)\.(\d+)/ );
+$BRANCH = sprintf( "%d.%03d", q$Revision$ =~ /\d+\.\d+\.(\d+)\.(\d+)/ ) || 0;
+$main::build += $VERSION;
+$main::branch += $BRANCH;
+
use vars qw(%u $dbm $filename %valid $lastoperinterval $lasttime);
%u = ();
use vars qw(%u $dbm $filename %valid $lastoperinterval $lasttime);
%u = ();
@@
-63,8
+70,10
@@
$lasttime = 0;
pingint => '9,Node Ping interval',
nopings => '9,Ping Obs Count',
wantlogininfo => '9,Login info req,yesno',
pingint => '9,Node Ping interval',
nopings => '9,Ping Obs Count',
wantlogininfo => '9,Login info req,yesno',
- wantgrid => '0,DX Grid Info,yesno',
+ wantgrid => '0,DX Grid Info,yesno',
+ wantann_talk => '0,Talklike Anns,yesno',
lastoper => '9,Last for/oper,cldatetime',
lastoper => '9,Last for/oper,cldatetime',
+ nothere => '0,Not Here Text',
);
no strict;
);
no strict;
@@
-77,12
+86,17
@@
sub AUTOLOAD
$name =~ s/.*:://o;
confess "Non-existant field '$AUTOLOAD'" if !$valid{$name};
$name =~ s/.*:://o;
confess "Non-existant field '$AUTOLOAD'" if !$valid{$name};
+ # this clever line of code creates a subroutine which takes over from autoload
+ # from OO Perl - Conway
+ *{$AUTOLOAD} = sub {@_ > 1 ? $_[0]->{$name} = $_[1] : $_[0]->{$name}} ;
if (@_) {
$self->{$name} = shift;
}
return $self->{$name};
}
if (@_) {
$self->{$name} = shift;
}
return $self->{$name};
}
+use strict;
+
#
# initialise the system
#
#
# initialise the system
#
@@
-110,8
+124,6
@@
sub del_file
unlink $fn;
}
unlink $fn;
}
-use strict;
-
#
# periodic processing
#
#
# periodic processing
#
@@
-209,9
+221,10
@@
sub put
confess "Trying to put nothing!" unless $self && ref $self;
my $call = $self->{call};
# delete all instances of this
confess "Trying to put nothing!" unless $self && ref $self;
my $call = $self->{call};
# delete all instances of this
- for ($dbm->get_dup($call)) {
- $dbm->del_dup($call, $_);
- }
+# for ($dbm->get_dup($call)) {
+# $dbm->del_dup($call, $_);
+# }
+ $dbm->del($call);
delete $self->{annok} if $self->{annok};
delete $self->{dxok} if $self->{dxok};
$dbm->put($call, $self->encode);
delete $self->{annok} if $self->{annok};
delete $self->{dxok} if $self->{dxok};
$dbm->put($call, $self->encode);
@@
-239,8
+252,8
@@
sub decode
my $ref;
eval '$ref = ' . $s;
if ($@) {
my $ref;
eval '$ref = ' . $s;
if ($@) {
- dbg(
'err', $@) if $@
;
- Log('err', $@)
if $@
;
+ dbg(
$@)
;
+ Log('err', $@);
$ref = undef;
}
return $ref;
$ref = undef;
}
return $ref;
@@
-255,9
+268,10
@@
sub del
my $self = shift;
my $call = $self->{call};
# delete all instances of this
my $self = shift;
my $call = $self->{call};
# delete all instances of this
- for ($dbm->get_dup($call)) {
- $dbm->del_dup($call, $_);
- }
+# for ($dbm->get_dup($call)) {
+# $dbm->del_dup($call, $_);
+# }
+ $dbm->del($call);
}
#
}
#
@@
-319,23
+333,23
@@
sub export
# Input file: $filename
# Time: $t
#
# Input file: $filename
# Time: $t
#
-
+
package main;
package main;
-
+
# search local then perl directories
BEGIN {
umask 002;
# search local then perl directories
BEGIN {
umask 002;
-
+
# root of directory tree for this system
$root = "/spider";
$root = $ENV{'DXSPIDER_ROOT'} if $ENV{'DXSPIDER_ROOT'};
unshift @INC, "$root/perl"; # this IS the right way round!
unshift @INC, "$root/local";
# root of directory tree for this system
$root = "/spider";
$root = $ENV{'DXSPIDER_ROOT'} if $ENV{'DXSPIDER_ROOT'};
unshift @INC, "$root/perl"; # this IS the right way round!
unshift @INC, "$root/local";
-
+
# try to detect a lockfile (this isn't atomic but
# should do for now
# try to detect a lockfile (this isn't atomic but
# should do for now
- $lockfn = "$root/perl/cluster.l
o
ck"; # lock file name
+ $lockfn = "$root/perl/cluster.lck"; # lock file name
if (-e $lockfn) {
open(CLLOCK, "$lockfn") or die "Can't open Lockfile ($lockfn) $!";
my $pid = <CLLOCK>;
if (-e $lockfn) {
open(CLLOCK, "$lockfn") or die "Can't open Lockfile ($lockfn) $!";
my $pid = <CLLOCK>;
@@
-351,25
+365,25
@@
use DXVars;
use DXUser;
if (@ARGV) {
use DXUser;
if (@ARGV) {
-
$main::userfn = shift @ARGV;
-
print "user filename now $userfn\n";
+ $main::userfn = shift @ARGV;
+ print "user filename now $userfn\n";
}
DXUser->del_file($main::userfn);
DXUser->init($main::userfn, 1);
%u = (
}
DXUser->del_file($main::userfn);
DXUser->init($main::userfn, 1);
%u = (
-
};
-
-for ($action = R_FIRST; !$dbm->seq($key, $ref, $action); $action = R_NEXT) {
- print $fh "'$key' => q{$ref},\n";
- ++$count;
-}
-print $fh ");\n#\nprint \"there were $count records\\n\";\n#\n";
-print $fh "DXUser->sync; DXUser->finish;\n#\n";
-$fh->close;
-}
-
return $count;
+ };
+
+
for ($action = R_FIRST; !$dbm->seq($key, $ref, $action); $action = R_NEXT) {
+
print $fh "'$key' => q{$ref},\n";
+
++$count;
+
}
+
print $fh ");\n#\nprint \"there were $count records\\n\";\n#\n";
+
print $fh "DXUser->sync; DXUser->finish;\n#\n";
+
$fh->close;
+
}
+ return $count;
}
#
}
#
@@
-506,12
+520,17
@@
sub wantgrid
return _want('grid', @_);
}
return _want('grid', @_);
}
+sub wantann_talk
+{
+ return _want('ann_talk', @_);
+}
+
sub wantlogininfo
{
my $self = shift;
sub wantlogininfo
{
my $self = shift;
- my $
n
= shift;
- $self->{wantlogininfo} = $
n if $n
;
- return
exists $self->{wantlogininfo} ? $self->{wantlogininfo} : 0
;
+ my $
val
= shift;
+ $self->{wantlogininfo} = $
val if defined $val
;
+ return
$self->{wantlogininfo}
;
}
sub is_node
}
sub is_node