Packages
ankh
0.10.0
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 """
Protocol behavior
"""
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 """
Closes the connection
"""
@spec close(t()) :: :ok | {:error, any()}
def close(protocol)
@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 """
Creates a new connection
"""
@spec new(t(), options()) :: {:ok, t()} | {:error, any()}
def new(protocol, options)
@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.msg()]} | {:error, any()}
def stream(protocol, messages)
end