[LON-CAPA-cvs] cvs: loncom(Refactoring) / lond
foxr
lon-capa-cvs@mail.lon-capa.org
Mon, 22 Mar 2004 09:05:11 -0000
This is a MIME encoded message
--foxr1079946311
Content-Type: text/plain
foxr Mon Mar 22 04:05:11 2004 EDT
Modified files: (Branch: Refactoring)
/loncom lond
Log:
Fix up some indentation.
--foxr1079946311
Content-Type: text/plain
Content-Disposition: attachment; filename="foxr-20040322040511.txt"
Index: loncom/lond
diff -u loncom/lond:1.178.2.8 loncom/lond:1.178.2.9
--- loncom/lond:1.178.2.8 Tue Mar 16 05:52:30 2004
+++ loncom/lond Mon Mar 22 04:05:11 2004
@@ -2,7 +2,7 @@
# The LearningOnline Network
# lond "LON Daemon" Server (port "LOND" 5663)
#
-# $Id: lond,v 1.178.2.8 2004/03/16 10:52:30 foxr Exp $
+# $Id: lond,v 1.178.2.9 2004/03/22 09:05:11 foxr Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -53,7 +53,7 @@
my $status='';
my $lastlog='';
-my $VERSION='$Revision: 1.178.2.8 $'; #' stupid emacs
+my $VERSION='$Revision: 1.178.2.9 $'; #' stupid emacs
my $remoteVERSION;
my $currenthostid;
my $currentdomainid;
@@ -162,7 +162,56 @@
return (($ConnectionType eq "client") || ($ConnectionType eq "both"));
}
#
-# Ties a resource file to a hash. If necessary, an appropriate history
+# Ties a domain level resource file to a hash.
+# If requested a history entry is created in the associated hist file.
+#
+# Parameters:
+# domain - Name of the domain in which the resource file lives.
+# namespace - Name of the hash within that domain.
+# how - How to tie the hash (e.g. GDBM_WRCREAT()).
+# loghead - Optional parameter, if present a log entry is created
+# in the associated history file and this is the first part
+# of that entry.
+# logtail - Goes along with loghead, The actual logentry is of the
+# form $loghead:<timestamp>:logtail.
+# Returns:
+# Reference to a hash bound to the db file or alternatively undef
+# if the tie failed.
+#
+sub TieDomainHash {
+ my $domain = shift;
+ my $namespace = shift;
+ my $how = shift;
+
+ # Filter out any whitespace in the domain name:
+
+ $domain =~ s/\W//g;
+
+ # We have enough to go on to tie the hash:
+
+ my $UserTopDir = $perlvar('lonUsersDir');
+ my $DomainDir = $UserTopDir."/$domain";
+ my $ResourceFile = $DomainDir."/$namespace.db";
+ my %hash;
+ if(tie(%hash, 'GDBM_File', $ResourceFile, $how, 0640)) {
+ if (scalar @_) { # Need to log the operation.
+ my $logFh = IO::File->new(">>$DomainDir/$namespace.hist");
+ if($logFH) {
+ my $TimeStamp = time;
+ my ($loghead, $logtail) = @_;
+ print $logFH "$loghead:$TimeStamp:$logtail\n";
+ }
+ }
+ return \%hash; # Return the tied hash.
+ }
+ else {
+ return undef; # Tie failed.
+ }
+}
+
+#
+# Ties a user's resource file to a hash.
+# If necessary, an appropriate history
# log file entry is made as well.
# This sub factors out common code from the subs that manipulate
# the various gdbm files that keep keyword value pairs.
@@ -179,7 +228,7 @@
# hash to which the database is tied. It's up to the caller to untie.
# undef if the has could not be tied.
#
-sub TieResourceHash {
+sub TieUserHash {
my $domain = shift;
my $user = shift;
my $namespace = shift;
@@ -1364,7 +1413,7 @@
my ($udom,$uname,$namespace,$what) =split(/:/,$tail);
if ($namespace ne 'roles') {
chomp($what);
- my $hashref = TieResourceHash($udom, $uname, $namespace,
+ my $hashref = TieUserHash($udom, $uname, $namespace,
&GDBM_WRCREAT(),"P",$what);
if($hashref) {
my @pairs=split(/\&/,$what);
@@ -1415,7 +1464,7 @@
my ($udom,$uname,$namespace,$what) =split(/:/,$tail);
if ($namespace ne 'roles') {
chomp($what);
- my $hashref = TieResourceHash($udom, $uname,
+ my $hashref = TieUserHash($udom, $uname,
$namespace, &GDBM_WRCREAT(),
"P",$what);
if ($hashref) {
@@ -1476,7 +1525,7 @@
"what = ".$what);
my $namespace='roles';
chomp($what);
- my $hashref = TieResourceHash($udom, $uname, $namespace,
+ my $hashref = TieUserHash($udom, $uname, $namespace,
&GDBM_WRCREAT(), "P",
"$exedom:$exeuser:$what");
#
@@ -1533,7 +1582,7 @@
"what = ".$what);
my $namespace='roles';
chomp($what);
- my $hashref = TieResourceHash($udom, $uname, $namespace,
+ my $hashref = TieUserHash($udom, $uname, $namespace,
&GDBM_WRCREAT(), "D",
"$exedom:$exeuser:$what");
@@ -1585,7 +1634,7 @@
my ($udom,$uname,$namespace,$what) = split(/:/,$tail);
chomp($what);
- my $hashref = TieResourceHash($udom, $uname, $namespace,
+ my $hashref = TieUserHash($udom, $uname, $namespace,
&GDBM_READER());
if ($hashref) {
my @queries=split(/\&/,$what);
@@ -1640,7 +1689,7 @@
my ($cmd,$udom,$uname,$namespace,$what) = split(/:/,$userinput);
chomp($what);
- my $hashref = TieResourceHash($udom, $uname, $namespace,
+ my $hashref = TieUserHash($udom, $uname, $namespace,
&GDBM_READER());
if ($hashref) {
my @queries=split(/\&/,$what);
@@ -1703,7 +1752,7 @@
my ($udom,$uname,$namespace,$what) = split(/:/,$tail);
chomp($what);
- my $hashref = TieResourceHash($udom, $uname, $namespace,
+ my $hashref = TieUserHash($udom, $uname, $namespace,
&GDBM_WRCREAT(),
"D",$what);
if ($hashref) {
@@ -1747,7 +1796,7 @@
my ($udom,$uname,$namespace)=split(/:/,$tail);
my $qresult='';
- my $hashref = TieResourceHash($udom, $uname, $namespace,
+ my $hashref = TieUserHash($udom, $uname, $namespace,
&GDBM_READER());
if ($hashref) {
foreach my $key (keys %$hashref) {
@@ -1794,7 +1843,7 @@
my $userinput = "$cmd:$tail";
my ($udom,$uname,$namespace) = split(/:/,$tail);
- my $hashref = TieResourceHash($udom, $uname, $namespace,
+ my $hashref = TieUserHash($udom, $uname, $namespace,
&GDBM_READER());
if ($hashref) {
# Structure of %data:
@@ -1875,7 +1924,7 @@
} else {
$regexp='.';
}
- my $hashref =TieResourceHash($udom, $uname, $namespace,
+ my $hashref =TieUserHash($udom, $uname, $namespace,
&GDBM_READER());
if ($hashref) {
my $qresult='';
@@ -1935,7 +1984,7 @@
chomp($what);
my @pairs=split(/\&/,$what);
- my $hashref = TieResourceHash($udom, $uname, $namespace,
+ my $hashref = TieUserHash($udom, $uname, $namespace,
&GDBM_WRCREAT(), "P",
"$rid:$what");
if ($hashref) {
@@ -2214,20 +2263,17 @@
my $userinput = "$cmd:$tail";
- my ($udom,$what)=split(/:/,$tail);
chomp($what);
- $udom=~s/\W//g;
- my $proname=
- "$perlvar{'lonUsersDir'}/$udom/nohist_courseids";
my $now=time;
my @pairs=split(/\&/,$what);
- my %hash;
- if (tie(%hash,'GDBM_File',"$proname.db",&GDBM_WRCREAT(),0640)) {
+
+ my $hashref = TieDomainHash($udom, "nohist_courseids", &GDBM_WRCREAT());
+ if ($hashref) {
foreach my $pair (@pairs) {
my ($key,$value)=split(/=/,$pair);
- $hash{$key}=$value.':'.$now;
+ $hashref->{$key}=$value.':'.$now;
}
- if (untie(%hash)) {
+ if (untie(%$hashref)) {
Reply($client, "ok\n", $userinput);
} else {
Failure( $client, "error: ".($!+0)
@@ -2282,10 +2328,10 @@
}
unless (defined($since)) { $since=0; }
my $qresult='';
- my $proname = "$perlvar{'lonUsersDir'}/$udom/nohist_courseids";
- my %hash;
- if (tie(%hash,'GDBM_File',"$proname.db",&GDBM_READER(),0640)) {
- while (my ($key,$value) = each(%hash)) {
+
+ my $hashref = TieDomainHash($udom, "nohist_courseids", &GDBM_WRCREAT());
+ if ($hashref) {
+ while (my ($key,$value) = each(%$hashref)) {
my ($descr,$lasttime)=split(/\:/,$value);
if ($lasttime<$since) {
next;
@@ -2299,7 +2345,7 @@
}
}
}
- if (untie(%hash)) {
+ if (untie(%$hashref)) {
chop($qresult);
Reply($client, "$qresult\n", $userinput);
} else {
@@ -2340,23 +2386,15 @@
my ($udom,$what)=split(/:/,$tail);
chomp($what);
- $udom=~s/\W//g;
- my $proname="$perlvar{'lonUsersDir'}/$udom/ids";
- my $now=time;
- {
- my $hfh;
- if ($hfh=IO::File->new(">>$proname.hist")) {
- print $hfh "P:$now:$what\n";
- }
- }
my @pairs=split(/\&/,$what);
- my %hash;
- if (tie(%hash,'GDBM_File',"$proname.db",&GDBM_WRCREAT(),0640)) {
+ my $hashref = TieDomainHash($udom, "ids", &GDBM_WRCREAT(),
+ "P", $what);
+ if ($hashref) {
foreach my $pair (@pairs) {
my ($key,$value)=split(/=/,$pair);
- $hash{$key}=$value;
+ $hashref->{$key}=$value;
}
- if (untie(%hash)) {
+ if (untie(%$hashref)) {
Reply($client, "ok\n", $userinput);
} else {
Failure($client, "error: ".($!+0)." untie(GDBM) Failed ".
@@ -2399,16 +2437,14 @@
my ($udom,$what)=split(/:/,$tail);
chomp($what);
- $udom=~s/\W//g;
- my $proname="$perlvar{'lonUsersDir'}/$udom/ids";
my @queries=split(/\&/,$what);
my $qresult='';
- my %hash;
- if (tie(%hash,'GDBM_File',"$proname.db",&GDBM_READER(),0640)) {
+ my $hashref = TieDomainHash($udom, "ids", &GDBM_READER());
+ if ($hashref) {
for (my $i=0;$i<=$#queries;$i++) {
- $qresult.="$hash{$queries[$i]}&";
+ $qresult.="$hashref->{$queries[$i]}&";
}
- if (untie(%hash)) {
+ if (untie(%$hashref)) {
$qresult=~s/\&$//;
Reply($client, "$qresult\n", $userinput);
} else {
--foxr1079946311--