summaryrefslogtreecommitdiffstats
path: root/upstream/debian-unstable/man3/IO::Select.3perl
diff options
context:
space:
mode:
Diffstat (limited to 'upstream/debian-unstable/man3/IO::Select.3perl')
-rw-r--r--upstream/debian-unstable/man3/IO::Select.3perl190
1 files changed, 190 insertions, 0 deletions
diff --git a/upstream/debian-unstable/man3/IO::Select.3perl b/upstream/debian-unstable/man3/IO::Select.3perl
new file mode 100644
index 00000000..25783c07
--- /dev/null
+++ b/upstream/debian-unstable/man3/IO::Select.3perl
@@ -0,0 +1,190 @@
+.\" -*- mode: troff; coding: utf-8 -*-
+.\" Automatically generated by Pod::Man 5.01 (Pod::Simple 3.43)
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>.
+.ie n \{\
+. ds C` ""
+. ds C' ""
+'br\}
+.el\{\
+. ds C`
+. ds C'
+'br\}
+.\"
+.\" Escape single quotes in literal strings from groff's Unicode transform.
+.ie \n(.g .ds Aq \(aq
+.el .ds Aq '
+.\"
+.\" If the F register is >0, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
+.\" entries marked with X<> in POD. Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.\"
+.\" Avoid warning from groff about undefined register 'F'.
+.de IX
+..
+.nr rF 0
+.if \n(.g .if rF .nr rF 1
+.if (\n(rF:(\n(.g==0)) \{\
+. if \nF \{\
+. de IX
+. tm Index:\\$1\t\\n%\t"\\$2"
+..
+. if !\nF==2 \{\
+. nr % 0
+. nr F 2
+. \}
+. \}
+.\}
+.rr rF
+.\" ========================================================================
+.\"
+.IX Title "IO::Select 3perl"
+.TH IO::Select 3perl 2024-01-12 "perl v5.38.2" "Perl Programmers Reference Guide"
+.\" For nroff, turn off justification. Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.if n .ad l
+.nh
+.SH NAME
+IO::Select \- OO interface to the select system call
+.SH SYNOPSIS
+.IX Header "SYNOPSIS"
+.Vb 1
+\& use IO::Select;
+\&
+\& $s = IO::Select\->new();
+\&
+\& $s\->add(\e*STDIN);
+\& $s\->add($some_handle);
+\&
+\& @ready = $s\->can_read($timeout);
+\&
+\& @ready = IO::Select\->new(@handles)\->can_read(0);
+.Ve
+.SH DESCRIPTION
+.IX Header "DESCRIPTION"
+The \f(CW\*(C`IO::Select\*(C'\fR package implements an object approach to the system \f(CW\*(C`select\*(C'\fR
+function call. It allows the user to see what IO handles, see IO::Handle,
+are ready for reading, writing or have an exception pending.
+.SH CONSTRUCTOR
+.IX Header "CONSTRUCTOR"
+.IP "new ( [ HANDLES ] )" 4
+.IX Item "new ( [ HANDLES ] )"
+The constructor creates a new object and optionally initialises it with a set
+of handles.
+.SH METHODS
+.IX Header "METHODS"
+.IP "add ( HANDLES )" 4
+.IX Item "add ( HANDLES )"
+Add the list of handles to the \f(CW\*(C`IO::Select\*(C'\fR object. It is these values that
+will be returned when an event occurs. \f(CW\*(C`IO::Select\*(C'\fR keeps these values in a
+cache which is indexed by the \f(CW\*(C`fileno\*(C'\fR of the handle, so if more than one
+handle with the same \f(CW\*(C`fileno\*(C'\fR is specified then only the last one is cached.
+.Sp
+Each handle can be an \f(CW\*(C`IO::Handle\*(C'\fR object, an integer or an array
+reference where the first element is an \f(CW\*(C`IO::Handle\*(C'\fR or an integer.
+.IP "remove ( HANDLES )" 4
+.IX Item "remove ( HANDLES )"
+Remove all the given handles from the object. This method also works
+by the \f(CW\*(C`fileno\*(C'\fR of the handles. So the exact handles that were added
+need not be passed, just handles that have an equivalent \f(CW\*(C`fileno\*(C'\fR
+.IP "exists ( HANDLE )" 4
+.IX Item "exists ( HANDLE )"
+Returns a true value (actually the handle itself) if it is present.
+Returns undef otherwise.
+.IP handles 4
+.IX Item "handles"
+Return an array of all registered handles.
+.IP "can_read ( [ TIMEOUT ] )" 4
+.IX Item "can_read ( [ TIMEOUT ] )"
+Return an array of handles that are ready for reading. \f(CW\*(C`TIMEOUT\*(C'\fR is the
+maximum amount of time to wait before returning an empty list (with \f(CW$!\fR
+unchanged), in seconds, possibly fractional. If \f(CW\*(C`TIMEOUT\*(C'\fR is not given
+and any handles are registered then the call will block indefinitely.
+Upon error, an empty list is returned, with \f(CW$!\fR set to indicate the
+error. To distinguish between timeout and error, set \f(CW$!\fR to zero
+before calling this method, and check it after an empty list is returned.
+.IP "can_write ( [ TIMEOUT ] )" 4
+.IX Item "can_write ( [ TIMEOUT ] )"
+Same as \f(CW\*(C`can_read\*(C'\fR except check for handles that can be written to.
+.IP "has_exception ( [ TIMEOUT ] )" 4
+.IX Item "has_exception ( [ TIMEOUT ] )"
+Same as \f(CW\*(C`can_read\*(C'\fR except check for handles that have an exception
+condition, for example pending out-of-band data.
+.IP "count ()" 4
+.IX Item "count ()"
+Returns the number of handles that the object will check for when
+one of the \f(CW\*(C`can_\*(C'\fR methods is called or the object is passed to
+the \f(CW\*(C`select\*(C'\fR static method.
+.IP \fBbits()\fR 4
+.IX Item "bits()"
+Return the bit string suitable as argument to the core \fBselect()\fR call.
+.IP "select ( READ, WRITE, EXCEPTION [, TIMEOUT ] )" 4
+.IX Item "select ( READ, WRITE, EXCEPTION [, TIMEOUT ] )"
+\&\f(CW\*(C`select\*(C'\fR is a static method, that is you call it with the package name
+like \f(CW\*(C`new\*(C'\fR. \f(CW\*(C`READ\*(C'\fR, \f(CW\*(C`WRITE\*(C'\fR and \f(CW\*(C`EXCEPTION\*(C'\fR are either \f(CW\*(C`undef\*(C'\fR or
+\&\f(CW\*(C`IO::Select\*(C'\fR objects. \f(CW\*(C`TIMEOUT\*(C'\fR is optional and has the same effect as
+for the core select call.
+.Sp
+If at least one handle is ready for the specified kind of operation,
+the result will be an array of 3 elements, each a reference to an array
+which will hold the handles that are ready for reading, writing and
+have exceptions respectively. Upon timeout, an empty list is returned,
+with \f(CW$!\fR unchanged. Upon error, an empty list is returned, with \f(CW$!\fR
+set to indicate the error. To distinguish between timeout and error,
+set \f(CW$!\fR to zero before calling this method, and check it after an
+empty list is returned.
+.SH EXAMPLE
+.IX Header "EXAMPLE"
+Here is a short example which shows how \f(CW\*(C`IO::Select\*(C'\fR could be used
+to write a server which communicates with several sockets while also
+listening for more connections on a listen socket
+.PP
+.Vb 2
+\& use IO::Select;
+\& use IO::Socket;
+\&
+\& $lsn = IO::Socket::INET\->new(Listen => 1, LocalPort => 8080);
+\& $sel = IO::Select\->new( $lsn );
+\&
+\& while(@ready = $sel\->can_read) {
+\& foreach $fh (@ready) {
+\& if($fh == $lsn) {
+\& # Create a new socket
+\& $new = $lsn\->accept;
+\& $sel\->add($new);
+\& }
+\& else {
+\& # Process socket
+\&
+\& # Maybe we have finished with the socket
+\& $sel\->remove($fh);
+\& $fh\->close;
+\& }
+\& }
+\& }
+.Ve
+.SH AUTHOR
+.IX Header "AUTHOR"
+Graham Barr. Currently maintained by the Perl Porters. Please report all
+bugs at <https://github.com/Perl/perl5/issues>.
+.SH COPYRIGHT
+.IX Header "COPYRIGHT"
+Copyright (c) 1997\-8 Graham Barr <gbarr@pobox.com>. All rights reserved.
+This program is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.