Update: working AnyEvent version.
#!/usr/bin/env perl
use strict;
use warnings;
use Data::Dumper;
use POSIX;
use EV();
use AnyEvent();
use AnyEvent::Handle();
use IO::Socket::INET();
use Socket qw(SOCK_STREAM);
my $server_socket = IO::Socket::INET->new(
Listen => 5,
ReuseAddr => 1,
LocalPort => 8888,
Blocking => 0,
Type => SOCK_STREAM,
);
$server_socket->autoflush( 1 );
my $child = AnyEvent->condvar;
my $server_socket_watcher = AnyEvent->io(
fh => $server_socket,
poll => 'r',
cb => sub {
my $client_socket = $server_socket->accept;
my $client = AnyEvent->condvar;
my $handle = AnyEvent::Handle->new(
fh => $client_socket,
on_read => sub {
my( $self ) = @_;
warn $$, ' GOT: ', $self->rbuf;
if( $self->rbuf =~ /QUIT/ ) {
warn $$, ' QUITTING';
$client->send;
}
},
on_drain => sub { warn $$, ' drain '; },
on_error => sub { print "Client connection error\n"; $clie
+nt->broadcast; },
);
$client->recv;
warn $$, ' CLIENT: recv';
},
);
warn $$, ' $child->recv';
$child->recv;
warn $$, ' CHILD: done';
exit;