Packages
ankh
0.0.2
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
defstruct [pad_length: 0, data: <<>>]
end
defimpl Ankh.Frame.Encoder, for: Ankh.Frame.Data.Payload do
alias Ankh.Frame.Data.{Flags, Payload}
import Ankh.Frame.Encoder.Utils
def decode!(struct, <<pad_length::8, padded_data::binary>>,
flags: %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: %Flags{padded: false})
do
%{struct | data: data}
end
def encode!(%Payload{pad_length: pad_length, data: data},
flags: %Flags{padded: true}) do
<<pad_length::8, data>> <> padding(pad_length)
end
def encode!(%Payload{data: data}, flags: %Flags{padded: false}) do
data
end
end