module IO::Event::Selector
def self.default(env = ENV)
def self.default(env = ENV) if name = env['IO_EVENT_SELECTOR']&.to_sym return const_get(name) end if self.const_defined?(:URing) URing elsif self.const_defined?(:EPoll) EPoll elsif self.const_defined?(:KQueue) KQueue else Select end end
def self.new(loop, env = ENV)
def self.new(loop, env = ENV) selector = default(env).new(loop) if debug = env['IO_EVENT_DEBUG_SELECTOR'] selector = Debug::Selector.wrap(selector, env) end return selector end
def self.nonblock(io, &block)
def self.nonblock(io, &block) io.nonblock(&block) rescue Errno::EBADF # Windows. yield end