Class: Downstream::Stateless::Pubsub

Inherits:
AbstractPubsub show all
Defined in:
lib/downstream/pubsub_adapters/stateless/pubsub.rb

Instance Method Summary collapse

Constructor Details

#initializePubsub

Returns a new instance of Pubsub.



9
10
11
# File 'lib/downstream/pubsub_adapters/stateless/pubsub.rb', line 9

def initialize
  @subscribers = []
end

Instance Method Details

#publish(identifier, event) ⇒ Object



33
34
35
# File 'lib/downstream/pubsub_adapters/stateless/pubsub.rb', line 33

def publish(identifier, event)
  ActiveSupport::Notifications.instrument(identifier, event)
end

#resetObject



13
14
15
16
# File 'lib/downstream/pubsub_adapters/stateless/pubsub.rb', line 13

def reset
  @subscribers.each(&:unsubscribe)
  @subscribers.clear
end

#subscribe(identifier, callable, async: false) ⇒ Object



18
19
20
21
22
23
# File 'lib/downstream/pubsub_adapters/stateless/pubsub.rb', line 18

def subscribe(identifier, callable, async: false)
  Subscriber.new(callable, async: async).tap do |s|
    s.subscribe(identifier)
    @subscribers << s
  end
end

#subscribed(identifier, callable, &block) ⇒ Object



25
26
27
28
29
30
31
# File 'lib/downstream/pubsub_adapters/stateless/pubsub.rb', line 25

def subscribed(identifier, callable, &block)
  ActiveSupport::Notifications.subscribed(
    Subscriber.new(callable),
    identifier,
    &block
  )
end