method
run
v6.1.7.7 -
Show latest stable
-
0 notes -
Class: StreamEventLoop
- 1.0.0
- 1.1.6
- 1.2.6
- 2.0.3
- 2.1.0
- 2.2.1
- 2.3.8
- 3.0.0
- 3.0.9
- 3.1.0
- 3.2.1
- 3.2.8
- 3.2.13
- 4.0.2
- 4.1.8
- 4.2.1
- 4.2.7
- 4.2.9
- 5.0.0.1 (0)
- 5.1.7 (0)
- 5.2.3 (0)
- 6.0.0 (0)
- 6.1.3.1 (0)
- 6.1.7.7 (0)
- 7.0.0 (0)
- 7.1.3.2 (0)
- 7.1.3.4 (0)
- What's this?
run()
private
Hide source
# File actioncable/lib/action_cable/connection/stream_event_loop.rb, line 85 def run loop do if @stopping @nio.close break end until @todo.empty? @todo.pop(true).call end next unless monitors = @nio.select monitors.each do |monitor| io = monitor.io stream = monitor.value begin if monitor.writable? if stream.flush_write_buffer monitor.interests = :r end next unless monitor.readable? end incoming = io.read_nonblock(4096, exception: false) case incoming when :wait_readable next when nil stream.close else stream.receive incoming end rescue # We expect one of EOFError or Errno::ECONNRESET in # normal operation (when the client goes away). But if # anything else goes wrong, this is still the best way # to handle it. begin stream.close rescue @nio.deregister io @map.delete io end end end end end