Packages
ankh
0.12.1
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/protocol.ex
defprotocol Ankh.Protocol do
@moduledoc """
HTTP Protocol interface
HTTP protocol implementations like `Ankh.HTTP1` and `Ankh.HTTP2` implement this protocol
and can be used via `Ankh.HTTP`.
"""
alias Ankh.{HTTP, Transport}
alias Ankh.HTTP.{Request, Response}
@typedoc "Ankh protocol"
@type t :: struct()
@typedoc "Protocol options"
@type options :: Keyword.t()
@typedoc "Request reference"
@type request_ref :: reference()
@doc """
Accepts a client connection
"""
@spec accept(t(), URI.t(), Transport.t(), Transport.options()) ::
{:ok, t()} | {:error, any()}
def accept(protocol, uri, transport, options)
@doc """
Connects to an host
"""
@spec connect(t(), URI.t(), Transport.t(), Transport.options()) :: {:ok, t()} | {:error, any()}
def connect(protocol, uri, transport, options)
@doc """
Reports a connection error
"""
@spec error(t()) :: :ok | {:error, any()}
def error(protocol)
@doc """
Sends a response
"""
@spec respond(t(), request_ref(), Response.t()) :: {:ok, t()} | {:error, any()}
def respond(protocol, request_reference, response)
@doc """
Sends a request
"""
@spec request(t(), Request.t()) :: {:ok, t(), request_ref()} | {:error, any()}
def request(protocol, request)
@doc """
Handles transport messages
"""
@spec stream(t(), any()) :: {:ok, t(), [HTTP.response()]} | {:error, any()}
def stream(protocol, messages)
end