Ignore:
Timestamp:
May 31, 2010, 9:35:46 AM (14 years ago)
Author:
ronosman
Message:

Bug 1710 fixed : pLoader lack of concurrency support causes data inconsistency.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • extensions/pLoader/trunk/src/Uploader/Object.pm

    r4779 r6426  
    2626use base qw/
    2727               Class::Accessor::Fast
    28            /;
     28           /;
     29
     30__PACKAGE__->mk_accessors(qw/
     31    version
     32    storable_file
     33/);
    2934
    3035# $param is a hash with :
     
    3742    my $self = bless $params, $class ;
    3843
    39     # create member accessors
    40     #__PACKAGE__->mk_accessors(     
    41     #    keys %$params
    42     #);
    43    
    44    
    45     if(defined $self->{plugin_file}){
    46         die "Plugin file is missing." unless -e $self->{plugin_file};
    47         $self->InitPlugins();
    48     }
    49 
    5044    # member accessors initialization
    5145    eval {
    5246        map {
    53                 $self->$_(
    54                     $params->{$_}
    55                 );
     47            $self->$_(
     48                $params->{$_}
     49            );
    5650        }
    5751        keys %$params;
     
    6458    $self->Init();
    6559
    66    
    6760    return $self;
    6861}
    6962
    7063
    71 sub InitPlugins {
    72     my ( $self ) = @_;
    73    
    74     my $data;
    75     eval { $data = read_file( $self->{plugin_file} ); } ;
     64sub read_params {
     65    my( $self, $file, $key ) = @_ ;
    7666
    77     my $plugins = [] ;
    78     if( defined $data){
    79         my $expr = '$plugins = ' ;
    80         $expr .=  "$data  " ;
     67    my $expr_params ;
     68    eval { $expr_params = read_file( $file ); } ;
     69
     70    my $paramValues = [] ;
     71    if($expr_params){
     72        my $expr = '$paramValues = ' ;
     73        $expr .=  "$expr_params  " ;
    8174        eval $expr ;
    8275    }
    83     # load plugins
    84    
    85     my $hplugins = $plugins->[0] if scalar @$plugins;
    86     while( my ( $key, $value ) = each %$hplugins ) {
    87         $self->ReadParams( $value, $key);
    88     }
    89    
    90 }
    91 
    92 sub ReadParams {
    93         my( $self, $file, $key ) = @_ ;
    94 
    95         my $expr_params ;
    96         eval { $expr_params = read_file( $file ); } ;
    97        
    98         my $paramValues = [] ;
    99         if($expr_params){
    100                 my $expr = '$paramValues = ' ;
    101                 $expr .=  "$expr_params  " ;
    102                 eval $expr ;
    103         }
    104         return unless 'ARRAY' eq ref $paramValues ;
     76    return unless 'ARRAY' eq ref $paramValues ;
    10577        if($@){
    10678            die "Cannot load data $@"; 
    10779        }
    108         if(scalar(@$paramValues )){
    109             my $params = $paramValues->[0] ;
    110             $self->SetKeyValues($params, $key);
    111         }
     80    if(scalar(@$paramValues )){
     81        my $params = $paramValues->[0] ;
     82        $self->set_key_values($params, $key);
     83    }
    11284}
    11385
    114 sub SetKeyValues {
     86
     87sub set_key_values {
    11588    my ( $self, $params, $key )= @_;
    11689    if (defined $key) {
     
    132105    my $data = {
    133106        map {
    134             $_ => $self->{$_},
     107            $_ => $self->{$_},
    135108          }
    136109          @$keys
     
    140113}
    141114
     115
    1421161;
Note: See TracChangeset for help on using the changeset viewer.