class Falcon::Adapters::Hijack
This is used for implementing partial hijack.
def self.for(env, block, socket = nil, task: Async::Task.current)
def self.for(env, block, socket = nil, task: Async::Task.current) input = env[Rack::RACK_INPUT] output = Async::HTTP::Body::Writable.new stream = Hijack.new(input, output, socket) task.async do begin block.call(stream) ensure stream.close end end return output end
def close
def close return if @closed @input.close @output.close @closed = true end
def close_read
def close_read @input.close end
def close_write
def close_write @output.close end
def closed?
def closed? @closed end
def flush
def flush end
def initialize(input, output, socket)
def initialize(input, output, socket) @input = input @output = output @socket = socket @closed = false end
def read(length = nil, buffer = nil)
def read(length = nil, buffer = nil) @input.read(length, buffer) end
def read_nonblock(length, buffer = nil)
def read_nonblock(length, buffer = nil) @input.read(length, buffer) end
def write(buffer)
def write(buffer) @output.write(buffer) end