Class: Async::HTTP::Protocol::HTTP2::Server
- Inherits:
- 
      Protocol::HTTP2::Server
      
        - Object
- Protocol::HTTP2::Server
- Async::HTTP::Protocol::HTTP2::Server
 
- Includes:
- Connection
- Defined in:
- lib/async/http/protocol/http2/server.rb
Instance Attribute Summary collapse
- 
  
    
      #requests  ⇒ Object 
    
    
  
  
  
  
    
      readonly
    
    
  
  
  
  
  
  
    Returns the value of attribute requests. 
Attributes included from Connection
Instance Method Summary collapse
- #accept_stream(stream_id) ⇒ Object
- #close(error = nil) ⇒ Object
- #each ⇒ Object
- 
  
    
      #initialize(stream)  ⇒ Server 
    
    
  
  
  
    constructor
  
  
  
  
  
  
  
    A new instance of Server. 
Methods included from Connection
#concurrency, #http1?, #http2?, #peer, #read_in_background, #reusable?, #start_connection, #to_s, #version, #viable?, #write_frame, #write_frames
Constructor Details
#initialize(stream) ⇒ Server
Returns a new instance of Server.
| 35 36 37 38 39 40 41 42 43 44 | # File 'lib/async/http/protocol/http2/server.rb', line 35 def initialize(stream) # Used by some generic methods in Connetion: @stream = stream framer = ::Protocol::HTTP2::Framer.new(stream) super(framer) @requests = Async::Queue.new end | 
Instance Attribute Details
#requests ⇒ Object (readonly)
Returns the value of attribute requests.
| 46 47 48 | # File 'lib/async/http/protocol/http2/server.rb', line 46 def requests @requests end | 
Instance Method Details
#accept_stream(stream_id) ⇒ Object
| 48 49 50 51 52 | # File 'lib/async/http/protocol/http2/server.rb', line 48 def accept_stream(stream_id) super do Request::Stream.create(self, stream_id) end end | 
#close(error = nil) ⇒ Object
| 54 55 56 57 58 59 60 61 62 63 | # File 'lib/async/http/protocol/http2/server.rb', line 54 def close(error = nil) # This invokes Framer#close which closes the stream: super if @requests # Stop the request loop: @requests.enqueue nil @requests = nil end end | 
#each ⇒ Object
| 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 | # File 'lib/async/http/protocol/http2/server.rb', line 65 def each # It's possible the connection has died before we get here... @requests&.async do |task, request| task.annotate("Incoming request: #{request.method} #{request.path.inspect}.") @count += 1 begin response = yield(request) rescue # We need to close the stream if the user code blows up while generating a response: request.stream.send_reset_stream(::Protocol::HTTP2::INTERNAL_ERROR) raise else request.send_response(response) end end end |