Class: Replay::SubscriptionManager

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

Instance Method Summary collapse

Constructor Details

#initialize(logger = nil, session_metadata = {}) ⇒ SubscriptionManager

Returns a new instance of SubscriptionManager.



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

def initialize(logger = nil,  = {})
  @subscribers = []
  @logger = logger
  @session_metadata = 
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, metadata = {}) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/replay/subscription_manager.rb', line 17

def notify_subscribers(stream_id, event,  = {})
  @subscribers.each do |sub|
    begin
      meta = .merge(@session_metadata)
      sub.published(EventEnvelope.new(stream_id, event, meta))
      #sub.published(stream_id, event, metadata)
    rescue Exception => e
      #hmmmm
      if @logger
        @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")}" 
      else
        raise e
      end
    end
  end
end