NAME
PerlIO::via::Timeout - a PerlIO layer that adds read & write timeout to a handle
VERSION
version 0.32
SYNOPSIS
use Errno qw(ETIMEDOUT);use PerlIO::via::Timeout qw(:all);open my $fh, '<:via(Timeout)', 'foo.html';# set the timeout layer to be 0.5 second read timeoutread_timeout($fh, 0.5);my $line = <$fh>;if ($line == undef && 0+$! == ETIMEDOUT) {# timed out...}
DESCRIPTION
This package implements a PerlIO layer, that adds read / write timeout. This can be useful to avoid blocking while accessing a handle (file, socket, ...), and fail after some time.
The timeout is implemented by using "<select"> on the handle before reading/writing.
WARNING the handle won't timeout if you use "sysread" or "syswrite" on it, because these functions works at a lower level. However if you're trying to implement a timeout for a socket, see IO::Socket::Timeout that implements exactly that.
FUNCTIONS
read_timeout
# set a read timeout of 2.5 secondsread_timeout($fh, 2.5);# get the current read timeoutmy $secs = read_timeout($fh);
Getter / setter of the read timeout value.
write_timeout
# set a write timeout of 2.5 secondswrite_timeout($fh, 2.5);# get the current write timeoutmy $secs = write_timeout($fh);
Getter / setter of the write timeout value.
enable_timeout
enable_timeout($fh);
Equivalent to setting timeout_enabled to 1
disable_timeout
disable_timeout($fh);
Equivalent to setting timeout_enabled to 0
timeout_enabled
# disable timeouttimeout_enabled($fh, 0);# enable timeouttimeout_enabled($fh, 1);# get the current statusmy $is_enabled = timeout_enabled($fh);
Getter / setter of the timeout enabled flag.
has_timeout_layer
if (has_timeout_layer($fh)) {# set a write timeout of 2.5 secondswrite_timeout($fh, 2.5);}
Returns whether the given filehandle is managed by PerlIO::via::Timeout.
SEE ALSO
- PerlIO::via
THANKS TO
- Vincent Pit
- Christian Hansen
- Leon Timmmermans
AUTHOR
Damien "dams" Krotkine
COPYRIGHT AND LICENSE
This software is copyright (c) 2013 by Damien "dams" Krotkine.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.