ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/AnyEvent/t/handle/02_write.t
Revision: 1.3
Committed: Thu May 15 09:03:43 2008 UTC (16 years, 1 month ago) by elmex
Content type: application/x-troff
Branch: MAIN
CVS Tags: rel-3_5
Changes since 1.2: +62 -16 lines
Log Message:
fixed write test and bug in *_read_chunk

File Contents

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