Sha256: 38cf3d84a50ad31008c8487473b29204fe436752d599fee795c07c69d356e2e0

Contents?: true

Size: 1.66 KB

Versions: 21

Compression:

Stored size: 1.66 KB

Contents

# encoding: utf-8
module LogStash module Plugins
  # This calls allow logstash to expose the endpoints for listeners
  class HooksRegistry
    java_import "java.util.concurrent.ConcurrentHashMap"
    java_import "java.util.concurrent.CopyOnWriteArrayList"

    def initialize
      @registered_emitters = ConcurrentHashMap.new
      @registered_hooks = ConcurrentHashMap.new
    end

    def register_emitter(emitter_scope, dispatcher)
      @registered_emitters.put(emitter_scope, dispatcher)
      sync_hooks
    end

    def remove_emitter(emitter_scope)
      @registered_emitters.remove(emitter_scope)
    end

    def register_hooks(emitter_scope, callback)
      callbacks = @registered_hooks.computeIfAbsent(emitter_scope) do
        CopyOnWriteArrayList.new
      end

      callbacks.add(callback)
      sync_hooks
    end

    def emitters_count
      @registered_emitters.size
    end

    def hooks_count(emitter_scope = nil)
      if emitter_scope.nil?
        @registered_hooks.elements().collect(&:size).reduce(0, :+)
      else
        callbacks = @registered_hooks.get(emitter_scope)
        callbacks.nil? ? 0 : @registered_hooks.get(emitter_scope).size
      end
    end

    def registered_hook?(emitter_scope, klass)
      callbacks = @registered_hooks[emitter_scope]
      return false if callbacks.nil?
      callbacks.collect(&:class).include?(klass)
    end

    private
    def sync_hooks
      @registered_emitters.each do |emitter, dispatcher|
        listeners = @registered_hooks.get(emitter)

        unless listeners.nil?
          listeners.each do |listener|
            dispatcher.add_listener(listener)
          end
        end
      end
    end
  end
end end

Version data entries

21 entries across 21 versions & 1 rubygems

Version Path
logstash-core-6.3.2-java lib/logstash/plugins/hooks_registry.rb
logstash-core-6.3.1-java lib/logstash/plugins/hooks_registry.rb
logstash-core-6.3.0-java lib/logstash/plugins/hooks_registry.rb
logstash-core-6.2.4-java lib/logstash/plugins/hooks_registry.rb
logstash-core-6.2.3-java lib/logstash/plugins/hooks_registry.rb
logstash-core-6.1.4-java lib/logstash/plugins/hooks_registry.rb
logstash-core-6.2.2-java lib/logstash/plugins/hooks_registry.rb
logstash-core-6.2.1-java lib/logstash/plugins/hooks_registry.rb
logstash-core-6.2.0-java lib/logstash/plugins/hooks_registry.rb
logstash-core-6.1.3-java lib/logstash/plugins/hooks_registry.rb
logstash-core-6.1.2-java lib/logstash/plugins/hooks_registry.rb
logstash-core-6.1.1-java lib/logstash/plugins/hooks_registry.rb
logstash-core-6.1.0-java lib/logstash/plugins/hooks_registry.rb
logstash-core-6.0.1-java lib/logstash/plugins/hooks_registry.rb
logstash-core-6.0.0-java lib/logstash/plugins/hooks_registry.rb
logstash-core-6.0.0.rc2-java lib/logstash/plugins/hooks_registry.rb
logstash-core-6.0.0.rc1-java lib/logstash/plugins/hooks_registry.rb
logstash-core-6.0.0.beta2-java lib/logstash/plugins/hooks_registry.rb
logstash-core-6.0.0.beta1-java lib/logstash/plugins/hooks_registry.rb
logstash-core-6.0.0.alpha2-java lib/logstash/plugins/hooks_registry.rb