diff options
author | Sergey Poznyakoff <gray@gnu.org> | 2018-12-13 11:52:57 +0200 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org> | 2018-12-13 11:52:57 +0200 |
commit | 820419c1cc238a86caf4e1955446700895201ac1 (patch) | |
tree | 399a3ead15804f392c34e60c3cc72003e9a36f6d /lib/App/Glacier/DB/GDBM.pm | |
parent | f584673e3882ea30d0e36a2273c0733b96ee7317 (diff) | |
download | glacier-820419c1cc238a86caf4e1955446700895201ac1.tar.gz glacier-820419c1cc238a86caf4e1955446700895201ac1.tar.bz2 |
Rewrite Glacier::DB
* lib/App/Glacier/Command.pm (jobdb, directory): Change agruments to
constructors.
* lib/App/Glacier/DB.pm: Rewrite as a facade
* lib/App/Glacier/DB/GDBM.pm: Rewrite as a backend for Glacier::DB
* lib/App/Glacier/Directory.pm: Inherit from Glacier::DB
Diffstat (limited to 'lib/App/Glacier/DB/GDBM.pm')
-rw-r--r-- | lib/App/Glacier/DB/GDBM.pm | 21 |
1 files changed, 7 insertions, 14 deletions
diff --git a/lib/App/Glacier/DB/GDBM.pm b/lib/App/Glacier/DB/GDBM.pm index 24a4057..d485ce3 100644 --- a/lib/App/Glacier/DB/GDBM.pm +++ b/lib/App/Glacier/DB/GDBM.pm @@ -1,22 +1,17 @@ package App::Glacier::DB::GDBM; -require App::Glacier::DB; use strict; use warnings; -use parent qw(App::Glacier::DB); use GDBM_File; use Carp; sub new { my $class = shift; - my $filename = shift; local %_ = @_; - my $mode = delete $_{mode} || 0644; - my $retries = delete $_{retries} || 10; - my $self = $class->SUPER::new(%_); - $self->{_filename} = $filename; - $self->{_mode} = $mode; + my $self = bless {}, $class; + $self->{_filename} = delete $_{filename} // croak "filename is required"; + $self->{_mode} = delete $_{mode} || 0644; + $self->{_retries} = delete $_{retries} || 10; $self->{_nref} = 0; - $self->{_retries} = $retries; $self->{_deleted} = []; return $self; } @@ -61,15 +56,13 @@ sub retrieve { my ($self, $key) = @_; return $self->_tied(sub { return undef unless exists $self->{_map}{$key}; - return $self->decode($self->{_map}{$key}); + return $self->{_map}{$key}; }); } sub store { my ($self, $key, $val) = @_; - return $self->_tied(sub { - $self->{_map}{$key} = $self->encode($val); - }); + return $self->_tied(sub { $self->{_map}{$key} = $val }); } sub delete { @@ -87,7 +80,7 @@ sub foreach { $self->_tied(sub { push @{$self->{_deleted}}, []; while (my ($key, $val) = each %{$self->{_map}}) { - &{$code}($key, $self->decode($val)); + &{$code}($key, $val); } foreach my $key (@{pop @{$self->{_deleted}}}) { |