class EventMachine::HotTub::Reaper

Public Class Methods

spawn(obj) click to toggle source
# File lib/em/hot_tub/reaper.rb, line 3
def self.spawn(obj)
  fiber = Fiber.new {
    Thread.current[:name] = "EventMachine::HotTub::Reaper"
    while true do
      break if obj.kill_reaper?
      begin
        obj.reap!
        break if obj.shutdown
        #Fiber.yield
        EM::Synchrony.sleep(obj.reap_timeout)
      rescue Exception => e
        HotTub.logger.error "HotTub::Reaper for #{obj.class.name} terminated with exception: #{e.message}"
        HotTub.logger.error e.backtrace.map {|line| " #{line}"}
        break
      end
    end
  }
  fiber
end