extract init and cleanup
authorDobrica Pavlinusic <dpavlin@rsync1.maxxo.com>
Wed, 7 Dec 2011 21:10:10 +0000 (22:10 +0100)
committerDobrica Pavlinusic <dpavlin@rsync1.maxxo.com>
Wed, 7 Dec 2011 21:10:10 +0000 (22:10 +0100)
lib/CloudStore/Store.pm

index dea4d0c..0c05987 100644 (file)
@@ -243,38 +243,46 @@ sub md5sum {
        return $db;
 }
 
-sub rsync_log {
-       my ( $self, $data ) = @_;
-       if ( $data =~ m/\[(\d+)\] rsync \w+ (\S+) \w+ (\S+)/ ) {
-               my ( $pid, $module, $login ) = ( $1, $2, $3 );
-
-               $login =~ s/\@.+//;
-               my ( undef, undef, $uid, $gid, undef, undef, $email, $dir, $shell ) =
-                       getpwnam $login;
+sub init_pid_login {
+       my ( $self, $pid, $login ) = @_;
 
-               $self->{pid}->{$pid} = {
-                       login => $login,
-                       uid => $uid,
-                       gid => $gid,
-                       email => $email,
-                       dir => $dir,
-                       shell => $shell,
-               };
+       $login =~ s/\@.+//;
+       my ( undef, undef, $uid, $gid, undef, undef, $email, $dir, $shell ) =
+               getpwnam $login;
 
-               warn "created $pid";
+       $self->{pid}->{$pid} = {
+               login => $login,
+               uid => $uid,
+               gid => $gid,
+               email => $email,
+               dir => $dir,
+               shell => $shell,
+       };
 
-       } elsif ( $data =~ m/\[(\d+)\] sent \S+ bytes\s+received \S+ bytes/ ) {
-               my $pid = $1;
+       warn "created $pid";
+}
 
-               foreach my $login ( keys %{ $self->{md5sum} } ) {
-                       $self->{md5sum}->{$login}->close;
-                       warn "close md5sum $login";
-               }
-               delete $self->{md5sum};
+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};
 
-               delete $self->{pid}->{$pid};
-               warn "removed $pid";
+       delete $self->{pid}->{$pid};
+       warn "removed $pid";
+}
 
+sub rsync_log {
+       my ( $self, $data ) = @_;
+       if ( $data =~ m/\[(\d+)\] rsync \w+ (\S+) \w+ (\S+)/ ) {
+               my ( $pid, $module, $login ) = ( $1, $2, $3 );
+               $self->init_pid_login( $pid, $login );
+       } elsif ( $data =~ m/\[(\d+)\] sent \S+ bytes\s+received \S+ bytes/ ) {
+               my $pid = $1;
+               $self->cleanup_pid( $pid );
        } else {
 #              warn "## rsync_log $data";
        }
@@ -376,6 +384,7 @@ sub dedup {
        }
 
        if ( $data->{md5} ne $empty_md5 ) {
+               $self->md5sum($data)->put( $data->{file} => $data->{md5} );
                $self->md5pool( $data );
        } else {
                warn "empty md5", dump $data;