Class: Async::HTTP::Mock::Endpoint
- Inherits:
-
Object
- Object
- Async::HTTP::Mock::Endpoint
- Defined in:
- lib/async/http/mock/endpoint.rb
Overview
This is an endpoint which bridges a client with a local server.
Instance Attribute Summary collapse
-
#authority ⇒ Object
readonly
Returns the value of attribute authority.
-
#protocol ⇒ Object
readonly
Returns the value of attribute protocol.
-
#scheme ⇒ Object
readonly
Returns the value of attribute scheme.
Instance Method Summary collapse
- #connect ⇒ Object
-
#initialize(protocol = Protocol::HTTP2, scheme = "http", authority = "localhost", queue: Queue.new) ⇒ Endpoint
constructor
A new instance of Endpoint.
-
#run(parent: Task.current) {|::HTTP::Protocol::Request| ... } ⇒ Object
Processing incoming connections.
- #wrap(endpoint) ⇒ Object
Constructor Details
#initialize(protocol = Protocol::HTTP2, scheme = "http", authority = "localhost", queue: Queue.new) ⇒ Endpoint
Returns a new instance of Endpoint.
15 16 17 18 19 20 21 |
# File 'lib/async/http/mock/endpoint.rb', line 15 def initialize(protocol = Protocol::HTTP2, scheme = "http", = "localhost", queue: Queue.new) @protocol = protocol @scheme = scheme @authority = @queue = queue end |
Instance Attribute Details
#authority ⇒ Object (readonly)
Returns the value of attribute authority.
25 26 27 |
# File 'lib/async/http/mock/endpoint.rb', line 25 def @authority end |
#protocol ⇒ Object (readonly)
Returns the value of attribute protocol.
23 24 25 |
# File 'lib/async/http/mock/endpoint.rb', line 23 def protocol @protocol end |
#scheme ⇒ Object (readonly)
Returns the value of attribute scheme.
24 25 26 |
# File 'lib/async/http/mock/endpoint.rb', line 24 def scheme @scheme end |
Instance Method Details
#connect ⇒ Object
39 40 41 42 43 44 45 |
# File 'lib/async/http/mock/endpoint.rb', line 39 def connect local, remote = ::Socket.pair(Socket::AF_UNIX, Socket::SOCK_STREAM) @queue.enqueue(remote) return local end |
#run(parent: Task.current) {|::HTTP::Protocol::Request| ... } ⇒ Object
Processing incoming connections
29 30 31 32 33 34 35 36 37 |
# File 'lib/async/http/mock/endpoint.rb', line 29 def run(parent: Task.current, &block) while peer = @queue.dequeue server = @protocol.server(peer) parent.async do server.each(&block) end end end |
#wrap(endpoint) ⇒ Object
47 48 49 |
# File 'lib/async/http/mock/endpoint.rb', line 47 def wrap(endpoint) self.class.new(@protocol, endpoint.scheme, endpoint., queue: @queue) end |