Changeset 15776 for lang/perl/Mvalve

Show
Ignore:
Timestamp:
07/14/08 11:13:37 (6 years ago)
Author:
daisuke
Message:

Change nested constructor semantics

Location:
lang/perl/Mvalve/trunk
Files:
3 modified

Legend:

Unmodified
Added
Removed
  • lang/perl/Mvalve/trunk/lib/Mvalve.pm

    r15772 r15776  
    1717    my $coerce = sub { 
    1818        my $default_class = shift; 
     19        my $prefix = shift; 
    1920        return sub { 
    2021            my $h = $_; 
    2122            my $module = delete $h->{module} || $default_class; 
     23            if ($prefix && $module !~ s/^\+//) { 
     24                $module = join('::', $prefix, $module); 
     25            } 
    2226            Class::MOP::load_class($module); 
    2327 
    24             $module->new(%$h); 
     28            $module->new(%{$h->{args}}); 
    2529        }; 
    2630    }; 
     
    2832    coerce 'Mvalve::Throttler' 
    2933        => from 'HashRef' 
    30         => $coerce->('Data::Valve'), # XXX - no need to use via () here 
     34        => $coerce->('Data::Valve', 'Mvalve::Throttler'), # XXX - no need to use via () here 
    3135    ; 
    3236 
    3337    coerce 'Mvalve::Queue' 
    3438        => from 'HashRef' 
    35         => $coerce->('Mvalve::Queue::Q4M'), # XXX - no need to use via () here 
     39        => $coerce->('Q4M', 'Mvalve::Queue'), # XXX - no need to use via () here 
    3640    ; 
    3741} 
     
    4145        => via { 
    4246            my $h = $_; 
    43             my $module = delete $h->{module} || 'Mvalve::State::Memory'; 
     47            my $module = delete $h->{module} || 'Memory'; 
     48            if ($module !~ s/^\+//) { 
     49                $module = "Mvalve::State::$module"; 
     50            } 
    4451            Class::MOP::load_class($module); 
    4552 
    46             $module->new(memcached => $h); 
     53            $module->new(%{$h->{args}}); 
    4754        } 
    4855; 
     
    6168        return sub { 
    6269            Class::MOP::load_class($class); 
    63             Mvalve::QueueSet->new; 
     70            $class->new; 
    6471        }; 
    6572    }; 
     
    6875        is  => 'ro', 
    6976        isa => 'Mvalve::QueueSet', 
    70         default => $default->( 'Mvale::QueueSet' ) 
     77        default => $default->( 'Mvalve::QueueSet' ) 
    7178    ); 
    7279 
     
    198205        data => { 
    199206            destination => $destination, 
    200             ready       => $retry, 
     207            ready       => int($retry * 1000), 
    201208            message     => $message->serialize, 
    202209        } 
     
    276283    throttler => { 
    277284      module => 'Data::Throttler::Memcached', 
    278       max_items => $max, 
    279       interval  => $interval, 
    280       cache     => { 
    281         data => [ ... ] 
     285      args => { 
     286        max_items => $max, 
     287        interval  => $interval, 
     288        cache     => { 
     289          data => [ ... ] 
     290        } 
    282291      } 
    283292    } 
  • lang/perl/Mvalve/trunk/t/01_basic.t

    r15346 r15776  
    1616    my $mv = Mvalve->new( 
    1717        throttler => { 
    18             max_items => 10, 
    19             interval  => 20 
     18            args => { 
     19                max_items => 10, 
     20                interval  => 20 
     21            } 
    2022        }, 
    2123        queue => { 
    22             connect_info => [  
    23                 $ENV{MVALVE_Q4M_DSN}, 
    24                 $ENV{MVALVE_Q4M_USERNAME}, 
    25                 $ENV{MVALVE_Q4M_PASSWORD}, 
    26                 { RaiseError => 1, AutoCommit => 1 }, 
    27             ] 
     24            args => { 
     25                connect_info => [  
     26                    $ENV{MVALVE_Q4M_DSN}, 
     27                    $ENV{MVALVE_Q4M_USERNAME}, 
     28                    $ENV{MVALVE_Q4M_PASSWORD}, 
     29                    { RaiseError => 1, AutoCommit => 1 }, 
     30                ] 
     31            } 
    2832        } 
    2933    ); 
  • lang/perl/Mvalve/trunk/t/03_extended.t

    r15557 r15776  
    3131        timeout   => 1, 
    3232        queue => { 
    33             connect_info => [  
    34                 $ENV{MVALVE_Q4M_DSN}, 
    35                 $ENV{MVALVE_Q4M_USERNAME}, 
    36                 $ENV{MVALVE_Q4M_PASSWORD}, 
    37                 { RaiseError => 1, AutoCommit => 1 }, 
    38             ] 
     33            args => { 
     34                connect_info => [  
     35                    $ENV{MVALVE_Q4M_DSN}, 
     36                    $ENV{MVALVE_Q4M_USERNAME}, 
     37                    $ENV{MVALVE_Q4M_PASSWORD}, 
     38                    { RaiseError => 1, AutoCommit => 1 }, 
     39                ] 
     40            } 
    3941        }, 
    4042        throttler => { 
    41             module    => 'Data::Throttler::Memcached', 
    42             max_items => 1, 
    43             interval  => 2, 
    44             cache     => { 
    45                 data => $ENV{MEMCACHED_SERVERS}, 
    46                 namespace => $ENV{MEMCACHED_NAMESPACE}, 
    47             }, 
     43            module    => 'Data::Valve', 
     44            args => { 
     45                max_items => 1, 
     46                interval  => 1.4, 
     47            } 
    4848        }, 
    4949        state => { 
    50             module => 'Mvalve::State::Memcached', 
    51             servers => $ENV{MEMCACHED_SERVERS}, 
    52             namespace => $ENV{MEMCACHED_NAMESPACE}, 
     50            module => 'Memcached', 
     51            args   => { 
     52                memcached => { 
     53                    servers => $ENV{MEMCACHED_SERVERS}, 
     54                    namespace => $ENV{MEMCACHED_NAMESPACE}, 
     55                } 
     56            } 
    5357        } 
    5458    );