defmodule Kadabra.Frame.Priority do @moduledoc false defstruct [:stream_dependency, :weight, exclusive: false] alias Kadabra.Frame @type t :: %__MODULE__{ exclusive: boolean, stream_dependency: non_neg_integer, weight: integer } @spec new(Frame.t) :: {:ok, t} | {:error, Frame.t} def new(%Frame{payload: payload} = frame) do case parse_payload(payload) do {:ok, e, dep, weight} -> %__MODULE__{ exclusive: (e == 0x1), stream_dependency: dep, weight: weight } {:error, _payload} -> {:error, frame} end end defp parse_payload(<>) do {:ok, e, dep, weight} end defp parse_payload(payload) do {:error, payload} end end