$self->{$param} = $args->{$param};
}
- ##
- # Number of buckets per blist before another level of indexing is
- # done. Increase this value for slightly greater speed, but larger database
- # files. DO NOT decrease this value below 16, due to risk of recursive
- # reindex overrun.
- ##
- if ( !defined $self->{max_buckets}
- || !length $self->{max_buckets}
- || $self->{max_buckets} =~ /\D/
- || $self->{max_buckets} < 16
- ) {
- $self->{max_buckets} = '(undef)' if !defined $self->{max_buckets};
- warn "Floor of max_buckets is 16. Setting it to 16 from '$self->{max_buckets}'\n";
- $self->{max_buckets} = 16;
- }
- elsif ( $self->{max_buckets} > 256 ) {
- warn "Ceiling of max_buckets is 256. Setting it to 256 from '$self->{max_buckets}'\n";
- $self->{max_buckets} = 256;
- }
-
- if ( !defined $self->{num_txns}
- || !length $self->{num_txns}
- || $self->{num_txns} =~ /\D/
- || $self->{num_txns} < 1
- ) {
- $self->{num_txns} = '(undef)' if !defined $self->{num_txns};
- warn "Floor of num_txns is 1. Setting it to 1 from '$self->{num_txns}'\n";
- $self->{num_txns} = 1;
- }
- elsif ( $self->{num_txns} > 255 ) {
- warn "Ceiling of num_txns is 255. Setting it to 255 from '$self->{num_txns}'\n";
- $self->{num_txns} = 255;
- }
-
- if ( !defined $self->{data_sector_size}
- || !length $self->{data_sector_size}
- || $self->{data_sector_size} =~ /\D/
- || $self->{data_sector_size} < 32
- ) {
- $self->{data_sector_size} = '(undef)' if !defined $self->{data_sector_size};
- warn "Floor of data_sector_size is 32. Setting it to 32 from '$self->{data_sector_size}'\n";
- $self->{data_sector_size} = 32;
- }
- elsif ( $self->{data_sector_size} > 256 ) {
- warn "Ceiling of data_sector_size is 256. Setting it to 256 from '$self->{data_sector_size}'\n";
- $self->{data_sector_size} = 256;
+ my %validations = (
+ max_buckets => { floor => 16, ceil => 256 },
+ num_txns => { floor => 1, ceil => 255 },
+ data_sector_size => { floor => 32, ceil => 256 },
+ );
+
+ while ( my ($attr, $c) = each %validations ) {
+ if ( !defined $self->{$attr}
+ || !length $self->{$attr}
+ || $self->{$attr} =~ /\D/
+ || $self->{$attr} < $c->{floor}
+ ) {
+ $self->{$attr} = '(undef)' if !defined $self->{$attr};
+ warn "Floor of $attr is $c->{floor}. Setting it to $c->{floor} from '$self->{$attr}'\n";
+ $self->{$attr} = $c->{floor};
+ }
+ elsif ( $self->{$attr} > $c->{ceil} ) {
+ warn "Ceiling of $attr is $c->{ceil}. Setting it to $c->{ceil} from '$self->{$attr}'\n";
+ $self->{$attr} = $c->{ceil};
+ }
}
if ( !$self->{digest} ) {