ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/AnyEvent/t/handle/02_write.t
Revision: 1.6
Committed: Sat May 24 23:15:14 2008 UTC (16 years, 1 month ago) by root
Content type: application/x-troff
Branch: MAIN
CVS Tags: rel-4_151, rel-4_152, rel-4_04, rel-4_14, rel-4_15, rel-4_13, rel-4_05, rel-4_12, rel-4_11, rel-4_160, rel-4_1, rel-4_03
Changes since 1.5: +2 -2 lines
Log Message:
*** empty log message ***

File Contents

# Content
1 #!perl
2
3 use strict;
4
5 use AnyEvent::Impl::Perl;
6 use AnyEvent::Handle;
7 use Socket;
8
9 print "1..7\n";
10
11 my $cv = AnyEvent->condvar;
12
13 socketpair my $rd, my $wr, AF_UNIX, SOCK_STREAM, PF_UNSPEC;
14
15 my $rd_ae =
16 AnyEvent::Handle->new (
17 fh => $rd,
18 on_eof => sub {
19 warn "reader got EOF";
20 $cv->broadcast
21 }
22 );
23
24 my $wr_ae =
25 AnyEvent::Handle->new (
26 fh => $wr,
27 on_eof => sub {
28 warn "writer got EOF\n";
29 $cv->broadcast
30 }
31 );
32
33 my $dat = '';
34
35 $rd_ae->push_read (chunk => 5132, sub {
36 my ($rd_ae, $data) = @_;
37 $dat = substr $data, 0, 2;
38 $dat .= substr $data, -5;
39
40 print "ok 4 - first read chunk\n";
41 $wr_ae->push_write ("A" x 5000);
42 $wr_ae->on_drain (sub {
43 my ($wr_ae) = @_;
44 $wr_ae->on_drain;
45 print "ok 5 - fourth write\n";
46
47 $rd_ae->push_read (chunk => 1, sub {
48 print "ok 6 - second read chunk\n";
49 $cv->broadcast
50 });
51 });
52 });
53
54 $wr_ae->push_write ("A" x 5000);
55 $wr_ae->push_write ("X" x 130);
56
57 # and now some extreme CPS action:
58 $wr_ae->on_drain (sub {
59 my ($wr_ae) = @_;
60 $wr_ae->on_drain;
61 print "ok 1 - first write\n";
62
63 $wr_ae->push_write ("Y");
64 $wr_ae->on_drain (sub {
65 my ($wr_ae) = @_;
66 $wr_ae->on_drain;
67 print "ok 2 - second write\n";
68
69 $wr_ae->push_write ("Z");
70 $wr_ae->on_drain (sub {
71 my ($wr_ae) = @_;
72 $wr_ae->on_drain;
73 print "ok 3 - third write\n";
74 });
75 });
76 });
77
78 $cv->wait;
79
80 if ($dat eq "AAXXXYZ") {
81 print "ok 7 - received data\n";
82 } else {
83 warn "dat was '$dat'\n";
84 print "not ok 7 - received data\n";
85 }