Module: Julewire::Ractor::Bridge::Stats

Defined in:
lib/julewire/ractor/bridge/stats.rb

Class Method Summary collapse

Class Method Details

.after_fork!Object



60
61
62
63
# File 'lib/julewire/ractor/bridge/stats.rb', line 60

def after_fork!
  @active_threads.value = 0
  reset!
end

.bridge_startedObject



18
19
20
21
# File 'lib/julewire/ractor/bridge/stats.rb', line 18

def bridge_started
  @active_threads.increment
  @started_threads.increment
end

.bridge_stopped(error = nil) ⇒ Object



23
24
25
26
27
# File 'lib/julewire/ractor/bridge/stats.rb', line 23

def bridge_stopped(error = nil)
  @active_threads.decrement if @active_threads.value.positive?
  @stopped_threads.increment
  record_failure(error) if error
end

.healthObject



37
38
39
40
41
42
43
44
45
46
47
# File 'lib/julewire/ractor/bridge/stats.rb', line 37

def health
  {
    active_threads: @active_threads.value,
    experimental: true,
    failure_count: @failure_count.value,
    last_error_class: @last_error.get&.fetch(:class),
    messages: @message_count.value,
    started_threads: @started_threads.value,
    stopped_threads: @stopped_threads.value
  }.compact
end

.message_failed(error) ⇒ Object



33
34
35
# File 'lib/julewire/ractor/bridge/stats.rb', line 33

def message_failed(error)
  record_failure(error)
end

.message_receivedObject



29
30
31
# File 'lib/julewire/ractor/bridge/stats.rb', line 29

def message_received
  @message_count.increment
end

.reset!Object



49
50
51
52
53
54
55
56
57
58
# File 'lib/julewire/ractor/bridge/stats.rb', line 49

def reset!
  # Active bridge threads are live state; reset history without
  # forcing a running bridge to later decrement a cleared counter.
  @failure_count.value = 0
  @last_error.set(nil)
  @message_count.value = 0
  @started_threads.value = 0
  @stopped_threads.value = 0
  nil
end