Class: Supervision::Configuration

Inherits:
Object
  • Object
show all
Defined in:
lib/supervision/configuration.rb

Overview

A class responsbile for the circuit configuration options

Constant Summary collapse

DEFAULT_MAX_FAILURES =
5
DEFAULT_CALL_TIMEOUT =
10.milli
DEFAULT_RESET_TIMEOUT =
100.milli

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ Configuration

Create a Configuration options



15
16
17
18
19
20
21
22
23
# File 'lib/supervision/configuration.rb', line 15

def initialize(options = {})
  verify_options!(options)
  @max_failures = Atomic.new(options.fetch(:max_failures,
                                           DEFAULT_MAX_FAILURES))
  @call_timeout = Atomic.new(options.fetch(:call_timeout,
                                           DEFAULT_CALL_TIMEOUT))
  @reset_timeout = Atomic.new(options.fetch(:reset_timeout,
                                            DEFAULT_RESET_TIMEOUT))
end

Instance Method Details

#call_timeout(time = nil) ⇒ Object



52
53
54
55
56
# File 'lib/supervision/configuration.rb', line 52

def call_timeout(time = nil)
  return @call_timeout.value unless time

  self.call_timeout = time
end

#call_timeout=(value) ⇒ Object



48
49
50
# File 'lib/supervision/configuration.rb', line 48

def call_timeout=(value)
  @call_timeout.set(value)
end

#configure(&block) ⇒ self

Evalutate this configuration

Returns:

  • (self)


30
31
32
33
34
35
36
# File 'lib/supervision/configuration.rb', line 30

def configure(&block)
  if block.arity.zero?
    instance_eval(&block)
  else
    yield self
  end
end

#max_failures(number = nil) ⇒ Object



42
43
44
45
46
# File 'lib/supervision/configuration.rb', line 42

def max_failures(number = nil)
  return @max_failures.value unless number

  self.max_failures = number
end

#max_failures=(value) ⇒ Object



38
39
40
# File 'lib/supervision/configuration.rb', line 38

def max_failures=(value)
  @max_failures.set(value)
end

#reset_timeout(time = nil) ⇒ Object



62
63
64
65
66
# File 'lib/supervision/configuration.rb', line 62

def reset_timeout(time = nil)
  return @reset_timeout.value unless time

  self.reset_timeout = time
end

#reset_timeout=(value) ⇒ Object



58
59
60
# File 'lib/supervision/configuration.rb', line 58

def reset_timeout=(value)
  @reset_timeout.set(value)
end