class Pwrake::NBIO::FiberReaderQueue

Public Class Methods

new(reader) click to toggle source
# File lib/pwrake/nbio.rb, line 432
def initialize(reader)
  @reader = reader
  @q = []
  @waiter = []
  @halting = false
end

Public Instance Methods

deq() click to toggle source
# File lib/pwrake/nbio.rb, line 445
def deq
  while @q.empty?
    return nil if @halting
    @waiter.push(Fiber.current)
    @reader.select_io
  end
  @q.shift
end
Also aliased as: get_line
enq(x) click to toggle source
# File lib/pwrake/nbio.rb, line 439
def enq(x)
  @q.push(x)
  f = @waiter.shift
  f.resume if f
end
get_line()
Alias for: deq
halt() click to toggle source
# File lib/pwrake/nbio.rb, line 456
def halt
  @halting = true
  while f = @waiter.shift
    f.resume
  end
ensure
  @halting = false
end