Class: HTTP::Protocol::HTTP2::Client
- Inherits:
-
Connection
- Object
- Connection
- HTTP::Protocol::HTTP2::Client
- Defined in:
- lib/http/protocol/http2/client.rb
Instance Attribute Summary
Attributes inherited from Connection
#framer, #local_settings, #local_window, #remote_settings, #remote_window, #state, #streams
Instance Method Summary collapse
-
#initialize(framer) ⇒ Client
constructor
A new instance of Client.
- #receive_push_promise(frame) ⇒ Object
- #send_connection_preface(settings = []) ⇒ Object
Methods inherited from Connection
#close, #closed?, #create_stream, #decode_headers, #deleted_stream?, #encode_headers, #id, #maximum_concurrent_streams, #maximum_frame_size, #next_stream_id, #open!, #process_settings, #read_frame, #receive_data, #receive_frame, #receive_goaway, #receive_headers, #receive_ping, #receive_priority, #receive_reset_stream, #receive_settings, #receive_window_update, #send_goaway, #send_ping, #send_settings, #update_local_settings, #update_remote_settings, #window_updated, #write_frame
Methods included from FlowControl
#available_frame_size, #consume_local_window, #consume_remote_window, #receive_window_update, #send_window_update, #window_updated
Constructor Details
#initialize(framer) ⇒ Client
Returns a new instance of Client.
27 28 29 |
# File 'lib/http/protocol/http2/client.rb', line 27 def initialize(framer) super(framer, 1) end |
Instance Method Details
#receive_push_promise(frame) ⇒ Object
47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
# File 'lib/http/protocol/http2/client.rb', line 47 def receive_push_promise(frame) if frame.stream_id == 0 raise ProtocolError, "Cannot receive headers for stream 0!" end if stream = @streams[frame.stream_id] # This is almost certainly invalid: promised_stream, request_headers = stream.receive_push_promise(frame) if stream.closed? @streams.delete(stream.id) end return promised_stream, request_headers end end |
#send_connection_preface(settings = []) ⇒ Object
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/http/protocol/http2/client.rb', line 31 def send_connection_preface(settings = []) if @state == :new @framer.write_connection_preface send_settings(settings) yield if block_given? read_frame do |frame| raise ProtocolError, "First frame must be SettingsFrame, but got #{frame.class}" unless frame.is_a? SettingsFrame end else raise ProtocolError, "Cannot send connection preface in state #{@state}" end end |