X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBM%2FDeep%2FSector%2FFile%2FReference.pm;h=1e7a8743a2d77de012051efa614c19e5d1948950;hb=d3aaaf5ed9523707a1fe38ec09ea9c937fa1000f;hp=7430b0ac826102a1582cde3a3ac0e569917a7276;hpb=09e1cfab5b52a1e1dc50ee539c854b7bc099ef3f;p=dbsrgits%2FDBM-Deep.git diff --git a/lib/DBM/Deep/Sector/File/Reference.pm b/lib/DBM/Deep/Sector/File/Reference.pm index 7430b0a..1e7a874 100644 --- a/lib/DBM/Deep/Sector/File/Reference.pm +++ b/lib/DBM/Deep/Sector/File/Reference.pm @@ -57,8 +57,6 @@ sub _init { return; } -sub staleness { $_[0]{staleness} } - sub get_data_location_for { my $self = shift; my ($args) = @_; @@ -212,6 +210,17 @@ sub delete_key { return $data; } +sub write_blist_loc { + my $self = shift; + my ($loc) = @_; + + my $engine = $self->engine; + $engine->storage->print_at( $self->offset + $self->base_size, + pack( $StP{$engine->byte_size}, $loc ), + ); + +} + sub get_blist_loc { my $self = shift; @@ -220,6 +229,27 @@ sub get_blist_loc { return unpack( $StP{$e->byte_size}, $blist_loc ); } +#sub clear { +# my $self = shift; +# my ($args) = @_; +# $args ||= {}; +# +# my $engine = $self->engine; +# +# # If there's nothing pointed to from this reference, there's nothing to do. +# my $loc = $self->get_blist_loc +# or return; +# +# my $sector = $engine->load_sector( $loc ) +# or DBM::Deep->_throw_error( "Cannot read sector at $loc in clear()" ); +# +# $sector->clear; +# +# $self->write_blist_loc( 0 ); +# +# return; +#} + sub get_bucket_list { my $self = shift; my ($args) = @_; @@ -240,9 +270,10 @@ sub get_bucket_list { key_md5 => $args->{key_md5}, }); - $engine->storage->print_at( $self->offset + $self->base_size, - pack( $StP{$engine->byte_size}, $blist->offset ), - ); + $self->write_blist_loc( $blist->offset ); +# $engine->storage->print_at( $self->offset + $self->base_size, +# pack( $StP{$engine->byte_size}, $blist->offset ), +# ); return $blist; } @@ -341,23 +372,6 @@ sub get_bucket_list { }), }); } -# my $blist = $blist_cache{$idx} -# ||= DBM::Deep::Sector::File::BucketList->new({ -# engine => $engine, -# }); -# -# $new_index->set_entry( $idx => $blist->offset ); -# -# #XXX THIS IS HACKY! -# $blist->find_md5( $args->{key_md5} ); -# $blist->write_md5({ -# key => $args->{key}, -# key_md5 => $args->{key_md5}, -# value => DBM::Deep::Sector::File::Null->new({ -# engine => $engine, -# data => undef, -# }), -# }); } if ( $last_sector ) { @@ -371,7 +385,7 @@ sub get_bucket_list { ); } - $sector->clear; + $sector->wipe; $sector->free; if ( $redo ) {