NAME
PerlIO::via::Timeout - a PerlIO layer that adds read & write timeout to a handle
VERSION
version 0.32
SYNOPSIS
open
my
$fh
,
'<:via(Timeout)'
,
'foo.html'
;
# set the timeout layer to be 0.5 second read timeout
read_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 seconds
read_timeout(
$fh
, 2.5);
# get the current read timeout
my
$secs
= read_timeout(
$fh
);
Getter / setter of the read timeout value.
write_timeout
# set a write timeout of 2.5 seconds
write_timeout(
$fh
, 2.5);
# get the current write timeout
my
$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 timeout
timeout_enabled(
$fh
, 0);
# enable timeout
timeout_enabled(
$fh
, 1);
# get the current status
my
$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 seconds
write_timeout(
$fh
, 2.5);
}
Returns wether the given filehandle is managed by PerlIO::via::Timeout.
SEE ALSO
THANKS TO
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.