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

Diff of /nfo/perl/libs/Data/Transfer/Sync/StorageInterface.pm

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

revision 1.2 by joko, Sun Feb 9 05:05:58 2003 UTC revision 1.6 by joko, Fri Feb 21 01:47:53 2003 UTC
# Line 6  Line 6 
6  ##  ##
7  ##    ----------------------------------------------------------------------------------------  ##    ----------------------------------------------------------------------------------------
8  ##    $Log$  ##    $Log$
9    ##    Revision 1.6  2003/02/21 01:47:53  joko
10    ##    renamed core function
11    ##
12    ##    Revision 1.5  2003/02/20 20:24:33  joko
13    ##    + additional pre-flight checks
14    ##
15    ##    Revision 1.4  2003/02/14 14:14:38  joko
16    ##    + new code refactored here
17    ##
18    ##    Revision 1.3  2003/02/11 07:54:55  joko
19    ##    + modified module usage
20    ##    + debugging trials
21    ##
22  ##    Revision 1.2  2003/02/09 05:05:58  joko  ##    Revision 1.2  2003/02/09 05:05:58  joko
23  ##    + major structure changes  ##    + major structure changes
24  ##    - refactored code to sister modules  ##    - refactored code to sister modules
# Line 32  use mixin::with qw( Data::Transfer::Sync Line 45  use mixin::with qw( Data::Transfer::Sync
45    
46  use Data::Dumper;  use Data::Dumper;
47  use Hash::Merge qw( merge );  use Hash::Merge qw( merge );
48  use libdb qw( quotesql hash2Sql );  use libdb qw( hash2Sql );
49  use Data::Transform::Deep qw( hash2object refexpr2perlref );  use Data::Transform::Deep qw( merge_to );
50    
51    
52  # get logger instance  # get logger instance
# Line 57  sub _resolveNodeIdent { Line 70  sub _resolveNodeIdent {
70    my $self = shift;    my $self = shift;
71    my $descent = shift;    my $descent = shift;
72        
73    #print Dumper($self->{node}->{$descent});    # trace
74    #print Dumper($self);      #print Dumper($self->{node}->{$descent});
75        #print Dumper($self);
76        #exit;
77        
78    $logger->debug( __PACKAGE__ . "->_resolveNodeIdent( descent=$descent, accessorName=$self->{meta}->{$descent}->{accessorName} )" );    $logger->debug( __PACKAGE__ . "->_resolveNodeIdent( descent=$descent, accessorName=$self->{meta}->{$descent}->{accessorName} )" );
79        
80    # get to the payload    # get to the payload
# Line 70  sub _resolveNodeIdent { Line 86  sub _resolveNodeIdent {
86      #my $ident = $self->{$descent}->id($item);      #my $ident = $self->{$descent}->id($item);
87      #my $ident = $self->{meta}->{$descent}->{storage}->id($item);      #my $ident = $self->{meta}->{$descent}->{storage}->id($item);
88    
89      # trace
90        #print Dumper($self->{meta}->{$descent});
91        #exit;
92    
93      my $ident;      my $ident;
94      my $provider_method = $self->{meta}->{$descent}->{IdentProvider}->{method};      my $provider_method = $self->{meta}->{$descent}->{IdentProvider}->{method};
95      my $provider_arg = $self->{meta}->{$descent}->{IdentProvider}->{arg};      my $provider_arg = $self->{meta}->{$descent}->{IdentProvider}->{arg};
# Line 116  sub _statloadNode { Line 136  sub _statloadNode {
136    my $ident = shift;    my $ident = shift;
137    my $force = shift;    my $force = shift;
138    
139    $logger->debug( __PACKAGE__ . "->_statloadNode( descent=$descent ident=$ident )" );  =pod
140      #print "isa: ", UNIVERSAL::isa($self->{meta}->{$descent}->{storage}), "\n";
141    
142      # this seems to be the first time we access this side,
143      # so just check (again) for a valid storage handle
144      if (! ref $self->{meta}->{$descent}->{storage}) {
145        $logger->critical( __PACKAGE__ . "->_statloadNode( descent=$descent ident=$ident ): Storage handle undefined!" );
146        return;
147      }
148    =cut
149    
150      #$logger->debug( __PACKAGE__ . "->_statloadNode( descent=$descent ident=$ident )" );
151    
152    # fetch entry to retrieve checksum from    # fetch entry to retrieve checksum from
153    # was:    # was:
# Line 223  sub _touchNodeSet { Line 254  sub _touchNodeSet {
254          next;          next;
255        }        }
256            
257        # 2.b check storage handle type
258          my $dbType = $self->{meta}->{$descent}->{storage}->{locator}->{type};
259          if (!$dbType) {
260            $logger->critical( __PACKAGE__ . "->touchNodeSet: Storage ( descent='$descent', dbKey='$dbkey' ) has no 'dbType' - configuration-error?" );
261            next;
262          }
263    
264      # 3. check if descents (and nodes?) are actually available....      # 3. check if descents (and nodes?) are actually available....
265        # TODO:        # TODO:
266        # eventually pre-check mode of access-attempt (read/write) here to provide an "early-croak" if possible        # eventually pre-check mode of access-attempt (read/write) here to provide an "early-croak" if possible
# Line 231  sub _touchNodeSet { Line 269  sub _touchNodeSet {
269        # print Dumper($self->{meta}->{$descent}->{storage}->{locator});        # print Dumper($self->{meta}->{$descent}->{storage}->{locator});
270    
271    
       my $dbType = $self->{meta}->{$descent}->{storage}->{locator}->{type};  
