class Rcb::Instance

Attributes

config[R]

Public Class Methods

new(config, state_store:) click to toggle source

@param config [Rcb::Config]

# File lib/rcb/instance.rb, line 14
def initialize(config, state_store:)
  @config = config
  @state_store = state_store || Rcb::StateStore::InMemory
end

Public Instance Methods

run!(&block) click to toggle source
# File lib/rcb/instance.rb, line 19
def run!(&block)
  result =
    case get_state
    in State::Close => s
      s.run(config, &block)
    in State::Open => s
      s.run(config, &block)
    in s
      raise "Unknown state: #{s}"
    end

  case result
  in Result::Ok[state, result]
    @state_store.update(config.tag, state)
    return result
  in Result::Ng[state, error]
    @state_store.update(config.tag, state)
    raise error
  end
end
state() click to toggle source
# File lib/rcb/instance.rb, line 40
def state
  get_state.show_state(config)
end

Private Instance Methods

get_state() click to toggle source
# File lib/rcb/instance.rb, line 46
def get_state
  @state_store.get(config.tag) || State::Close.create
end