Packages
ankh
0.17.0
0.17.0
0.16.0
0.15.0
0.14.5
0.14.4
0.14.3
0.14.2
0.14.1
0.14.0
0.13.0
0.12.1
0.12.0
0.11.0
0.10.0
0.9.0
0.8.11
0.8.10
0.8.9
0.8.8
0.8.7
0.8.6
0.8.5
0.8.4
0.8.3
0.8.2
0.8.1
0.8.0
0.7.2
0.7.1
0.7.0
0.6.0
0.5.3
0.5.2
0.5.1
0.5.0
0.4.6
0.4.5
0.4.4
0.4.3
0.4.2
0.4.1
0.4.0
0.3.1
0.3.0
0.1.1
0.1.0
0.0.5
0.0.4
0.0.3
0.0.2
0.0.1
Pure Elixir HTTP/2 implementation
Current section
Files
Jump to
Current section
Files
lib/ankh/protocol/http2/frame/go_away.ex
defmodule Ankh.Protocol.HTTP2.Frame.GoAway do
@moduledoc false
defmodule Payload do
@moduledoc false
alias Ankh.HTTP.Error
alias Ankh.Protocol.HTTP2
@type t :: %__MODULE__{
last_stream_id: HTTP2.Stream.id(),
error_code: Error.reason(),
data: binary()
}
defstruct last_stream_id: nil, error_code: nil, data: <<>>
defimpl Ankh.Protocol.HTTP2.Frame.Encodable do
alias Ankh.Protocol.HTTP2.Error
def decode(%@for{} = payload, <<_::1, lsid::31, error::32>>, _),
do: {:ok, %{payload | last_stream_id: lsid, error_code: HTTP2.Error.decode(error)}}
def decode(%@for{} = payload, <<_::1, lsid::31, error::32, data::binary>>, _),
do:
{:ok,
%{payload | last_stream_id: lsid, error_code: HTTP2.Error.decode(error), data: data}}
def decode(_payload, _data, _options), do: {:error, :decode_error}
def encode(%@for{last_stream_id: lsid, error_code: error, data: data}, _),
do: {:ok, [<<0::1, lsid::31>>, HTTP2.Error.encode(error), data]}
def encode(_payload, _options), do: {:error, :encode_error}
end
end
use Ankh.Protocol.HTTP2.Frame, type: 0x7, payload: Payload
end