ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/Coro/myhttpd/tbf.pl
(Generate patch)

Comparing Coro/myhttpd/tbf.pl (file contents):
Revision 1.9 by root, Wed Jan 20 20:29:00 2010 UTC vs.
Revision 1.10 by root, Wed Jan 20 21:26:17 2010 UTC

1package tbf; 1package tbf;
2
3use List::Util ();
2 4
3# kind of token-bucket-filter 5# kind of token-bucket-filter
4 6
5our $max_per_client = $::TBF_MAX_PER_CLIENT || 118000; 7our $max_per_client = $::TBF_MAX_PER_CLIENT || 118000;
6 8
9 my %arg = @_; 11 my %arg = @_;
10 my $self = bless \%arg, $class; 12 my $self = bless \%arg, $class;
11 13
12 $self->{maxbucket} ||= $::TBF_MAX_BUCKET || $self->{rate} * 5; # max bucket 14 $self->{maxbucket} ||= $::TBF_MAX_BUCKET || $self->{rate} * 5; # max bucket
13 $self->{minbucket} ||= $self->{rate}; # minimum bucket to share 15 $self->{minbucket} ||= $self->{rate}; # minimum bucket to share
14 $self->{interval} ||= $::BUFSIZE / $max_per_client; # good default interval 16 $self->{interval} ||= List::Util::min 0.1, $::BUFSIZE / $max_per_client; # good default interval
15 17
16 if ($self->{rate}) { 18 if ($self->{rate}) {
17 $self->{w} = EV::periodic 0, $self->{interval}, undef, sub { 19 $self->{w} = EV::periodic 0, $self->{interval}, undef, sub {
18 $self->inject ($self->{rate} * $self->{interval}); 20 $self->inject ($self->{rate} * $self->{interval});
19 }; 21 };

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines