Skip to content

Commit 3836bea

Browse files
committed
Add the HPAX.table/0 opaque type
1 parent b42dfd5 commit 3836bea

File tree

1 file changed

+17
-9
lines changed

1 file changed

+17
-9
lines changed

lib/hpax.ex

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,14 @@ defmodule HPAX do
1919

2020
alias HPAX.{Table, Types}
2121

22+
@typedoc """
23+
An HPACK table.
24+
25+
This can be used for encoding or decoding.
26+
"""
27+
@typedoc since: "0.2.0"
28+
@opaque table() :: Table.t()
29+
2230
@typedoc """
2331
An HPACK header name.
2432
"""
@@ -36,7 +44,7 @@ defmodule HPAX do
3644
3745
Same as `new/2` with default options.
3846
"""
39-
@spec new(non_neg_integer()) :: Table.t()
47+
@spec new(non_neg_integer()) :: table()
4048
def new(max_table_size), do: new(max_table_size, [])
4149

4250
@doc """
@@ -50,7 +58,7 @@ defmodule HPAX do
5058
5159
This function accepts the following `options`:
5260
53-
* `:huffman_encoding` - (since 0.3.0) `:always` or `:never`. If `:always`,
61+
* `:huffman_encoding` - (since 0.2.0) `:always` or `:never`. If `:always`,
5462
then HPAX will always encode headers using Huffman encoding. If `:never`,
5563
HPAX will not use any Huffman encoding. Defaults to `:never`.
5664
@@ -59,8 +67,8 @@ defmodule HPAX do
5967
encoding_context = HPAX.new(4096)
6068
6169
"""
62-
@doc since: "0.3.0"
63-
@spec new(non_neg_integer(), [keyword()]) :: Table.t()
70+
@doc since: "0.2.0"
71+
@spec new(non_neg_integer(), [keyword()]) :: table()
6472
def new(max_table_size, options)
6573
when is_integer(max_table_size) and max_table_size >= 0 and is_list(options) do
6674
options = Keyword.put_new(options, :huffman_encoding, :never)
@@ -82,7 +90,7 @@ defmodule HPAX do
8290
HPAX.resize(decoding_context, 8192)
8391
8492
"""
85-
@spec resize(Table.t(), non_neg_integer()) :: Table.t()
93+
@spec resize(table(), non_neg_integer()) :: table()
8694
defdelegate resize(table, new_size), to: Table
8795

8896
@doc """
@@ -100,8 +108,8 @@ defmodule HPAX do
100108
#=> {:ok, [{":method", "GET"}], decoding_context}
101109
102110
"""
103-
@spec decode(binary(), Table.t()) ::
104-
{:ok, [{header_name(), header_value()}], Table.t()} | {:error, term()}
111+
@spec decode(binary(), table()) ::
112+
{:ok, [{header_name(), header_value()}], table()} | {:error, term()}
105113

106114
# Dynamic resizes must occur only at the start of a block
107115
# https://datatracker.ietf.org/doc/html/rfc7541#section-4.2
@@ -137,7 +145,7 @@ defmodule HPAX do
137145
#=> {iodata, updated_encoding_context}
138146
139147
"""
140-
@spec encode([header], Table.t()) :: {iodata(), Table.t()}
148+
@spec encode([header], table()) :: {iodata(), table()}
141149
when header: {action, header_name(), header_value()},
142150
action: :store | :store_name | :no_store | :never_store
143151
def encode(headers, %Table{} = table) when is_list(headers) do
@@ -159,7 +167,7 @@ defmodule HPAX do
159167
160168
"""
161169
@doc since: "0.2.0"
162-
@spec encode(action, [header], Table.t()) :: {iodata(), Table.t()}
170+
@spec encode(action, [header], table()) :: {iodata(), table()}
163171
when action: :store | :store_name | :no_store | :never_store,
164172
header: {header_name(), header_value()}
165173
def encode(action, headers, %Table{} = table)

0 commit comments

Comments
 (0)