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