Sha256: 09e6f956d6815ffa0b44b9dd20fa87bc530dfc722bf569b63ddbdb2097505058

Contents?: true

Size: 610 Bytes

Versions: 18

Compression:

Stored size: 610 Bytes

Contents

# frozen_string_literal: true

module Spandx
  module Core
    class Circuit
      attr_reader :name, :state, :logger

      def initialize(name, state: :closed, logger: Spandx.logger)
        @name = name
        @state = state
        @logger = logger
      end

      def attempt
        return if open?

        open!
        result = yield
        close!
        result
      ensure
        logger.debug("#{name} #{state}")
      end

      def open!
        @state = :open
      end

      def close!
        @state = :closed
      end

      def open?
        state == :open
      end
    end
  end
end

Version data entries

18 entries across 18 versions & 1 rubygems

Version Path
spandx-0.19.0 lib/spandx/core/circuit.rb
spandx-0.18.3 lib/spandx/core/circuit.rb
spandx-0.18.2 lib/spandx/core/circuit.rb
spandx-0.18.1 lib/spandx/core/circuit.rb
spandx-0.18.0 lib/spandx/core/circuit.rb
spandx-0.17.0 lib/spandx/core/circuit.rb
spandx-0.16.1 lib/spandx/core/circuit.rb
spandx-0.16.0 lib/spandx/core/circuit.rb
spandx-0.15.1 lib/spandx/core/circuit.rb
spandx-0.15.0 lib/spandx/core/circuit.rb
spandx-0.14.0 lib/spandx/core/circuit.rb
spandx-0.13.5 lib/spandx/core/circuit.rb
spandx-0.13.4 lib/spandx/core/circuit.rb
spandx-0.13.3 lib/spandx/core/circuit.rb
spandx-0.13.2 lib/spandx/core/circuit.rb
spandx-0.13.1 lib/spandx/core/circuit.rb
spandx-0.13.0 lib/spandx/core/circuit.rb
spandx-0.12.3 lib/spandx/core/circuit.rb