Code cleanup. Remove unused module.

        Patch by kareila. 

diffs (298 lines):

diff -r 276a9e18856e -r c65fc2c8f8f5 cgi-bin/LJ/Cache.pm
--- a/cgi-bin/LJ/Cache.pm       Wed Jun 02 10:50:41 2010 +0800
+++ /dev/null   Thu Jan 01 00:00:00 1970 +0000
@@ -1,294 +0,0 @@
-#!/usr/bin/perl
-# This code was forked from the LiveJournal project owned and operated
-# by Live Journal, Inc. The code has been modified and expanded by
-# Dreamwidth Studios, LLC.
-#
-# LJ::Cache class
-# See perldoc documentation at the end of this file.
-#
-# -------------------------------------------------------------------------
-#
-# This package is released under the LGPL (GNU Library General Public License)
-#
-# A copy of the license has been included with the software as LGPL.txt.
-# If not, the license is available at:
-#      http://www.gnu.org/copyleft/library.txt
-#
-# -------------------------------------------------------------------------
-#
-
-package LJ::Cache;
-
-use strict;
-use fields qw(items size tail head bytes maxsize maxbytes);
-
-use vars qw($VERSION);
-use constant PREVKEY => 0;
-use constant VALUE => 1;
-use constant NEXTKEY => 2;
-use constant BYTES => 3;
-use constant INSTIME => 4;
-use constant FLAGS => 5;     # caller-defined metadata
-
-$VERSION = '1.0';
-
-sub new {
-    my ($class, $args) = @_;
-    my $self = fields::new($class);
-    
-    $self->init($args);
-    return $self;
-}
-
-sub walk_items {
-    my LJ::Cache $self = shift;
-    my $code = shift;
-
-    my $iter = $self->{'head'};
-    while ($iter) {
-        my $it = $self->{'items'}->{$iter};
-        $code->($iter, $it->[BYTES], $it->[INSTIME]);
-        $iter = $it->[NEXTKEY];
-    }
-}
-
-sub init {
-    my LJ::Cache $self = shift;
-    my $args = shift;
-
-    $self->{'head'} = 0;
-    $self->{'tail'} = 0;
-    $self->{'items'} = {}; # key -> arrayref, indexed by constants above
-    $self->{'size'} = 0;
-    $self->{'bytes'} = 0;
-    $self->{'maxsize'} = $args->{'maxsize'}+0;
-    $self->{'maxbytes'} = $args->{'maxbytes'}+0;
-}
-
-sub get_item_count {
-    my LJ::Cache $self = shift;
-    $self->{'size'};
-}
-
-sub get_byte_count {
-    my LJ::Cache $self = shift;
-    $self->{'bytes'};
-}
-
-sub get_max_age {
-    my LJ::Cache $self = shift;
-    return undef unless $self->{'tail'};
-    return $self->{'items'}->{$self->{'tail'}}->[INSTIME];
-}
-
-sub validate_list
-{
-    my ($self, $source) = @_;
-    print "Validate list: $self->{'size'} (max: $self->{'maxsize'})\n";
-    
-    my $count = 1;
-    if ($self->{'size'} && ! defined $self->{'head'}) {
-       die "$source: no head pointer\n";
-    }
-    if ($self->{'size'} && ! defined $self->{'tail'}) {
-       die "$source: no tail pointer\n";
-    }
-    if ($self->{'size'}) {
-       print "  head: $self->{'head'}\n";
-       print "  tail: $self->{'tail'}\n";
-    }
-
-    my $iter = $self->{'head'};
-    my $last = undef;
-    while ($count <= $self->{'size'}) {
-       if (! defined $iter) {
-           die "$source: undefined iterator\n";
-       }
-       my $item = $self->{'items'}->{$iter};
-       unless (defined $item) {
-           die "$source: item '$iter' isn't in items\n";
-       }
-       my $prevtext = $item->[PREVKEY] || "--";
-       my $nexttext = $item->[NEXTKEY] || "--";
-       print "  #$count ($iter): [$prevtext, $item->[VALUE], $nexttext]\n";
-       if ($count == 1 && defined($item->[0])) {
-           die "$source: Head element shouldn't have previous pointer!\n";
-       }
-       if ($count == $self->{'size'} && defined($item->[NEXTKEY])) {
-           die "$source: Last element shouldn't have next pointer!\n";
-       }
-       if (defined $last && ! defined $item->[PREVKEY]) {
-           die "$source: defined \$last but not defined previous pointer.\n";
-       }
-       if (! defined $last && defined $item->[PREVKEY]) {
-           die "$source: not defined \$last but previous pointer defined.\n";
-       }
-       if (defined $item->[PREVKEY] && defined $last && $item->[PREVKEY] ne 
$last)
-       {
-           die "$source: Previous pointer is wrong.\n";
-       }
-
-       $last = $iter;
-       $iter = defined $item->[NEXTKEY] ? $item->[NEXTKEY] : undef;
-       $count++;
-    }
-}
-
-sub drop_tail
-{
-    my LJ::Cache $self = shift;
-
-    ## who's going to die?
-    my $to_die = $self->{'tail'};
-
-    ## set the tail to the item before the one dying.
-    $self->{'tail'} = $self->{'items'}->{$to_die}->[PREVKEY];
-
-    ## adjust the forward pointer on the tail to be undef
-    if (defined $self->{'tail'}) {
-       undef $self->{'items'}->{$self->{'tail'}}->[NEXTKEY];
-    }
-
-    ## kill the item
-    my $bytes = $self->{'items'}->{$to_die}->[BYTES];
-    delete $self->{'items'}->{$to_die};
-
-    ## shrink the overall size
-    $self->{'size'}--;
-    $self->{'bytes'} -= $bytes;
-}
-
-sub print_list {
-    my LJ::Cache $self = shift;
-
-    print "Size: $self->{'size'} (max: $self->{'maxsize'})\n";
-
-    my $count = 1;
-    my $iter = $self->{'head'};
-    while (defined $iter) { #$count <= $self->{'size'}) {
-       my $item = $self->{'items'}->{$iter};
-       print "$count: $iter = $item->[VALUE]\n";
-       $iter = $item->[NEXTKEY];
-       $count++;
-    }
-}
-
-sub get {
-    my LJ::Cache $self = shift;
-    my ($key, $out_flags) = @_;
-
-    if (exists $self->{'items'}->{$key}) 
-    {
-       my $item = $self->{'items'}->{$key};
-
-       # promote this to the head
-       unless ($self->{'head'} eq $key)
-       {
-           if ($self->{'tail'} eq $key) {
-               $self->{'tail'} = $item->[PREVKEY];
-           }
-           # remove this element from the linked list.
-           my $next = $item->[NEXTKEY];
-           my $prev = $item->[PREVKEY];
-           if (defined $next) { $self->{'items'}->{$next}->[PREVKEY] = $prev; }
-           if (defined $prev) { $self->{'items'}->{$prev}->[NEXTKEY] = $next; }
-           
-           # make current head point backwards to this item
-           $self->{'items'}->{$self->{'head'}}->[PREVKEY] = $key;
-           
-           # make this item point forwards to current head, and backwards 
nowhere
-           $item->[NEXTKEY] = $self->{'head'};
-           undef $item->[PREVKEY];
-           
-           # make this the new head
-           $self->{'head'} = $key;
-       }
-       
-        $$out_flags = $item->[FLAGS] if $out_flags;
-       return $item->[VALUE];
-    }
-    return undef;
-}
-
-# bytes is optional
-sub set {
-    my LJ::Cache $self = shift;
-    my ($key, $value, $bytes, $flags) = @_;
-    
-    $self->drop_tail() while ($self->{'maxsize'} && 
-                              $self->{'size'} >= $self->{'maxsize'} &&
-                              ! exists $self->{'items'}->{$key}) ||
-                              ($self->{'maxbytes'} && $self->{'size'} &&
-                               $self->{'bytes'} + $bytes >= 
$self->{'maxbytes'} &&
-                               ! exists $self->{'items'}->{$key});
-    
-    
-    if (exists $self->{'items'}->{$key}) {
-       # update the value
-       my $it = $self->{'items'}->{$key};
-       $it->[VALUE] = $value;
-        my $bytedelta = $bytes - $it->[BYTES];
-        $self->{'bytes'} += $bytedelta;
-        $it->[BYTES] = $bytes;
-        $it->[FLAGS] = $flags;
-    } else {
-       # stick it at the end, for now
-       my $it = $self->{'items'}->{$key} = [];
-        $it->[PREVKEY] = undef;
-        $it->[NEXTKEY] = undef;
-        $it->[VALUE] = $value;
-        $it->[BYTES] = $bytes;
-        $it->[INSTIME] = time();
-        $it->[FLAGS] = $flags;
-       if ($self->{'size'}) {
-           $self->{'items'}->{$self->{'tail'}}->[NEXTKEY] = $key;
-           $self->{'items'}->{$key}->[PREVKEY] = $self->{'tail'};
-       } else {
-           $self->{'head'} = $key;
-       }
-       $self->{'tail'} = $key;
-       $self->{'size'}++;
-       $self->{'bytes'} += $bytes;
-    }
-
-    # this will promote it to the top:
-    $self->get($key);
-}
-
-1;
-__END__
-
-=head1 NAME
-
-LJ::Cache - LRU Cache
-
-=head1 SYNOPSIS
-
-  use LJ::Cache;
-  my $cache = new LJ::Cache { 'maxsize' => 20 };
-  my $value = $cache->get($key);
-  unless (defined $value) {
-      $val = "load some value";
-      $cache->set($key, $value);
-  }
-
-=head1 DESCRIPTION
-
-This class implements an LRU dictionary cache.  The two operations on it
-are get() and set(), both of which promote the key being referenced to
-the "top" of the cache, so it will stay alive longest.
-
-When the cache is full and and a new item needs to be added, the oldest
-one is thrown away.
-
-You should be able to regenerate the data at any time, if get() 
-returns undef.
-
-This class is useful for caching information from a slower data source
-while also keeping a bound on memory usage.
-
-=head1 AUTHOR
-
-Brad Fitzpatrick, [email protected]
-
-=cut
_______________________________________________
dw-changelog mailing list
[email protected]
http://lists.dwscoalition.org/mailman/listinfo/dw-changelog

Reply via email to