/[cvs]/nfo/perl/libs/Data/Transfer/Sync/Compare/Checksum.pm
ViewVC logotype

Diff of /nfo/perl/libs/Data/Transfer/Sync/Compare/Checksum.pm

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.2 by joko, Tue Feb 11 09:53:07 2003 UTC revision 1.3 by joko, Tue May 13 08:19:00 2003 UTC
# Line 6  Line 6 
6  ##  ##
7  ##    ----------------------------------------------------------------------------------------  ##    ----------------------------------------------------------------------------------------
8  ##    $Log$  ##    $Log$
9    ##    Revision 1.3  2003/05/13 08:19:00  joko
10    ##    switched to crc32
11    ##
12  ##    Revision 1.2  2003/02/11 09:53:07  joko  ##    Revision 1.2  2003/02/11 09:53:07  joko
13  ##    + metadata-structure-change, fixed some code here  ##    + metadata-structure-change, fixed some code here
14  ##  ##
# Line 15  Line 18 
18  ##    ----------------------------------------------------------------------------------------  ##    ----------------------------------------------------------------------------------------
19    
20    
21    =pod
22    
23    =head1 Todo
24      
25      o Data::Transfer::Sync::Compare::Slot using Compare::Struct
26    
27    =cut
28    
29  package Data::Transfer::Sync::Compare::Checksum;  package Data::Transfer::Sync::Compare::Checksum;
30    
31  use strict;  use strict;
# Line 23  use warnings; Line 34  use warnings;
34  use mixin::with qw( Data::Transfer::Sync );  use mixin::with qw( Data::Transfer::Sync );
35    
36    
 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   main  
   
37  use Data::Dumper;  use Data::Dumper;
 use Digest::MD5 qw(md5 md5_hex md5_base64);  
38    
39    # TODO: Load these appropriatly at runtime.
40    use Digest::MD5 qw( md5 md5_hex md5_base64 );
41    use String::CRC32;
42    
43  # get logger instance  # get logger instance
44  my $logger = Log::Dispatch::Config->instance;  my $logger = Log::Dispatch::Config->instance;
45    
46    
47    # Maybe refactor to shortcuts::checksum?
48  sub _calcChecksum {  sub _calcChecksum {
49    
50    my $self = shift;    my $self = shift;
# Line 53  sub _calcChecksum { Line 65  sub _calcChecksum {
65      #$logger->dump( __PACKAGE__ . ": " . $dump );      #$logger->dump( __PACKAGE__ . ": " . $dump );
66        
67    # calculate checksum from dump    # calculate checksum from dump
68      # note: the 32-bit integer hash from DBI seems  
69      # to generate duplicates with small payloads already in ranges of hundreds of items/rows!!!      # 1. md5-based fingerprint, base64 encoded (from Digest::MD5)
70      # try to avoid to use it or try to use it only for payloads greater than, hmmm, let's say 30 chars?        #$self->{node}->{$descent}->{checksum} = md5_base64($dump) . '==';
71      # (we had about 15 chars average per item (row))        
72        # 2. 32-bit integer "hash" value (maybe faster?) (from DBI)
73      # md5-based fingerprint, base64 encoded (from Digest::MD5)        # Note: The 32-bit integer hash from DBI seems to generate duplicates
74        $self->{node}->{$descent}->{checksum} = md5_base64($dump) . '==';        # with small payloads already in ranges of hundreds of items/rows!!!
75      # 32-bit integer "hash" value (maybe faster?) (from DBI)        # Try to avoid it or try to use it only for payloads greater than, hmmm, let's say 30 chars?
76          # (we had about 15 chars average per item (row))
77          # Possible (generic) solution: Just generate checksum, if length(checksum(payload)) < payload
78        #$self->{node}->{$descent}->{checksum} = DBI::hash($dump, 1);        #$self->{node}->{$descent}->{checksum} = DBI::hash($dump, 1);
79          
80        # 3. good ol' crc32???
81          $self->{node}->{$descent}->{checksum} = crc32($dump);
82          
83        # 4. some more modern Digest::SHA1 or similar?
84    
85    # signal good    # signal good
86      return 1;      return 1;
# Line 100  sub _readChecksum { Line 119  sub _readChecksum {
119    
120    
121  1;  1;
122    __END__

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.3

MailToCvsAdmin">MailToCvsAdmin
ViewVC Help
Powered by ViewVC 1.1.26 RSS 2.0 feed