Class: YAKC::MessageBroadcaster

Inherits:
Object
  • Object
show all
Defined in:
lib/yakc/message_broadcaster.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(publisher: Yeller, instrumenter: FallthroughInstrumenter, message_parser:) ⇒ MessageBroadcaster

Returns a new instance of MessageBroadcaster.



5
6
7
8
9
10
# File 'lib/yakc/message_broadcaster.rb', line 5

def initialize( publisher: Yeller, instrumenter: FallthroughInstrumenter, message_parser: )
  @publisher        = publisher
  @message_class    = message_parser
  @instrumenter     = instrumenter.new
  raise "MessageBroadcaster must have a valid message class" unless @message_class
end

Instance Attribute Details

#instrumenterObject

Returns the value of attribute instrumenter.



3
4
5
# File 'lib/yakc/message_broadcaster.rb', line 3

def instrumenter
  @instrumenter
end

#message_classObject

Returns the value of attribute message_class.



3
4
5
# File 'lib/yakc/message_broadcaster.rb', line 3

def message_class
  @message_class
end

#publisherObject

Returns the value of attribute publisher.



3
4
5
# File 'lib/yakc/message_broadcaster.rb', line 3

def publisher
  @publisher
end

Instance Method Details

#handle(topic, message) ⇒ Object



12
13
14
15
16
17
18
19
20
21
# File 'lib/yakc/message_broadcaster.rb', line 12

def handle( topic, message )
  msg = @message_class.new( message )

  @instrumenter.instrument( msg ) do 
    if msg.broadcastable?
      # broadcast the specific topic event 
      @publisher.broadcast msg.payload, broadcast_key( topic, msg.event )        
    end
  end
end