Class: Kodo::Heartbeat

Inherits:
Object
  • Object
show all
Defined in:
lib/kodo/heartbeat.rb

Instance Method Summary collapse

Constructor Details

#initialize(channels:, router:, audit:, reminders: nil, interval: 60) ⇒ Heartbeat

Returns a new instance of Heartbeat.



5
6
7
8
9
10
11
12
13
# File 'lib/kodo/heartbeat.rb', line 5

def initialize(channels:, router:, audit:, reminders: nil, interval: 60)
  @channels = channels
  @router = router
  @audit = audit
  @reminders = reminders
  @interval = interval
  @running = false
  @beat_count = 0
end

Instance Method Details

#running? ⇒ Boolean

Returns:

  • (Boolean)


36
# File 'lib/kodo/heartbeat.rb', line 36

def running? = @running

#start! ⇒ Object



15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/kodo/heartbeat.rb', line 15

def start!
  @running = true
  Kodo.logger.info("💓 Heartbeat started (interval: #{@interval}s)")
  @audit.log(event: "heartbeat_start", detail: "interval:#{@interval}s")

  loop do
    break unless @running

    beat!
    sleep(@interval)
  end
rescue Interrupt
  stop!
end

#stop! ⇒ Object



30
31
32
33
34
# File 'lib/kodo/heartbeat.rb', line 30

def stop!
  @running = false
  Kodo.logger.info("💓 Heartbeat stopped after #{@beat_count} beats")
  @audit.log(event: "heartbeat_stop", detail: "beats:#{@beat_count}")
end