Packages
ace
0.10.0
0.19.0
0.18.10
0.18.9
0.18.8
0.18.7
0.18.6
0.18.5
0.18.4
0.18.3
0.18.2
0.18.1
0.18.0
0.17.1
0.17.0
0.16.8
0.16.7
0.16.6
0.16.5
0.16.4
0.16.3
0.16.2
0.16.1
0.16.0
0.15.11
0.15.10
0.15.9
0.15.8
0.15.7
0.15.6
retired
0.15.5
0.15.4
0.15.3
0.15.2
0.15.1
0.15.0
0.14.8
0.14.7
0.14.6
0.14.5
0.14.4
0.14.3
0.14.2
0.14.1
0.14.0
0.13.1
0.13.0
0.12.1
0.12.0
retired
0.11.1
0.11.0
0.10.0
0.9.3
0.9.2
0.9.1
0.9.0
0.8.1
0.8.0
0.7.1
0.7.0
0.6.3
0.6.2
0.6.1
0.6.0
0.5.2
0.5.1
0.5.0
0.4.0
0.3.0
0.2.0
HTTP web server and client, supports http1 and http2
Current section
Files
Jump to
Current section
Files
lib/ace/http2/frame/9_continuation.ex
defmodule Ace.HTTP2.Frame.Continuation do
@enforce_keys [:stream_id, :header_block_fragment, :end_headers]
defstruct @enforce_keys
def new(stream_id, header_block_fragment, end_headers) do
%__MODULE__{
stream_id: stream_id,
header_block_fragment: header_block_fragment,
end_headers: end_headers
}
end
def decode({9, flags, stream_id, hbf}) do
end_headers = case flags do
<<4>> ->
true
<<0>> ->
false
end
{:ok, new(stream_id, hbf, end_headers)}
end
def serialize(frame) do
end_headers_flag = if frame.end_headers, do: 1, else: 0
length = :erlang.iolist_size(frame.header_block_fragment)
flags = <<0::5, end_headers_flag::1, 0::1, 0::1>>
<<length::24, 9::8, flags::binary, 0::1, frame.stream_id::31, frame.header_block_fragment::binary>>
end
end