Method: Async::Scheduler#io_read

Defined in:
lib/async/scheduler.rb

#io_read(io, buffer, length, offset = 0) ⇒ Object

Read from the specified IO into the buffer.



339
340
341
342
343
344
345
346
347
348
349
350
351
# File 'lib/async/scheduler.rb', line 339

def io_read(io, buffer, length, offset = 0)
  fiber = Fiber.current
  
  if timeout = io.timeout
    timer = @timers.after(timeout) do
      fiber.raise(::IO::TimeoutError, "Timeout (#{timeout}s) while waiting for IO to become readable!")
    end
  end
  
  @selector.io_read(fiber, io, buffer, length, offset)
ensure
  timer&.cancel!
end