Packages
ace
0.15.6
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
Retired package: incorrectly committed to source control
Current section
Files
Jump to
Current section
Files
lib/ace/http2/frame/3_rst_stream.ex
defmodule Ace.HTTP2.Frame.RstStream do
@moduledoc false
alias Ace.HTTP2.{Errors}
@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 = Errors.decode(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
payload = <<Errors.encode(frame.error)::32>>
<<4::24, 3::8, 0::8, 0::1, frame.stream_id::31, payload::binary>>
end
defimpl Inspect, for: Ace.HTTP2.Frame.RstStream do
def inspect(%{stream_id: stream_id, error: error}, _opts) do
"RST_STREAM(stream_id: #{stream_id}, error: #{error})"
end
end
end