IO::Async::Set::Select - a class that maintains a set of IO::Async::Notifier objects by using the select() syscall.
IO::Async::Set::Select
IO::Async::Notifier
select()
use IO::Async::Set::Select; my $set = IO::Async::Set::Select->new(); $set->add( ... ); while(1) { my ( $rvec, $wvec, $evec ) = ('') x 3; my $timeout; $set->pre_select( \$rvec, \$wvec, \$evec, \$timeout ); ... my $ret = select( $rvec, $wvec, $evec, $timeout ); ... $set->post_select( $rvec, $evec, $wvec ); }
This subclass of IO::Async::Notifier uses the select() syscall to perform read-ready and write-ready tests.
To integrate with an existing select()-based event loop, a pair of methods pre_select() and post_select() can be called immediately before and after a select() call. The relevant bit in the read-ready bitvector is always set by the pre_select() method, but the corresponding bit in write-ready vector is set depending on the state of the 'want_writeready' property. The post_select() method will invoke the on_read_ready() or on_write_ready() methods or callbacks as appropriate.
pre_select()
post_select()
'want_writeready'
on_read_ready()
on_write_ready()
This function returns a new instance of a IO::Async::Set::Select object. It takes no special arguments.
This method prepares the bitvectors for a select() call, setting the bits that notifiers registered by this set are interested in. It will always set the appropriate bits in the read vector, but will only set them in the write vector if the notifier's want_writeready() property is true. Neither the exception vector nor the timeout are affected.
want_writeready()
Scalar references to the reading, writing and exception bitvectors
Scalar reference to the timeout value
This method checks the returned bitvectors from a select() call, and calls any of the notification methods or callbacks that are appropriate.
Scalars containing the read-ready, write-ready and exception bitvectors
IO::Select - OO interface to select system call
Paul Evans <leonerd@leonerd.org.uk>
To install IO::Async::Set, copy and paste the appropriate command in to your terminal.
cpanm
cpanm IO::Async::Set
CPAN shell
perl -MCPAN -e shell install IO::Async::Set
For more information on module installation, please visit the detailed CPAN module installation guide.