Class: Realm::EventRouter
- Inherits:
-
Object
- Object
- Realm::EventRouter
show all
- Includes:
- Mixins::DependencyInjection
- Defined in:
- lib/realm/event_router.rb,
lib/realm/event_router/gateway.rb,
lib/realm/event_router/internal_loop_gateway.rb
Defined Under Namespace
Classes: Gateway, InternalLoopGateway
Instance Method Summary
collapse
included
Constructor Details
#initialize(gateways_spec, prefix: nil) ⇒ EventRouter
Returns a new instance of EventRouter.
18
19
20
21
22
23
|
# File 'lib/realm/event_router.rb', line 18
def initialize(gateways_spec, prefix: nil)
@prefix = prefix
@auto_registered = false
@default_namespace = nil
init_gateways(gateways_spec)
end
|
Instance Method Details
#active_queues ⇒ Object
45
46
47
48
49
50
|
# File 'lib/realm/event_router.rb', line 45
def active_queues
auto_register_handlers
@gateways.values.reduce([]) do |queues, gateway|
queues + gateway.queues
end
end
|
#add_listener(event_type, listener, namespace: nil) ⇒ Object
29
30
31
|
# File 'lib/realm/event_router.rb', line 29
def add_listener(event_type, listener, namespace: nil)
gateway_for(namespace).add_listener(event_type, listener)
end
|
#register(handler_class) ⇒ Object
25
26
27
|
# File 'lib/realm/event_router.rb', line 25
def register(handler_class)
gateway_for(handler_class.try(:event_namespace)).register(handler_class)
end
|
#trigger(identifier, attributes = {}) ⇒ Object
33
34
35
36
|
# File 'lib/realm/event_router.rb', line 33
def trigger(identifier, attributes = {})
namespace, event_type = identifier.to_s.include?('.') ? identifier.split('.') : [nil, identifier]
gateway_for(namespace).trigger(event_type, attributes)
end
|
#workers(*namespaces, **options) ⇒ Object
38
39
40
41
42
43
|
# File 'lib/realm/event_router.rb', line 38
def workers(*namespaces, **options)
auto_register_handlers
@gateways.filter_map do |(namespace, gateway)|
gateway.worker(**options) if namespaces.empty? || namespaces.include?(namespace)
end
end
|