class Async::Task
def initialize(ios, reactor, &block)
def initialize(ios, reactor, &block) @ios = Hash[ ios.collect{|io| [io.fileno, reactor.wrap(io, self)]} ] @reactor = reactor @fiber = Fiber.new do set! begin yield(*@ios.values, self) # Async.logger.debug("Task #{self} completed normally.") rescue Interrupt # Async.logger.debug("Task #{self} interrupted: #{$!}") ensure close end end end