Class: Async::HTTP::Body::Pipe

Inherits:
Object
  • Object
show all
Defined in:
lib/async/http/body/pipe.rb

Instance Method Summary collapse

Constructor Details

#initialize(input, output = Writable.new, task: Task.current) ⇒ Pipe

If the input stream is closed first, it’s likely the output stream will also be closed.



33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/async/http/body/pipe.rb', line 33

def initialize(input, output = Writable.new, task: Task.current)
	@input = input
	@output = output
	
	head, tail = IO::Socket.pair(Socket::AF_UNIX, Socket::SOCK_STREAM)
	
	@head = IO::Stream.new(head)
	@tail = tail
	
	@reader = nil
	@writer = nil
	
	task.async(transient: true, &self.method(:reader))
	task.async(transient: true, &self.method(:writer))
end

Instance Method Details

#closeObject



53
54
55
56
57
58
# File 'lib/async/http/body/pipe.rb', line 53

def close
	@reader&.stop
	@writer&.stop
	
	@tail.close
end

#to_ioObject



49
50
51
# File 'lib/async/http/body/pipe.rb', line 49

def to_io
	@tail
end