module Forwarders

Forwarders for optional selector hooks that not every backing selector implements (e.g. io_close is only provided by URing). Each method here is mixed into the wrapper's singleton class only when the wrapped selector actually defines a method of the same name, so feature detection via respond_to? continues to reflect the real backend.

Definitions

def io_close(descriptor)

Close a file descriptor, forwarded to the underlying selector. Ruby invokes this hook with a raw integer descriptor (Ruby 4.0+).

Signature

parameter descriptor Integer

The raw file descriptor being closed.

Implementation

def io_close(descriptor)
	log("Closing file descriptor #{descriptor}")
	@selector.io_close(descriptor)
end

def futex_wait(fiber, futex, expected)

Wait for a futex value to change, forwarded to the underlying selector.

Implementation

def futex_wait(fiber, futex, expected)
	log("Waiting for futex #{futex.inspect} with value #{expected}")
	@selector.futex_wait(fiber, futex, expected)
end

def futex_waitv(fiber, entries)

Wait for any futex value to change, forwarded to the underlying selector.

Implementation

def futex_waitv(fiber, entries)
	log("Waiting for futex vector #{entries.inspect}")
	@selector.futex_waitv(fiber, entries)
end