ankh v0.0.5 Ankh.Connection
Genserver implementing HTTP/2 connection management
Ankh.Connection
establishes the TLS underlying connection and provides
connection and stream management, it also does frame (de)serialization and
reassembly as needed.
After starting the connection, received frames are sent back to the caller,
or the process specified in the receiver
startup option, as messages.
Separate messages are sent for HEADERS, PUSH_PROMISE and DATA frames.
Headers are always reassembled and sent back in one message to the receiver.
For data frames, the stream
startup otion toggles streaming mode:
If true
(streaming mode) a stream_data
msg is sent for each received DATA
frame, and it is the receiver responsibility to reassemble incoming data.
If false
(full mode), DATA frames are accumulated until a complete response
is received and then the complete data is sent to the receiver as data
msg.
See typespecs below for message types and formats.
Summary
Types
Ankh DATA message (full mode)
Ankh HEADERS message
Startup options:
- uri: at least scheme and authority must be present.
- receiver: pid of the process to send response messages to. Messages are shipped to the calling process if nil.
- stream: if true, stream received data frames back to the receiver, else reassemble and send complete responses.
- ssl_options: SSL connection options, for the Erlang
:ssl
module
Ankh PUSH_PROMISE message
Ankh DATA frame (streaming mode)
Types
Ankh DATA message (full mode)
{:ankh, :data, stream_id, data}
Ankh HEADERS message
{:ankh, :headers, stream_id, headers}
Startup options:
- uri: at least scheme and authority must be present.
- receiver: pid of the process to send response messages to. Messages are shipped to the calling process if nil.
- stream: if true, stream received data frames back to the receiver, else reassemble and send complete responses.
- ssl_options: SSL connection options, for the Erlang
:ssl
module
Ankh PUSH_PROMISE message
{:ankh, :headers, stream_id, promised_stream_id, headers}
Ankh DATA frame (streaming mode)
{:ankh, :stream_data, stream_id, data}
Functions
Closes the connection
Before closing the TLS connection a GOAWAY frame is sent to the peer.
Parameters:
- connection: pid or process name of the
Ankh.Connection
process
Sends a frame over the connection
Parameters:
- connection: pid or process name of the
Ankh.Connection
process - frame:
Ankh.Frame
structure
start_link([uri: URI, receiver: pid | nil, stream: boolean, ssl_options: Keyword.t], GenServer.option) :: GenServer.on_start
Start the connection process for the specified URI
.
Parameters:
- args: startup options
- options: GenServer startup options