Method: DTAS::UNIXServer#wait_ctl
- Defined in:
- lib/dtas/unix_server.rb
#wait_ctl(io, err) ⇒ Object
69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 |
# File 'lib/dtas/unix_server.rb', line 69 def wait_ctl(io, err) case err when :hot_read # this is only safe when we're iterating through ready writers # the linear search for Array#include? is not expensive since # we usually don't have a lot of sinks. @hot_read << io unless @hot_read.include?(io) when :wait_readable @readers[io] = true when :wait_writable @writers[io] = true when :delete @readers.delete(io) @writers.delete(io) when :ignore # There are 2 cases for :ignore # - DTAS::Buffer was readable before, but all destinations (e.g. sinks) # were blocked, so we stop caring for producer (buffer) readability. # - a consumer (e.g. DTAS::Sink) just became writable, but the # corresponding DTAS::Buffer was already readable in a previous # call. when nil, StandardError io.close else raise "BUG: wait_ctl invalid: #{io} #{err.inspect}" end end |