Class: Seekmodo::Sdk::ModeFsm

Inherits:
Object
  • Object
show all
Defined in:
lib/seekmodo/sdk/mode_fsm.rb

Instance Method Summary collapse

Constructor Details

#initialize(snapshot, breaker: nil, default_mode: Mode::OFF) ⇒ ModeFsm

Returns a new instance of ModeFsm.



10
11
12
13
14
# File 'lib/seekmodo/sdk/mode_fsm.rb', line 10

def initialize(snapshot, breaker: nil, default_mode: Mode::OFF)
  @snapshot = snapshot
  @breaker = breaker
  @default_mode = Mode.assert_mode(default_mode)
end

Instance Method Details

#configured_modeObject



37
38
39
40
41
# File 'lib/seekmodo/sdk/mode_fsm.rb', line 37

def configured_mode
  config = @snapshot.get
  configured = config.fetch("mode", @default_mode).to_s
  Mode.valid?(configured) ? configured : @default_mode
end

#effective_modeObject



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/seekmodo/sdk/mode_fsm.rb', line 16

def effective_mode
  if @breaker && @breaker.state == CircuitBreaker::STATE_OPEN
    return Mode::OFF
  end

  config = @snapshot.get
  configured = config.fetch("mode", @default_mode).to_s
  return @default_mode unless Mode.valid?(configured)

  if configured != Mode::ACTIVE
    return configured
  end

  fsm_state = config.dig("fsm", "current_state").to_s
  if Mode.valid?(fsm_state) && fsm_state != Mode::ACTIVE
    return fsm_state
  end

  Mode::SHADOW
end

#mirrors_writes?Boolean

Returns:

  • (Boolean)


47
48
49
# File 'lib/seekmodo/sdk/mode_fsm.rb', line 47

def mirrors_writes?
  Mode.mirrors_writes?(effective_mode)
end

#serves_search?Boolean

Returns:

  • (Boolean)


43
44
45
# File 'lib/seekmodo/sdk/mode_fsm.rb', line 43

def serves_search?
  Mode.serves_search?(effective_mode)
end