API Reference Thousand Island v0.4.3

Modules

Provides a high-level interface for starting and managing Thousand Island server instances. Server instances exist as a process tree, which is usually started by starting this module's child spec within an existing supervision tree, or by calling start_link/1 directly.

ThousandIsland.Handler defines the behaviour required of the application layer of a Thousand Island server. When starting a Thousand Island server, you must pass the name of a module implementing this behaviour as the handler_module parameter. Thousand Island will then use the specified module to handle each connection that is made to the server.

A sample Handler implementation of the Daytime protocol

A sample Handler implementation of the Echo protocol

A sample Handler implementation of a simple HTTP Server. Intended to be the simplest thing that can answer a browser request and nothing more. Not even remotely strictly HTTP compliant.

A sample Handler implementation that allows for simultaneous bidirectional sending of messages to demonstrate that the Handler process is just a GenServer under the hood

Allows dynamically adding and altering the log level used to trace connections within a Thousand Island server via the use of telemetry hooks. Should you wish to do your own logging or tracking of these events, a complete list of the telemetry events emitted by Thousand Island is described in the module documentation for ThousandIsland.

Encapsulates a client connection's underlying socket, providing a facility to read, write, and otherwise manipulate a connection from a client.

This module describes the behaviour required for Thousand Island to interact with low-level sockets. It is largely internal to Thousand Island, however users are free to implement their own versions of this behaviour backed by whatever underlying transport they choose. Such a module can be used in Thousand Island by passing its name as the transport_module option when starting up a server, as described in ThousandIsland.

Defines a ThousandIsland.Transport implementation based on TCP SSL sockets as provided by Erlang's :ssl module. For the most part, users of Thousand Island will only ever need to deal with this module via transport_options passed to ThousandIsland at startup time. A complete list of such options is defined via the t::ssl.tls_server_option type. This list can be somewhat difficult to decipher; a list of the most common options follows

Defines a ThousandIsland.Transport implementation based on clear TCP sockets as provided by Erlang's :gen_tcp module. For the most part, users of Thousand Island will only ever need to deal with this module via transport_options passed to ThousandIsland at startup time. A complete list of such options is defined via the t::gen_tcp.listen_option() type. This list can be somewhat difficult to decipher; by far the most common value to pass to this transport is the following