ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/Coro/Event/Event.pm
(Generate patch)

Comparing Coro/Event/Event.pm (file contents):
Revision 1.16 by root, Thu May 8 00:55:30 2003 UTC vs.
Revision 1.28 by root, Sat Aug 20 01:09:19 2005 UTC

6 6
7 use Coro; 7 use Coro;
8 use Coro::Event; 8 use Coro::Event;
9 9
10 sub keyboard : Coro { 10 sub keyboard : Coro {
11 my $w = Coro::Event->io(fd => *STDIN, poll => 'r'); 11 my $w = Coro::Event->io(fd => \*STDIN, poll => 'r');
12 while() { 12 while() {
13 print "cmd> "; 13 print "cmd> ";
14 my $ev = $w->next; my $cmd = <STDIN>; 14 my $ev = $w->next; my $cmd = <STDIN>;
15 unloop unless $cmd ne ""; 15 unloop unless $cmd ne "";
16 print "data> "; 16 print "data> ";
38 38
39=cut 39=cut
40 40
41package Coro::Event; 41package Coro::Event;
42 42
43no warnings qw(uninitialized); 43BEGIN { eval { require warnings } && warnings->unimport ("uninitialized") }
44 44
45use Carp; 45use Carp;
46 46
47use Coro; 47use Coro;
48use Event qw(loop unloop); # we are re-exporting this, cooool! 48use Event qw(loop unloop); # we are re-exporting this, cooool!
50use base 'Exporter'; 50use base 'Exporter';
51 51
52@EXPORT = qw(loop unloop sweep reschedule); 52@EXPORT = qw(loop unloop sweep reschedule);
53 53
54BEGIN { 54BEGIN {
55 $VERSION = 0.652; 55 $VERSION = 1.3;
56 56
57 local $^W = 0; # avoid redefine warning for Coro::ready; 57 local $^W = 0; # avoid redefine warning for Coro::ready;
58
58 require XSLoader; 59 require DynaLoader;
59 XSLoader::load Coro::Event, $VERSION; 60 push @ISA, 'DynaLoader';
61 bootstrap Coro::Event $VERSION;
60} 62}
61 63
62=item $w = Coro::Event->flavour(args...) 64=item $w = Coro::Event->flavour(args...)
63 65
64Create and return a watcher of the given type. 66Create and return a watcher of the given type.
107 }; 109 };
108 *{ $flavour } = $coronew; 110 *{ $flavour } = $coronew;
109 *{"do_$flavour"} = sub { 111 *{"do_$flavour"} = sub {
110 unshift @_, Coro::Event::; 112 unshift @_, Coro::Event::;
111 my $e = (&$coronew)->next; 113 my $e = (&$coronew)->next;
112 $e->cancel; # $e = $e->w->cancel ($e == $e->w!) 114 $e->cancel; # $e === $e->w
113 $e; 115 $e;
114 }; 116 };
115} 117}
116 118
117# double calls to avoid stack-cloning ;() 119# double calls to avoid stack-cloning ;()
191 193
1921; 1941;
193 195
194=head1 AUTHOR 196=head1 AUTHOR
195 197
196 Marc Lehmann <pcg@goof.com> 198 Marc Lehmann <schmorp@schmorp.de>
197 http://www.goof.com/pcg/marc/ 199 http://home.schmorp.de/
198 200
199=cut 201=cut
200 202

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines