Packages
ankh
0.14.5
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/http2/frame/encodable.ex
defprotocol Ankh.HTTP2.Frame.Encodable do
@moduledoc """
Protocol for encoding and decoding frames to and from wire format
"""
@fallback_to_any true
@typedoc "Data type conforming to the `Ankh.HTTP2.Frame.Encodable` protocol"
@type t :: any()
@typedoc "Encode/Decode options"
@type options :: keyword()
@doc """
Decodes a binary into an `Ankh.HTTP2.Frame.Encodable` conforming data type
Parameters:
- data: data type conforming to the `Ankh.HTTP2.Frame.Encodable` protocol
- binary: data to decode into the struct
- options: options to pass as context to the decoding function
"""
@spec decode(t(), binary(), options()) :: {:ok, t()} | {:error, any()}
def decode(struct, binary, options \\ [])
@doc """
Encodes an `Ankh.HTTP2.Frame.Encodable` conforming data type into an IO list
Parameters:
- data: data type conforming to the `Ankh.HTTP2.Frame.Encodable` protocol
- options: options to pass as context to the encoding function
"""
@spec encode(t(), options()) :: {:ok, iodata()} | {:error, any()}
def encode(data, options \\ [])
end
defimpl Ankh.HTTP2.Frame.Encodable, for: Any do
def decode(_, _, _), do: {:ok, nil}
def encode(_, _), do: {:ok, <<>>}
end