Linux::Epoll - O(1) multiplexing for Linux
version 0.010
use Linux::Epoll; my $epoll = Linux::Epoll->new(); $epoll->add($fh, 'in', sub { my $events = shift; do_something($fh) if $events->{in}; }); $epoll->wait while 1;
Epoll is a multiplexing mechanism that scales up O(1) with number of watched files. Linux::Epoll is a callback style epoll module, unlike other epoll modules available on CPAN.
in
The associated filehandle is availible for reading.
out
The associated filehandle is availible for writing.
err
An error condition has happened on the associated filehandle. wait will always wait on this event, it is not necessary to set this with add or modify.
wait
add
modify
prio
There is urgent data available for reading.
et
Set edge triggered behavior for the associated filehandle. The default behavior is level triggered. See you epoll(7) documentation for more information on what this means.
hup
A hang-up has happened on the associated filehandle. wait will always wait on this event, it is not necessary to set this with add or modify.
rdhup
Stream socket peer closed the connection, or shut down the writing half of connection. This flag is especially useful for writing simple code to detect peer shutdown when using Edge Triggered monitoring.
oneshot
Sets the one-shot behavior for the associated file descriptor. This means that after an event is pulled out with wait the associated file descriptor is internally disabled and no other events will be reported by the epoll interface. The user must call modify to rearm the file descriptor with a new event mask.
Create a new epoll instance.
Register the filehandle with the epoll instance and associate events $events and callback $callback with it. $events may be either a string (e.g. 'in') or an arrayref (e.g. [qw/in out hup/]). If a filehandle already exists in the set and add is called in non-void context, it returns undef and sets $! to EEXIST; if the file can't be waited upon it sets $! to EPERM instead. On all other error conditions an exception is thrown. The callback gets a single argument, a hashref whose keys are the triggered events.
$events
$callback
'in'
[qw/in out hup/]
$!
EEXIST
EPERM
Change the events and callback associated on this epoll instance with filehandle $fh. The arguments work the same as with add. If a filehandle doesn't exist in the set and modify is called in non-void context, it returns undef and sets $! to ENOENT. On all other error conditions an exception is thrown.
ENOENT
Remove a filehandle from the epoll instance. If a filehandle doesn't exist in the set and delete is called in non-void context, it returns undef and sets $! to ENOENT. On all other error conditions an exception is thrown.
delete
Wait for up to $number events, where $number must be greater than zero. $timeout is the maximal time wait will wait for events in fractional seconds. If it is undefined it may wait indefinitely. $sigmask is the signal mask during the call. If it is not defined the signal mask will be untouched. If interrupted by a signal it returns undef/an empty list and sets $! to EINTR. On all other error conditions an exception is thrown.
$number
$timeout
$sigmask
EINTR
IO::Epoll
Sys::Syscall
IO::Poll
Leon Timmermans <leont@cpan.org>
This software is copyright (c) 2010 by Leon Timmermans.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
To install Linux::Epoll, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Linux::Epoll
CPAN shell
perl -MCPAN -e shell install Linux::Epoll
For more information on module installation, please visit the detailed CPAN module installation guide.