class IO::Event::Selector::Select
def io_write(fiber, io, buffer, length, offset = 0)
def io_write(fiber, io, buffer, length, offset = 0) total = 0 Selector.nonblock(io) do maximum_size = buffer.size - offset while maximum_size > 0 result = Fiber.blocking{buffer.write(io, maximum_size, offset)} if again?(result) if length > 0 self.io_wait(fiber, io, IO::READABLE) else return result end elsif result < 0 return result else total += result offset += result break if total >= length end maximum_size = buffer.size - offset end end return total end