class ActionCable::Connection::FayeEventLoop

Public Instance Methods

post(task = nil, &block) click to toggle source
# File lib/action_cable/connection/faye_event_loop.rb, line 17
def post(task = nil, &block)
  task ||= block

  ensure_reactor_running
  ::EM.next_tick(&task)
end
timer(interval, &block) click to toggle source
# File lib/action_cable/connection/faye_event_loop.rb, line 12
def timer(interval, &block)
  ensure_reactor_running
  EMTimer.new(::EM::PeriodicTimer.new(interval, &block))
end

Private Instance Methods

ensure_reactor_running() click to toggle source
# File lib/action_cable/connection/faye_event_loop.rb, line 25
def ensure_reactor_running
  return if EventMachine.reactor_running?
  @@mutex.synchronize do
    Thread.new { EventMachine.run } unless EventMachine.reactor_running?
    Thread.pass until EventMachine.reactor_running?
  end
end