class Realm::EventRouter::InternalLoopGateway

Public Class Methods

auto_register_on_init() click to toggle source
# File lib/realm/event_router/internal_loop_gateway.rb, line 6
def self.auto_register_on_init
  true
end
new(isolated: false, **) click to toggle source
Calls superclass method Realm::EventRouter::Gateway::new
# File lib/realm/event_router/internal_loop_gateway.rb, line 10
def initialize(isolated: false, **)
  super
  @listener_map = {}
  @isolated = isolated
  gateways << self
end

Public Instance Methods

add_listener(event_type, listener) click to toggle source
# File lib/realm/event_router/internal_loop_gateway.rb, line 17
def add_listener(event_type, listener)
  (@listener_map[event_type.to_sym] ||= []) << listener
end
purge!() click to toggle source
# File lib/realm/event_router/internal_loop_gateway.rb, line 27
def purge!
  gateways.clear
end
trigger(event_type, attributes = {}) click to toggle source
# File lib/realm/event_router/internal_loop_gateway.rb, line 21
def trigger(event_type, attributes = {})
  create_event(event_type, attributes).tap do |event|
    gateways.each { |gateway| gateway.handle(event_type, event) }
  end
end

Protected Instance Methods

handle(event_type, event) click to toggle source
# File lib/realm/event_router/internal_loop_gateway.rb, line 33
def handle(event_type, event)
  find_listeners(event_type).each { |listener| listener.(event) }
end

Private Instance Methods

find_listeners(event_type) click to toggle source
# File lib/realm/event_router/internal_loop_gateway.rb, line 39
def find_listeners(event_type)
  @listener_map.fetch_values(event_type.to_sym, :any) { [] }.flatten
end
gateways() click to toggle source
# File lib/realm/event_router/internal_loop_gateway.rb, line 43
def gateways
  @isolated ? (@gateways ||= []) : (@@gateways ||= []) # rubocop:disable Style/ClassVars
end