Packages
ace
0.11.1
0.19.0
0.18.10
0.18.9
0.18.8
0.18.7
0.18.6
0.18.5
0.18.4
0.18.3
0.18.2
0.18.1
0.18.0
0.17.1
0.17.0
0.16.8
0.16.7
0.16.6
0.16.5
0.16.4
0.16.3
0.16.2
0.16.1
0.16.0
0.15.11
0.15.10
0.15.9
0.15.8
0.15.7
0.15.6
retired
0.15.5
0.15.4
0.15.3
0.15.2
0.15.1
0.15.0
0.14.8
0.14.7
0.14.6
0.14.5
0.14.4
0.14.3
0.14.2
0.14.1
0.14.0
0.13.1
0.13.0
0.12.1
0.12.0
retired
0.11.1
0.11.0
0.10.0
0.9.3
0.9.2
0.9.1
0.9.0
0.8.1
0.8.0
0.7.1
0.7.0
0.6.3
0.6.2
0.6.1
0.6.0
0.5.2
0.5.1
0.5.0
0.4.0
0.3.0
0.2.0
HTTP web server and client, supports http1 and http2
Current section
Files
Jump to
Current section
Files
lib/ace/http2/frame/3_rst_stream.ex
defmodule Ace.HTTP2.Frame.RstStream do
@moduledoc false
@enforce_keys [:stream_id, :error]
defstruct @enforce_keys
def new(stream_id, error) do
%__MODULE__{stream_id: stream_id, error: error}
end
def decode({3, _flags, stream_id, <<error_code::32>>}) when stream_id > 0 do
error = Ace.HTTP2.Frame.GoAway.error(error_code)
{:ok, new(stream_id, error)}
end
def decode({3, _flags, 0, <<_::32>>}) do
{:error, {:protocol_error, "RstStream frame not valid on stream 0"}}
end
def decode({3, _flags, _stream_id, _payload}) do
{:error, {:protocol_error, "RstStream frame invalid payload length"}}
end
def serialize(frame) do
# DEBT move to general errors
payload = <<Ace.HTTP2.Frame.GoAway.error_code(frame.error)::32>>
<<4::24, 3::8, 0::8, 0::1, frame.stream_id::31, payload::binary>>
end
end