Class: Protocol::HTTP2::Client
Instance Attribute Summary
Attributes inherited from Connection
#dependencies, #dependency, #framer, #local_settings, #local_window, #remote_settings, #remote_stream_id, #remote_window, #state, #streams
Instance Method Summary
collapse
Methods inherited from Connection
#[], #accept_push_promise_stream, #accept_stream, #client_stream_id?, #close, #close!, #closed?, #closed_stream_id?, #consume_window, #create_stream, #decode_headers, #delete, #encode_headers, #id, #idle_stream_id?, #ignore_frame?, #maximum_concurrent_streams, #maximum_frame_size, #next_stream_id, #open!, #process_settings, #read_frame, #receive_continuation, #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_priority, #send_settings, #server_stream_id?, #update_local_settings, #update_remote_settings, #write_frame, #write_frames
#available_frame_size, #available_size, #consume_local_window, #consume_remote_window, #receive_window_update, #request_window_update, #send_window_update, #update_local_window, #window_updated
Constructor Details
#initialize(framer) ⇒ Client
Returns a new instance of Client.
26
27
28
|
# File 'lib/protocol/http2/client.rb', line 26
def initialize(framer)
super(framer, 1)
end
|
Instance Method Details
#create_push_promise_stream ⇒ Object
58
59
60
|
# File 'lib/protocol/http2/client.rb', line 58
def create_push_promise_stream
raise ProtocolError, "Cannot create push promises from client!"
end
|
#local_stream_id?(id) ⇒ Boolean
30
31
32
|
# File 'lib/protocol/http2/client.rb', line 30
def local_stream_id?(id)
id.odd?
end
|
#receive_push_promise(frame) ⇒ Object
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
|
# File 'lib/protocol/http2/client.rb', line 62
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]
promised_stream, = stream.receive_push_promise(frame)
if stream.closed?
@streams.delete(stream.id)
end
return promised_stream,
end
end
|
#remote_stream_id?(id) ⇒ Boolean
34
35
36
|
# File 'lib/protocol/http2/client.rb', line 34
def remote_stream_id?(id)
id.even?
end
|
#send_connection_preface(settings = []) ⇒ Object
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
# File 'lib/protocol/http2/client.rb', line 42
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
|
#valid_remote_stream_id?(stream_id) ⇒ Boolean
38
39
40
|
# File 'lib/protocol/http2/client.rb', line 38
def valid_remote_stream_id?(stream_id)
stream_id.even?
end
|