Packages
thousand_island
1.3.1
1.5.0
1.4.3
1.4.2
1.4.1
1.4.0
1.3.14
1.3.13
1.3.12
1.3.11
1.3.10
1.3.9
1.3.8
1.3.7
1.3.6
1.3.5
1.3.4
1.3.3
1.3.2
1.3.1
1.3.0
1.2.0
1.1.0
1.0.0
1.0.0-pre.7
1.0.0-pre.6
1.0.0-pre.5
1.0.0-pre.4
1.0.0-pre.3
1.0.0-pre.2
1.0.0-pre.1
0.6.7
0.6.6
0.6.5
0.6.4
0.6.3
0.6.2
0.6.1
0.6.0
0.5.17
0.5.16
0.5.15
0.5.14
0.5.13
0.5.12
0.5.11
0.5.10
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.7
0.4.6
0.4.5
0.4.4
0.4.3
0.4.2
0.4.1
0.4.0
0.3.3
0.3.2
0.3.1
0.3.0
0.2.1
0.2.0
0.1.3
0.1.2
0.1.1
0.1.0
A simple & modern pure Elixir socket server
Current section
Files
Jump to
Current section
Files
lib/thousand_island/server_config.ex
defmodule ThousandIsland.ServerConfig do
@moduledoc false
@typedoc "A set of configuration parameters for a ThousandIsland server instance"
@type t :: %__MODULE__{
port: :inet.port_number(),
transport_module: ThousandIsland.transport_module(),
transport_options: ThousandIsland.transport_options(),
handler_module: module(),
handler_options: term(),
genserver_options: GenServer.options(),
supervisor_options: [Supervisor.option()],
num_acceptors: pos_integer(),
num_connections: non_neg_integer() | :infinity,
max_connections_retry_count: non_neg_integer(),
max_connections_retry_wait: timeout(),
read_timeout: timeout(),
shutdown_timeout: timeout(),
silent_terminate_on_error: boolean()
}
defstruct port: 4000,
transport_module: ThousandIsland.Transports.TCP,
transport_options: [],
handler_module: nil,
handler_options: [],
genserver_options: [],
supervisor_options: [],
num_acceptors: 100,
num_connections: 16_384,
max_connections_retry_count: 5,
max_connections_retry_wait: 1000,
read_timeout: 60_000,
shutdown_timeout: 15_000,
silent_terminate_on_error: false
@spec new(ThousandIsland.options()) :: t()
def new(opts \\ []) do
if !:proplists.is_defined(:handler_module, opts),
do: raise("No handler_module defined in server configuration")
struct!(__MODULE__, opts)
end
end