ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/COMP/SCRAM/src/URL/URLcache.pm
(Generate patch)

Comparing COMP/SCRAM/src/URL/URLcache.pm (file contents):
Revision 1.3 by williamc, Tue Nov 9 15:57:58 1999 UTC vs.
Revision 1.4 by williamc, Fri Nov 12 17:38:27 1999 UTC

# Line 20 | Line 20
20  
21   package URL::URLcache;
22   require 5.004;
23 < use Utilities::HashDB;
24 <
25 < sub new {
26 <        my $class=shift;
27 <        $self={};
28 <        bless $self, $class;
29 <        $self->init(@_);
30 <        return $self;
31 < }
32 <
33 < sub filestore {
34 <        my $self=shift;
35 <        return $self->{cachedir};
36 < }
37 <
38 < sub filename {
39 <        my $self=shift;
40 <        my $url=shift;
41 <        
42 <        my $filenumber;
43 <
44 <        my $file=$self->file($url);
45 <        if ( $file eq "" ) {
46 <          # need to generate a new filename - a random number will do
47 <          srand();
48 <          do {
49 <            $filenumber=int(rand 9999999)+1;
50 <            $file=$self->filestore()."/".$filenumber;
51 <          } until ( ! ( -e $file ) );
52 <        }
53 <        return $file;
54 < }
55 <
56 < sub init {
57 <        my $self=shift;
58 <        $self->{cachetop}=shift;
59 <        $self->{cachedir}=$self->{cachetop}."/files";
60 <        AddDir::adddir($self->{cachedir});
61 <
62 <        $self->{cacheindex}=$self->{cachetop}."/index.db";
63 <        $self->{cacheseqindex}=$self->{cachetop}."/seqnumb.db";
64 <        $self->{urlDB}=Utilities::HashDB->new();
65 <        $self->{urlDBupdate}=Utilities::HashDB->new();
66 <        if ( -f $self->{cacheindex} ) {
67 <          $self->{urlDB}->restore($self->{cacheindex});
68 <        }
69 <        else {
70 <          AddDir::adddir($self->{cachedir});
71 <        }
72 <        if ( -f $self->{cacheseqindex} ) {
73 <          $self->{urlDBupdate}->restore($self->{cacheseqindex});
74 <        }
75 < }
76 <
77 < sub file {
78 <        my $self=shift;
79 <        my $url=shift;
80 <
81 <        my @found=$self->{urlDB}->getdata($url);
82 <        return ( ($#found == -1)?"":$found[0]);
83 < }
84 <
85 < sub delete {
86 <        my $self=shift;
87 <        my $url=shift;
88 <        unlink ($self->{urlDB}->getdata($URL));
89 <        $self->{urlDB}->deletedata($url);
90 <        $self->{urlDB}->store($self->{cacheindex});
91 < }
92 <
93 < sub store {
94 <        my $self=shift;
95 <        my $url=shift;
96 <        my $file=shift;
97 <
98 <        $self->{urlDB}->deletedata($url);
99 <        $self->{urlDB}->setdata($file,$url);
100 <        $self->{urlDB}->store($self->{cacheindex});
101 <
102 <        # Keep a track of changes
103 <        my ($sequencenumber)=$self->{urlDBupdate}->getdata($url);
104 <        if ( ! defined $sequencenumber ) { $sequencenumber=0 };
105 <        $sequencenumber=$sequencenumber+1;
106 <        $self->{urlDBupdate}->deletedata($url);
107 <        $self->{urlDBupdate}->setdata($sequencenumber,$url);
108 <        $self->{urlDBupdate}->store($self->{cacheseqindex});
109 < }
110 <
111 < sub updatenumber {
112 <        my $self=shift;
113 <        my $url=shift;
114 <
115 <        return $self->{urlDBupdate}->getdata($url);
116 < }
117 <
118 < sub clear {
119 <        my $self=shift;
120 <        foreach $item ( $self->{urlDB}->match() ) {
121 <          $self->delete($item->keys());
122 <        }
123 < }
23 > use Utilities::IndexedFileStore;
24 > @ISA=qw(Utilities::IndexedFileStore)

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines