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