Sha256: 1baef4784cf971edd82da34d853751e6ed828f48a91830a329fb9bb350216a89

Contents?: true

Size: 1.22 KB

Versions: 84

Compression:

Stored size: 1.22 KB

Contents

# encoding: utf-8
module LogStash
  class EventDispatcher
    java_import "java.util.concurrent.CopyOnWriteArraySet"

    attr_reader :emitter

    def initialize(emitter)
      @emitter = emitter
      @listeners = CopyOnWriteArraySet.new
    end

    # This operation is slow because we use a CopyOnWriteArrayList
    # But the majority of the addition will be done at bootstrap time
    # So add_listener shouldn't be called often at runtime.
    #
    # On the other hand the notification could be called really often.
    def add_listener(listener)
      @listeners.add(listener)
    end

    # This operation is slow because we use a `CopyOnWriteArrayList` as the backend, instead of a
    # ConcurrentHashMap, but since we are mostly adding stuff and iterating the `CopyOnWriteArrayList`
    # should provide a better performance.
    #
    # See note on add_listener, this method shouldn't be called really often.
    def remove_listener(listener)
      @listeners.remove(listener)
    end

    def fire(method_name, *arguments)
      @listeners.each do |listener|
        if listener.respond_to?(method_name)
          listener.send(method_name, emitter, *arguments)
        end
      end
    end
    alias_method :execute, :fire
  end
end

Version data entries

84 entries across 84 versions & 7 rubygems

Version Path
logstash-output-scalyr-0.2.1.beta vendor/bundle/jruby/2.5.0/gems/logstash-core-5.6.4-java/lib/logstash/event_dispatcher.rb
logstash-output-scalyr-0.2.0 vendor/bundle/jruby/2.5.0/gems/logstash-core-5.6.4-java/lib/logstash/event_dispatcher.rb
logstash-output-scalyr-0.2.0.beta vendor/bundle/jruby/2.5.0/gems/logstash-core-5.6.4-java/lib/logstash/event_dispatcher.rb
logstash-output-scalyr-0.1.26.beta vendor/bundle/jruby/2.5.0/gems/logstash-core-5.6.4-java/lib/logstash/event_dispatcher.rb
logstash-output-scalyr-0.1.25.beta vendor/bundle/jruby/2.5.0/gems/logstash-core-5.6.4-java/lib/logstash/event_dispatcher.rb
logstash-output-scalyr-0.1.24.beta vendor/bundle/jruby/2.5.0/gems/logstash-core-5.6.4-java/lib/logstash/event_dispatcher.rb
logstash-output-scalyr-0.1.23.beta vendor/bundle/jruby/2.5.0/gems/logstash-core-5.6.4-java/lib/logstash/event_dispatcher.rb
logstash-output-scalyr-0.1.22.beta vendor/bundle/jruby/2.5.0/gems/logstash-core-5.6.4-java/lib/logstash/event_dispatcher.rb
logstash-output-scalyr-0.1.21.beta vendor/bundle/jruby/2.5.0/gems/logstash-core-5.6.4-java/lib/logstash/event_dispatcher.rb
logstash-output-scalyr-0.1.20.beta vendor/bundle/jruby/2.5.0/gems/logstash-core-5.6.4-java/lib/logstash/event_dispatcher.rb
logstash-output-scalyr-0.1.19.beta vendor/bundle/jruby/2.5.0/gems/logstash-core-5.6.4-java/lib/logstash/event_dispatcher.rb
logstash-output-scalyr-0.1.18.beta vendor/bundle/jruby/2.5.0/gems/logstash-core-5.6.4-java/lib/logstash/event_dispatcher.rb
logstash-output-scalyr-0.1.17.beta vendor/bundle/jruby/2.5.0/gems/logstash-core-5.6.4-java/lib/logstash/event_dispatcher.rb
logstash-output-scalyr-0.1.16.beta vendor/bundle/jruby/2.5.0/gems/logstash-core-5.6.4-java/lib/logstash/event_dispatcher.rb
logstash-output-scalyr-0.1.15.beta vendor/bundle/jruby/2.5.0/gems/logstash-core-5.6.4-java/lib/logstash/event_dispatcher.rb
logstash-output-scalyr-0.1.14.beta vendor/bundle/jruby/2.5.0/gems/logstash-core-5.6.4-java/lib/logstash/event_dispatcher.rb
logstash-output-scalyr-0.1.13 vendor/bundle/jruby/2.5.0/gems/logstash-core-5.6.4-java/lib/logstash/event_dispatcher.rb
logstash-output-scalyr-0.1.12 vendor/bundle/jruby/2.5.0/gems/logstash-core-5.6.4-java/lib/logstash/event_dispatcher.rb
logstash-output-scalyr-0.1.11.beta vendor/bundle/jruby/2.5.0/gems/logstash-core-5.6.4-java/lib/logstash/event_dispatcher.rb
logstash-output-scalyr-0.1.10.beta vendor/bundle/jruby/2.5.0/gems/logstash-core-5.6.4-java/lib/logstash/event_dispatcher.rb