cloudfoundry/warden

View on GitHub
em-warden-client/lib/em/warden/client/event_emitter.rb

Summary

Maintainability
A
0 mins
Test Coverage
# Imported from the MIT licensed em-hiredis gem by Martyn Loughran.
# https://github.com/mloughran/em-hiredis

module EventMachine
  module Warden
    module Client
    end
  end
end


module EventMachine::Warden::Client::EventEmitter
  def on(event, &listener)
    _listeners[event] << listener
  end

  def emit(event, *args)
    _listeners[event].each { |l| l.call(*args) }
  end

  def remove_listener(event, &listener)
    _listeners[event].delete(listener)
  end

  def remove_all_listeners(event)
    _listeners.delete(event)
  end

  def listeners(event)
    _listeners[event]
  end

  private

  def _listeners
    @_listeners ||= Hash.new { |h,k| h[k] = [] }
  end
end