Revision: | 1.8 |
Committed: | Fri Jul 4 12:21:58 2008 UTC (16 years, 1 month 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: | .... |
# | User | Rev | Content |
---|---|---|---|
1 | elmex | 1.1 | #!perl |
2 | root | 1.5 | |
3 | elmex | 1.1 | use strict; |
4 | root | 1.5 | |
5 | root | 1.2 | use AnyEvent::Impl::Perl; |
6 | elmex | 1.1 | use AnyEvent::Handle; |
7 | use Socket; | ||
8 | |||
9 | elmex | 1.3 | print "1..7\n"; |
10 | |||
11 | elmex | 1.1 | my $cv = AnyEvent->condvar; |
12 | |||
13 | socketpair my $rd, my $wr, AF_UNIX, SOCK_STREAM, PF_UNSPEC; | ||
14 | |||
15 | elmex | 1.3 | 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 | elmex | 1.1 | |
33 | my $dat = ''; | ||
34 | |||
35 | root | 1.6 | $rd_ae->push_read (chunk => 5132, sub { |
36 | elmex | 1.1 | my ($rd_ae, $data) = @_; |
37 | $dat = substr $data, 0, 2; | ||
38 | $dat .= substr $data, -5; | ||
39 | elmex | 1.3 | |
40 | print "ok 4 - first read chunk\n"; | ||
41 | elmex | 1.7 | my $n = 5; |
42 | elmex | 1.3 | $wr_ae->push_write ("A" x 5000); |
43 | $wr_ae->on_drain (sub { | ||
44 | my ($wr_ae) = @_; | ||
45 | $wr_ae->on_drain; | ||
46 | elmex | 1.7 | print "ok " . $n++ . " - fourth write\n"; |
47 | elmex | 1.3 | |
48 | elmex | 1.7 | }); |
49 | |||
50 | elmex | 1.8 | $rd_ae->push_read (chunk => 5000, sub { |
51 | elmex | 1.7 | print "ok " . $n++ . " - second read chunk\n"; |
52 | $cv->broadcast | ||
53 | elmex | 1.3 | }); |
54 | elmex | 1.1 | }); |
55 | |||
56 | elmex | 1.3 | $wr_ae->push_write ("A" x 5000); |
57 | $wr_ae->push_write ("X" x 130); | ||
58 | elmex | 1.1 | |
59 | elmex | 1.3 | # 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 | elmex | 1.1 | |
80 | $cv->wait; | ||
81 | |||
82 | elmex | 1.3 | 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 | } |