class IO::Event::Selector::Select
def io_write(fiber, io, buffer, length, offset = 0)
@parameter length [Integer] The minimum number of bytes to write.
def io_write(fiber, io, buffer, length, offset = 0) total = 0 Selector.nonblock(io) do while true result = Fiber.blocking{buffer.write(io, 0, offset)} if result < 0 if again?(result) self.io_wait(fiber, io, IO::READABLE) else return result end elsif result == 0 break result else total += result break if total >= length offset += result end end end return total end