class Concurrently::EventLoop::IOSelector

@api private Let Ruby use nio to select IOs.

Public Class Methods

new(event_loop) click to toggle source
# File lib/CRuby/concurrently/event_loop/io_selector.rb, line 5
def initialize(event_loop)
  @run_queue = event_loop.run_queue
  @selector = NIO::Selector.new
end

Public Instance Methods

await_reader(io, evaluation) click to toggle source
# File lib/CRuby/concurrently/event_loop/io_selector.rb, line 14
def await_reader(io, evaluation)
  monitor = @selector.register(io, :r)
  monitor.value = evaluation
end
await_writer(io, evaluation) click to toggle source
# File lib/CRuby/concurrently/event_loop/io_selector.rb, line 19
def await_writer(io, evaluation)
  monitor = @selector.register(io, :w)
  monitor.value = evaluation
end
awaiting?() click to toggle source
# File lib/CRuby/concurrently/event_loop/io_selector.rb, line 10
def awaiting?
  not @selector.empty?
end
cancel_reader(io) click to toggle source
# File lib/CRuby/concurrently/event_loop/io_selector.rb, line 24
def cancel_reader(io)
  @selector.deregister(io)
end
cancel_writer(io) click to toggle source
# File lib/CRuby/concurrently/event_loop/io_selector.rb, line 28
def cancel_writer(io)
  @selector.deregister(io)
end
process_ready_in(waiting_time) click to toggle source
# File lib/CRuby/concurrently/event_loop/io_selector.rb, line 32
def process_ready_in(waiting_time)
  @selector.select(waiting_time) do |monitor|
    @run_queue.resume_evaluation! monitor.value, true
  end
end