class QNA::Request

HTTP request

Attributes

__next__[RW]
adapter[R]
headers[R]

Public Class Methods

new(headers, adapter) click to toggle source
# File lib/qna/request.rb, line 19
def initialize(headers, adapter)
  @headers  = headers
  @adapter  = adapter
end

Public Instance Methods

<<(body, done: false)
Alias for: send_chunk
body()
Alias for: read
buffer_body_chunk(chunk) click to toggle source
# File lib/qna/request.rb, line 24
def buffer_body_chunk(chunk)
  @buffered_body_chunks ||= []
  @buffered_body_chunks << chunk
end
complete!(keep_alive = nil) click to toggle source
# File lib/qna/request.rb, line 51
def complete!(keep_alive = nil)
  @message_complete = true
  @keep_alive = keep_alive
end
complete?() click to toggle source
# File lib/qna/request.rb, line 56
def complete?
  @message_complete
end
consume() click to toggle source
# File lib/qna/request.rb, line 60
def consume
  @adapter.consume_request
end
each_chunk() { |chunk| ... } click to toggle source
# File lib/qna/request.rb, line 39
def each_chunk
  if @buffered_body_chunks
    while (chunk = @buffered_body_chunks.shift)
      yield chunk
    end
    @buffered_body_chunks = nil
  end
  while !@message_complete && (chunk = @adapter.get_body_chunk)
    yield chunk
  end
end
finish() click to toggle source
# File lib/qna/request.rb, line 97
def finish
  send_headers({}) unless @headers_sent
  
  @adapter.finish
end
headers_sent?() click to toggle source
# File lib/qna/request.rb, line 103
def headers_sent?
  @headers_sent
end
keep_alive?() click to toggle source
# File lib/qna/request.rb, line 64
def keep_alive?
  @keep_alive
end
next_chunk() click to toggle source
# File lib/qna/request.rb, line 29
def next_chunk
  if @buffered_body_chunks
    chunk = @buffered_body_chunks.shift
    @buffered_body_chunks = nil if @buffered_body_chunks.empty?
    return chunk
  end

  @message_complete ? nil : @adapter.get_body_chunk
end
read() click to toggle source
# File lib/qna/request.rb, line 68
def read
  buf = @buffered_body_chunks ? @buffered_body_chunks.join : nil
  while (chunk = @adapter.get_body_chunk)
    (buf ||= +'') << chunk
  end
  @buffered_body_chunks = nil
  buf
end
Also aliased as: body
respond(body, headers = {}) click to toggle source
# File lib/qna/request.rb, line 78
def respond(body, headers = {})
  @adapter.respond(body, headers)
  @headers_sent = true
end
send_chunk(body, done: false) click to toggle source
# File lib/qna/request.rb, line 90
def send_chunk(body, done: false)
  send_headers({}) unless @headers_sent
  
  @adapter.send_chunk(body, done: done)
end
Also aliased as: <<
send_headers(headers = {}, empty_response = false) click to toggle source
# File lib/qna/request.rb, line 83
def send_headers(headers = {}, empty_response = false)
  return if @headers_sent
  
  @headers_sent = true
  @adapter.send_headers(headers, empty_response: empty_response)
end