Sha256: 1e7d8f93d5644d15b18b175134bcf9aa6e08b81e572d473590039188d439914e

Contents?: true

Size: 973 Bytes

Versions: 19

Compression:

Stored size: 973 Bytes

Contents

# frozen_string_literal: true

module PgEventstore
  # Implements different states of a runner.
  # @!visibility private
  class RunnerState
    include Extensions::CallbacksExtension

    STATES = %i(initial running halting stopped dead).to_h { [_1, _1.to_s.freeze] }.freeze

    def initialize
      initial!
    end

    STATES.each do |state, value|
      # Checks whether a runner is in appropriate state
      # @return [Boolean]
      define_method "#{state}?" do
        @state == value
      end

      # Sets the state.
      # @return [String]
      define_method "#{state}!" do
        set_state(value)
      end
    end

    # @return [String] string representation of the state
    def to_s
      @state
    end

    private

    # @param state [String]
    # @return [String]
    def set_state(state)
      old_state = @state
      @state = state
      callbacks.run_callbacks(:change_state, @state) unless old_state == @state
      @state
    end
  end
end

Version data entries

19 entries across 19 versions & 1 rubygems

Version Path
pg_eventstore-1.1.3 lib/pg_eventstore/subscriptions/runner_state.rb
pg_eventstore-1.1.2 lib/pg_eventstore/subscriptions/runner_state.rb
pg_eventstore-1.1.1 lib/pg_eventstore/subscriptions/runner_state.rb
pg_eventstore-1.1.0 lib/pg_eventstore/subscriptions/runner_state.rb
pg_eventstore-1.0.4 lib/pg_eventstore/subscriptions/runner_state.rb
pg_eventstore-1.0.0.rc2 lib/pg_eventstore/subscriptions/runner_state.rb
pg_eventstore-1.0.0.rc1 lib/pg_eventstore/subscriptions/runner_state.rb
pg_eventstore-0.10.2 lib/pg_eventstore/subscriptions/runner_state.rb
pg_eventstore-0.10.1 lib/pg_eventstore/subscriptions/runner_state.rb
pg_eventstore-0.9.0 lib/pg_eventstore/subscriptions/runner_state.rb
pg_eventstore-0.8.0 lib/pg_eventstore/subscriptions/runner_state.rb
pg_eventstore-0.7.2 lib/pg_eventstore/subscriptions/runner_state.rb
pg_eventstore-0.7.1 lib/pg_eventstore/subscriptions/runner_state.rb
pg_eventstore-0.7.0 lib/pg_eventstore/subscriptions/runner_state.rb
pg_eventstore-0.6.0 lib/pg_eventstore/subscriptions/runner_state.rb
pg_eventstore-0.5.3 lib/pg_eventstore/subscriptions/runner_state.rb
pg_eventstore-0.5.2 lib/pg_eventstore/subscriptions/runner_state.rb
pg_eventstore-0.5.0 lib/pg_eventstore/subscriptions/runner_state.rb
pg_eventstore-0.4.0 lib/pg_eventstore/subscriptions/runner_state.rb