[LON-CAPA-cvs] cvs: loncom / LONCAPA.pm

albertel lon-capa-cvs@mail.lon-capa.org
Tue, 27 Jun 2006 15:21:29 -0000


albertel		Tue Jun 27 11:21:29 2006 EDT

  Modified files:              
    /loncom	LONCAPA.pm 
  Log:
  - add ability for locking multiple dbs at once
  
  
Index: loncom/LONCAPA.pm
diff -u loncom/LONCAPA.pm:1.9 loncom/LONCAPA.pm:1.10
--- loncom/LONCAPA.pm:1.9	Tue Jun 27 10:49:29 2006
+++ loncom/LONCAPA.pm	Tue Jun 27 11:21:28 2006
@@ -1,7 +1,7 @@
 # The LearningOnline Network
 # Base routines
 #
-# $Id: LONCAPA.pm,v 1.9 2006/06/27 14:49:29 albertel Exp $
+# $Id: LONCAPA.pm,v 1.10 2006/06/27 15:21:28 albertel Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -228,11 +228,26 @@
 
 {
     my $sym;
+    my @pushed_syms;
+    sub push_locking_hash_tie {
+	if (!defined($sym)) {
+	    die("Invalid used of push_locking_hash_tie, should only be called after a lock has occurred and before and unlock.");
+	}
+	push(@pushed_syms,$sym);
+	undef($sym);
+    }
+
+    sub pop_locking_hash_tie {
+	if (defined($sym)) {
+	    die("Invalid nested used of pop_locking_hash_tie, should only be called after a unlock has occurred.");
+	}
+	$sym = pop(@pushed_syms);
+    }
 
     sub _locking_hash_tie {
 	my ($file_prefix,$namespace,$how,$loghead,$what) = @_;
 	if (defined($sym)) {
-	    die('Nested locking attempted, this is unsupportted');
+	    die('Nested locking attempted withut proper use of push_locking_hahs_tie, this is unsupportted');
 	}
 
         my $lock_type=LOCK_SH;