Class: ActivePubsubRails::SubscriberRegistry

Inherits:
Object
  • Object
show all
Defined in:
lib/active_pubsub_rails/subscriber_registry.rb

Instance Method Summary collapse

Constructor Details

#initializeSubscriberRegistry

Returns a new instance of SubscriberRegistry.



5
6
7
8
# File 'lib/active_pubsub_rails/subscriber_registry.rb', line 5

def initialize
  @registry = {}
  @semaphore = Mutex.new
end

Instance Method Details

#activate_all_subscribersObject



19
20
21
# File 'lib/active_pubsub_rails/subscriber_registry.rb', line 19

def activate_all_subscribers
  registry.each_key { |subscriber_name| activate_subscriber(subscriber_name.constantize) }
end

#activate_autoloadable_subscribersObject



14
15
16
17
# File 'lib/active_pubsub_rails/subscriber_registry.rb', line 14

def activate_autoloadable_subscribers
  require_subscriber_files
  activate_all_subscribers
end

#activate_subscriber(subscriber) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
# File 'lib/active_pubsub_rails/subscriber_registry.rb', line 27

def activate_subscriber(subscriber)
  return unless registry[subscriber.name]

  subscriber.event_actions.each do |event_action, event_name|
    @semaphore.synchronize do
      unsafe_deactivate_subscriber(subscriber, event_action)
      subscription = ActivePubsubRails.subscribe(event_name) { |event| subscriber.send(event_action, event) }
      registry[subscriber.name][event_action] = subscription
    end
  end
end

#deactivate_all_subscribersObject



23
24
25
# File 'lib/active_pubsub_rails/subscriber_registry.rb', line 23

def deactivate_all_subscribers
  registry.each_key { |subscriber_name| deactivate_subscriber(subscriber_name.constantize) }
end

#deactivate_subscriber(subscriber, event_action_name = nil) ⇒ Object



39
40
41
42
43
# File 'lib/active_pubsub_rails/subscriber_registry.rb', line 39

def deactivate_subscriber(subscriber, event_action_name = nil)
  @semaphore.synchronize do
    unsafe_deactivate_subscriber(subscriber, event_action_name)
  end
end

#register(subscriber) ⇒ Object



10
11
12
# File 'lib/active_pubsub_rails/subscriber_registry.rb', line 10

def register(subscriber)
  registry[subscriber.name] ||= {}
end