Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/fgasper/p5-data-fdset

CPAN’s Data::FDSet
https://github.com/fgasper/p5-data-fdset

Last synced: 19 days ago
JSON representation

CPAN’s Data::FDSet

Awesome Lists containing this project

README

        

# NAME

Data::FDSet - Syntactic sugar for [select()](https://metacpan.org/pod/perlfunc#select) masks

# SYNOPSIS

Object-oriented syntax:

my $fdset = Data::FDSet->new();

# These accept either filehandles or file descriptors:
$fdset->add( $some_filehandle, fileno($other_fh) );
$fdset->remove( $other_fh );

my $rout = Data::FDSet->new();

my $got = select( $$rout = $$fdset, undef, undef, 10 );

if ($got > 1) {
my $fds_to_read_ar = $rout->get_fds();
}

Or, if you’d rather avoid object-oriented syntax:

my $rout = q<>;
Data::FDSet::add(\$rout, $some_filehandle, fileno($other_fh))

my $fds_to_read_ar = Data::FDSet::get_fds(\$rout);

# DESCRIPTION

This little module makes working with 4-argument [select()](https://metacpan.org/pod/perlfunc#select)
a bit easier by providing object methods to do the typical operations done
on the bitmasks in connection with that function. These methods parallel
the functions that C provides to handle `struct fd_set`.

# INTERFACE NOTE

A Data::FDSet object is a blessed scalar reference to a bitmask.
Unlike with most Perl objects, you may safely reference the object
internals, e.g., by doing

$$rout_obj = $rin;

… to replace the bitmask contents. (For this reason, this class defines
no method to do the above.)

# METHODS

## $obj = _CLASS_->new( \[ $BITMASK \] );

Instantiates this class. $BITMASK may optionally be passed to
initialize the object state.

## $obj = _OBJ_->evacuate()

Empty out the object. Analogous to [FD\_ZERO(2)](http://man.he.net/man2/FD_ZERO).

Returns _OBJ_.

## $obj = _OBJ_->add( $FD\_OR\_FH \[, $FD\_OR\_FH, .. \] )

Add one or more file descriptors to the object.
Accepts either Perl filehandles or file descriptors.
Analogous to [FD\_SET(2)](http://man.he.net/man2/FD_SET).

## $obj = _OBJ_->remove( $FD\_OR\_FH \[, $FD\_OR\_FH, .. \] )

The complement of `add()`.
Analogous to [FD\_CLR(2)](http://man.he.net/man2/FD_CLR).

## $yn = _OBJ_->has( $FD\_OR\_FH )

Tests for a file descriptor’s presence in the object.
Accepts either a Perl filehandles or a file descriptor.
Analogous to [FD\_ISSET(2)](http://man.he.net/man2/FD_ISSET).

## $fds\_ar = _OBJ_->get\_fds()

Returns a reference to an array of the file descriptors that are
in the object.