lib/io/event/selector.rb
# frozen_string_literal: true # Released under the MIT License. # Copyright, 2021-2023, by Samuel Williams. require_relative 'selector/select' require_relative 'debug/selector' require_relative 'support' module IO::Event module Selector 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) selector = default(env).new(loop) if debug = env['IO_EVENT_DEBUG_SELECTOR'] selector = Debug::Selector.new(selector) end return selector end end end