[Moscow.pm] Coro + AnyEvent --- Что не так

Гришаев Анатолий agrishaev на gmail.com
Чт Окт 15 12:02:28 PDT 2015


Решил просветиться на тему Coro+AnyEvent

Написал простейший сервер
==========================================
#!/usr/bin/perl
use EV;
use Coro::AnyEvent;
use Coro::Handle;
use AnyEvent::Socket qw(tcp_server);


my $channel = Coro::Channel->new();
tcp_server undef, 2000, sub {
    my $fh = unblock shift;
    my $no = fileno $fh;
    async_pool {
        print STDERR "connected\n";
        last if !$fh->print( "Hi\n");
        while(my $msg=$channel->get()){
            my ($id, $msg) = split " ", $msg, 2;
            next if $id eq $no;
            last if ! $fh->print("$id> $msg\n");
        }
    };
    async_pool {
        while(defined( my $line = $fh->readline)){
            chomp $line;
            $channel->put(join " ", $no, $line);
        }
    };
    return;
};
AE::cv->recv;
=========================================

При подключении получаю ошибку
=========================================
connected
EV: error in callback (ignoring): FATAL: $Coro::idle blocked itself - did
you try to block inside an event loop callback? Caught at
/usr/local/lib/perl/5.14.2/Coro/Channel.pm line 83.
        Coro::Channel::get('Coro::Channel=ARRAY(0x8c05f98)') called at
/home/gtoly/ev.pl line 15
        main::__ANON__('GLOB(0x8c2317c)', 127.0.0.1, 32812) called at
/usr/lib/perl5/AnyEvent/Socket.pm line 1194
        AnyEvent::Socket::__ANON__('EV::IO=SCALAR(0x8c3acf8)', 1) called at
/usr/local/lib/perl/5.14.2/Coro/EV.pm line 71
        eval {...} called at /usr/local/lib/perl/5.14.2/Coro/EV.pm line 71
        Coro::EV::__ANON__ called at /usr/local/lib/perl/5.14.2/Coro.pm
line 715
        Coro::_coro_run called at /home/gtoly/ev.pl line 0
=========================================

Что такое, и как это починить?
----------- следущая часть -----------
Вложение в формате HTML было извлечено…
URL: <http://mail.pm.org/pipermail/moscow-pm/attachments/20151015/86b7f4fe/attachment.html>


Подробная информация о списке рассылки Moscow-pm