class Kamisama::RespawnLimiter

Public Class Methods

new(respawn_limit, respawn_interval) click to toggle source
# File lib/kamisama/respawn_limiter.rb, line 3
def initialize(respawn_limit, respawn_interval)
  @respawn_limit = respawn_limit
  @respawn_interval = respawn_interval

  @respawns = []
end

Public Instance Methods

calculate_respawn_count() click to toggle source
# File lib/kamisama/respawn_limiter.rb, line 18
def calculate_respawn_count
  now = Time.now.to_i

  @respawns.count { |timestamp| timestamp > (now - @respawn_interval) }
end
die_if_breached!() click to toggle source
# File lib/kamisama/respawn_limiter.rb, line 24
def die_if_breached!
  respawn_count = calculate_respawn_count

  if respawn_count >= @respawn_limit
    puts "[Kamisama Master] Respawn count #{respawn_count} hit the limit of #{@respawn_limit} for the respawn interval of #{@respawn_interval} seconds."
    puts "[Kamisama Master] Terminating."

    exit(1)
  end
end
record!() click to toggle source
# File lib/kamisama/respawn_limiter.rb, line 10
def record!
  now = Time.now.to_i

  @respawns = @respawns.select { |timestamp| timestamp >= now - @respawn_interval } + [now]

  die_if_breached!
end