Skip to content

Commit

Permalink
now use Cache::FileCache for it's caching. it should be schweet
Browse files Browse the repository at this point in the history
  • Loading branch information
andrew authored and afresh1 committed Sep 3, 2012
1 parent 158d93c commit 827076d
Showing 1 changed file with 34 additions and 14 deletions.
48 changes: 34 additions & 14 deletions lib/BT/MetaInfo/Cached.pm
@@ -1,45 +1,65 @@
# $Id$
use strict;

package BT::OBTMetaInfo;
package BT::MetaInfo::Cached;

require 5.6.0;
use vars qw( $VERSION @ISA );

use Digest::SHA1 qw(sha1);
use YAML qw/ DumpFile LoadFile /;
use YAML;

#use Digest::SHA1 qw(sha1);
#use YAML qw/ DumpFile LoadFile /;

use Cache::FileCache;
use File::Basename;

use BT::MetaInfo;
use base 'BT::MetaInfo';

use OpenBSDTorrents;
#use OpenBSDTorrents;

$VERSION = do { my @r = (q$Id$ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };

sub new
{
my $class = shift;
my $file = shift;
my $cache_settings = shift;

$cache_settings->{namespace} ||= 'BT::MetaInfo::Cached';

my $cache = new Cache::FileCache( $cache_settings );

my $obj = (defined($file)) ? _load($file, $cache) : {};

$obj->{cache} = $cache;

my $obj = (defined($file)) ? _load($file, @_) : {};
return(bless($obj, $class));
}

sub save {
my ($self, $file) = @_;
my $basename = basename($file);

$self->SUPER::save($file, @_);

my %info_hash = %$self; # unbless
$self->cache->set->($basename, \%info_hash)
}

sub _load {
my $file = shift;
my $meta_file = shift;
my $regen = shift;
my $cache = shift;

my $basename = basename($file);

my $info;
if ($meta_file && ! $regen && -e $meta_file) {
$info = LoadFile($meta_file);
}
my $info = $cache->get( $basename );

unless ($info) {
unless (defined $info) {
$info = BT::MetaInfo::_load($file);
DumpFile($meta_file, $info) if $meta_file;
$cache->set( $basename, $info );
}

return $info;
}

Expand Down

0 comments on commit 827076d

Please sign in to comment.