Acme-Sort-Sleep
view release on metacpan or search on metacpan
local/lib/perl5/IO/Async/Socket.pm view on Meta::CPAN
$self->invoke_event( on_recv => $data, $addr );
last unless $self->{recv_all};
}
}
sub on_write_ready
{
my $self = shift;
my $handle = $self->write_handle;
my $sendqueue = $self->{sendqueue};
while( $sendqueue and @$sendqueue ) {
my ( $data, $flags, $addr ) = @{ shift @$sendqueue };
my $len = $handle->send( $data, $flags, $addr );
if( !defined $len ) {
return if $! == EAGAIN || $! == EWOULDBLOCK || $! == EINTR;
my $errno = $!;
$self->maybe_invoke_event( on_send_error => $errno )
or $self->close;
return;
}
if( $len == 0 ) {
$self->close;
return;
}
last unless $self->{send_all};
}
if( !$sendqueue or !@$sendqueue ) {
$self->want_writeready( 0 );
$self->maybe_invoke_event( on_outgoing_empty => );
}
}
=head1 EXAMPLES
=head2 Send-first on a UDP Socket
C<UDP> is carried by the C<SOCK_DGRAM> socket type, for which the string
C<'dgram'> is a convenient shortcut:
$socket->connect(
host => $hostname,
service => $service,
socktype => 'dgram',
...
)
=head2 Receive-first on a UDP Socket
A typical server pattern with C<UDP> involves binding a well-known port
number instead of connecting to one, and waiting on incoming packets.
$socket->bind(
service => 12345,
socktype => 'dgram',
)->get;
=head1 SEE ALSO
=over 4
=item *
L<IO::Handle> - Supply object methods for I/O handles
=back
=head1 AUTHOR
Paul Evans <leonerd@leonerd.org.uk>
=cut
0x55AA;
( run in 0.647 second using v1.01-cache-2.11-cpan-2398b32b56e )