File: wait_for.t

package info (click to toggle)
libio-stream-perl 2.0.3-2
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 332 kB
  • sloc: perl: 775; makefile: 7
file content (51 lines) | stat: -rw-r--r-- 972 bytes parent folder | download | duplicates (3)
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);
}