Current section
Files
Jump to
Current section
Files
lib/frame_parser.ex
defmodule Kadabra.FrameParser do
@moduledoc false
alias Kadabra.Frame
alias Kadabra.Frame.{
Data,
Headers,
RstStream,
Settings,
PushPromise,
Ping,
Goaway,
WindowUpdate,
Continuation
}
def parse(bin) do
case Frame.new(bin) do
{:ok, %{type: type} = frame, rest} ->
mod = to_module(type)
f = mod.new(frame)
{:ok, f, rest}
{:error, bin} ->
{:error, bin}
end
end
def to_module(0x0), do: Data
def to_module(0x1), do: Headers
def to_module(0x3), do: RstStream
def to_module(0x4), do: Settings
def to_module(0x5), do: PushPromise
def to_module(0x6), do: Ping
def to_module(0x7), do: Goaway
def to_module(0x8), do: WindowUpdate
def to_module(0x9), do: Continuation
end