aboutsummaryrefslogtreecommitdiff
path: root/lib/App/Glacier/DB/GDBM.pm
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org>2018-12-13 11:52:57 +0200
committerSergey Poznyakoff <gray@gnu.org>2018-12-13 11:52:57 +0200
commit820419c1cc238a86caf4e1955446700895201ac1 (patch)
tree399a3ead15804f392c34e60c3cc72003e9a36f6d /lib/App/Glacier/DB/GDBM.pm
parentf584673e3882ea30d0e36a2273c0733b96ee7317 (diff)
downloadglacier-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.pm21
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}}}) {

Return to:

Send suggestions and report system problems to the System administrator.