# NAME
Sub::Rate - Rate based sub dispatcher generator
# SYNOPSIS
my $rate = Sub::Rate->new( max_rate => 100 );
$rate->add( 10 => sub { ... } ); # sub1
$rate->add( 20 => sub { ... } ); # sub2
$rate->add( default => sub { ... }); # default sub
my $func = $rate->generate;
# Calling this $func then:
# sub1 will be called by rate about 10/100 (10%),
# sub2 will be called by rate about 20/100 (20%),
# default sub will be called in rest case (70%),
$func->();
# DESCRIPTION
Sub::Rate generates a SUB that will dispatch some SUBs by specified rate.
# CLASS METHODS
## new(%options)
my $obj = Sub::Rate->new;
Create Sub::Rate object.
Available options are:
- max\_rate => 'Number'
Max rate. (Default: 100)
- rand\_func => 'CodeRef'
Random calculate function. Default is:
sub {
CORE::rand($_[0]);
};
You can change random function to your own implementation by this option.
`max_rate` is passed as `$_[0]` to this function.
- sort => 'Bool'
## METHODS
## add($rate : Number|Str, $sub :CodeRef)
$obj->add( 10, sub { ... } );
$obj->add( 20, sub { ... } );
$obj->add( 'default', sub { ... } );
Add `$sub` to internal sublist rate by `$rate`.
If `$rate` is not number but "default", then `$sub` is registered as default sub.
If default sub is already registered, it will be replaced.
## generate()
my $sub = $obj->generate;
Create a new sub that dispatch functions by its rates.
## clear()
$obj->clear;
Clear all registered functions and default function.
# AUTHOR
Daisuke Murase <
[email protected]>
# COPYRIGHT AND LICENSE
Copyright (c) 2012 KAYAC Inc. All rights reserved.
This program is free software; you can redistribute
it and/or modify it under the same terms as Perl itself.
The full text of the license can be found in the
LICENSE file included with this module.