Module: Isimud::EventObserver
- Extended by:
- ActiveSupport::Concern
- Includes:
- Logging
- Defined in:
- lib/isimud/event_observer.rb
Defined Under Namespace
Modules: ClassMethods
Instance Method Summary (collapse)
-
- (Object) activate_observer(client = isimud_client)
Activate the queues for an observer.
-
- (Object) deactivate_observer(client = isimud_client)
Deactivate the queues for an observer.
-
- (Boolean) enable_listener?
Returns true if this instance is enabled for listening to events.
- - (Object) event_queue_name
-
- (Object) handle_event(event)
Event handling hook.
- - (Object) isimud_client
-
- (Object) observe_events(client)
Create or attach to a queue on the specified exchange.
-
- (Object) observed_exchange
Exchange used for listening to events.
-
- (Object) routing_keys
Routing keys that are bound to the event queue.
Methods included from Logging
Instance Method Details
- (Object) activate_observer(client = isimud_client)
Activate the queues for an observer. This will create the observer queue and send an update message on the instance, which will trigger EventListener instances to set up consumers. This is useful for situations when an observer is to be made active without an update.
76 77 78 79 |
# File 'lib/isimud/event_observer.rb', line 76 def activate_observer(client = isimud_client) create_queue(client) (:update) end |
- (Object) deactivate_observer(client = isimud_client)
Deactivate the queues for an observer. This will destroy the observer queue and send an update message on the instance, which will trigger EventListener instances to cancel consumers. Note that enable_listener? should resolve to false in order for the EventListener to cancel corresponding event consumers.
84 85 86 87 |
# File 'lib/isimud/event_observer.rb', line 84 def deactivate_observer(client = isimud_client) delete_queue(client) (:update) end |
- (Boolean) enable_listener?
Returns true if this instance is enabled for listening to events. Override in your subclass.
44 45 46 |
# File 'lib/isimud/event_observer.rb', line 44 def enable_listener? true end |
- (Object) event_queue_name
65 66 67 |
# File 'lib/isimud/event_observer.rb', line 65 def event_queue_name self.class.event_queue_name(id) end |
- (Object) handle_event(event)
Event handling hook. Override in your class.
34 35 36 |
# File 'lib/isimud/event_observer.rb', line 34 def handle_event(event) logger.warn("Isimud::EventObserver#handle_event not implemented for #{event_queue_name}") end |
- (Object) isimud_client
69 70 71 |
# File 'lib/isimud/event_observer.rb', line 69 def isimud_client Isimud.client end |
- (Object) observe_events(client)
Create or attach to a queue on the specified exchange. When an event message that matches the observer's routing keys is received, parse the event and call handle_event on same. Returns the consumer for the observer
56 57 58 59 60 61 62 63 |
# File 'lib/isimud/event_observer.rb', line 56 def observe_events(client) return unless enable_listener? queue = client.kind_of?(Isimud::TestClient) ? create_queue(client) : client.find_queue(event_queue_name) client.subscribe(queue) do || event = Event.parse() handle_event(event) end end |
- (Object) observed_exchange
Exchange used for listening to events. Override in your subclass if you want to specify an alternative exchange.
49 50 51 |
# File 'lib/isimud/event_observer.rb', line 49 def observed_exchange nil end |
- (Object) routing_keys
Routing keys that are bound to the event queue. Override in your subclass
39 40 41 |
# File 'lib/isimud/event_observer.rb', line 39 def routing_keys [] end |