Future-Uring
view release on metacpan or search on metacpan
lib/Future/Uring.pm view on Meta::CPAN
sub await($self) {
$ring->run_once until $self->is_ready;
return $self;
}
package
Future::Uring::_TimeoutFuture;
use parent -norequire, 'Future::Uring::_Future';
sub update($original, $seconds, %args) {
my $future = Future::Uring::_Future->new;
my (undef, $sourcename, $line) = caller;
my $id = $original->udata('uring_id');
my $time_spec = ref $seconds ? $seconds : Time::Spec->new($seconds);
my $flags = $args{flags} // 0;
my $s_flags = to_sflags(\%args);
$ring->submit if $args{timeout} && $ring->sq_space_left < 2;
$ring->timeout_update($time_spec, $id, $flags, $s_flags, sub($res, $flags) {
if ($res < 0) {
lib/Future/Uring/Handle.pm view on Meta::CPAN
}
package
Future::Uring::_PollFuture;
use parent -norequire, 'Future::Uring::_Future';
use IO::Uring qw/IORING_POLL_UPDATE_EVENTS/;
use IO::Poll qw/POLLIN POLLOUT/;
sub update($original, %args) {
my $future = Future::Uring::_Future->new;
my (undef, $sourcename, $line) = caller;
my $old_id = $original->udata('uring_id');
my $s_flags = %args ? to_sflags(\%args) : 0;
my $mask = $args{mask} // 0;
$mask |= POLLIN if $args{read};
$mask |= POLLOUT if $args{write};
$ring->submit if $args{timeout} && $ring->sq_space_left < 2;
my $id = $ring->poll_update($old_id, undef, $mask, IORING_POLL_UPDATE_EVENTS, $s_flags, sub($res, $flags) {
if ($res < 0) {
( run in 0.511 second using v1.01-cache-2.11-cpan-63428c044ed )