Revision: | 1.8 |
Committed: | Fri Jul 4 12:21:58 2008 UTC (16 years ago) by elmex |
Content type: | application/x-troff |
Branch: | MAIN |
CVS Tags: | rel-4_91, rel-4_23, rel-4_21, rel-4_412, rel-4_81, rel-4_83, rel-4_82, rel-4_86, rel-4_352, rel-5_112, rel-4_351, rel-5_251, rel-0_85, rel-4_331, rel-4_231, rel-4_233, rel-4_232, rel-4_8, rel-4_234, rel-4_4, rel-5_261, rel-5_271, rel-5_28, rel-5_29, rel-5_21, rel-5_22, rel-5_23, rel-5_24, rel-5_26, rel-5_27, rel-5_1, rel-5_0, rel-5_2, rel-4_22, rel-5_201, rel-5_202, rel-4_161, rel-5_111, rel-4_881, rel-4_411, rel-4_9, rel-5_01, rel-4_45, rel-4_41, rel-4_42, rel-4_2, rel-4_88, rel-4_3, rel-5_11, rel-5_12, rel-4_31, rel-4_32, rel-4_33, rel-4_34, rel-4_35 |
Changes since 1.7: | +1 -1 lines |
Log Message: | .... |
# | 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 | my $n = 5; |
42 | $wr_ae->push_write ("A" x 5000); |
43 | $wr_ae->on_drain (sub { |
44 | my ($wr_ae) = @_; |
45 | $wr_ae->on_drain; |
46 | print "ok " . $n++ . " - fourth write\n"; |
47 | |
48 | }); |
49 | |
50 | $rd_ae->push_read (chunk => 5000, sub { |
51 | print "ok " . $n++ . " - second read chunk\n"; |
52 | $cv->broadcast |
53 | }); |
54 | }); |
55 | |
56 | $wr_ae->push_write ("A" x 5000); |
57 | $wr_ae->push_write ("X" x 130); |
58 | |
59 | # and now some extreme CPS action: |
60 | $wr_ae->on_drain (sub { |
61 | my ($wr_ae) = @_; |
62 | $wr_ae->on_drain; |
63 | print "ok 1 - first write\n"; |
64 | |
65 | $wr_ae->push_write ("Y"); |
66 | $wr_ae->on_drain (sub { |
67 | my ($wr_ae) = @_; |
68 | $wr_ae->on_drain; |
69 | print "ok 2 - second write\n"; |
70 | |
71 | $wr_ae->push_write ("Z"); |
72 | $wr_ae->on_drain (sub { |
73 | my ($wr_ae) = @_; |
74 | $wr_ae->on_drain; |
75 | print "ok 3 - third write\n"; |
76 | }); |
77 | }); |
78 | }); |
79 | |
80 | $cv->wait; |
81 | |
82 | if ($dat eq "AAXXXYZ") { |
83 | print "ok 7 - received data\n"; |
84 | } else { |
85 | warn "dat was '$dat'\n"; |
86 | print "not ok 7 - received data\n"; |
87 | } |