Sha256: d4571f0f3c2b982a30551ba99c4da956af7ee56b0e98607c9a39df53b20d0546

Contents?: true

Size: 860 Bytes

Versions: 40

Compression:

Stored size: 860 Bytes

Contents

require_relative 'registry/registerable'

module Datadog
  # Registry provides insertion/retrieval capabilities for integrations
  class Registry
    include Enumerable

    Entry = Struct.new(:name, :klass, :auto_patch)

    def initialize
      @data = {}
      @mutex = Mutex.new
    end

    def add(name, klass, auto_patch = false)
      @mutex.synchronize do
        @data[name] = Entry.new(name, klass, auto_patch).freeze
      end
    end

    def each
      @mutex.synchronize do
        @data.each { |_, entry| yield(entry) }
      end
    end

    def [](name)
      @mutex.synchronize do
        entry = @data[name]
        entry.klass if entry
      end
    end

    def to_h
      @mutex.synchronize do
        @data.each_with_object({}) do |(_, entry), hash|
          hash[entry.name] = entry.auto_patch
        end
      end
    end
  end
end

Version data entries

40 entries across 40 versions & 1 rubygems

Version Path
ddtrace-0.20.0 lib/ddtrace/registry.rb
ddtrace-0.19.1 lib/ddtrace/registry.rb
ddtrace-0.19.0 lib/ddtrace/registry.rb
ddtrace-0.18.3 lib/ddtrace/registry.rb
ddtrace-0.18.2 lib/ddtrace/registry.rb
ddtrace-0.18.1 lib/ddtrace/registry.rb
ddtrace-0.18.0 lib/ddtrace/registry.rb
ddtrace-0.17.3 lib/ddtrace/registry.rb
ddtrace-0.17.2 lib/ddtrace/registry.rb
ddtrace-0.17.1 lib/ddtrace/registry.rb
ddtrace-0.17.0 lib/ddtrace/registry.rb
ddtrace-0.16.1 lib/ddtrace/registry.rb
ddtrace-0.15.0.internaltracinfeature1 lib/ddtrace/registry.rb
ddtrace-0.16.0 lib/ddtrace/registry.rb
ddtrace-0.14.2.disableprotocolversion4 lib/ddtrace/registry.rb
ddtrace-0.15.0 lib/ddtrace/registry.rb
ddtrace-0.14.2.withoutpriorityparsing1 lib/ddtrace/registry.rb
ddtrace-0.14.2 lib/ddtrace/registry.rb
ddtrace-0.14.1 lib/ddtrace/registry.rb
ddtrace-0.14.0 lib/ddtrace/registry.rb