[system] / trunk / webwork-modperl / lib / WeBWorK / DB / GDBM.pm Repository:
ViewVC logotype

Diff of /trunk/webwork-modperl/lib/WeBWorK/DB/GDBM.pm

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

Revision 331 Revision 332
16 }; 16 };
17 bless $self, $class; 17 bless $self, $class;
18 return $self; 18 return $self;
19} 19}
20 20
21# connect($self, $symbolicFlags)
22# $self implicitly set by caller
23# $symbolicFlags "ro" = read-only, "rw" = read-write
24# returns:
25# -1 = already tied
26# 0 = file doesn't exist when being opened for reading
27# >0 = success! (number of attempts to tie)
21sub connect($$) { 28sub connect($$) {
22 my $self = shift; 29 my $self = shift;
23 my $symbolicFlags = shift; # "ro" or "rw" 30 my $symbolicFlags = shift; # "ro" or "rw"
24 return if tied %$self->{hashRef}; # already tied! 31 return -1 if tied %$self->{hashRef}; # already tied!
25 my $flags = lc $symbolicFlags eq "rw" ? GDBM_WRCREAT() : GDBM_READER(); 32 my $flags = lc $symbolicFlags eq "rw" ? GDBM_WRCREAT() : GDBM_READER();
33 return 0 if lc $symbolicFlags eq "ro" and not -e $self->{gdbm_file};
26 foreach (1 .. MAX_TIE_ATTEMPTS) { 34 foreach (1 .. MAX_TIE_ATTEMPTS) {
27 return if tie %{$self->{hashRef}}, 35 return 1 if tie %{$self->{hashRef}},
28 "GDBM_File", # class 36 "GDBM_File", # class
29 $self->{gdbm_file}, # file name 37 $self->{gdbm_file}, # file name
30 $flags, # I/O flags 38 $flags, # I/O flags
31 TIE_PERMISSION; # access mode 39 TIE_PERMISSION; # access mode
32 sleep TIE_RETRY_DELAY; 40 sleep TIE_RETRY_DELAY;
41} 49}
42 50
43sub disconnect($) { 51sub disconnect($) {
44 my $self = shift; 52 my $self = shift;
45 return unless tied %{$self->{hashRef}}; # not tied! 53 return unless tied %{$self->{hashRef}}; # not tied!
46 return 1 if untie %{$self->{hashRef}}; 54 return untie %{$self->{hashRef}};
47} 55}
48 56
491; 571;

Legend:
Removed from v.331  
changed lines
  Added in v.332

aubreyja at gmail dot com
ViewVC Help
Powered by ViewVC 1.0.9