version 1.7, 2005/05/05 21:29:13 |
version 1.9, 2005/05/06 19:30:25 |
|
|
my $file = shift; |
my $file = shift; |
my $cache_settings = shift; |
my $cache_settings = shift; |
|
|
|
if (ref $file eq 'HASH') { |
|
$cache_settings = $file; |
|
$file = undef; |
|
} |
|
|
$cache_settings->{namespace} ||= 'BT::MetaInfo::Cached'; |
$cache_settings->{namespace} ||= 'BT::MetaInfo::Cached'; |
|
|
my $cache = new Cache::FileCache( $cache_settings ); |
my $cache = new Cache::FileCache( $cache_settings ); |
|
|
my $obj = (defined($file)) ? _load($file, $cache) : {}; |
my $obj = (defined($file)) ? _load($file, $cache) : {}; |
|
|
|
bless($obj, $class); |
|
|
$obj->{cache} = $cache; |
$obj->{cache} = $cache; |
|
|
return(bless($obj, $class)); |
return $obj; |
} |
} |
|
|
sub _load { |
sub _load { |
my $file = shift; |
my $file = shift; |
|
|
|
|
sub save |
sub save |
{ |
{ |
my ($self, $file) = @_; |
my $self = shift; |
|
my $file = shift; |
my $basename = basename($file); |
my $basename = basename($file); |
|
|
$self->SUPER::save($file, @_); |
my $cache = delete $self->{cache}; |
|
|
my %info_hash = %$self; # unbless |
if ( $self->SUPER::save($file, @_) ) { |
$self->cache->set->($basename, \%info_hash) |
my %info_hash = %$self; # unbless |
|
$cache->set($basename, \%info_hash) |
|
} |
|
|
|
$self->{cache} = $cache; |
} |
} |