CHI-Cascade

 view release on metacpan or  search on metacpan

lib/CHI/Cascade/Rule.pm  view on Meta::CPAN

package CHI::Cascade::Rule;

use strict;
use warnings;
use v5.10;

use Scalar::Util 'weaken';

sub new {
    my ($class, %opts) = @_;

    my $from = ref($class) ? $class : \%opts;

    $opts{depends} = [ defined( $opts{depends} ) ? ( $opts{depends} ) : () ]
      unless ref( $opts{depends} );

    # To do clone or new object
    my $self = bless {
        map( { $_ => $from->{$_} }
          grep { exists $from->{$_} }
          qw( target depends depends_catch code params busy_lock cascade recomputed actual_term ttl value_expires ) ),
        qr_params       => [],
        matched_target  => undef
    }, ref($class) || $class;

    if ( $opts{run_instance} ) {
        $self->{run_instance} = $opts{run_instance};
        weaken $self->{run_instance};   # It is against memory leaks
    }

    weaken $self->{cascade};            # It is against memory leaks
    $self->{resolved_depends} = undef;

    $self;
}

sub qr_params {
    my $self = shift;

    if (@_) {
        $self->{qr_params} = [ @_ ];



( run in 0.350 second using v1.01-cache-2.11-cpan-65fba6d93b7 )