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 )