Class: Replay::SubscriptionManager

Inherits:
Object
  • Object
show all
Defined in:
lib/replay/subscription_manager.rb

Instance Method Summary collapse

Constructor Details

#initialize(logger = nil) ⇒ SubscriptionManager

Returns a new instance of SubscriptionManager.



4
5
6
7
# File 'lib/replay/subscription_manager.rb', line 4

def initialize(logger = nil)
  @subscribers = []
  @logger = logger
end

Instance Method Details

#add_subscriber(subscriber) ⇒ Object



9
10
11
12
13
14
15
# File 'lib/replay/subscription_manager.rb', line 9

def add_subscriber(subscriber)
  if subscriber.respond_to?(:published)
    @subscribers << subscriber 
  else
    raise Replay::InvalidSubscriberError.new(subscriber)
  end
end

#notify_subscribers(stream_id, event) ⇒ Object



17
18
19
20
21
22
23
24
25
26
# File 'lib/replay/subscription_manager.rb', line 17

def notify_subscribers(stream_id, event)
  @subscribers.each do |sub|
    begin
      sub.published(stream_id, event)
    rescue Exception => e
      #hmmmm
      @logger.error "exception in event subscriber #{sub.class.to_s} while handling event stream #{stream_id} #{event.inspect}: #{e.message}\n#{e.backtrace.join("\n")}" if @logger
    end
  end
end