NAME
Event - Event loop processing
WARNING
THIS IS EXPERIMENTAL CODE AND IS LIKELY TO CHANGE A CONSIDERABLE AMOUNT BEFORE IT IS RELEASED FOR GENERAL USE.
SYNOPSIS
use Event;
# initialize application
Event->Loop;
# and some callback will call
Event->exit;
DESCRIPTION
EVENT TYPES
- idle
-
Event->idle( \&idle );Call
&idlewhen the loop is idle. - atexit
-
$e = Event->atexit( \&cleanup )Call
&cleanupwhen the event loop is about to exit. If after registering an atexit handler it is not required, the thecancelmethod can be called on$e. - watchvar
-
$e = Event->watchvar( -variable => \$var, -async => 0, -callback => \&watcher, );Call
&watcherwhen$varis changed. If-asyncis true then&watcherwill be called immediately, otherwise the call to&watcherwill be pushed onto the event queue.When called
&watcherwill be passed$eas the first argument,&watchermay the call thecancelmethod to stop any future changes to$varcreating events. - timer
-
$e = Event->timer( -after => 10, -at => time + 10, -interval => 2, -callback => \&timeout );Call
&timeouteither after a given delay or at a given time (-after and -at are mutually exclusive). Then optionally call&timeoutat given intervals.When called
&timeoutwill be passed$eas the first argument, and the time that the event was triggered as the second argument.&timeoutmay the call thecancelmethod on$eto stop any future timer events, or if-intervalwas not given and-afterwas then&timeoutmay call theagainmethod on$ewhich will cause the event to re-occur, the time at which the event will re-occur is the value given by-afteradded to the time the event was triggered. Due to lags in the event loop calling the callback, this time may already be in the past, in which case the event will be queued immediately - io
-
$e = Event->io( -handle => $sock, -events => POLLREAD, -callback => \&ready );Call
&readywhen$sockhas data to be read.-eventcan take any combination of the constants that are accepted by IO::Poll.When called
&readyis passed$eas the first argument,$handleas the second argument and the events that happened as the third argument.&readymay call thecancelmethod on$eto stop any future event handling on$handle - signal
-
$e = Event->signal( -signal => 'INT', -callback => \&interrupt );Call
&interruptwhen anINTsignal is received.-signalaccepts any signal name exceptCHLD, see below.When called
&interruptwill be passed$eas the first argument and the name of the signal as the second.&interruptamy call thecancelmethod on$eto stop any future events being caught. - process
-
$e = Event->process( -pid => $pid, -callback => \&reap );Call
&reapwhen the child process with pid$pidexits. If$pidis not given then&reapwill be called for any process that does not have it's own event handler.When called
&reapwill be passed$eas the first parameter, the process id of the child as the second and the exit status of the child as the third.&reapmay call thecancelmethod on$eto stop future process events, this is only of use on event handlers where-pidis not specified.
FUTURE ENHANCEMENTS
# generate an event when we can successfully run an op
$e = Event->semaphore(
-semaphore => $sem,
-op => $op,
-callback => \&gotit
);
# generate an event when the msg queue is/is not empty
$e = Event->msg(
-msg => $msg,
-callback => \&doit
);
AUTHOR
Graham Barr <gbarr@pobox.com>
COPYRIGHT
Copyright (c) 1997 Graham Barr. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.