Class: BreakerMachines::Storage::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/breaker_machines/storage/base.rb

Overview

Abstract base class for storage backends

Direct Known Subclasses

BucketMemory, Cache, FallbackChain, Memory, Native, Null

Instance Method Summary collapse

Constructor Details

#initialize(**options) ⇒ Base

Returns a new instance of Base.



7
8
9
# File 'lib/breaker_machines/storage/base.rb', line 7

def initialize(**options)
  @options = options
end

Instance Method Details

#clear(circuit_name) ⇒ Object

Cleanup

Raises:

  • (NotImplementedError)


38
39
40
# File 'lib/breaker_machines/storage/base.rb', line 38

def clear(circuit_name)
  raise NotImplementedError
end

#clear_allObject

Raises:

  • (NotImplementedError)


42
43
44
# File 'lib/breaker_machines/storage/base.rb', line 42

def clear_all
  raise NotImplementedError
end

#failure_count(circuit_name, window_seconds) ⇒ Object

Raises:

  • (NotImplementedError)


33
34
35
# File 'lib/breaker_machines/storage/base.rb', line 33

def failure_count(circuit_name, window_seconds)
  raise NotImplementedError
end

#get_status(circuit_name) ⇒ Object

Status management

Raises:

  • (NotImplementedError)


12
13
14
# File 'lib/breaker_machines/storage/base.rb', line 12

def get_status(circuit_name)
  raise NotImplementedError
end

#record_failure(circuit_name, duration) ⇒ Object

Raises:

  • (NotImplementedError)


25
26
27
# File 'lib/breaker_machines/storage/base.rb', line 25

def record_failure(circuit_name, duration)
  raise NotImplementedError
end

#record_success(circuit_name, duration) ⇒ Object

Metrics tracking

Raises:

  • (NotImplementedError)


21
22
23
# File 'lib/breaker_machines/storage/base.rb', line 21

def record_success(circuit_name, duration)
  raise NotImplementedError
end

#set_status(circuit_name, status, opened_at = nil) ⇒ Object

Raises:

  • (NotImplementedError)


16
17
18
# File 'lib/breaker_machines/storage/base.rb', line 16

def set_status(circuit_name, status, opened_at = nil)
  raise NotImplementedError
end

#success_count(circuit_name, window_seconds) ⇒ Object

Raises:

  • (NotImplementedError)


29
30
31
# File 'lib/breaker_machines/storage/base.rb', line 29

def success_count(circuit_name, window_seconds)
  raise NotImplementedError
end

#with_timeout(timeout_ms) ⇒ Object

Timeout handling - each backend must implement its own timeout strategy

Raises:

  • (NotImplementedError)


47
48
49
# File 'lib/breaker_machines/storage/base.rb', line 47

def with_timeout(timeout_ms)
  raise NotImplementedError, "#{self.class} must implement #with_timeout to handle #{timeout_ms}ms timeouts"
end