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

Comparing Coro/myhttpd/queue.pl (file contents):
Revision 1.3 by root, Wed May 22 00:33:26 2002 UTC vs.
Revision 1.5 by root, Sat Dec 8 21:01:17 2007 UTC

13 my $self = bless { 13 my $self = bless {
14 slots => $_[0], 14 slots => $_[0],
15 lastspb => 0, 15 lastspb => 0,
16 avgspb => 0, 16 avgspb => 0,
17 }, $class; 17 }, $class;
18 $self->{reschedule} = Event->timer( 18 $self->{reschedule} = EV::timer 10, 3, sub { $self->wake_next };
19 after => 10,
20 interval => 3,
21 cb => sub { $self->wake_next },
22 );
23 $self; 19 $self;
24} 20}
25 21
26sub start_transfer { 22sub start_transfer {
27 my $self = shift; 23 my $self = shift;
65 $min += $_->[1]; 61 $min += $_->[1];
66 } 62 }
67 last unless $self->{slots} > $min; 63 last unless $self->{slots} > $min;
68 my $transfer = shift @{$self->{wait}}; 64 my $transfer = shift @{$self->{wait}};
69 $self->{lastspb} = $transfer->{spb}; 65 $self->{lastspb} = $transfer->{spb};
70 $self->{avgspb} = $self->{avgspb} * 0.99 + $transfer->{spb} * 0.01; 66 $self->{avgspb} = $self->{avgspb} * 0.999 + $transfer->{spb} * 0.001;
71 $self->{started}++; 67 $self->{started}++;
72 $transfer->wake; 68 $transfer->wake;
73 last; 69 last;
74 } 70 }
75} 71}
83} 79}
84 80
85sub waiters { 81sub waiters {
86 $_[0]->sort; 82 $_[0]->sort;
87 @{$_[0]{wait}}; 83 @{$_[0]{wait}};
88}
89
90sub DESTROY {
91 my $self = shift;
92
93 $self->{reschedule}->cancel;
94} 84}
95 85
96package transfer; 86package transfer;
97 87
98use Coro::Timer (); 88use Coro::Timer ();

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines