Source: show | on GitHub
# File actioncable/lib/action_cable/server/stream_event_loop.rb, line 8 def initialize @nio = @thread = nil @map = {} @stopping = false @todo = Queue.new @spawn_mutex = Mutex.new end
# File actioncable/lib/action_cable/server/stream_event_loop.rb, line 17 def attach(io, stream) @todo << lambda do @map[io] = @nio.register(io, :r) @map[io].value = stream end wakeup end
# File actioncable/lib/action_cable/server/stream_event_loop.rb, line 25 def detach(io) @todo << lambda do @nio.deregister io @map.delete io io.close end wakeup end
# File actioncable/lib/action_cable/server/stream_event_loop.rb, line 43 def stop @stopping = true wakeup if @nio end
# File actioncable/lib/action_cable/server/stream_event_loop.rb, line 34 def writes_pending(io) @todo << lambda do if monitor = @map[io] monitor.interests = :rw end end wakeup end