IO::Lambda::Loop::Select - select(2)-based event loop for IO::Lambda
This is the default implementation of event loop for IO::Lambda. IO::Lambda is
designed to be agnostic of event loop choice, but this one is the default,
reference implementation. The module is not intended for direct use. The
documentation declares the event loop interface rather than explains
specificities of the module.
use IO::Lambda::Loop::Select; # explicitly select the event loop module
use IO::Lambda;
- new
- Creates new instance of
"IO::Lambda::Loop::Select".
- after $RECORD
- Stores the timeout record. The timeout record is an array, with the
following layout: [ $OBJECT,
$DEADLINE, $CALLBACK ].
Loop invokes "io_handler" method on
$OBJECT after $DEADLINE is
expired.
- empty
- Returns TRUE if there are no records in the loop, FALSE otherwise.
- remove $OBJECT
- Removes all records associated with $OBJECT.
- remove_event $RECORD
- Removes a single event record.
- watch $RECORD
- Stores the IO record. The IO record in an array, with the following
layout: [ $OBJECT,
$DEADLINE, $CALLBACK,
$HANDLE, $FLAGS ]. Loop
invokes "io_handler" method on
$OBJECT either when
$HANDLE becomes readable/writable etc, depending
on $FLAGS, or after
$DEADLINE is expired.
$DEADLINE can be undef, meaning no timeout.
$FLAGS is a combination of
"IO_READ",
"IO_WRITE", and
"IO_EXCEPTION" values.
- yield
- Waits for at least one of the stored record to become active, dispatches
events to "io_handler" method for the
records that are active, then removes these records. The invoker must
resubmit new records in order continue receiving new events.