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

Comparing EV/EV.pm (file contents):
Revision 1.6 by root, Sat Oct 27 07:30:10 2007 UTC vs.
Revision 1.8 by root, Sat Oct 27 19:11:27 2007 UTC

60 our $VERSION = '0.01'; 60 our $VERSION = '0.01';
61 use XSLoader; 61 use XSLoader;
62 XSLoader::load "EV", $VERSION; 62 XSLoader::load "EV", $VERSION;
63} 63}
64 64
65=head1 FUNCTIONAL INTERFACE 65=head1 BASIC INTERFACE
66 66
67=over 4 67=over 4
68 68
69=item $EV::NPRI 69=item $EV::NPRI
70 70
71How many priority levels are available. 71How many priority levels are available.
72
73=item $EV::DIED
74
75Must contain a reference to a function that is called when a callback
76throws an exception (with $@ containing thr error). The default prints an
77informative message and continues.
78
79If this callback throws an exception it will be silently ignored.
72 80
73=item $time = EV::now 81=item $time = EV::now
74 82
75Returns the time in (fractional) seconds since the epoch. 83Returns the time in (fractional) seconds since the epoch.
76 84
101 109
102As long as the returned watcher object is alive, call the C<$callback> 110As long as the returned watcher object is alive, call the C<$callback>
103when the events specified in C<$eventmask> happen. Initially, the timeout 111when the events specified in C<$eventmask> happen. Initially, the timeout
104is disabled. 112is disabled.
105 113
106The C<io_ns> variant doesn't add/start the newly created watcher. 114Youc an additionall set a timeout to occur on the watcher, but note that
115this timeout will not be reset when you get an I/O event in the EV::PERSIST
116case, and reaching a timeout will always stop the watcher even in the
117EV::PERSIST case.
118
119If you want a timeout to occur only after a specific time of inactivity, set
120a repeating timeout and do NOT use EV::PERSIST.
107 121
108Eventmask can be one or more of these constants ORed together: 122Eventmask can be one or more of these constants ORed together:
109 123
110 EV::READ wait until read() wouldn't block anymore 124 EV::READ wait until read() wouldn't block anymore
111 EV::WRITE wait until write() wouldn't block anymore 125 EV::WRITE wait until write() wouldn't block anymore
112 EV::PERSIST stay active after an event occured 126 EV::PERSIST stay active after a (non-timeout) event occured
127
128The C<io_ns> variant doesn't add/start the newly created watcher.
113 129
114=item my $w = EV::timer $after, $repeat, $callback 130=item my $w = EV::timer $after, $repeat, $callback
115 131
116=item my $w = EV::timer_ns $after, $repeat, $callback 132=item my $w = EV::timer_ns $after, $repeat, $callback
117 133
138 154
139This can be used to schedule a callback to run at very regular intervals, 155This can be used to schedule a callback to run at very regular intervals,
140as long as the processing time is less then the interval (otherwise 156as long as the processing time is less then the interval (otherwise
141obviously events will be skipped). 157obviously events will be skipped).
142 158
159Another way to think about it (for the mathematically inclined) is that
160C<timer_abs> will try to tun the callback at the next possible time where
161C<$time = $at (mod $interval)>, regardless of any time jumps.
162
143The C<timer_abs_ns> variant doesn't add/start the newly created watcher. 163The C<timer_abs_ns> variant doesn't add/start the newly created watcher.
144 164
145=item my $w = EV::signal $signum, $callback 165=item my $w = EV::signal $signum, $callback
146 166
147=item my $w = EV::signal_ns $signum, $callback 167=item my $w = EV::signal_ns $signum, $callback
209=head1 BUGS 229=head1 BUGS
210 230
211Lots. Libevent itself isn't well tested and rather buggy, and this module 231Lots. Libevent itself isn't well tested and rather buggy, and this module
212is quite new at the moment. 232is quite new at the moment.
213 233
214Please note that the epoll method is not, in general, reliable in 234Please note that the epoll method is not, in general, reliable in programs
215programs that use fork (even if no libveent calls are being made in the 235that use fork (even if no libveent calls are being made in the forked
216forked process). Since this is such a common issue, this module will 236process). If your program behaves erratically, try setting the environment
217force the epoll method in EV to be off *unless* the global variable 237variable C<EVENT_NOEPOLL> first when running the program.
218$EV::ENABLE_EPOLL is set to 1 *before* loading this module for the first 238
219time. 239In general, if you fork, then you can only use the EV module in one of the
240children.
220 241
221=cut 242=cut
222 243
244our $DIED = sub {
245 warn "EV: error in callback (ignoring): $@";
246};
247
223our $NPRI = 4; 248our $NPRI = 4;
224our $BASE;
225our $ENABLE_EPOLL;
226
227{
228 local $ENV{EVENT_NOEPOLL};
229 $ENV{EVENT_NOEPOLL} = 1 unless $ENABLE_EPOLL;
230 $BASE = init; 249our $BASE = init;
231}
232
233priority_init $NPRI; 250priority_init $NPRI;
234 251
235push @AnyEvent::REGISTRY, [EV => "EV::AnyEvent"]; 252push @AnyEvent::REGISTRY, [EV => "EV::AnyEvent"];
236 253
2371; 2541;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines