Sha256: 8c1f61670ee97585e9321b6f9b44634ddf128e5329abb6bf6e2ab6a1a338d330

Contents?: true

Size: 850 Bytes

Versions: 4

Compression:

Stored size: 850 Bytes

Contents

# frozen_string_literal: true

# @api private
# @since 0.5.0
class SmartCore::Container::Dependency < SmartCore::Container::Entity
  # @param dependency_definition [Proc]
  # @param options [Hash<Symbol,Any>]
  # @return [void]
  #
  # @todo option list
  #
  # @api private
  # @since 0.5.0
  def initialize(external_name, dependency_definition, **options)
    @dependency_definition = dependency_definition
    @access_lock = Mutex.new
    super(external_name)
  end

  # @return [Any]
  #
  # @api private
  # @since 0.5.0
  def call
    thread_safe { dependency_definition.call }
  end

  private

  # @return [Proc]
  #
  # @api private
  # @since 0.5.0
  attr_reader :dependency_definition

  # @param block [Proc]
  # @return [Any]
  #
  # @api private
  # @since 0.5.0
  def thread_safe(&block)
    @access_lock.synchronize(&block)
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
smart_core-0.6.0 lib/smart_core/container/dependency.rb
smart_core-0.5.2 lib/smart_core/container/dependency.rb
smart_core-0.5.1 lib/smart_core/container/dependency.rb
smart_core-0.5.0 lib/smart_core/container/dependency.rb