1 # -*- encoding: binary -*-
3 # This class handles the Unicorn fchmod heartbeat mechanism
4 # in Coolio-based concurrency models to prevent the master
5 # process from killing us unless we're blocked. This class
6 # will also detect and execute the graceful exit if triggered
8 class Rainbows::Coolio::Heartbeat < Coolio::TimerWatcher
9 KATO = Rainbows::Coolio::KATO
10 CONN = Rainbows::Coolio::CONN
11 Rainbows.config!(self, :keepalive_timeout)
12 Rainbows.at_quit { KATO.each_key(&:timeout?).clear }
15 if (ot = KEEPALIVE_TIMEOUT) >= 0
16 ot = Rainbows.now - ot
17 KATO.delete_if { |client, time| time < ot and client.timeout? }
19 exit if (! Rainbows.tick && CONN.size <= 0)