Acme-Sort-Sleep
view release on metacpan or search on metacpan
local/lib/perl5/IO/Async/Handle.pm view on Meta::CPAN
This method calls C<close> on the underlying IO handles. This method will then
remove the handle from its containing loop.
=cut
sub close
{
my $self = shift;
# Prevent infinite loops if there's two crosslinked handles
return if $self->{handle_closing};
$self->{handle_closing} = 1;
$self->want_readready( 0 );
$self->want_writeready( 0 );
my $read_handle = delete $self->{read_handle};
$read_handle->close if defined $read_handle;
my $write_handle = delete $self->{write_handle};
local/lib/perl5/IO/Async/LoopTests.pm view on Meta::CPAN
$loop->watch_io(
handle => $_,
on_write_ready => sub {
$callcount++;
$loop->unwatch_io( handle => $_, on_write_ready => 1 ) for @handles;
},
) for @handles;
$loop->loop_once( 0.1 );
is( $callcount, 1, 'write_ready on crosslinked handles can cancel each other' );
}
# Check that error conditions that aren't true read/write-ability are still
# invoked
{
my ( $S1, $S2 ) = IO::Async::OS->socketpair( 'inet', 'dgram' ) or die "Cannot create AF_INET/SOCK_DGRAM connected pair - $!";
$_->blocking( 0 ) for $S1, $S2;
$S2->close;
my $readready = 0;
( run in 0.698 second using v1.01-cache-2.11-cpan-acf6aa7dc9e )