NAME
IO::Lambda::Loop::Select - select(2)-based event loop for IO::Lambda
DESCRIPTION
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.
SYNOPSIS
use IO::Lambda::Loop::Select; # explicitly select the event loop module
use IO::Lambda;
API
- 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 will invoke
IO::Lambda::io_handler
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 will invoke
IO::Lambda::io_handler
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 ofIO_READ
,IO_WRITE
, andIO_EXCEPTION
values. - yield
-
Waits for at least one of the stored record to become active, dispatches events to
IO::Lambda::io_handler
for the records that have, then removes these records. The invoker must resubmit records in order continue receiving new events.