Packages
sippet
0.1.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/transport/queue.ex
defmodule Sippet.Transport.Queue do
@moduledoc """
The transport queue receives datagrams or messages from network transport
protocols, validates and routes them to the transaction module.
The queue contains a worker pool to improve processing performance.
"""
alias Sippet.Message, as: Message
alias Sippet.Transport.Pool, as: Pool
@type from :: {
protocol :: atom | binary,
host :: String.t,
dport :: integer
}
@spec incoming_datagram(String.t, from) :: :ok
def incoming_datagram(datagram, from) do
worker = Pool.check_out()
GenServer.cast(worker, {:incoming_datagram, datagram, from})
end
@spec validate_message(message :: Message.t, from) :: :ok
def validate_message(%Message{} = message, from) do
worker = Pool.check_out()
GenServer.cast(worker, {:validate_message, message, from})
end
end