Packages
ace
0.18.3
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
@moduledoc false
@type t :: %__MODULE__{stream_id: Ace.HTTP2.Frame.stream_id()}
@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, <<_::5, end_headers_flag::1, _::2>>, stream_id, hbf}) do
end_headers =
case end_headers_flag do
1 ->
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
defimpl Inspect, for: Ace.HTTP2.Frame.Continuation do
def inspect(%{stream_id: stream_id, end_headers: end_headers}, _opts) do
"CONTINUATION(stream_id: #{stream_id}, end_headers: #{end_headers})"
end
end
end