class Sass::Compiler::Dispatcher
def initialize(idle_timeout: 0)
def initialize(idle_timeout: 0) @id = 1 @observers = {}.compare_by_identity @mutex = Mutex.new @connection = Connection.new @connection.listen(self) ForkTracker.add(self) return unless idle_timeout.positive? @last_accessed_time = current_time Thread.new do Thread.current.name = "sass-embedded-connection-reaper-#{@connection.id}" duration = idle_timeout loop do sleep(duration.negative? ? idle_timeout : duration) break if @mutex.synchronize do raise Errno::EBUSY if _closed? duration = idle_timeout - (current_time - @last_accessed_time) duration.negative? && _idle? && _close end end close rescue Errno::EBUSY # do nothing end end