class HTTP::Response::Parser

@api private

def add(data)

def add(data)
  parser << data
  self
rescue LLHttp::Error => e
  raise IOError, e.message
end

def add_body(chunk)

def add_body(chunk)
  if @chunk
    @chunk << chunk
  else
    @chunk = chunk
  end
end

def add_header(name, value)

def add_header(name, value)
  @headers.add(name, value)
end

def finished?

def finished?
  @message_finished
end

def headers?

def headers?
  @header_finished
end

def initialize

def initialize
  @handler = Handler.new(self)
  @parser = LLHttp::Parser.new(@handler, :type => :response)
  reset
end

def mark_header_finished

def mark_header_finished
  @header_finished = true
  @status_code = @parser.status_code
  @http_version = "#{@parser.http_major}.#{@parser.http_minor}"
end

def mark_message_finished

def mark_message_finished
  @message_finished = true
end

def read(size)

def read(size)
  return if @chunk.nil?
  if @chunk.bytesize <= size
    chunk  = @chunk
    @chunk = nil
  else
    chunk = @chunk.byteslice(0, size)
    @chunk[0, size] = ""
  end
  chunk
end

def reset

def reset
  @parser.reset
  @handler.reset
  @header_finished = false
  @message_finished = false
  @headers = Headers.new
  @chunk = nil
  @status_code = nil
  @http_version = nil
end