272        my $nodeName = $self->{meta}->{$descent}->{nodeName};        my $nodeName = $self->{meta}->{$descent}->{nodeName};
273        my $accessorType = $self->{meta}->{$descent}->{accessorType};        my $accessorType = $self->{meta}->{$descent}->{accessorType};
274        my $accessorName = $self->{meta}->{$descent}->{accessorName};        my $accessorName = $self->{meta}->{$descent}->{accessorName};
# Line 437  sub _modifyNode { Line 474  sub _modifyNode {
474          # mix in (merge) values ...          # mix in (merge) values ...
475            # TODO: use Hash::Merge here? benchmark!            # TODO: use Hash::Merge here? benchmark!
476            # no! we'd need a Object::Merge here! it's *...2object*            # no! we'd need a Object::Merge here! it's *...2object*
477            hash2object($object, $map);            merge_to($object, $map);
478        
479          # trace          # trace
480            #print Dumper($object);            #print Dumper($object);
# Line 469  sub _modifyNode { Line 506  sub _modifyNode {
506        # mix in values        # mix in values
507          #print Dumper($object);          #print Dumper($object);
508          # TODO: use Hash::Merge here???          # TODO: use Hash::Merge here???
509          hash2object($object, $map);          merge_to($object, $map);
510          #print Dumper($object);          #print Dumper($object);
511          #exit;          #exit;
512    
# Line 488  sub _modifyNode { Line 525  sub _modifyNode {
525      #print Dumper($map_callbacks);      #print Dumper($map_callbacks);
526      foreach my $node (keys %{$map_callbacks->{write}}) {      foreach my $node (keys %{$map_callbacks->{write}}) {
527        #print Dumper($node);        #print Dumper($node);
528        my $perl_callback = $self->{meta}->{$descent}->{node} . '::' . $node . '_write';  
529          # ------------  half-redundant: make $self->callCallback($object, $value, $opts)
530          my $perl_callback = $self->{meta}->{$descent}->{nodeType} . '::' . $node . '_write';
531        my $evalstring = $perl_callback . '( { object => $object, value => $map_callbacks->{write}->{$node}, storage => $self->{meta}->{$descent}->{storage} } );';        my $evalstring = $perl_callback . '( { object => $object, value => $map_callbacks->{write}->{$node}, storage => $self->{meta}->{$descent}->{storage} } );';
532        #print $evalstring, "\n"; exit;        #print $evalstring, "\n"; exit;
533        eval($evalstring);        eval($evalstring);
534        if ($@) {        if ($@) {
535          $error = 1;          $error = 1;
536          print $@, "\n";          $logger->error( __PACKAGE__ . "->_modifyNode: $@" );
537            next;
538        }        }
539          # ------------  half-redundant: make $self->callCallback($object, $value, $opts)
540                
541        #print "after eval", "\n";        #print "after eval", "\n";
542                
# Line 530  sub _modifyNode { Line 571  sub _modifyNode {
571    
572  }  }
573    
574    sub _erase_all {
575      my $self = shift;
576      my $descent = shift;
577      #my $node = shift;
578      #print Dumper($self->{meta}->{$descent});
579      #my $node = $self->{meta}->{$descent}->{nodeName};
580      my $node = $self->{meta}->{$descent}->{accessorName};
581      $logger->debug( __PACKAGE__ . "->_erase_all( node $node )" );
582      $self->{meta}->{$descent}->{storage}->eraseAll($node);
583    }
584    
585  1;  1;
586    __END__

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

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