extract MD5sum handling using TokyoCabinet
[cloudstore.git] / lib / CloudStore / Store.pm
index 83a13c2..f1528fc 100644 (file)
@@ -3,6 +3,7 @@ use warnings;
 use strict;
 
 use lib 'lib';
+use base 'CloudStore::MD5sum';
 use CloudStore::API;
 
 use autodie;
@@ -12,7 +13,6 @@ use File::Slurp qw();
 use Digest::MD5 qw(md5_base64);
 use Data::Dump qw(dump);
 use Carp qw(confess);
-use TokyoCabinet;
 
 use WarnColor;
 
@@ -225,28 +225,6 @@ sub new_link {
        }
 }
 
-sub md5sum {
-       my ( $self, $data ) = @_;
-
-       my $login = $data->{login} || confess "missing login in ",dump $data;
-
-       return $self->{md5sum}->{$login} if exists $self->{md5sum}->{$login};
-
-       my ( undef, undef, $uid, $gid, undef, undef, $email, $dir, $shell ) =
-               getpwnam $login;
-
-       my $md5_path = "$dir/.md5";
-
-       my $db = TokyoCabinet::HDB->new();
-       $db->open($md5_path, $db->OWRITER | $db->OCREAT)
-       or die "can't open $md5_path: ",$db->errmsg( $db->ecode );
-
-       warn "open $md5_path";
-
-       $self->{md5sum}->{$login} = $db;
-       return $db;
-}
-
 sub init_pid_login {
        my ( $self, $pid, $login ) = @_;
 
@@ -268,12 +246,8 @@ sub init_pid_login {
 
 sub cleanup_pid {
        my ( $self, $pid ) = @_;
-       foreach my $login ( keys %{ $self->{md5sum} } ) {
-               # FIXME only login's?
-               $self->{md5sum}->{$login}->close;
-               warn "close md5sum $login";
-       }
-       delete $self->{md5sum};
+
+       $self->md5sum_close;
 
        delete $self->{pid}->{$pid};
        warn "removed $pid";