Thousand Island v0.1.1 ThousandIsland.Transport behaviour View Source
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
.
Link to this section Summary
Types
A listener socket used to wait for connections
The return value from a recv/3 call
A socket representing a client connection
Information about an endpoint (either remote ('peer') or local
The direction in which to shutdown a connection in advance of closing it
Callbacks
Wait for a client connection on the given listener socket. This call blocks until such a connection arrives, or an error occurs (such as the listener socket being closed).
Closes the given socket.
Transfers ownership of the given socket to the given process. This will always be called by the process which currently owns the socket.
Performs an initial handshake on a new client connection (such as that done when negotiating an SSL connection). Transports which do not have such a handshake can simply pass the socket through unchanged.
Create and return a listener socket bound to the given port and configured per the provided options.
Return the local port number that the given lsitener socket is accepting connections on.
Returns information in the form of t:socket_info()
about the local end of the socket.
Returns information in the form of t:socket_info()
about the remote end of the socket.
Returns available bytes on the given socket. Up to num_bytes
bytes will be
returned (0 can be passed in to get the next 'available' bytes, typically the
next packet). If insufficient bytes are available, the functino can wait timeout
milliseconds for data to arrive.
Sends the given data (specified as a binary or an IO list) on the given socket.
Shuts down the socket in the given direction.
Link to this section Types
A listener socket used to wait for connections
The return value from a recv/3 call
A socket representing a client connection
socket_info()
View Sourcesocket_info() :: %{address: String.t(), port: :inet.port_number()}
Information about an endpoint (either remote ('peer') or local
The direction in which to shutdown a connection in advance of closing it
Link to this section Callbacks
accept(listener_socket)
View Sourceaccept(listener_socket()) :: {:ok, socket()} | {:error, any()}
Wait for a client connection on the given listener socket. This call blocks until such a connection arrives, or an error occurs (such as the listener socket being closed).
Closes the given socket.
Transfers ownership of the given socket to the given process. This will always be called by the process which currently owns the socket.
Performs an initial handshake on a new client connection (such as that done when negotiating an SSL connection). Transports which do not have such a handshake can simply pass the socket through unchanged.
listen(arg1, keyword)
View Sourcelisten(:inet.port_number(), keyword()) :: {:ok, listener_socket()}
Create and return a listener socket bound to the given port and configured per the provided options.
listen_port(listener_socket)
View Sourcelisten_port(listener_socket()) :: {:ok, :inet.port_number()}
Return the local port number that the given lsitener socket is accepting connections on.
Returns information in the form of t:socket_info()
about the local end of the socket.
Returns information in the form of t:socket_info()
about the remote end of the socket.
recv(socket, num_bytes, timeout)
View Sourcerecv(socket(), num_bytes :: non_neg_integer(), timeout :: timeout()) :: on_recv()
Returns available bytes on the given socket. Up to num_bytes
bytes will be
returned (0 can be passed in to get the next 'available' bytes, typically the
next packet). If insufficient bytes are available, the functino can wait timeout
milliseconds for data to arrive.
Sends the given data (specified as a binary or an IO list) on the given socket.
Shuts down the socket in the given direction.