Sha256: ae27ed90169269b92b2ab3b7ac0c3eb7d4c895d0f384ac418873b108d1705819

Contents?: true

Size: 1.05 KB

Versions: 2

Compression:

Stored size: 1.05 KB

Contents

module Hallmonitor
  class Dispatcher
    @outputters = []

    # Returns list of outputters registered
    # @return [Array<Outputter>]
    def self.outputters
      @outputters
    end

    # Adds an outputter.  Outputters are required to respond to :process
    # @param outputter [Object]
    # @see Hallmonitor::Outputters::StatsdOutputter
    def self.add_outputter(outputter)
      @outputters << outputter if outputter.respond_to?(:process)
    end

    # Removes all outputters
    def self.clear_outputters
      @outputters = []
    end

    # Outputs an event via each registered outputter.
    # If {Hallmonitor::Configuration} has the option
    # `trap_outputter_exceptions` set to `true` then this method
    # will trap and squash any errors raised by the outputter.
    # @param event [Event] The event to output
    # @return nil
    def self.output(event)
      @outputters.each do |o|
        begin
          o.process(event)
        rescue
          raise unless Hallmonitor.config.trap_outputter_exceptions
        end
      end
      nil
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
hallmonitor-1.1.0 lib/hallmonitor/dispatcher.rb
hallmonitor-1.0.0 lib/hallmonitor/dispatcher.rb