From 827076d1058264b306c2f5cae27f5814044c7058 Mon Sep 17 00:00:00 2001 From: andrew Date: Thu, 5 May 2005 20:08:04 +0000 Subject: [PATCH] now use Cache::FileCache for it's caching. it should be schweet --- lib/BT/MetaInfo/Cached.pm | 48 +++++++++++++++++++++++++++------------ 1 file changed, 34 insertions(+), 14 deletions(-) diff --git a/lib/BT/MetaInfo/Cached.pm b/lib/BT/MetaInfo/Cached.pm index f29ff17..d748c06 100644 --- a/lib/BT/MetaInfo/Cached.pm +++ b/lib/BT/MetaInfo/Cached.pm @@ -1,18 +1,23 @@ # $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 }; @@ -20,26 +25,41 @@ 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; }