Packages
sippet
0.5.8
1.0.16
1.0.15
1.0.14
1.0.13
1.0.12
1.0.11
1.0.10
1.0.9
1.0.8
1.0.7
1.0.6
1.0.5
1.0.4
1.0.3
1.0.2
1.0.1
1.0.0
0.6.4
0.6.3
0.6.2
0.6.1
0.6.0
0.5.9
0.5.8
0.5.7
0.5.6
0.5.5
0.5.4
0.5.3
0.5.2
0.5.1
0.5.0
0.4.9
0.4.8
0.4.7
0.4.6
0.4.5
0.4.4
0.4.3
0.4.2
0.4.1
0.4.0
0.3.9
0.3.8
0.3.7
0.3.6
0.3.5
0.3.4
0.3.3
0.3.2
0.3.1
0.3.0
0.2.9
0.2.8
0.2.7
0.2.6
0.2.5
0.2.4
0.2.3
0.2.2
0.2.1
0.2.0
0.1.9
0.1.8
0.1.7
0.1.6
0.1.5
0.1.4
0.1.3
0.1.2
0.1.1
0.1.0
An Elixir Session Initiation Protocol (SIP) stack.
Current section
Files
Jump to
Current section
Files
lib/sippet/transports/plug.ex
defmodule Sippet.Transports.Plug do
@moduledoc """
A behaviour module for implementing Sippet network transport protocols.
A `Sippet.Transports.Plug` behavior module is started and supervised by the
`Sippet.Transports` module at initialization.
"""
@typedoc """
A transaction key, which can be also `nil` when there's no transaction
"""
@type key ::
Sippet.Transactions.Client.Key.t |
Sippet.Transactions.Server.Key.t |
nil
@typedoc "The remote host address to send the message"
@type remote_host :: binary
@typedoc "The remote port to send the message"
@type remote_port :: integer
@doc """
Invoked to start listening for datagrams or connections.
"""
@callback start_link() :: GenServer.on_start
@doc """
Invoked to send a message to the network. If any error occur while sending
the message, and the transaction is not `nil`, the transaction should be
informed so by calling `error/2`.
"""
@callback send_message(Sippet.Message.t, remote_host, remote_port, key)
:: :ok | {:error, reason :: term}
@doc """
Invoked to check if this connection is reliable (connection-oriented). If
`false` then the `Sippet.Transactions` has to retransmit requests or handle
request retransmissions.
"""
@callback reliable?() :: boolean
defmacro __using__(_opts) do
quote location: :keep do
@behaviour Sippet.Transports.Plug
end
end
end