lib/io/event/selector.rb
# frozen_string_literal: true # Released under the MIT License. # Copyright, 2021-2024, 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.wrap(selector, env) end return selector end end end