Class: Falcon::Adapters::Hijack
- Inherits:
-
Object
- Object
- Falcon::Adapters::Hijack
- Defined in:
- lib/falcon/adapters/hijack.rb
Overview
This is used for implementing partial hijack.
Class Method Summary collapse
Instance Method Summary collapse
- #close ⇒ Object
- #close_read ⇒ Object
- #close_write ⇒ Object
- #flush ⇒ Object
-
#initialize(input, output) ⇒ Hijack
constructor
A new instance of Hijack.
- #read(length = nil, buffer = nil) ⇒ Object
- #read_nonblock(length, buffer = nil) ⇒ Object
- #write(buffer) ⇒ Object (also: #write_nonblock)
Constructor Details
#initialize(input, output) ⇒ Hijack
Returns a new instance of Hijack.
45 46 47 48 |
# File 'lib/falcon/adapters/hijack.rb', line 45 def initialize(input, output) @input = input @output = output end |
Class Method Details
.for(env, block, socket = nil, task: Async::Task.current) ⇒ Object
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/falcon/adapters/hijack.rb', line 28 def self.for(env, block, socket = nil, task: Async::Task.current) input = socket || env[Rack::RACK_INPUT] output = Async::HTTP::Body::Writable.new stream = Hijack.new(input, output) task.async do begin block.call(stream) ensure output.close end end return output end |
Instance Method Details
#close ⇒ Object
67 68 69 |
# File 'lib/falcon/adapters/hijack.rb', line 67 def close @output.close end |
#close_read ⇒ Object
71 72 73 74 75 76 77 |
# File 'lib/falcon/adapters/hijack.rb', line 71 def close_read if @input.respond_to?(:close_read) @input.close_read else @input.close end end |
#close_write ⇒ Object
79 80 81 |
# File 'lib/falcon/adapters/hijack.rb', line 79 def close_write @output.close end |
#flush ⇒ Object
64 65 |
# File 'lib/falcon/adapters/hijack.rb', line 64 def flush end |
#read(length = nil, buffer = nil) ⇒ Object
50 51 52 |
# File 'lib/falcon/adapters/hijack.rb', line 50 def read(length = nil, buffer = nil) @input.read(length, buffer) end |
#read_nonblock(length, buffer = nil) ⇒ Object
54 55 56 |
# File 'lib/falcon/adapters/hijack.rb', line 54 def read_nonblock(length, buffer = nil) @input.read(length, buffer) end |
#write(buffer) ⇒ Object Also known as: write_nonblock
58 59 60 |
# File 'lib/falcon/adapters/hijack.rb', line 58 def write(buffer) @output.write(buffer) end |