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