|
|
1 | use AnyEvent (); |
|
|
2 | |
1 | use Coro; |
3 | use Coro; |
2 | use Coro::Semaphore; |
4 | use Coro::Semaphore; |
3 | use Coro::SemaphoreSet; |
5 | use Coro::SemaphoreSet; |
4 | use Coro::EV; |
6 | use Coro::EV; |
5 | use Coro::Socket; |
7 | use Coro::Socket; |
… | |
… | |
136 | |
138 | |
137 | use Socket; |
139 | use Socket; |
138 | use HTTP::Date; |
140 | use HTTP::Date; |
139 | use Convert::Scalar 'weaken'; |
141 | use Convert::Scalar 'weaken'; |
140 | use IO::AIO; |
142 | use IO::AIO; |
|
|
143 | use AnyEvent::AIO; |
141 | |
144 | |
142 | IO::AIO::min_parallel $::AIO_PARALLEL; |
145 | IO::AIO::min_parallel $::AIO_PARALLEL; |
143 | |
|
|
144 | our $AIO_WATCHER = EV::io IO::AIO::poll_fileno, EV::READ, \&IO::AIO::poll_cb; |
|
|
145 | |
146 | |
146 | our %conn; # $conn{ip}{self} => connobj |
147 | our %conn; # $conn{ip}{self} => connobj |
147 | our %uri; # $uri{ip}{uri}{self} |
148 | our %uri; # $uri{ip}{uri}{self} |
148 | our %blocked; |
149 | our %blocked; |
149 | our %mimetype; |
150 | our %mimetype; |
… | |
… | |
209 | for (keys %blocked) { |
210 | for (keys %blocked) { |
210 | delete $blocked{$_} unless $blocked{$_}[0] > $::NOW; |
211 | delete $blocked{$_} unless $blocked{$_}[0] > $::NOW; |
211 | } |
212 | } |
212 | } |
213 | } |
213 | |
214 | |
214 | our $PRUNE_WATCHER = EV::timer 60, 60, \&prune_caches; |
215 | our $PRUNE_WATCHER = AE::timer 60, 60, \&prune_caches; |
215 | |
216 | |
216 | sub slog { |
217 | sub slog { |
217 | my $self = shift; |
218 | my $self = shift; |
218 | main::slog($_[0], "$self->{remote_id}> $_[1]"); |
219 | main::slog($_[0], "$self->{remote_id}> $_[1]"); |
219 | } |
220 | } |