[Moscow.pm] Coro + AnyEvent --- Что не так
Ivan Petrov
i.petro.77.00 на gmail.com
Пт Окт 16 04:48:08 PDT 2015
> Остался вопрос можно ли совместить обычные повторяющие колбэки с Coro, чтобы
> например
> сервер написаный на голом AnyEvent использоватьс Coro без его переписывания к
> примеру tcp_server.
напишите аналог Coro::rouse_cb но для повторяющегося калбека.
package MyRouse;
use base 'Exporter';
our @EXPORT_OK = rouse_async;
use Coro;
sub rouse_async(&) {
my ($cb) = @_;
my @list;
my $watcher;
async {
while(1) {
$watcher = $Coro::current;
Coro::schedule;
$watcher = undef;
while (my $task = shift @list) {
async { \&cb; } @$task;
}
}
};
sub {
push @list => \@_;
$watcher->ready if $watcher;
$watcher = undef;
}
}
a дальше будет нечто вроде
use MyRouse;
tcp_server $host, $port, MyRouse::rouse_async {
my ($fh) = @_;
create_coro_socket $fh;
# работа с coro_socket
};
вот как-то так
с сокетами надо работать средствами coro или прямым доступом на основе
coro-проверок.
Подробная информация о списке рассылки Moscow-pm