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.12 by root, Mon Dec 23 19:30:36 2002 UTC vs.
Revision 1.34 by root, Wed Jan 25 21:43:58 2006 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;
46no warnings;
46 47
47use Coro; 48use Coro;
48use Event qw(loop unloop); # we are re-exporting this, cooool! 49use Event qw(loop unloop); # we are re-exporting this, cooool!
49 50
51use XSLoader;
52
50use base 'Exporter'; 53use base Exporter::;
51 54
52@EXPORT = qw(loop unloop sweep reschedule); 55our @EXPORT = qw(loop unloop sweep reschedule);
53 56
54BEGIN { 57BEGIN {
55 $VERSION = 0.6; 58 our $VERSION = 1.8;
56 59
57 local $^W = 0; # avoid redefine warning for Coro::ready 60 local $^W = 0; # avoid redefine warning for Coro::ready;
58 require XSLoader;
59 XSLoader::load Coro::Event, $VERSION; 61 XSLoader::load __PACKAGE__, $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