1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
|
# EREQINEOF and EREQINBUFLIMIT.
use warnings;
use strict;
use lib 't';
use share;
@CheckPoint = (
[ 'reader', 0, EREQINEOF ], 'reader: EREQINEOF',
[ 'reader', 0, EREQINBUFLIMIT ], 'reader: EREQINBUFLIMIT',
[ 'reader', IN, '123' ], 'reader: IN "123"',
);
plan tests => @CheckPoint/2;
socketpair my $server, my $client, AF_UNIX, SOCK_STREAM, PF_UNSPEC or die "socketpair: $!";
nonblocking($server);
nonblocking($client);
my $r = IO::Stream->new({
fh => $server,
cb => \&reader,
wait_for => 0,
});
my $w = IO::Stream->new({
fh => $client,
cb => \&writer,
wait_for => 0,
});
$w->write('1');
EV::loop;
$r->{wait_for} = EOF;
$w->write('2');
EV::loop;
$r->{wait_for} = IN;
$w->write('3');
EV::loop;
sub reader {
my ($io, $e, $err) = @_;
checkpoint($e, $err || $io->{in_buf});
EV::unloop;
}
sub writer {
my ($io, $e, $err) = @_;
checkpoint($e, $err);
}
|