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.3 by root, Fri Aug 17 03:33:00 2001 UTC vs.
Revision 1.6 by root, Mon Sep 24 01:36:20 2001 UTC

38 38
39=cut 39=cut
40 40
41package Coro::Event; 41package Coro::Event;
42 42
43no warnings; 43no warnings qw(uninitialized);
44 44
45use Carp; 45use Carp;
46 46
47use Coro; 47use Coro;
48use Event qw(unloop); # we are re-exporting this, cooool! 48use Event qw(unloop); # we are re-exporting this, cooool!
49 49
50use base 'Exporter'; 50use base 'Exporter';
51 51
52@EXPORT = qw(loop unloop sweep); 52@EXPORT = qw(loop unloop sweep reschedule);
53 53
54BEGIN { 54BEGIN {
55 $VERSION = 0.45; 55 $VERSION = 0.45;
56 56
57 local $^W = 0; # avoid redefine warning for Coro::ready
57 require XSLoader; 58 require XSLoader;
58 XSLoader::load Coro::Event, $VERSION; 59 XSLoader::load Coro::Event, $VERSION;
59} 60}
60 61
61=item $w = Coro::Event->flavour(args...) 62=item $w = Coro::Event->flavour(args...)
107 }; 108 };
108 *{ $flavour } = $coronew; 109 *{ $flavour } = $coronew;
109 *{"do_$flavour"} = sub { 110 *{"do_$flavour"} = sub {
110 unshift @_, Coro::Event::; 111 unshift @_, Coro::Event::;
111 my $e = (&$coronew)->next; 112 my $e = (&$coronew)->next;
112 $e->w->cancel; 113 $e->cancel; # $e = $e->w
113 $e; 114 $e;
114 }; 115 };
115} 116}
116 117
117# double calls to avoid stack-cloning ;() 118# double calls to avoid stack-cloning ;()
118# is about 10% slower, though. 119# is about 10% slower, though.
119sub next($) { 120sub next($) {
120 &Coro::schedule if &_next; $_[0]; 121 &Coro::schedule if &_next; $_[0];
121} 122}
122 123
124sub Coro::Event::w { $_[0] }
123sub Coro::Event::w { $_[0]{Coro::Event}[2] } 125sub Coro::Event::prio { $_[0]{Coro::Event}[3] }
126sub Coro::Event::hits { $_[0]{Coro::Event}[4] }
124sub Coro::Event::got { $_[0]{Coro::Event}[3] } 127sub Coro::Event::got { $_[0]{Coro::Event}[5] }
125sub Coro::Event::prio { croak "prio not supported yet, please mail to pcg\@goof.com" }
126sub Coro::Event::hits { croak "prio not supported yet, please mail to pcg\@goof.com" }
127 128
128=item sweep 129=item sweep
129 130
130Similar to Event::one_event and Event::sweep: The idle task is called once 131Similar to Event::one_event and Event::sweep: The idle task is called once
131(this has the effect of jumping back into the Event loop once to serve new 132(this has the effect of jumping back into the Event loop once to serve new

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines