class Async::HTTP::Body::Writable
A dynamic body which you can write to and read from.
def empty?
def empty? @finished end
def finish
def finish @queue.enqueue(nil) end
def initialize
def initialize @queue = Async::Queue.new @count = 0 @finished = false @stopped = nil end
def inspect
def inspect "\#<#{self.class} #{@count} chunks written#{@finished ? ', finished' : ''}>" end
def read
def read return if @finished unless chunk = @queue.dequeue @finished = true end return chunk end
def stop(error)
def stop(error) @stopped = error end
def write(chunk)
def write(chunk) if @stopped raise @stopped end # TODO should this yield if the queue is full? @count += 1 @queue.enqueue(chunk) end