Current section

Files

Jump to
ankh lib ankh frame headers flags.ex
Raw

lib/ankh/frame/headers/flags.ex

defmodule Ankh.Frame.Headers.Flags do
@moduledoc false
@type t :: %__MODULE__{
end_stream: boolean,
end_headers: boolean,
padded: boolean,
priority: boolean
}
defstruct end_stream: false, end_headers: false, padded: false, priority: false
end
defimpl Ankh.Frame.Encodable, for: Ankh.Frame.Headers.Flags do
import Ankh.Frame.Utils
def decode!(flags, <<_::2, pr::1, _::1, pa::1, eh::1, _::1, es::1>>, _) do
%{
flags
| end_stream: int_to_bool!(es),
end_headers: int_to_bool!(eh),
padded: int_to_bool!(pa),
priority: int_to_bool!(pr)
}
end
def encode!(%{end_stream: es, end_headers: eh, padded: pa, priority: pr}, _) do
<<0::2, bool_to_int!(pr)::1, 0::1, bool_to_int!(pa)::1, bool_to_int!(eh)::1, 0::1,
bool_to_int!(es)::1>>
end
end