Packages
ankh
0.1.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/frame/data/payload.ex
defmodule Ankh.Frame.Data.Payload do
@moduledoc """
DATA frame payload
"""
@type t :: %__MODULE__{pad_length: Integer.t, data: binary}
defstruct [pad_length: 0, data: <<>>]
end
defimpl Ankh.Frame.Payload, for: Ankh.Frame.Data.Payload do
import Ankh.Frame.Utils
def decode!(struct, <<pad_length::8, padded_data::binary>>,
flags: %{padded: true}) do
data = binary_part(padded_data, 0, byte_size(padded_data) - pad_length)
%{struct | pad_length: pad_length, data: data}
end
def decode!(struct, <<data::binary>>, flags: %{padded: false}) do
%{struct | data: data}
end
def encode!(%{pad_length: pad_length, data: data}, flags: %{padded: true}) do
<<pad_length::8, data>> <> padding(pad_length)
end
def encode!(%{data: data}, flags: %{padded: false}) do
data
end
end