class YAKC::MessageBroadcaster

Attributes

instrumenter[RW]
message_class[RW]

Public Class Methods

new( instrumenter: FallthroughInstrumenter, message_parser: ) click to toggle source
# File lib/yakc/message_broadcaster.rb, line 5
def initialize( instrumenter: FallthroughInstrumenter, message_parser: )
  @message_class    = message_parser
  @instrumenter     = instrumenter.new
  raise "MessageBroadcaster must have a valid message class" unless @message_class
end

Public Instance Methods

handle( topic, message ) click to toggle source
# File lib/yakc/message_broadcaster.rb, line 11
def handle( topic, message )
  msg = @message_class.new( message )

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

Private Instance Methods

broadcast_key( topic, event ) click to toggle source
# File lib/yakc/message_broadcaster.rb, line 24
def broadcast_key( topic, event )
  "#{topic}::#{event}"
end